/** * 系统SDK主接口 * 为第三方应用提供统一的系统服务访问接口 */ // ============================================================================= // 核心类型定义 // ============================================================================= /** * SDK初始化配置 */ export interface SDKConfig { appId: string appName: string version: string permissions: string[] debug?: boolean } /** * API响应结果包装器 */ export interface APIResponse { success: boolean data?: T error?: string code?: number } /** * 事件回调函数类型 */ export type EventCallback = (data: T) => void | Promise /** * 权限状态枚举 */ export enum PermissionStatus { GRANTED = 'granted', DENIED = 'denied', PROMPT = 'prompt' } // ============================================================================= // 窗体SDK接口 // ============================================================================= /** * 窗体状态 */ export enum WindowState { NORMAL = 'normal', MINIMIZED = 'minimized', MAXIMIZED = 'maximized', FULLSCREEN = 'fullscreen' } /** * 窗体事件类型 */ export interface WindowEvents { onResize: (width: number, height: number) => void onMove: (x: number, y: number) => void onStateChange: (state: WindowState) => void onFocus: () => void onBlur: () => void onClose: () => void } /** * 窗体SDK接口 */ export interface WindowSDK { /** * 设置窗体标题 */ setTitle(title: string): Promise> /** * 调整窗体尺寸 */ resize(width: number, height: number): Promise> /** * 移动窗体位置 */ move(x: number, y: number): Promise> /** * 最小化窗体 */ minimize(): Promise> /** * 最大化窗体 */ maximize(): Promise> /** * 还原窗体 */ restore(): Promise> /** * 全屏显示 */ fullscreen(): Promise> /** * 关闭窗体 */ close(): Promise> /** * 获取当前窗体状态 */ getState(): Promise> /** * 获取窗体尺寸 */ getSize(): Promise> /** * 获取窗体位置 */ getPosition(): Promise> /** * 监听窗体事件 */ on(event: K, callback: WindowEvents[K]): void /** * 移除事件监听器 */ off(event: K, callback?: WindowEvents[K]): void } // ============================================================================= // 存储SDK接口 // ============================================================================= /** * 存储事件类型 */ export interface StorageEvents { onChange: (key: string, newValue: any, oldValue: any) => void onQuotaExceeded: (usedSpace: number, maxSpace: number) => void } /** * 存储使用统计 */ /** * 存储使用统计 */ export interface StorageStats { /** * 已使用存储空间(MB) */ usedSpace: number // 已使用空间(MB) /** * 最大存储空间(MB) */ maxSpace: number // 最大空间(MB) /** * 存储键数量 */ keysCount: number // 键数量 /** * 最后访问时间 */ lastAccessed: Date } /** * 存储SDK接口 */ export interface StorageSDK { /** * 存储数据 */ set(key: string, value: any): Promise> /** * 获取数据 */ get(key: string): Promise> /** * 删除数据 */ remove(key: string): Promise> /** * 清空所有数据 */ clear(): Promise> /** * 获取所有键名 */ keys(): Promise> /** * 检查键是否存在 */ has(key: string): Promise> /** * 获取存储使用统计 */ getStats(): Promise> /** * 监听存储变化 */ on(event: K, callback: StorageEvents[K]): void /** * 移除事件监听器 */ off(event: K, callback?: StorageEvents[K]): void } // ============================================================================= // 网络SDK接口 // ============================================================================= /** * HTTP方法 */ export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' /** * 网络请求配置 */ /** * 网络请求配置 */ export interface NetworkRequestConfig { /** * HTTP请求方法 */ method?: HTTPMethod /** * 请求头信息 */ headers?: Record /** * 请求体数据 */ body?: any /** * 请求超时时间(毫秒) */ timeout?: number /** * 响应数据类型 */ responseType?: 'json' | 'text' | 'blob' | 'arrayBuffer' } /** * 网络响应 */ /** * 网络响应 */ export interface NetworkResponse { /** * 响应数据内容 */ data: T /** * HTTP状态码 */ status: number /** * HTTP状态文本 */ statusText: string /** * 响应头信息 */ headers: Record /** * 请求URL */ url: string } /** * 上传进度回调 */ export type UploadProgressCallback = (loaded: number, total: number) => void /** * 下载进度回调 */ export type DownloadProgressCallback = (loaded: number, total: number) => void /** * 网络SDK接口 */ export interface NetworkSDK { /** * 发送HTTP请求 */ request(url: string, config?: NetworkRequestConfig): Promise>> /** * GET请求 */ get(url: string, config?: Omit): Promise>> /** * POST请求 */ post(url: string, data?: any, config?: Omit): Promise>> /** * PUT请求 */ put(url: string, data?: any, config?: Omit): Promise>> /** * DELETE请求 */ delete(url: string, config?: Omit): Promise>> /** * 上传文件 */ upload(url: string, file: File | Blob, onProgress?: UploadProgressCallback): Promise> /** * 下载文件 */ download(url: string, filename?: string, onProgress?: DownloadProgressCallback): Promise> /** * 检查网络状态 */ isOnline(): Promise> /** * 获取网络请求统计 */ getStats(): Promise> } // ============================================================================= // 事件SDK接口 // ============================================================================= /** * 事件消息 */ /** * 事件消息 */ export interface EventMessage { /** * 消息唯一标识符 */ id: string /** * 事件频道名称 */ channel: string /** * 消息数据内容 */ data: T /** * 发送方标识符 */ senderId: string /** * 消息发送时间戳 */ timestamp: Date } /** * 事件订阅配置 */ /** * 事件订阅配置 */ export interface EventSubscriptionConfig { /** * 消息过滤器函数 */ filter?: (message: EventMessage) => boolean /** * 是否只监听一次 */ once?: boolean // 只监听一次 } /** * 事件SDK接口 */ export interface EventSDK { /** * 发送事件消息 */ emit(channel: string, data: T): Promise> /** * 订阅事件频道 */ on( channel: string, callback: (message: EventMessage) => void, config?: EventSubscriptionConfig ): Promise> /** * 取消订阅 */ off(subscriptionId: string): Promise> /** * 广播消息 */ broadcast(channel: string, data: T): Promise> /** * 发送点对点消息 */ sendTo(targetAppId: string, data: T): Promise> /** * 获取频道订阅者数量 */ getSubscriberCount(channel: string): Promise> /** * 获取可用频道列表 */ getChannels(): Promise> } // ============================================================================= // UI SDK接口 // ============================================================================= /** * 对话框类型 */ export enum DialogType { INFO = 'info', SUCCESS = 'success', WARNING = 'warning', ERROR = 'error', CONFIRM = 'confirm' } /** * 对话框选项 */ /** * 对话框选项 */ export interface DialogOptions { /** * 对话框标题 */ title?: string /** * 对话框消息内容 */ message: string /** * 对话框类型 */ type?: DialogType /** * 自定义按钮文本数组 */ buttons?: string[] /** * 默认按钮索引 */ defaultButton?: number /** * 取消按钮索引 */ cancelButton?: number } /** * 通知选项 */ /** * 通知选项 */ export interface NotificationOptions { /** * 通知标题 */ title: string /** * 通知正文内容 */ body: string /** * 通知图标URL */ icon?: string /** * 显示时长(毫秒) */ duration?: number // 显示时长(毫秒) /** * 通知操作按钮 */ actions?: Array<{ title: string; action: string }> } /** * 文件选择选项 */ export interface FilePickerOptions { accept?: string // 文件类型过滤 multiple?: boolean // 是否多选 directory?: boolean // 是否选择目录 } /** * UI SDK接口 */ export interface UISDK { /** * 显示对话框 */ showDialog(options: DialogOptions): Promise> /** * 显示通知 */ showNotification(options: NotificationOptions): Promise> /** * 显示文件选择器 */ showFilePicker(options?: FilePickerOptions): Promise> /** * 显示保存文件对话框 */ showSaveDialog(defaultName?: string, accept?: string): Promise> /** * 显示Toast消息 */ showToast(message: string, type?: 'info' | 'success' | 'warning' | 'error', duration?: number): Promise> /** * 显示加载指示器 */ showLoading(message?: string): Promise> /** * 隐藏加载指示器 */ hideLoading(id: string): Promise> /** * 显示进度条 */ showProgress(options: { title?: string; message?: string; progress: number }): Promise> /** * 更新进度条 */ updateProgress(id: string, progress: number, message?: string): Promise> /** * 隐藏进度条 */ hideProgress(id: string): Promise> } // ============================================================================= // 系统SDK接口 // ============================================================================= /** * 系统信息 */ /** * 系统信息 */ export interface SystemInfo { /** * 运行平台信息 */ platform: string /** * 用户代理字符串 */ userAgent: string /** * 系统语言设置 */ language: string /** * 时区信息 */ timezone: string /** * 屏幕分辨率 */ screenResolution: { /** * 屏幕宽度 */ width: number; /** * 屏幕高度 */ height: number } /** * 颜色深度 */ colorDepth: number /** * 像素比率 */ pixelRatio: number } /** * 应用信息 */ /** * 应用信息 */ export interface AppInfo { /** * 应用唯一标识符 */ id: string /** * 应用名称 */ name: string /** * 应用版本号 */ version: string /** * 应用权限列表 */ permissions: string[] /** * 应用创建时间 */ createdAt: Date /** * 应用最后活跃时间 */ lastActiveAt: Date } /** * 系统SDK接口 */ export interface SystemSDK { /** * 获取系统信息 */ getSystemInfo(): Promise> /** * 获取当前应用信息 */ getAppInfo(): Promise> /** * 请求权限 */ requestPermission(permission: string, reason?: string): Promise> /** * 检查权限状态 */ checkPermission(permission: string): Promise> /** * 获取剪贴板内容 */ getClipboard(): Promise> /** * 设置剪贴板内容 */ setClipboard(text: string): Promise> /** * 打开外部链接 */ openExternal(url: string): Promise> /** * 获取当前时间 */ getCurrentTime(): Promise> /** * 生成UUID */ generateUUID(): Promise> /** * 退出应用 */ exit(): Promise> } // ============================================================================= // 主SDK接口 // ============================================================================= /** * 系统SDK主接口 * 整合所有子模块SDK */ export interface SystemDesktopSDK { /** * SDK版本 */ readonly version: string /** * 当前应用ID */ readonly appId: string /** * 是否已初始化 */ readonly initialized: boolean /** * 窗体操作SDK */ readonly window: WindowSDK /** * 存储操作SDK */ readonly storage: StorageSDK /** * 网络请求SDK */ readonly network: NetworkSDK /** * 事件通信SDK */ readonly events: EventSDK /** * UI操作SDK */ readonly ui: UISDK /** * 系统操作SDK */ readonly system: SystemSDK /** * 初始化SDK */ init(config: SDKConfig): Promise> /** * 销毁SDK */ destroy(): Promise> /** * 获取SDK状态 */ getStatus(): Promise> } // ============================================================================= // 全局类型声明 // ============================================================================= declare global { interface Window { /** * 系统桌面SDK全局实例 */ SystemSDK: SystemDesktopSDK } }