keepwork-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +21 -0
  2. package/dist-npm/keepwork-sdk.js +37514 -0
  3. package/dist-npm/keepwork-sdk.js.map +1 -0
  4. package/dist-npm/md5-CZ0vz1_S.js +240 -0
  5. package/dist-npm/md5-CZ0vz1_S.js.map +1 -0
  6. package/dist-npm/types/index.d.ts +42 -0
  7. package/dist-npm/types/index.d.ts.map +1 -0
  8. package/dist-npm/types/src/ai-chat/AIChat.core.d.ts +218 -0
  9. package/dist-npm/types/src/ai-chat/AIChat.core.d.ts.map +1 -0
  10. package/dist-npm/types/src/ai-chat/AIChat.d.ts +18 -0
  11. package/dist-npm/types/src/ai-chat/AIChat.d.ts.map +1 -0
  12. package/dist-npm/types/src/ai-chat/AIChat.session.d.ts +201 -0
  13. package/dist-npm/types/src/ai-chat/AIChat.session.d.ts.map +1 -0
  14. package/dist-npm/types/src/ai-chat/AIGenerators.base.d.ts +297 -0
  15. package/dist-npm/types/src/ai-chat/AIGenerators.base.d.ts.map +1 -0
  16. package/dist-npm/types/src/ai-chat/AIGenerators.d.ts +15 -0
  17. package/dist-npm/types/src/ai-chat/AIGenerators.d.ts.map +1 -0
  18. package/dist-npm/types/src/ai-chat/AIGenerators.media.d.ts +208 -0
  19. package/dist-npm/types/src/ai-chat/AIGenerators.media.d.ts.map +1 -0
  20. package/dist-npm/types/src/ai-chat/ChildSessionMixin.d.ts +153 -0
  21. package/dist-npm/types/src/ai-chat/ChildSessionMixin.d.ts.map +1 -0
  22. package/dist-npm/types/src/ai-chat/CopilotTools.d.ts +150 -0
  23. package/dist-npm/types/src/ai-chat/CopilotTools.d.ts.map +1 -0
  24. package/dist-npm/types/src/ai-chat/MqttManager.d.ts +123 -0
  25. package/dist-npm/types/src/ai-chat/MqttManager.d.ts.map +1 -0
  26. package/dist-npm/types/src/ai-chat/SandboxToolEnv.d.ts +210 -0
  27. package/dist-npm/types/src/ai-chat/SandboxToolEnv.d.ts.map +1 -0
  28. package/dist-npm/types/src/audio/AudioEngine.d.ts +272 -0
  29. package/dist-npm/types/src/audio/AudioEngine.d.ts.map +1 -0
  30. package/dist-npm/types/src/audio/AudioEngine.utils.d.ts +72 -0
  31. package/dist-npm/types/src/audio/AudioEngine.utils.d.ts.map +1 -0
  32. package/dist-npm/types/src/audio/Speech.d.ts +247 -0
  33. package/dist-npm/types/src/audio/Speech.d.ts.map +1 -0
  34. package/dist-npm/types/src/core/AgentConfig.d.ts +104 -0
  35. package/dist-npm/types/src/core/AgentConfig.d.ts.map +1 -0
  36. package/dist-npm/types/src/core/AgentRouter.d.ts +342 -0
  37. package/dist-npm/types/src/core/AgentRouter.d.ts.map +1 -0
  38. package/dist-npm/types/src/core/NPL.d.ts +251 -0
  39. package/dist-npm/types/src/core/NPL.d.ts.map +1 -0
  40. package/dist-npm/types/src/core/RemoteLog.d.ts +132 -0
  41. package/dist-npm/types/src/core/RemoteLog.d.ts.map +1 -0
  42. package/dist-npm/types/src/core/keepworkSDK.core.d.ts +84 -0
  43. package/dist-npm/types/src/core/keepworkSDK.core.d.ts.map +1 -0
  44. package/dist-npm/types/src/core/keepworkSDK.d.ts +129 -0
  45. package/dist-npm/types/src/core/keepworkSDK.d.ts.map +1 -0
  46. package/dist-npm/types/src/core/keepworkSDK.pages.d.ts +101 -0
  47. package/dist-npm/types/src/core/keepworkSDK.pages.d.ts.map +1 -0
  48. package/dist-npm/types/src/core/keepworkSDK.utils.d.ts +40 -0
  49. package/dist-npm/types/src/core/keepworkSDK.utils.d.ts.map +1 -0
  50. package/dist-npm/types/src/digital-human/DigitalHuman.d.ts +1316 -0
  51. package/dist-npm/types/src/digital-human/DigitalHuman.d.ts.map +1 -0
  52. package/dist-npm/types/src/digital-human/DigitalHumanBridge.d.ts +54 -0
  53. package/dist-npm/types/src/digital-human/DigitalHumanBridge.d.ts.map +1 -0
  54. package/dist-npm/types/src/digital-human/DigitalHumanConfig.d.ts +104 -0
  55. package/dist-npm/types/src/digital-human/DigitalHumanConfig.d.ts.map +1 -0
  56. package/dist-npm/types/src/digital-human/DigitalHumanFrame.d.ts +390 -0
  57. package/dist-npm/types/src/digital-human/DigitalHumanFrame.d.ts.map +1 -0
  58. package/dist-npm/types/src/digital-human/DigitalHumanFrameMessages.d.ts +59 -0
  59. package/dist-npm/types/src/digital-human/DigitalHumanFrameMessages.d.ts.map +1 -0
  60. package/dist-npm/types/src/digital-human/DigitalHumanSubtitleOverlay.d.ts +114 -0
  61. package/dist-npm/types/src/digital-human/DigitalHumanSubtitleOverlay.d.ts.map +1 -0
  62. package/dist-npm/types/src/digital-human/DigitalHumanUtils.d.ts +53 -0
  63. package/dist-npm/types/src/digital-human/DigitalHumanUtils.d.ts.map +1 -0
  64. package/dist-npm/types/src/rtc/AIChatRTC.constants.d.ts +65 -0
  65. package/dist-npm/types/src/rtc/AIChatRTC.constants.d.ts.map +1 -0
  66. package/dist-npm/types/src/rtc/AIChatRTC.d.ts +91 -0
  67. package/dist-npm/types/src/rtc/AIChatRTC.d.ts.map +1 -0
  68. package/dist-npm/types/src/rtc/AIChatRTC.session.d.ts +268 -0
  69. package/dist-npm/types/src/rtc/AIChatRTC.session.d.ts.map +1 -0
  70. package/dist-npm/types/src/rtc/AIChatRTCLocal.backends.d.ts +232 -0
  71. package/dist-npm/types/src/rtc/AIChatRTCLocal.backends.d.ts.map +1 -0
  72. package/dist-npm/types/src/rtc/AIChatRTCLocal.core.d.ts +92 -0
  73. package/dist-npm/types/src/rtc/AIChatRTCLocal.core.d.ts.map +1 -0
  74. package/dist-npm/types/src/rtc/AIChatRTCLocal.d.ts +15 -0
  75. package/dist-npm/types/src/rtc/AIChatRTCLocal.d.ts.map +1 -0
  76. package/dist-npm/types/src/rtc/AIChatRTCLocal.session.d.ts +127 -0
  77. package/dist-npm/types/src/rtc/AIChatRTCLocal.session.d.ts.map +1 -0
  78. package/dist-npm/types/src/rtc/LocalRTC.d.ts +91 -0
  79. package/dist-npm/types/src/rtc/LocalRTC.d.ts.map +1 -0
  80. package/dist-npm/types/src/rtc/SpeechRTC.d.ts +156 -0
  81. package/dist-npm/types/src/rtc/SpeechRTC.d.ts.map +1 -0
  82. package/dist-npm/types/src/rtc/SpeechRTC.transport.d.ts +191 -0
  83. package/dist-npm/types/src/rtc/SpeechRTC.transport.d.ts.map +1 -0
  84. package/dist-npm/types/src/store/CloudDrive.d.ts +140 -0
  85. package/dist-npm/types/src/store/CloudDrive.d.ts.map +1 -0
  86. package/dist-npm/types/src/store/LocalStorageUtil.d.ts +136 -0
  87. package/dist-npm/types/src/store/LocalStorageUtil.d.ts.map +1 -0
  88. package/dist-npm/types/src/store/PersonalPageStore.base.d.ts +267 -0
  89. package/dist-npm/types/src/store/PersonalPageStore.base.d.ts.map +1 -0
  90. package/dist-npm/types/src/store/PersonalPageStore.d.ts +13 -0
  91. package/dist-npm/types/src/store/PersonalPageStore.d.ts.map +1 -0
  92. package/dist-npm/types/src/store/PersonalPageStore.data.d.ts +198 -0
  93. package/dist-npm/types/src/store/PersonalPageStore.data.d.ts.map +1 -0
  94. package/dist-npm/types/src/store/PersonalPageStore.sync.d.ts +171 -0
  95. package/dist-npm/types/src/store/PersonalPageStore.sync.d.ts.map +1 -0
  96. package/dist-npm/types/src/store/PersonalPageStore.types.d.ts +92 -0
  97. package/dist-npm/types/src/store/PersonalPageStore.types.d.ts.map +1 -0
  98. package/dist-npm/types/src/store/YMLParser.d.ts +96 -0
  99. package/dist-npm/types/src/store/YMLParser.d.ts.map +1 -0
  100. package/dist-npm/types/src/tools/AgentTool.d.ts +110 -0
  101. package/dist-npm/types/src/tools/AgentTool.d.ts.map +1 -0
  102. package/dist-npm/types/src/tools/AppTools.d.ts +122 -0
  103. package/dist-npm/types/src/tools/AppTools.d.ts.map +1 -0
  104. package/dist-npm/types/src/tools/ExecuteTool.d.ts +96 -0
  105. package/dist-npm/types/src/tools/ExecuteTool.d.ts.map +1 -0
  106. package/dist-npm/types/src/tools/FileTools.d.ts +77 -0
  107. package/dist-npm/types/src/tools/FileTools.d.ts.map +1 -0
  108. package/dist-npm/types/src/tools/MinigameTools.d.ts +234 -0
  109. package/dist-npm/types/src/tools/MinigameTools.d.ts.map +1 -0
  110. package/dist-npm/types/src/tools/MqttTool.d.ts +53 -0
  111. package/dist-npm/types/src/tools/MqttTool.d.ts.map +1 -0
  112. package/dist-npm/types/src/tools/PersonalPageTool.d.ts +57 -0
  113. package/dist-npm/types/src/tools/PersonalPageTool.d.ts.map +1 -0
  114. package/dist-npm/types/src/tools/SummarizeTool.d.ts +279 -0
  115. package/dist-npm/types/src/tools/SummarizeTool.d.ts.map +1 -0
  116. package/dist-npm/types/src/tools/WebTool.d.ts +106 -0
  117. package/dist-npm/types/src/tools/WebTool.d.ts.map +1 -0
  118. package/dist-npm/types/src/types/common.d.ts +164 -0
  119. package/dist-npm/types/src/types/common.d.ts.map +1 -0
  120. package/dist-npm/types/src/ui/LocalAPIKeySettings.d.ts +229 -0
  121. package/dist-npm/types/src/ui/LocalAPIKeySettings.d.ts.map +1 -0
  122. package/dist-npm/types/src/ui/LoginWindow.d.ts +163 -0
  123. package/dist-npm/types/src/ui/LoginWindow.d.ts.map +1 -0
  124. package/dist-npm/types/src/ui/ProfileWindow.d.ts +75 -0
  125. package/dist-npm/types/src/ui/ProfileWindow.d.ts.map +1 -0
  126. package/dist-npm/types/src/ui/VerifyHuman.d.ts +23 -0
  127. package/dist-npm/types/src/ui/VerifyHuman.d.ts.map +1 -0
  128. package/dist-npm/types/src/ui/WorkspaceViewer.d.ts +184 -0
  129. package/dist-npm/types/src/ui/WorkspaceViewer.d.ts.map +1 -0
  130. package/dist-npm/types/src/user/SocialFriends.d.ts +173 -0
  131. package/dist-npm/types/src/user/SocialFriends.d.ts.map +1 -0
  132. package/dist-npm/types/src/user/UserWorks.d.ts +187 -0
  133. package/dist-npm/types/src/user/UserWorks.d.ts.map +1 -0
  134. package/dist-npm/types/src/utils/ImageUtils.d.ts +107 -0
  135. package/dist-npm/types/src/utils/ImageUtils.d.ts.map +1 -0
  136. package/dist-npm/types/src/utils/SDKLogger.d.ts +111 -0
  137. package/dist-npm/types/src/utils/SDKLogger.d.ts.map +1 -0
  138. package/dist-npm/types/src/utils/translation.d.ts +95 -0
  139. package/dist-npm/types/src/utils/translation.d.ts.map +1 -0
  140. package/dist-npm/types/src/wechat/WxAuth.d.ts +126 -0
  141. package/dist-npm/types/src/wechat/WxAuth.d.ts.map +1 -0
  142. package/dist-npm/types/src/wechat/WxLaunchApp.d.ts +96 -0
  143. package/dist-npm/types/src/wechat/WxLaunchApp.d.ts.map +1 -0
  144. package/dist-npm/types/src/wechat/WxUtils.d.ts +145 -0
  145. package/dist-npm/types/src/wechat/WxUtils.d.ts.map +1 -0
  146. package/package.json +52 -0
