/**
 * 应用级事件系统类型定义
 * 提供类型安全的事件通信能力
 */
/**
 * 事件监听器类型
 *
 * @template T - 事件数据类型
 */
export type EventListener<T = unknown> = (data: T, metadata: EventMetadata) => void | Promise<void>;
/**
 * 事件元数据
 */
export interface EventMetadata {
    /**
     * 事件来源（模块/组件名称）
     */
    source?: string;
    /**
     * 事件时间戳
     */
    timestamp: number;
    /**
     * 事件ID（用于追踪）
     */
    eventId: string;
    /**
     * 事件优先级（数字越小优先级越高）
     */
    priority?: number;
    /**
     * 应用实例ID（多实例场景）
     */
    instanceId?: string;
    /**
     * 事件命名空间（用于作用域隔离）
     */
    namespace?: string;
    /**
     * 自定义元数据
     */
    [key: string]: unknown;
}
/**
 * 事件包装器
 *
 * @template T - 事件数据类型
 */
export interface EventWrapper<T = unknown> {
    /**
     * 事件数据
     */
    data: T;
    /**
     * 事件元数据
     */
    metadata: EventMetadata;
}
/**
 * 事件中间件函数类型
 *
 * @template T - 事件数据类型
 */
export type EventMiddleware<T = unknown> = (event: string, data: T, metadata: EventMetadata, next: () => Promise<void>) => Promise<void> | void;
/**
 * 事件监听器选项
 */
export interface EventListenerOptions {
    /**
     * 监听器优先级（数字越小优先级越高）
     */
    priority?: number;
    /**
     * 是否只执行一次
     */
    once?: boolean;
    /**
     * 事件命名空间（用于作用域隔离）
     */
    namespace?: string;
    /**
     * 是否异步执行
     */
    async?: boolean;
}
/**
 * 事件总线配置
 */
export interface AppEventBusConfig {
    /**
     * 是否启用事件追踪
     */
    enableTracking?: boolean;
    /**
     * 最大事件历史记录数
     */
    maxHistorySize?: number;
    /**
     * 是否启用事件验证
     */
    enableValidation?: boolean;
    /**
     * 事件验证函数
     */
    validator?: (event: string, data: unknown) => boolean;
    /**
     * 是否启用性能监控
     */
    enablePerformanceMonitoring?: boolean;
    /**
     * 事件命名空间前缀（用于多实例隔离）
     */
    namespacePrefix?: string;
    /**
     * 应用实例ID（多实例场景）
     */
    instanceId?: string;
    /**
     * 是否启用安全模式（限制事件来源）
     */
    enableSecurityMode?: boolean;
    /**
     * 允许的事件来源白名单（安全模式）
     */
    allowedSources?: string[];
}
/**
 * 事件统计信息
 */
export interface EventStats {
    /**
     * 事件名称
     */
    event: string;
    /**
     * 触发次数
     */
    count: number;
    /**
     * 平均执行时间（毫秒）
     */
    avgExecutionTime: number;
    /**
     * 监听器数量
     */
    listenerCount: number;
    /**
     * 最后触发时间
     */
    lastTriggered: number;
}
/**
 * 框架内置事件类型
 */
export declare enum FrameworkEventType {
    /**
     * 应用启动开始
     */
    APP_START = "framework:app:start",
    /**
     * 应用启动完成
     */
    APP_STARTED = "framework:app:started",
    /**
     * 应用初始化开始
     */
    APP_INIT_START = "framework:app:init:start",
    /**
     * 应用初始化完成
     */
    APP_INIT_COMPLETE = "framework:app:init:complete",
    /**
     * 应用初始化失败
     */
    APP_INIT_ERROR = "framework:app:init:error",
    /**
     * 应用渲染开始
     */
    APP_RENDER_START = "framework:app:render:start",
    /**
     * 应用渲染完成
     */
    APP_RENDER_COMPLETE = "framework:app:render:complete",
    /**
     * 路由变化
     */
    ROUTE_CHANGE = "framework:route:change",
    /**
     * 路由导航开始
     */
    ROUTE_NAVIGATE_START = "framework:route:navigate:start",
    /**
     * 路由导航完成
     */
    ROUTE_NAVIGATE_COMPLETE = "framework:route:navigate:complete",
    /**
     * 错误发生
     */
    ERROR_OCCURRED = "framework:error:occurred",
    /**
     * 实例创建
     */
    INSTANCE_CREATED = "framework:instance:created",
    /**
     * 实例销毁
     */
    INSTANCE_DESTROYED = "framework:instance:destroyed",
    /**
     * 性能指标更新
     */
    PERFORMANCE_UPDATE = "framework:performance:update"
}
/**
 * 框架事件数据类型定义
 */
export interface FrameworkEventData {
    [FrameworkEventType.APP_START]: {
        instanceId?: string;
    };
    [FrameworkEventType.APP_STARTED]: {
        instanceId?: string;
        duration: number;
    };
    [FrameworkEventType.APP_INIT_START]: {
        instanceId?: string;
    };
    [FrameworkEventType.APP_INIT_COMPLETE]: {
        instanceId?: string;
        context: unknown;
        duration: number;
    };
    [FrameworkEventType.APP_INIT_ERROR]: {
        instanceId?: string;
        error: Error;
    };
    [FrameworkEventType.APP_RENDER_START]: {
        instanceId?: string;
    };
    [FrameworkEventType.APP_RENDER_COMPLETE]: {
        instanceId?: string;
        duration: number;
    };
    [FrameworkEventType.ROUTE_CHANGE]: {
        from: string;
        to: string;
        params?: Record<string, unknown>;
    };
    [FrameworkEventType.ROUTE_NAVIGATE_START]: {
        to: string;
        options?: unknown;
    };
    [FrameworkEventType.ROUTE_NAVIGATE_COMPLETE]: {
        to: string;
        duration: number;
    };
    [FrameworkEventType.ERROR_OCCURRED]: {
        error: Error;
        context?: unknown;
    };
    [FrameworkEventType.INSTANCE_CREATED]: {
        instanceId: string;
    };
    [FrameworkEventType.INSTANCE_DESTROYED]: {
        instanceId: string;
    };
    [FrameworkEventType.PERFORMANCE_UPDATE]: {
        metrics: Record<string, number>;
    };
}
//# sourceMappingURL=types.d.ts.map