/** * 系统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 { usedSpace: number // 已使用空间(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 { method?: HTTPMethod headers?: Record body?: any timeout?: number responseType?: 'json' | 'text' | 'blob' | 'arrayBuffer' } /** * 网络响应 */ export interface NetworkResponse { data: T status: number statusText: string headers: Record 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 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 } }