/**
 * FIX: DMCP-SEC-006 - Security audit suppression
 * This file delegates element creation to specialized managers.
 * Audit logging happens in the managers themselves (PersonaManager, SkillManager, etc.).
 * @security-audit-suppress DMCP-SEC-006
 */
import { ElementCrudContext } from './types.js';
import type { McpToolResponse } from './responseFormatter.js';
import type { EnsembleElement } from '../../elements/ensembles/types.js';
/**
 * Arguments for creating a new element.
 *
 * @example
 * // Create a persona
 * { name: 'helper', type: 'persona', description: 'A helpful assistant', instructions: 'Be helpful' }
 *
 * @example
 * // Create an ensemble with elements
 * {
 *   name: 'my-ensemble',
 *   type: 'ensemble',
 *   description: 'A coordinated group',
 *   elements: [{ name: 'skill1', type: 'skill', role: 'primary', priority: 100, activation: 'always' }]
 * }
 *
 * @example
 * // Create a V2 agent with goal configuration
 * {
 *   name: 'task-runner',
 *   type: 'agent',
 *   description: 'Executes tasks autonomously',
 *   goal: {
 *     template: 'Complete the following task: {objective}',
 *     parameters: [{ name: 'objective', type: 'string', required: true }],
 *     successCriteria: ['Task completed successfully', 'Results documented']
 *   },
 *   activates: { skills: ['code-review'], personas: ['developer'] }
 * }
 */
export interface CreateElementArgs {
    name: string;
    type: string;
    description: string;
    /** Reference material, knowledge, context (informational). For templates: template body. */
    content?: string;
    /** Behavioral directives (command voice). For personas: behavioral profile. For skills: how to apply. For agents: agent behavioral protocol. */
    instructions?: string;
    metadata?: Record<string, unknown>;
    /**
     * For ensembles - array of element references.
     * Issue #278: LLMs often pass elements at top level, not inside metadata.
     */
    elements?: EnsembleElement[];
    /**
     * For V2 agents - goal configuration with template and parameters.
     * Can be passed as a simple string (will be converted to V2 format)
     * or as a full V2 config object.
     *
     * @since v2.0.0 - Agent V2 Infrastructure
     *
     * @example
     * // Simple string goal (auto-converted to V2 format)
     * goal: 'Complete the analysis task'
     *
     * @example
     * // Full V2 config with parameters
     * goal: {
     *   template: 'Analyze {target} for {purpose}',
     *   parameters: [
     *     { name: 'target', type: 'string', required: true },
     *     { name: 'purpose', type: 'string', required: true }
     *   ],
     *   successCriteria: ['Analysis complete', 'Report generated']
     * }
     */
    goal?: string | {
        template: string;
        parameters?: Array<{
            name: string;
            type: 'string' | 'number' | 'boolean';
            required: boolean;
            description?: string;
            default?: string | number | boolean;
        }>;
        successCriteria?: string[];
    };
    /**
     * For V2 agents - elements to activate when agent executes.
     * @since v2.0.0 - Agent V2 Infrastructure
     */
    activates?: {
        personas?: string[];
        skills?: string[];
        memories?: string[];
        templates?: string[];
        ensembles?: string[];
        [key: string]: string[] | undefined;
    };
    /**
     * For V2 agents - tool configuration (informational).
     * @since v2.0.0 - Agent V2 Infrastructure
     */
    tools?: {
        allowed: string[];
        denied?: string[];
    };
    /**
     * For V2 agents - custom system prompt for LLM context.
     * @since v2.0.0 - Agent V2 Infrastructure
     */
    systemPrompt?: string;
}
export declare function createElement(context: ElementCrudContext, args: CreateElementArgs): Promise<McpToolResponse | {
    content: {
        type: string;
        text: string;
    }[];
}>;
//# sourceMappingURL=createElement.d.ts.map