/**
 * Persona element class implementing IElement interface.
 * Represents a behavioral profile that defines AI personality and interaction style.
 */
import { BaseElement } from '../elements/BaseElement.js';
import { IElement, IElementMetadata, ElementValidationResult } from '../types/elements/index.js';
import { ElementType } from '../portfolio/types.js';
import { PersonaMetadata } from '../types/persona.js';
import { MetadataService } from '../services/MetadataService.js';
export interface PersonaElementMetadata extends IElementMetadata {
    type?: ElementType.PERSONA;
    unique_id?: string;
    triggers?: string[];
    category?: string;
    age_rating?: 'all' | '13+' | '18+';
    content_flags?: string[];
    ai_generated?: boolean;
    generation_method?: 'human' | 'ChatGPT' | 'Claude' | 'hybrid';
    price?: string;
    revenue_split?: string;
    license?: string;
    created_date?: string;
}
export declare class PersonaElement extends BaseElement implements IElement {
    filename: string;
    metadata: PersonaElementMetadata;
    /**
     * Backward compatibility: provide unique_id as an alias for id
     */
    get unique_id(): string;
    set unique_id(value: string);
    constructor(metadata: Partial<PersonaElementMetadata>, instructions: string | undefined, filename: string | undefined, metadataService: MetadataService, content?: string);
    /**
     * Create PersonaElement from legacy Persona interface
     */
    static fromLegacy(legacyPersona: {
        metadata: PersonaMetadata;
        content: string;
        filename: string;
        unique_id: string;
    }, metadataService: MetadataService): PersonaElement;
    /**
     * Convert to legacy Persona interface for backward compatibility
     */
    toLegacy(): {
        metadata: PersonaMetadata;
        content: string;
        filename: string;
        unique_id: string;
    };
    /**
     * Persona-specific validation
     */
    validate(): ElementValidationResult;
    /**
     * Get content for serialization.
     * Returns instructions as the primary body text (v1 compat).
     * v2 format writes instructions to YAML frontmatter and content as body.
     */
    protected getContent(): string;
    /**
     * Serialize persona to markdown format
     * Refactored to use base class pattern with getContent()
     */
    serialize(): string;
    /**
     * Serialize to JSON format for internal use and testing
     */
    serializeToJSON(): string;
    /**
     * Deserialize persona from markdown format
     */
    deserialize(data: string): void;
    /**
     * Persona activation lifecycle
     */
    activate(): Promise<void>;
    /**
     * Persona deactivation lifecycle
     */
    deactivate(): Promise<void>;
}
//# sourceMappingURL=PersonaElement.d.ts.map