@@ -0,0 +1,163 @@
1
+ /**
2
+ * LoginWindow - login modal for KeepworkSDK.
3
+ *
4
+ * Features:
5
+ * - Username/password login
6
+ * - Registration (username/password)
7
+ * - WeChat QR login on desktop
8
+ * - WeChat OAuth redirect login inside WeChat browser
9
+ * - Google OAuth login (opt-in via googleClientId option)
10
+ * - English / Chinese i18n (auto-detected from system language)
11
+ * - Mobile-responsive
12
+ *
13
+ * All UI, styles, and logic are self-contained in this file.
14
+ */
15
+ type LoginStrings = Record<string, string>;
16
+ /**
17
+ * 宽松的 DOM 元素类型:登录弹窗内的元素可能是 input/button/div,
18
+ * 这里用交叉类型统一暴露用到的属性(value/disabled/style/focus 等),
19
+ * 避免在每个 querySelector 处分别断言。运行时行为与原 JS 一致。
20
+ */
21
+ type LWEl = HTMLInputElement & HTMLButtonElement & HTMLElement & HTMLIFrameElement;
22
+ /** LoginWindow 依赖的 SDK 表面 */
23
+ interface LWSdk {
24
+ wxAuth?: unknown;
25
+ login(...args: unknown[]): Promise<Record<string, unknown>>;
26
+ register?(...args: unknown[]): Promise<unknown>;
27
+ request?(...args: unknown[]): Promise<unknown>;
28
+ post(path: string, body?: unknown): Promise<Record<string, unknown>>;
29
+ get(path: string, query?: unknown): Promise<Record<string, unknown>>;
30
+ setToken(token: unknown): void;
31
+ [key: string]: unknown;
32
+ }
33
+ export default class LoginWindow {
34
+ sdk: LWSdk;
35
+ _wxAuthInstance: unknown;
36
+ _overlay: HTMLElement | null;
37
+ _styleEl: HTMLStyleElement | null;
38
+ _wechatPollingTimer: ReturnType<typeof setInterval> | null;
39
+ _resetTimer: ReturnType<typeof setTimeout> | null;
40
+ _processedWechatCodes: Set<string>;
41
+ _googlePopup: Window | null;
42
+ _googlePollingTimer: ReturnType<typeof setInterval> | null;
43
+ _googleCodeHandled: boolean;
44
+ _googleMessageHandler: ((e: MessageEvent) => void) | null;
45
+ _googleSentState: string | null;
46
+ _viewportHandler: (() => void) | null;
47
+ _oauthBindCtx: Record<string, unknown> | null;
48
+ _lang?: string;
49
+ _strings?: LoginStrings;
50
+ _title?: string;
51
+ _platform?: unknown;
52
+ _machineCode?: unknown;
53
+ _resolve?: (v: Record<string, unknown>) => void;
54
+ _reject?: (e: Error) => void;
55
+ _wechatOptions?: Record<string, string>;
56
+ _googleOptions?: Record<string, unknown>;
57
+ [key: string]: unknown;
58
+ constructor(sdk: unknown);
59
+ /**
60
+ * Show the login window.
61
+ * @param {Object} options
62
+ * @param {string} [options.title] - Custom title
63
+ * @param {string} [options.lang] - 'zhCN' | 'enUS' (auto-detected if omitted)
64
+ * @param {boolean} [options.enableRegister=true] - Show register view
65
+ * @param {boolean} [options.enableWechat=true] - Show WeChat login
66
+ * @param {string} [options.wechatAppId] - WeChat QR connect app id
67
+ * @param {string} [options.wechatRedirectUri] - Redirect URI for WeChat QR connect
68
+ * @param {boolean} [options.enableGoogle] - Show Google login button (requires googleClientId)
69
+ * @param {string} [options.googleClientId] - Google OAuth client id (web). Required to enable Google login.
70
+ * @param {string} [options.googleRedirectUri] - Redirect URI registered in Google Cloud Console
71
+ * @param {string} [options.googleScope] - OAuth scope (default: 'openid email profile')
72
+ * @param {string} [options.googleState] - OAuth state (default: 'login')
73
+ * @param {string} [options.platform] - Platform tag forwarded to backend
74
+ * @param {string} [options.machineCode] - Machine code forwarded to backend
75
+ * @returns {Promise<Object>} Resolves with login/register response on success, rejects on cancel
76
+ */
77
+ show(options?: Record<string, unknown>): Promise<Record<string, unknown>>;
78
+ /**
79
+ * Close the login window if open.
80
+ */
81
+ close(): void;
82
+ _renderWechatQrPanel(t: (k: string) => string): string;
83
+ _renderSocialPanel(t: (k: string) => string, { showGoogle, showWechatRedirect, showPasswordEntry }?: {
84
+ showGoogle?: boolean;
85
+ showWechatRedirect?: boolean;
86
+ showPasswordEntry?: boolean;
87
+ }): string;
88
+ _switchView(overlay: HTMLElement, viewId: string): void;
89
+ _normalizeWechatOptions(options: Record<string, unknown>): Record<string, string>;
90
+ _getDefaultWechatRedirectUri(): string;
91
+ _getWechatAuthUrl(): string;
92
+ _startWechatPolling(overlay: HTMLElement): void;
93
+ _stopWechatPolling(): void;
94
+ _maybeHandleWechatCodeFromCurrentUrl(overlay: HTMLElement): void;
95
+ _handleWechatCode(code: string, state: string | null, overlay: HTMLElement): Promise<void>;
96
+ _isWechatCodeProcessed(code: string): boolean;
97
+ _markWechatCodeProcessed(code: string): void;
98
+ _clearWechatQueryFromCurrentUrl(): void;
99
+ /**
100
+ * Check if the current URL contains a WxAuth OAuth redirect code (wxauth=1).
101
+ * If found, handle the code exchange via WxAuth.codeToToken.
102
+ */
103
+ _maybeHandleWxAuthRedirectCode(overlay: HTMLElement): void;
104
+ /**
105
+ * Exchange a WxAuth OAuth code for a token using WxAuth.codeToToken.
106
+ */
107
+ _handleWxAuthRedirectCode(code: string, overlay: HTMLElement): Promise<void>;
108
+ _setWechatLoading(overlay: HTMLElement, isLoading: boolean): void;
109
+ _normalizeGoogleOptions(options: Record<string, unknown>): Record<string, unknown>;
110
+ _getGoogleAuthUrl(): string;
111
+ _buildGoogleState(): string;
112
+ _getGoogleReturnUrl(): string;
113
+ _decodeGoogleState(state: string | null): Record<string, unknown> | null;
114
+ _b64urlEncode(str: string): string;
115
+ _b64urlDecode(b64url: string): string;
116
+ _startGoogleLogin(overlay: HTMLElement): void;
117
+ _startGoogleMessageListener(overlay: HTMLElement): void;
118
+ _stopGoogleMessageListener(): void;
119
+ _openGooglePopup(url: string): Window | null;
120
+ _startGooglePolling(overlay: HTMLElement): void;
121
+ _stopGooglePolling(): void;
122
+ _closeGooglePopup(): void;
123
+ _maybeHandleGoogleCodeFromCurrentUrl(overlay: HTMLElement): void;
124
+ _handleGoogleCode(code: string, state: string | null, overlay: HTMLElement): Promise<void>;
125
+ _clearGoogleQueryFromCurrentUrl(): void;
126
+ _setGoogleError(overlay: HTMLElement, keyOrMessage: string): void;
127
+ _setWechatError(overlay: HTMLElement, keyOrMessage: string): void;
128
+ _bindPasswordReset(overlay: HTMLElement): void;
129
+ _startResetCountdown(btn: LWEl, seconds: number): void;
130
+ _clearResetTimer(): void;
131
+ _validatePhoneOrEmail(value: string): boolean;
132
+ _validateResetPassword(password: string): boolean;
133
+ _extractApiMessage(err: unknown): string;
134
+ _isCaptchaError(err: unknown, message: string): boolean;
135
+ _validateUsername(name: string): boolean;
136
+ /**
137
+ * 第三方登录探测发现未绑定账号时,进入「设置账号」视图:用户名预填后端建议,
138
+ * 密码本地生成一串明文显示,二者均可修改。
139
+ * @param {HTMLElement} overlay
140
+ * @param {Object} data - 探测返回 { ticket, suggestedUsername, provider, ... }
141
+ * @param {string} bindPath - 绑定接口路径
142
+ */
143
+ _showOauthSetup(overlay: HTMLElement, data: Record<string, unknown>, bindPath: string): void;
144
+ _doOauthBind(overlay: HTMLElement): Promise<void>;
145
+ _generatePassword(len?: number): string;
146
+ _finish(response: Record<string, unknown>): void;
147
+ /**
148
+ * Constrain the overlay to the visual viewport so the on-screen keyboard
149
+ * never hides the lower part of the form (e.g. the third-party login
150
+ * buttons). When the soft keyboard opens, the layout viewport stays the
151
+ * same size but the visual viewport shrinks; by pinning the overlay to the
152
+ * visual viewport the modal stays fully above the keyboard and its content
153
+ * (which has overflow-y: auto) can be scrolled to reach every button.
154
+ */
155
+ _setupViewportHandling(overlay: HTMLElement): void;
156
+ _teardownViewportHandling(): void;
157
+ _injectStyles(): void;
158
+ _destroy(): void;
159
+ _esc(str: unknown): string;
160
+ _escapeHTML(str: unknown): string;
161
+ }
162
+ export {};
163
+ //# sourceMappingURL=LoginWindow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginWindow.d.ts","sourceRoot":"","sources":["../../../../src/ui/LoginWindow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * ProfileWindow - Self-contained user profile modal for KeepworkSDK.
3
+ *
4
+ * Features:
5
+ * - Display username, phone (masked), email
6
+ * - Change password (old + new + confirm)
7
+ * - VIP / SVIP status display with expiration dates
8
+ * - Activation code input for VIP redemption
9
+ * - English / Chinese i18n (auto-detected from system language)
10
+ * - Mobile-responsive (full-screen on small viewports)
11
+ *
12
+ * All UI, styles, and logic are self-contained in this file.
13
+ */
14
+ /** show() 选项 */
15
+ export interface ProfileWindowShowOptions {
16
+ /** 自定义标题 */
17
+ title?: string;
18
+ /** 语言:'zhCN' | 'enUS'(省略时自动检测) */
19
+ lang?: 'zhCN' | 'enUS';
20
+ /** 是否显示修改密码区(默认 true) */
21
+ enablePassword?: boolean;
22
+ /** 是否显示 VIP 区与激活码(默认 true) */
23
+ enableVip?: boolean;
24
+ }
25
+ /** sdk 需提供的最小接口 */
26
+ interface ProfileWindowSdk {
27
+ token?: string;
28
+ getUserProfile(options?: {
29
+ forceRefresh?: boolean;
30
+ }): Promise<Record<string, unknown>>;
31
+ getAuthHeaders(): Record<string, string>;
32
+ extractMainDomain(hostname: string): string;
33
+ put(path: string, body?: unknown): Promise<unknown>;
34
+ logout(): Promise<unknown>;
35
+ [key: string]: unknown;
36
+ }
37
+ export default class ProfileWindow {
38
+ sdk: ProfileWindowSdk;
39
+ private _overlay;
40
+ private _styleEl;
41
+ private _pwOverlay;
42
+ private _lang;
43
+ private _strings;
44
+ private _resolve;
45
+ constructor(sdk: unknown);
46
+ /**
47
+ * Show the profile window.
48
+ * @param {Object} options
49
+ * @param {string} [options.title] - Custom title
50
+ * @param {string} [options.lang] - 'zhCN' | 'enUS' (auto-detected if omitted)
51
+ * @param {boolean} [options.enablePassword=true] - Show change password section
52
+ * @param {boolean} [options.enableVip=true] - Show VIP section with activation code
53
+ * @returns {Promise<void>} Resolves when the window is closed
54
+ */
55
+ show(options?: ProfileWindowShowOptions): Promise<unknown>;
56
+ /**
57
+ * Close the profile window if open
58
+ */
59
+ close(): void;
60
+ private _loadProfile;
61
+ private _bindNicknameEdit;
62
+ private _renderVipInfo;
63
+ private _loadTokenUsage;
64
+ private _bindVipActivation;
65
+ private _showPasswordPopup;
66
+ private _maskPhone;
67
+ private _formatNumber;
68
+ private _formatDate;
69
+ private _getTokenPlanUrl;
70
+ private _injectStyles;
71
+ private _destroy;
72
+ private _esc;
73
+ }
74
+ export {};
75
+ //# sourceMappingURL=ProfileWindow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProfileWindow.d.ts","sourceRoot":"","sources":["../../../../src/ui/ProfileWindow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,gBAAgB;AAChB,MAAM,WAAW,wBAAwB;IACvC,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,yBAAyB;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAKD,mBAAmB;AACnB,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvF,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AA0eD,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,GAAG,EAAE,gBAAgB,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAqC;gBAEzC,GAAG,EAAE,OAAO;IAUxB;;;;;;;;OAQG;IACH,IAAI,CAAC,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IAwH9D;;OAEG;IACH,KAAK,IAAI,IAAI;YAOC,YAAY;IAgD1B,OAAO,CAAC,iBAAiB;IAgEzB,OAAO,CAAC,cAAc;YA8BR,eAAe;IA4C7B,OAAO,CAAC,kBAAkB;IAmE1B,OAAO,CAAC,kBAAkB;IA8F1B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,IAAI;CAKb"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * VerifyHuman.ts — 纯客户端滑块验证码("滑动验证",完整 TypeScript 实现)
3
+ *
4
+ * 显示一个滑块拼图,用户需把滑块拖到轨道末端。这是轻量级机器人拦截,
5
+ * **不**替代服务端限流,但能提高自动化表单提交的门槛。
6
+ *
7
+ * @example
8
+ * const ok = await VerifyHuman.verify({ lang: 'zhCN' });
9
+ * // ok === true → 通过;reject → 用户取消
10
+ */
11
+ /** verify() 选项 */
12
+ export interface VerifyHumanOptions {
13
+ /** 语言:'zhCN' | 'enUS'(省略时自动检测) */
14
+ lang?: 'zhCN' | 'enUS';
15
+ }
16
+ export default class VerifyHuman {
17
+ /**
18
+ * 显示滑块验证码并返回 Promise。
19
+ * @returns 成功时 resolve(true),用户取消时 reject。
20
+ */
21
+ static verify(options?: VerifyHumanOptions): Promise<true>;
22
+ }
23
+ //# sourceMappingURL=VerifyHuman.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerifyHuman.d.ts","sourceRoot":"","sources":["../../../../src/ui/VerifyHuman.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,kBAAkB;AAClB,MAAM,WAAW,kBAAkB;IACjC,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAyJD,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;CAyI/D"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * WorkspaceViewer.ts — 工作区文件浏览器 UI 组件(基于 Shadow DOM 的文件树)
3
+ *
4
+ * 支持工作区/挂载文件夹切换、文件预览/编辑、搜索、新建、打开/删除文件、原始视图等。
5
+ */
6
+ /** WorkspaceViewer 构造选项 */
7
+ export interface WorkspaceViewerOptions {
8
+ /** 挂载容器元素(必填) */
9
+ container?: HTMLElement;
10
+ /** KeepworkSDK 实例(默认 window.keepwork) */
11
+ sdk?: unknown;
12
+ /** 工作区名(默认 'workspace_default') */
13
+ workspace?: string;
14
+ /** 可选挂载文件夹 */
15
+ mountFolder?: string;
16
+ /** 初始打开的文件 */
17
+ file?: string;
18
+ /** 隐藏顶栏 */
19
+ hideTopbar?: boolean;
20
+ /** 隐藏工具栏 */
21
+ hideToolbar?: boolean;
22
+ /** 紧凑布局 */
23
+ compact?: boolean;
24
+ /** 显示名映射 */
25
+ displayNameMap?: Record<string, string>;
26
+ /** 隐藏的页面根 */
27
+ hiddenPageRoots?: string[];
28
+ /** 只读模式 */
29
+ readOnly?: boolean;
30
+ /** 隐藏用户信息 */
31
+ hideUserInfo?: boolean;
32
+ /** 隐藏搜索 */
33
+ hideSearch?: boolean;
34
+ /** 隐藏新建文件 */
35
+ hideNewFile?: boolean;
36
+ /** 隐藏打开文件 */
37
+ hideOpenFile?: boolean;
38
+ /** 隐藏删除 */
39
+ hideDelete?: boolean;
40
+ /** 隐藏原始视图 */
41
+ hideRawView?: boolean;
42
+ /** 允许切换工作区 */
43
+ allowChangeWorkspace?: boolean;
44
+ /** 允许切换挂载文件夹 */
45
+ allowChangeMount?: boolean;
46
+ [key: string]: unknown;
47
+ }
48
+ /** PersonalPageStore(workspace-scoped)结构化接口 */
49
+ interface WVStore {
50
+ mountedFolder?: unknown;
51
+ _remoteTreeCache?: unknown;
52
+ listDir(path: string, recursive?: boolean): Promise<string>;
53
+ readFile(path: string): Promise<string>;
54
+ loadPageData(key: string, sub: string | null, a: boolean, b: boolean): Promise<unknown>;
55
+ savePageData(key: string, sub: string, value: unknown, a: boolean, b: boolean): Promise<unknown>;
56
+ clearPageData(key: string): Promise<unknown>;
57
+ clearLocalDisk(key: string): Promise<unknown>;
58
+ grepSearch(query: string, isRegexp: boolean, fileFilter?: string): Promise<string>;
59
+ _readMountedFile(key: string): Promise<string | null>;
60
+ [key: string]: unknown;
61
+ }
62
+ /** WorkspaceViewer 依赖的 SDK 表面 */
63
+ interface WVSdk {
64
+ token?: unknown;
65
+ personalPageStore: {
66
+ withWorkspace(workspace: string, mountFolder: string | null): WVStore;
67
+ [key: string]: unknown;
68
+ };
69
+ getUserProfile(opts: {
70
+ forceRefresh: boolean;
71
+ }): Promise<Record<string, unknown>>;
72
+ showLoginWindow(opts: {
73
+ title: string;
74
+ }): Promise<{
75
+ token?: unknown;
76
+ } | null>;
77
+ showProfileWindow(): unknown;
78
+ [key: string]: unknown;
79
+ }
80
+ /** 页面数据(含可选 content / _metadata / metadata 及任意字段) */
81
+ type WVPageData = (Record<string, unknown> & {
82
+ content?: unknown;
83
+ _metadata?: unknown;
84
+ metadata?: unknown;
85
+ }) | null | undefined;
86
+ /** 内部状态 */
87
+ interface WVState {
88
+ selectedFile: string | null;
89
+ viewMode: 'content' | 'raw' | 'edit';
90
+ fileItems: string[];
91
+ isMounted: boolean;
92
+ mountedPageSet: Set<string> | null;
93
+ selectedFolder: string | null;
94
+ expandedFolders: Set<string>;
95
+ folderChildren: Record<string, string[]>;
96
+ editPageData: {
97
+ content: string;
98
+ } | null;
99
+ absFiles: string[];
100
+ }
101
+ /** 解析后的选项(构造内部使用) */
102
+ interface WVResolvedOptions {
103
+ workspace: string;
104
+ mountFolder: string;
105
+ file: string;
106
+ hideTopbar: boolean;
107
+ hideToolbar: boolean;
108
+ compact: boolean;
109
+ readOnly: boolean;
110
+ hideUserInfo: boolean;
111
+ hideSearch: boolean;
112
+ hideNewFile: boolean;
113
+ hideOpenFile: boolean;
114
+ hideDelete: boolean;
115
+ hideRawView: boolean;
116
+ allowChangeWorkspace: boolean;
117
+ allowChangeMount: boolean;
118
+ }
119
+ export declare class WorkspaceViewer {
120
+ sdk: WVSdk;
121
+ StorageUtil: unknown;
122
+ options: WVResolvedOptions;
123
+ currentWorkspace: string;
124
+ displayNameMap: Record<string, string>;
125
+ hiddenPageRoots: string[];
126
+ _state: WVState;
127
+ container: HTMLElement;
128
+ shadowRoot: ShadowRoot;
129
+ root: HTMLElement;
130
+ dom: Record<string, HTMLElement & Record<string, unknown>>;
131
+ _handlers: Record<string, EventListener>;
132
+ constructor(options?: WorkspaceViewerOptions);
133
+ _bindDom(): void;
134
+ _bindEvents(): void;
135
+ _applyFeatureFlags(): void;
136
+ _applyLayoutModes(): void;
137
+ _initBadges(): void;
138
+ _updateBadges(): void;
139
+ initLogin(): Promise<void>;
140
+ showUser(profile: Record<string, unknown> | null): void;
141
+ _promptChangeWorkspace(): void;
142
+ _promptChangeMount(): void;
143
+ _promptOpenFile(): Promise<void>;
144
+ switchWorkspace(workspace: string): Promise<void>;
145
+ setMountFolder(mountFolder: string): Promise<void>;
146
+ _getMountedStore(): WVStore;
147
+ _getLocalStore(): WVStore;
148
+ startWorkspace(): Promise<void>;
149
+ loadWorkspace(): Promise<void>;
150
+ renderFileList(): void;
151
+ renderItems(items: string[], container: HTMLElement, depth: number, parentPath: string): void;
152
+ toggleFolder(folderPath: string, el: HTMLElement, depth: number): Promise<void>;
153
+ selectFile(name: string): Promise<void>;
154
+ loadFileData(): Promise<WVPageData>;
155
+ _updateRevisionInfo(data: WVPageData): void;
156
+ renderContent(): Promise<void>;
157
+ renderEditView(): Promise<void>;
158
+ syncViewModeUI(): void;
159
+ setViewMode(mode: 'content' | 'raw' | 'edit'): void;
160
+ addAbsoluteFile(absPath: string): Promise<boolean>;
161
+ saveEdit(): Promise<void>;
162
+ runSearch(): Promise<void>;
163
+ createNewFile(): Promise<void>;
164
+ deleteSelected(): Promise<void>;
165
+ formatValue(v: unknown): string;
166
+ escapeHtml(s: string): string;
167
+ _getDisplayName(name: string, parentPath: string): string;
168
+ _filterVisibleEntries(entries: string[], parentPath: string): string[];
169
+ _isMarkdownFile(filePath: string): boolean;
170
+ _formatMarkdownContent(text: string): string;
171
+ _inlineFormat(text: string): string;
172
+ _isEditableFile(filePath: string | null): boolean;
173
+ _isMountedFile(filePath: string): boolean;
174
+ _getLoadedFileCount(): number;
175
+ _syncToolbar(): void;
176
+ refreshWorkspace(): Promise<void>;
177
+ _toggleFileTreeMobile(): void;
178
+ _collapseFileTreeMobile(): void;
179
+ _expandFileTreeMobile(): void;
180
+ destroy(): void;
181
+ }
182
+ export declare function createWorkspaceViewer(options: WorkspaceViewerOptions): WorkspaceViewer;
183
+ export default WorkspaceViewer;
184
+ //# sourceMappingURL=WorkspaceViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspaceViewer.d.ts","sourceRoot":"","sources":["../../../../src/ui/WorkspaceViewer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * SocialFriends.ts — 好友 / 私聊房间 / 站内信 相关 API(完整 TypeScript 实现)
3
+ *
4
+ * 封装 coreservice 路由:好友申请、好友关系、黑名单、私聊房间创建/举报、
5
+ * 关注/粉丝查询、站内信(含奖励领取)、邮箱验证。内置请求限流与缓存。
6
+ *
7
+ * @example
8
+ * await keepwork.socialFriends.applyFriend(123, 'I am Alice');
9
+ * await keepwork.socialFriends.acceptApply(456);
10
+ * const friends = await keepwork.socialFriends.list();
11
+ * const room = await keepwork.socialFriends.createChatRoom(123);
12
+ */
13
+ /** 通用选项对象 */
14
+ export type SocialOptions = Record<string, unknown>;
15
+ /** 好友标识:id 或包含 friendId/targetId/userId/id 的对象 */
16
+ export type FriendRef = string | number | {
17
+ friendId?: string | number;
18
+ targetId?: string | number;
19
+ userId?: string | number;
20
+ id?: string | number;
21
+ [key: string]: unknown;
22
+ };
23
+ /** 限流错误(带额外字段) */
24
+ export interface RateLimitError extends Error {
25
+ code: 'SOCIAL_RATE_LIMITED';
26
+ action: string;
27
+ rateLimitKey: string;
28
+ retryAfter: number;
29
+ retryAfterMs: number;
30
+ }
31
+ /** sdk 需提供的最小接口 */
32
+ interface SocialFriendsSdk {
33
+ baseURL?: string;
34
+ getAuthHeaders(): Record<string, string>;
35
+ request(path: string, options?: {
36
+ method?: string;
37
+ body?: unknown;
38
+ }): Promise<unknown>;
39
+ get(path: string, params?: Record<string, unknown>): Promise<unknown>;
40
+ post(path: string, body?: unknown): Promise<unknown>;
41
+ put(path: string, body?: unknown): Promise<unknown>;
42
+ delete(path: string): Promise<unknown>;
43
+ }
44
+ export default class SocialFriends {
45
+ static DefaultRateLimitMs: number;
46
+ /** 各操作的限流间隔(ms)。 */
47
+ static RateLimitMs: Readonly<Record<string, number>>;
48
+ /** 好友申请状态枚举。 */
49
+ static FriendApplyStatus: Readonly<Record<string, number>>;
50
+ /** 好友关系状态枚举。 */
51
+ static FriendshipStatus: Readonly<Record<string, number>>;
52
+ sdk: SocialFriendsSdk;
53
+ private _rateLimitState;
54
+ private _rateLimitCache;
55
+ private _fixedResponseCache;
56
+ constructor(sdk: unknown);
57
+ private _getRateLimitMs;
58
+ private _getRateLimitKey;
59
+ /** 稳定序列化(键排序),用于生成确定性缓存 key。 */
60
+ private _stableStringify;
61
+ /** 强制限流;超限抛 RateLimitError。返回限流 key。 */
62
+ private _enforceRateLimit;
63
+ /** 限流 + 缓存:超限时若有缓存则返回缓存。 */
64
+ private _cachedRateLimitedRequest;
65
+ /** 固定缓存:命中即返回,否则请求后按 shouldCache 决定是否缓存。 */
66
+ private _fixedCachedRequest;
67
+ private _clearCachedAction;
68
+ /** 清除站内信列表缓存。 */
69
+ clearMailListCache(): void;
70
+ /** 递归判断是否已领取奖励。 */
71
+ private _hasReceivedRewards;
72
+ /** 去除空值参数。 */
73
+ private _compactParams;
74
+ /** 把 core API 基地址改写为指定服务的端点。 */
75
+ private _getServiceEndpoint;
76
+ private _getPushManageEndpoint;
77
+ /** 向指定端点发起请求(相对路径走 sdk.request,绝对 URL 走 fetch)。 */
78
+ private _requestEndpoint;
79
+ private _requireId;
80
+ /** 从 id 或对象中提取好友 id。 */
81
+ private _normalizeFriendId;
82
+ /** 归一化申请状态(数字或枚举名)。 */
83
+ private _normalizeApplyStatus;
84
+ /** 申请添加好友。 */
85
+ applyFriend(friendOrOptions: FriendRef, remark?: string): Promise<unknown>;
86
+ apply(friendOrOptions: FriendRef, remark?: string): Promise<unknown>;
87
+ requestFriend(friendOrOptions: FriendRef, remark?: string): Promise<unknown>;
88
+ addFriend(friendOrOptions: FriendRef, remark?: string): Promise<unknown>;
89
+ /** 处理待处理的好友申请(status: 2/AGREE, 3/REFUSE, 4/BLOCK)。 */
90
+ processApply(applyId: string | number, status: string | number): Promise<unknown>;
91
+ acceptApply(applyId: string | number): Promise<unknown>;
92
+ rejectApply(applyId: string | number): Promise<unknown>;
93
+ refuseApply(applyId: string | number): Promise<unknown>;
94
+ blockApply(applyId: string | number): Promise<unknown>;
95
+ acceptFriendApply(applyId: string | number): Promise<unknown>;
96
+ rejectFriendApply(applyId: string | number): Promise<unknown>;
97
+ /** 列出发给当前用户的好友申请。 */
98
+ listApplies(options?: SocialOptions): Promise<unknown>;
99
+ getApply(options?: SocialOptions): Promise<unknown>;
100
+ getApplies(options?: SocialOptions): Promise<unknown>;
101
+ listApplications(options?: SocialOptions): Promise<unknown>;
102
+ /** 列出当前用户好友关系(含好友信息和在线状态)。 */
103
+ list(options?: SocialOptions): Promise<unknown>;
104
+ getFriendships(options?: SocialOptions): Promise<unknown>;
105
+ listFriends(options?: SocialOptions): Promise<unknown>;
106
+ /** 通过用户名搜索当前用户的 Keepwork 好友(旧 /users/friends 路由)。 */
107
+ searchFriends(options?: SocialOptions | string): Promise<unknown>;
108
+ getFriends(options?: SocialOptions | string): Promise<unknown>;
109
+ removeFriend(friendOrOptions: FriendRef): Promise<unknown>;
110
+ deleteFriend(friendOrOptions: FriendRef): Promise<unknown>;
111
+ delete(friendOrOptions: FriendRef): Promise<unknown>;
112
+ remove(friendOrOptions: FriendRef): Promise<unknown>;
113
+ updateFriend(friendOrOptions: FriendRef, comment?: string): Promise<unknown>;
114
+ updateRemark(friendOrOptions: FriendRef, comment?: string): Promise<unknown>;
115
+ setFriendComment(friendOrOptions: FriendRef, comment?: string): Promise<unknown>;
116
+ addToBlacklist(friendOrOptions: FriendRef): Promise<unknown>;
117
+ blockFriend(friendOrOptions: FriendRef): Promise<unknown>;
118
+ blacklist(friendOrOptions: FriendRef): Promise<unknown>;
119
+ removeFromBlacklist(friendOrOptions: FriendRef): Promise<unknown>;
120
+ unblockFriend(friendOrOptions: FriendRef): Promise<unknown>;
121
+ unblacklist(friendOrOptions: FriendRef): Promise<unknown>;
122
+ listBlacklist(options?: SocialOptions): Promise<unknown>;
123
+ getBlacklist(options?: SocialOptions): Promise<unknown>;
124
+ /** 更新在线状态(需 API-key 权限的内部路由)。 */
125
+ setOnlineStatus(userId: string | number, status: unknown): Promise<unknown>;
126
+ clearAllOnlineStatus(): Promise<unknown>;
127
+ getFollowing(options?: SocialOptions): Promise<unknown>;
128
+ getFollowers(options?: SocialOptions): Promise<unknown>;
129
+ /** 为当前用户和好友创建或获取私聊房间。 */
130
+ createChatRoom(targetOrOptions: FriendRef): Promise<unknown>;
131
+ openPrivateChat(targetOrOptions: FriendRef): Promise<unknown>;
132
+ createP2PChat(targetOrOptions: FriendRef): Promise<unknown>;
133
+ createPrivateChatRoom(targetOrOptions: FriendRef): Promise<unknown>;
134
+ /** 举报私聊违规内容。 */
135
+ reportChat(options?: SocialOptions): Promise<unknown>;
136
+ reportUser(reportUserId: string | number, content?: string): Promise<unknown>;
137
+ reportChatUser(reportUserId: string | number, content?: string): Promise<unknown>;
138
+ /** 通过 push-manage 发送站内信。 */
139
+ sendMail(options?: SocialOptions): Promise<unknown>;
140
+ /** 列出当前用户站内信。 */
141
+ listMails(options?: SocialOptions): Promise<unknown>;
142
+ getMails(options?: SocialOptions): Promise<unknown>;
143
+ listEmails(options?: SocialOptions): Promise<unknown>;
144
+ getEmails(options?: SocialOptions): Promise<unknown>;
145
+ deleteMail(mailOrOptions: SocialOptions | string | number | Array<string | number>): Promise<unknown>;
146
+ delEmail(mailOrOptions: SocialOptions | string | number | Array<string | number>): Promise<unknown>;
147
+ removeMail(mailOrOptions: SocialOptions | string | number | Array<string | number>): Promise<unknown>;
148
+ setMailRead(options?: SocialOptions | string | number | Array<string | number>): Promise<unknown>;
149
+ setEmailReaded(options?: SocialOptions): Promise<unknown>;
150
+ markMailRead(options?: SocialOptions): Promise<unknown>;
151
+ getMailReward(options?: SocialOptions): Promise<unknown>;
152
+ getEmailReward(options?: SocialOptions): Promise<unknown>;
153
+ claimMailReward(options?: SocialOptions): Promise<unknown>;
154
+ readMail(mailOrOptions: SocialOptions | string | number): Promise<unknown>;
155
+ readEmail(mailOrOptions: SocialOptions | string | number): Promise<unknown>;
156
+ openMail(mailOrOptions: SocialOptions | string | number): Promise<unknown>;
157
+ /** 请求 Keepwork 邮箱验证码。 */
158
+ sendEmailCaptcha(emailOrOptions: string | {
159
+ email?: string;
160
+ }): Promise<unknown>;
161
+ requestEmailCaptcha(emailOrOptions: string | {
162
+ email?: string;
163
+ }): Promise<unknown>;
164
+ getEmailCaptcha(emailOrOptions: string | {
165
+ email?: string;
166
+ }): Promise<unknown>;
167
+ /** 验证邮箱验证码并绑定/解绑当前用户邮箱。 */
168
+ verifyEmail(options?: SocialOptions): Promise<unknown>;
169
+ bindEmail(email: string, captcha: string): Promise<unknown>;
170
+ unbindEmail(email: string, captchaOrPassword?: string): Promise<unknown>;
171
+ }
172
+ export {};
173
+ //# sourceMappingURL=SocialFriends.d.ts.map