/**
 * Custom Personas System
 *
 * Features:
 * - Predefined personas (Senior Dev, Code Reviewer, etc.)
 * - Custom persona creation
 * - Context-aware persona selection
 * - Persona switching during conversation
 * - Persona templates and sharing
 *
 * Allows customizing Grok's behavior and expertise.
 */
import { EventEmitter } from 'events';
export interface Persona {
    id: string;
    name: string;
    description: string;
    systemPrompt: string;
    traits: PersonaTrait[];
    expertise: string[];
    style: PersonaStyle;
    examples?: ConversationExample[];
    triggers?: PersonaTrigger[];
    isBuiltin: boolean;
    isDefault: boolean;
    createdAt: Date;
    updatedAt: Date;
}
export interface PersonaTrait {
    name: string;
    value: number;
    description: string;
}
export interface PersonaStyle {
    verbosity: 'concise' | 'balanced' | 'detailed';
    formality: 'casual' | 'professional' | 'formal';
    tone: 'friendly' | 'neutral' | 'authoritative';
    codeStyle: 'minimal' | 'commented' | 'documented';
    explanationDepth: 'surface' | 'moderate' | 'deep';
}
export interface ConversationExample {
    user: string;
    assistant: string;
}
export interface PersonaTrigger {
    type: 'keyword' | 'fileType' | 'context' | 'command';
    pattern: string;
    priority: number;
}
export interface PersonaConfig {
    activePersonaId: string;
    autoSwitch: boolean;
    customPersonasDir: string;
}
/**
 * Persona Manager
 */
export declare class PersonaManager extends EventEmitter {
    private config;
    private personas;
    private activePersona;
    private dataDir;
    constructor(config?: Partial<PersonaConfig>);
    /**
     * Initialize persona manager
     */
    private initialize;
    /**
     * Load custom personas from disk
     */
    private loadCustomPersonas;
    /**
     * Set active persona
     */
    setActivePersona(id: string): boolean;
    /**
     * Get active persona
     */
    getActivePersona(): Persona | null;
    /**
     * Get persona by ID
     */
    getPersona(id: string): Persona | undefined;
    /**
     * Get all personas
     */
    getAllPersonas(): Persona[];
    /**
     * Get built-in personas
     */
    getBuiltinPersonas(): Persona[];
    /**
     * Get custom personas
     */
    getCustomPersonas(): Persona[];
    /**
     * Create a custom persona
     */
    createPersona(options: {
        name: string;
        description: string;
        systemPrompt: string;
        traits?: PersonaTrait[];
        expertise?: string[];
        style?: Partial<PersonaStyle>;
        examples?: ConversationExample[];
        triggers?: PersonaTrigger[];
    }): Promise<Persona>;
    /**
     * Update a persona
     */
    updatePersona(id: string, updates: Partial<Omit<Persona, 'id' | 'isBuiltin' | 'createdAt'>>): Promise<Persona | null>;
    /**
     * Delete a persona
     */
    deletePersona(id: string): Promise<boolean>;
    /**
     * Clone a persona
     */
    clonePersona(id: string, newName: string): Promise<Persona | null>;
    /**
     * Auto-select persona based on context
     */
    autoSelectPersona(context: {
        message?: string;
        fileType?: string;
        command?: string;
    }): Persona | null;
    /**
     * Build system prompt for active persona
     */
    buildSystemPrompt(additionalContext?: string): string;
    /**
     * Export persona to JSON
     */
    exportPersona(id: string): Promise<string>;
    /**
     * Import persona from JSON
     */
    importPersona(json: string): Promise<Persona>;
    /**
     * Format status
     */
    formatStatus(): string;
    /**
     * Get config
     */
    getConfig(): PersonaConfig;
    /**
     * Dispose
     */
    dispose(): void;
}
export declare function getPersonaManager(config?: Partial<PersonaConfig>): PersonaManager;
export declare function resetPersonaManager(): void;
