import * as React from 'react';

/**
 * @wonderkits/app/core
 *
 * 子应用核心类型定义 - 最小化设计
 * 只包含子应用开发必需的类型
 */

/**
 * 图标组件类型
 * 支持各种图标库（heroicons、lucide 等）
 * 使用 ElementType 以兼容 ForwardRefExoticComponent
 */
type IconComponent = React.ElementType<{
    className?: string;
}>;
/**
 * 应用清单 - 精简版
 * 子应用只需要定义这些基本信息
 */
interface AppManifest {
    /** 应用唯一标识 */
    id: string;
    /** 应用名称 */
    name: string;
    /** 应用版本 */
    version: string;
    /** 显示名称（可选，默认使用 name） */
    displayName?: string;
    /** 应用描述 */
    description?: string;
    /** 应用图标 URL */
    icon?: string;
    /** 作者 */
    author?: string;
    /** 分类 */
    category?: string;
}
/**
 * 导航项配置 - 精简版
 * 子应用声明自己在主应用中的导航位置
 */
interface AppNavItem {
    /** 关联的应用 ID */
    appId: string;
    /** 导航显示名称 */
    name: string;
    /** 导航路径 */
    href: string;
    /** 路径匹配模式（用于高亮当前导航） */
    matchPath?: string;
    /** 排序权重（越小越靠前） */
    order?: number;
    /** 是否可见 */
    visible?: boolean;
    /** 图标组件 */
    icon?: IconComponent;
    /** 图标组件（路径激活状态） */
    iconPath?: IconComponent;
    /** 当前是否选中（运行时状态） */
    current?: boolean;
}
/**
 * 应用生命周期钩子 - 精简版
 * 子应用可以监听的生命周期事件
 */
interface AppLifecycleHooks {
    /** 应用安装时调用 */
    onInstall?: () => Promise<void> | void;
    /** 应用激活时调用 */
    onActivate?: () => Promise<void> | void;
    /** 应用停用时调用 */
    onDeactivate?: () => Promise<void> | void;
    /** 应用卸载时调用 */
    onUninstall?: () => Promise<void> | void;
}
/**
 * 子应用配置 - 精简版
 * 子应用开发时需要提供的配置
 */
interface SubAppConfig {
    /** 应用清单 */
    manifest: AppManifest;
    /** 导航配置（可选） */
    navigation?: AppNavItem;
    /** 生命周期钩子（可选） */
    hooks?: AppLifecycleHooks;
}
/**
 * 创建子应用配置的辅助函数
 * @param config 子应用配置
 * @returns 完整的子应用配置
 */
declare function defineSubApp(config: SubAppConfig): SubAppConfig;

export { defineSubApp };
export type { AppLifecycleHooks, AppManifest, AppNavItem, IconComponent, SubAppConfig };
