@v-miniapp/apis 1.0.11

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 (64) hide show
  1. package/README.md +60 -0
  2. package/dist/api/index.d.ts +101 -0
  3. package/dist/api/index.js +130 -0
  4. package/dist/async.d.ts +2 -0
  5. package/dist/async.js +4 -0
  6. package/dist/global.d.ts +7 -0
  7. package/dist/index.d.ts +5 -0
  8. package/dist/index.js +8 -0
  9. package/dist/types/api/alert.d.ts +15 -0
  10. package/dist/types/api/bio-metrics/create-key.d.ts +15 -0
  11. package/dist/types/api/bio-metrics/create-signature.d.ts +20 -0
  12. package/dist/types/api/bio-metrics/delete-key.d.ts +12 -0
  13. package/dist/types/api/bio-metrics/index.d.ts +6 -0
  14. package/dist/types/api/bio-metrics/is-supported.d.ts +19 -0
  15. package/dist/types/api/bio-metrics/key-exists.d.ts +12 -0
  16. package/dist/types/api/bio-metrics/local-auth.d.ts +15 -0
  17. package/dist/types/api/choose-image.d.ts +42 -0
  18. package/dist/types/api/clear-storage.d.ts +8 -0
  19. package/dist/types/api/cloud/upload-file.d.ts +19 -0
  20. package/dist/types/api/compress-image.d.ts +29 -0
  21. package/dist/types/api/confirm.d.ts +24 -0
  22. package/dist/types/api/download-file.d.ts +20 -0
  23. package/dist/types/api/exit-miniapp.d.ts +8 -0
  24. package/dist/types/api/get-auth-code.d.ts +26 -0
  25. package/dist/types/api/get-beacon-discovery-status.d.ts +13 -0
  26. package/dist/types/api/get-clipboard.d.ts +15 -0
  27. package/dist/types/api/get-default-payment-method.d.ts +16 -0
  28. package/dist/types/api/get-image-info.d.ts +30 -0
  29. package/dist/types/api/get-location.d.ts +32 -0
  30. package/dist/types/api/get-setting.d.ts +15 -0
  31. package/dist/types/api/get-storage-info.d.ts +19 -0
  32. package/dist/types/api/get-storage.d.ts +19 -0
  33. package/dist/types/api/get-system-info.d.ts +52 -0
  34. package/dist/types/api/get-user-info.d.ts +21 -0
  35. package/dist/types/api/hide-loading.d.ts +8 -0
  36. package/dist/types/api/index.d.ts +43 -0
  37. package/dist/types/api/init-payment.d.ts +88 -0
  38. package/dist/types/api/make-phone-call.d.ts +11 -0
  39. package/dist/types/api/off-beacon-discovery.d.ts +2 -0
  40. package/dist/types/api/on-beacon-discovery.d.ts +15 -0
  41. package/dist/types/api/open-app-setting.d.ts +8 -0
  42. package/dist/types/api/open-native-app-store.d.ts +20 -0
  43. package/dist/types/api/open-setting.d.ts +15 -0
  44. package/dist/types/api/preview-image.d.ts +17 -0
  45. package/dist/types/api/prompt.d.ts +31 -0
  46. package/dist/types/api/remove-storage.d.ts +11 -0
  47. package/dist/types/api/request.d.ts +29 -0
  48. package/dist/types/api/save-image.d.ts +11 -0
  49. package/dist/types/api/scan.d.ts +14 -0
  50. package/dist/types/api/set-clipboard.d.ts +11 -0
  51. package/dist/types/api/set-storage.d.ts +17 -0
  52. package/dist/types/api/share-app.d.ts +18 -0
  53. package/dist/types/api/show-action-sheet.d.ts +22 -0
  54. package/dist/types/api/show-loading.d.ts +11 -0
  55. package/dist/types/api/show-payment-method.d.ts +40 -0
  56. package/dist/types/api/show-toast.d.ts +21 -0
  57. package/dist/types/api/start-beacon-discovery.d.ts +11 -0
  58. package/dist/types/api/stop-beacon-discovery.d.ts +8 -0
  59. package/dist/types/api/upload-file.d.ts +29 -0
  60. package/dist/types/common.d.ts +12 -0
  61. package/dist/types/vsf.d.ts +664 -0
  62. package/dist/utils/api.d.ts +4 -0
  63. package/dist/utils/api.js +10 -0
  64. package/package.json +45 -0
@@ -0,0 +1,664 @@
1
+ import { IVsfGetSystemInfo } from './api/get-system-info';
2
+ import { IVsfClearStorage } from './api/clear-storage';
3
+ import { IVsfGetClipboard } from './api/get-clipboard';
4
+ import { IVsfSetClipboard } from './api/set-clipboard';
5
+ import { IVsfExitMiniApp } from './api/exit-miniapp';
6
+ import { IVsfGetSetting } from './api/get-setting';
7
+ import { IVsfOpenSetting } from './api/open-setting';
8
+ import { IVsfOpenAppSetting } from './api/open-app-setting';
9
+ import { IVsfOpenNativeAppStore } from './api/open-native-app-store';
10
+ import { IVsfShareApp } from './api/share-app';
11
+ import { IVsfSetStorage } from './api/set-storage';
12
+ import { IVsfGetStorage } from './api/get-storage';
13
+ import { IVsfRemoveStorage } from './api/remove-storage';
14
+ import { IVsfGetStorageInfo } from './api/get-storage-info';
15
+ import { IVsfAlert } from './api/alert';
16
+ import { IVsfConfirm } from './api/confirm';
17
+ import { IVsfPrompt } from './api/prompt';
18
+ import { IVsfShowToast } from './api/show-toast';
19
+ import { IVsfShowLoading } from './api/show-loading';
20
+ import { IVsfShowActionSheet } from './api/show-action-sheet';
21
+ import { IVsfChooseImage } from './api/choose-image';
22
+ import { IVsfGetImageInfo } from './api/get-image-info';
23
+ import { IVsfCompressImage } from './api/compress-image';
24
+ import { IVsfRequest } from './api/request';
25
+ import { IVsfDownloadFile } from './api/download-file';
26
+ import { IVsfUploadFile } from './api/upload-file';
27
+ import { IVsfGetLocation } from './api/get-location';
28
+ import { IVsfScan } from './api/scan';
29
+ import { IVsfMakePhoneCall } from './api/make-phone-call';
30
+ import { IVsfPreviewImage } from './api/preview-image';
31
+ import { IVsfSaveImage } from './api/save-image';
32
+ import { IVsfGetAuthCode } from './api/get-auth-code';
33
+ import { IVsfGetUserInfo } from './api/get-user-info';
34
+ import { IVsfInitPayment } from './api/init-payment';
35
+ import { IVsfShowPaymentMethod } from './api/show-payment-method';
36
+ import { IVsfGetDefaultPaymentMethod } from './api/get-default-payment-method';
37
+ import { IVsfOnBeaconBiscovery } from './api/on-beacon-discovery';
38
+ import { IVsfStartBeaconDiscovery } from './api/start-beacon-discovery';
39
+ import { IVsfStopBeaconDiscovery } from './api/stop-beacon-discovery';
40
+ import { IVsfOffBeaconDiscovery } from './api/off-beacon-discovery';
41
+ import { IVsfGetBeaconDiscoveryStatus } from './api/get-beacon-discovery-status';
42
+ import { IVsfBioMetricsLocalAuth } from './api/bio-metrics/local-auth';
43
+ import { IVsfBioMetricsIsSupported } from './api/bio-metrics/is-supported';
44
+ import { IVsfBioMetricsKeyExists } from './api/bio-metrics/key-exists';
45
+ import { IVsfBioMetricsCreateKey } from './api/bio-metrics/create-key';
46
+ import { IVsfBioMetricsCreateSignature } from './api/bio-metrics/create-signature';
47
+ import { IVsfBioMetricsDeleteKey } from './api/bio-metrics/delete-key';
48
+ import { IVsfHideLoading } from './api';
49
+ /**
50
+ * V-App Super Framework (VSF) API Interface
51
+ *
52
+ * Cung cấp quyền truy cập vào các tính năng native của thiết bị và nền tảng V-App.
53
+ * Tất cả API sử dụng callback pattern với `success`, `fail`, và `complete`.
54
+ */
55
+ export type IVsf = {
56
+ /**
57
+ * Lấy thông tin hệ thống và thiết bị.
58
+ *
59
+ * @param options - Tham số cấu hình
60
+ * @param options.keys - `Array<keyof SystemInfo>` (tùy chọn) - Các thuộc tính cần lấy. Nếu không truyền sẽ lấy tất cả
61
+ * @param options.success - `(res) => void` - Callback khi thành công
62
+ * - `res.app`: `string` - Tên super app (VD: V-app)
63
+ * - `res.brand`: `string` - Nhãn hiệu thiết bị (iPhone, Samsung,...)
64
+ * - `res.currentBattery`: `number` - Mức pin hiện tại (0-1)
65
+ * - `res.model`: `string` - Model thiết bị
66
+ * - `res.platform`: `'ios' | 'android' | 'macos' | 'windows' | 'web' | 'native'`
67
+ * - `res.system`: `'Android' | 'iOS' | 'iPhone OS' | 'iPadOS'`
68
+ * - `res.version`: `string` - Phiên bản OS
69
+ * - `res.hostVersion`: `string` - Phiên bản V App
70
+ * - `res.runtimeVersion`: `string` - Phiên bản runtime
71
+ * - `res.freeStorage`: `number` - Dung lượng trống (bytes)
72
+ * - `res.screenWidth/screenHeight`: `number` - Kích thước màn hình (pixel)
73
+ * - `res.windowWidth/windowHeight`: `number` - Kích thước cửa sổ (pixel)
74
+ * - `res.titleBarHeight/statusBarHeight`: `number` - Chiều cao bar (pixel)
75
+ * - `res.locale`: `'vi' | 'en'` - Ngôn ngữ
76
+ * - `res.deviceId`: `string` - UUID thiết bị
77
+ * @param options.fail - `(error) => void` - Callback khi thất bại
78
+ * @param options.complete - `() => void` - Callback khi hoàn tất
79
+ */
80
+ getSystemInfo: IVsfGetSystemInfo;
81
+ /**
82
+ * Xóa toàn bộ dữ liệu trong local storage.
83
+ *
84
+ * @param options - Tham số cấu hình
85
+ * @param options.success - `() => void` - Callback khi xóa thành công
86
+ * @param options.fail - `(error) => void` - Callback khi thất bại
87
+ * @param options.complete - `() => void` - Callback khi hoàn tất
88
+ */
89
+ clearStorage: IVsfClearStorage;
90
+ /**
91
+ * Lấy nội dung từ clipboard của thiết bị.
92
+ *
93
+ * @param options - Tham số cấu hình
94
+ * @param options.success - `(res) => void` - Callback khi thành công
95
+ * - `res.text`: `string` - Nội dung text trong clipboard
96
+ * @param options.fail - `(error) => void` - Callback khi thất bại
97
+ * @param options.complete - `() => void` - Callback khi hoàn tất
98
+ */
99
+ getClipboard: IVsfGetClipboard;
100
+ /**
101
+ * Sao chép nội dung vào clipboard của thiết bị.
102
+ *
103
+ * @param options - Tham số cấu hình
104
+ * @param options.text - `string` (bắt buộc) - Nội dung text cần sao chép
105
+ * @param options.success - `() => void` - Callback khi sao chép thành công
106
+ * @param options.fail - `(error) => void` - Callback khi thất bại
107
+ * @param options.complete - `() => void` - Callback khi hoàn tất
108
+ */
109
+ setClipboard: IVsfSetClipboard;
110
+ /**
111
+ * Thoát mini app hiện tại và quay về host app.
112
+ *
113
+ * @param options - Tham số cấu hình
114
+ * @param options.success - `() => void` - Callback khi thành công
115
+ * @param options.fail - `(error) => void` - Callback khi thất bại
116
+ * @param options.complete - `() => void` - Callback khi hoàn tất
117
+ */
118
+ exitMiniApp: IVsfExitMiniApp;
119
+ /**
120
+ * Lấy cài đặt quyền hiện tại của mini app.
121
+ *
122
+ * @param options - Tham số cấu hình
123
+ * @param options.success - `(res) => void` - Callback khi thành công
124
+ * - `res.authSetting`: `Record<string, boolean>` - Trạng thái các quyền đã được cấp
125
+ * @param options.fail - `(error) => void` - Callback khi thất bại
126
+ * @param options.complete - `() => void` - Callback khi hoàn tất
127
+ */
128
+ getSetting: IVsfGetSetting;
129
+ /**
130
+ * Ẩn loading hiện tại.
131
+ *
132
+ * @param options - Tham số cấu hình
133
+ * @param options.success - `() => void` - Callback khi thành công
134
+ * @param options.fail - `(error) => void` - Callback khi thất bại
135
+ * @param options.complete - `() => void` - Callback khi hoàn tất
136
+ */
137
+ hideLoading: IVsfHideLoading;
138
+ /**
139
+ * Mở trang cài đặt quyền của mini app.
140
+ *
141
+ * @param options - Tham số cấu hình
142
+ * @param options.success - `(res) => void` - Callback khi thành công
143
+ * - `res.authSetting`: `Record<string, boolean>` - Trạng thái quyền sau khi thay đổi
144
+ * @param options.fail - `(error) => void` - Callback khi thất bại
145
+ * @param options.complete - `() => void` - Callback khi hoàn tất
146
+ */
147
+ openSetting: IVsfOpenSetting;
148
+ /**
149
+ * Mở trang cài đặt ứng dụng của thiết bị cho host app.
150
+ *
151
+ * @param options - Tham số cấu hình
152
+ * @param options.success - `() => void` - Callback khi thành công
153
+ * @param options.fail - `(error) => void` - Callback khi thất bại
154
+ * @param options.complete - `() => void` - Callback khi hoàn tất
155
+ */
156
+ openAppSetting: IVsfOpenAppSetting;
157
+ /**
158
+ * Mở trang app store native (App Store/Google Play).
159
+ *
160
+ * @param options - Tham số cấu hình
161
+ * @param options.appleStoreId - `string` (bắt buộc) - ID ứng dụng trên Apple App Store
162
+ * @param options.googlePlayId - `string` (bắt buộc) - ID ứng dụng trên Google Play Store
163
+ * @param options.success - `(res: boolean) => void` - Callback khi thành công
164
+ * @param options.fail - `(error) => void` - Callback khi thất bại
165
+ * @param options.complete - `() => void` - Callback khi hoàn tất
166
+ */
167
+ openNativeAppStore: IVsfOpenNativeAppStore;
168
+ /**
169
+ * Chia sẻ mini app với người khác sử dụng chức năng share native.
170
+ *
171
+ * @param options - Tham số cấu hình
172
+ * @param options.title - `string` (tùy chọn) - Tiêu đề chia sẻ
173
+ * @param options.desc - `string` (tùy chọn) - Mô tả chia sẻ
174
+ * @param options.path - `string` (tùy chọn) - Đường dẫn trong miniapp
175
+ * @param options.url - `string` (tùy chọn) - URL chia sẻ
176
+ * @param options.success - `() => void` - Callback khi chia sẻ thành công
177
+ * @param options.fail - `(error) => void` - Callback khi thất bại
178
+ * @param options.complete - `() => void` - Callback khi hoàn tất
179
+ */
180
+ shareApp: IVsfShareApp;
181
+ /**
182
+ * Lưu dữ liệu vào local storage với key được chỉ định.
183
+ *
184
+ * @param options - Tham số cấu hình
185
+ * @param options.key - `string` (bắt buộc) - Key để lưu dữ liệu
186
+ * @param options.data - `string | object` (bắt buộc) - Dữ liệu cần lưu
187
+ * @param options.success - `() => void` - Callback khi lưu thành công
188
+ * @param options.fail - `(error) => void` - Callback khi thất bại
189
+ * @param options.complete - `() => void` - Callback khi hoàn tất
190
+ */
191
+ setStorage: IVsfSetStorage;
192
+ /**
193
+ * Lấy dữ liệu từ local storage theo key.
194
+ *
195
+ * @param options - Tham số cấu hình
196
+ * @param options.key - `string` (bắt buộc) - Key của dữ liệu cần lấy
197
+ * @param options.success - `(res) => void` - Callback khi thành công
198
+ * - `res.data`: `string | object` - Dữ liệu được lưu trữ
199
+ * @param options.fail - `(error) => void` - Callback khi thất bại
200
+ * @param options.complete - `() => void` - Callback khi hoàn tất
201
+ */
202
+ getStorage: IVsfGetStorage;
203
+ /**
204
+ * Xóa dữ liệu khỏi local storage theo key.
205
+ *
206
+ * @param options - Tham số cấu hình
207
+ * @param options.key - `string` (bắt buộc) - Key của dữ liệu cần xóa
208
+ * @param options.success - `() => void` - Callback khi xóa thành công
209
+ * @param options.fail - `(error) => void` - Callback khi thất bại
210
+ * @param options.complete - `() => void` - Callback khi hoàn tất
211
+ */
212
+ removeStorage: IVsfRemoveStorage;
213
+ /**
214
+ * Lấy thông tin về dung lượng local storage đang sử dụng.
215
+ *
216
+ * @param options - Tham số cấu hình
217
+ * @param options.success - `(res) => void` - Callback khi thành công
218
+ * - `res.keys`: `string[]` - Danh sách các key đang lưu
219
+ * - `res.currentSize`: `number` - Dung lượng đang sử dụng (bytes)
220
+ * - `res.limitSize`: `number` - Dung lượng tối đa (bytes)
221
+ * @param options.fail - `(error) => void` - Callback khi thất bại
222
+ * @param options.complete - `() => void` - Callback khi hoàn tất
223
+ */
224
+ getStorageInfo: IVsfGetStorageInfo;
225
+ /**
226
+ * Hiển thị hộp thoại thông báo (alert).
227
+ *
228
+ * @param options - Tham số cấu hình
229
+ * @param options.title - `string` (tùy chọn) - Tiêu đề hộp thoại
230
+ * @param options.content - `string` (tùy chọn) - Nội dung hộp thoại
231
+ * @param options.buttonText - `string` (tùy chọn) - Text hiển thị trên nút bấm
232
+ * @param options.success - `() => void` - Callback khi đóng alert
233
+ * @param options.fail - `(error) => void` - Callback khi thất bại
234
+ * @param options.complete - `() => void` - Callback khi hoàn tất
235
+ */
236
+ alert: IVsfAlert;
237
+ /**
238
+ * Hiển thị hộp thoại xác nhận với nút OK/Hủy.
239
+ *
240
+ * @param options - Tham số cấu hình
241
+ * @param options.title - `string` (tùy chọn) - Tiêu đề hộp thoại
242
+ * @param options.content - `string` (tùy chọn) - Nội dung hộp thoại
243
+ * @param options.confirmButtonText - `string` (tùy chọn) - Text nút xác nhận
244
+ * @param options.cancelButtonText - `string` (tùy chọn) - Text nút hủy
245
+ * @param options.success - `(res) => void` - Callback khi người dùng chọn
246
+ * - `res.confirm`: `boolean` - `true` nếu bấm xác nhận, `false` nếu bấm hủy
247
+ * @param options.fail - `(error) => void` - Callback khi thất bại
248
+ * @param options.complete - `() => void` - Callback khi hoàn tất
249
+ */
250
+ confirm: IVsfConfirm;
251
+ /**
252
+ * Hiển thị hộp thoại nhập liệu (prompt).
253
+ *
254
+ * @param options - Tham số cấu hình
255
+ * @param options.title - `string` (tùy chọn) - Tiêu đề hộp thoại
256
+ * @param options.message - `string` (tùy chọn) - Thông điệp hiển thị
257
+ * @param options.placeholder - `string` (tùy chọn) - Placeholder cho ô nhập
258
+ * @param options.okButton - `string` (tùy chọn) - Text nút OK
259
+ * @param options.cancelButton - `string` (tùy chọn) - Text nút Cancel
260
+ * @param options.success - `(res) => void` - Callback khi người dùng chọn
261
+ * - `res.ok`: `boolean` - `true` nếu bấm OK, `false` nếu bấm Cancel
262
+ * - `res.inputValue`: `string` - Giá trị người dùng đã nhập
263
+ * @param options.fail - `(error) => void` - Callback khi thất bại
264
+ * @param options.complete - `() => void` - Callback khi hoàn tất
265
+ */
266
+ prompt: IVsfPrompt;
267
+ /**
268
+ * Hiển thị thông báo toast.
269
+ *
270
+ * @param options - Tham số cấu hình
271
+ * @param options.type - `string` (tùy chọn) - Loại toast: `'success'`, `'fail'`, `'none'`,...
272
+ * @param options.content - `string` (tùy chọn) - Nội dung hiển thị
273
+ * @param options.buttonText - `string` (tùy chọn) - Text hiển thị trên nút
274
+ * @param options.duration - `number` (tùy chọn) - Thời gian hiển thị (ms)
275
+ * @param options.success - `() => void` - Callback khi hiển thị thành công
276
+ * @param options.fail - `(error) => void` - Callback khi thất bại
277
+ * @param options.complete - `() => void` - Callback khi hoàn tất
278
+ */
279
+ showToast: IVsfShowToast;
280
+ /**
281
+ * Hiển thị indicator loading.
282
+ *
283
+ * @param options - Tham số cấu hình
284
+ * @param options.content - `string` (tùy chọn) - Nội dung hiển thị kèm loading
285
+ * @param options.success - `() => void` - Callback khi hiển thị thành công
286
+ * @param options.fail - `(error) => void` - Callback khi thất bại
287
+ * @param options.complete - `() => void` - Callback khi hoàn tất
288
+ */
289
+ showLoading: IVsfShowLoading;
290
+ /**
291
+ * Hiển thị action sheet với nhiều tùy chọn.
292
+ *
293
+ * @param options - Tham số cấu hình
294
+ * @param options.title - `string` (tùy chọn) - Tiêu đề action sheet
295
+ * @param options.items - `string[]` (bắt buộc) - Danh sách các mục để chọn
296
+ * @param options.cancelButton - `string` (tùy chọn) - Text nút hủy
297
+ * @param options.success - `(res) => void` - Callback khi người dùng chọn
298
+ * - `res.index`: `number` - Vị trí mục được chọn (0-indexed)
299
+ * @param options.fail - `(error) => void` - Callback khi thất bại/hủy
300
+ * @param options.complete - `() => void` - Callback khi hoàn tất
301
+ */
302
+ showActionSheet: IVsfShowActionSheet;
303
+ /**
304
+ * Mở trình chọn ảnh từ thư viện hoặc camera.
305
+ *
306
+ * @param options - Tham số cấu hình
307
+ * @param options.count - `number` (tùy chọn) - Số lượng tối đa ảnh có thể chọn. Mặc định: `1`
308
+ * @param options.includeBase64 - `boolean` (tùy chọn) - Nếu `true`, kết quả trả về sẽ có thêm data base64. Mặc định: `false`
309
+ * @param options.sourceType - `Array<'camera' | 'album'>` (tùy chọn) - Nguồn lấy ảnh. Mặc định: `['camera', 'album']`
310
+ * @param options.success - `(res) => void` - Callback khi chọn ảnh thành công
311
+ * - `res.filePaths`: `string[]` - Đường dẫn các ảnh được chọn (dùng để display hoặc upload)
312
+ * - `res.tempFiles`: `Array<{path, size, width, height, data?}>` - Thông tin chi tiết từng ảnh
313
+ * @param options.fail - `(error) => void` - Callback khi thất bại
314
+ * @param options.complete - `() => void` - Callback khi hoàn tất (dù thành công hay thất bại)
315
+ */
316
+ chooseImage: IVsfChooseImage;
317
+ /**
318
+ * Lấy thông tin của file ảnh.
319
+ *
320
+ * @param options - Tham số cấu hình
321
+ * @param options.src - `string` (bắt buộc) - Đường dẫn hoặc URL của ảnh
322
+ * @param options.success - `(res) => void` - Callback khi thành công
323
+ * - `res.width`: `number` - Chiều rộng ảnh (pixel)
324
+ * - `res.height`: `number` - Chiều cao ảnh (pixel)
325
+ * - `res.orientation`: `'up' | 'down' | 'left' | 'right' | 'up-mirrored' | 'down-mirrored' | 'left-mirrored' | 'right-mirrored'`
326
+ * - `res.path`: `string` - Đường dẫn ảnh
327
+ * - `res.type`: `string` - Loại ảnh (mime type)
328
+ * @param options.fail - `(error) => void` - Callback khi thất bại
329
+ * @param options.complete - `() => void` - Callback khi hoàn tất
330
+ */
331
+ getImageInfo: IVsfGetImageInfo;
332
+ /**
333
+ * Nén ảnh để giảm dung lượng file.
334
+ *
335
+ * @param options - Tham số cấu hình
336
+ * @param options.filePaths - `string[]` (bắt buộc) - Danh sách đường dẫn các ảnh cần nén
337
+ * @param options.options - `object` (tùy chọn) - Tùy chọn nén
338
+ * - `options.quality`: `number` - Chất lượng ảnh sau khi nén (0-100)
339
+ * - `options.maxWidth`: `number` - Chiều rộng tối đa (pixel)
340
+ * @param options.success - `(res) => void` - Callback khi thành công
341
+ * - `res.filePaths`: `string[]` - Danh sách đường dẫn các ảnh đã nén
342
+ * @param options.fail - `(error) => void` - Callback khi thất bại
343
+ * @param options.complete - `() => void` - Callback khi hoàn tất
344
+ */
345
+ compressImage: IVsfCompressImage;
346
+ /**
347
+ * Thực hiện các network request HTTP/HTTPS.
348
+ *
349
+ * Do mini app chạy trong môi trường JavaScript cô lập không có `fetch` hay `XMLHttpRequest`,
350
+ * sử dụng API này cho tất cả network request. Chỉ hỗ trợ HTTPS.
351
+ *
352
+ * @param options - Tham số cấu hình
353
+ * @param options.url - `string` (bắt buộc) - Đường dẫn muốn gọi tới
354
+ * @param options.headers - `object` (tùy chọn) - Cấu hình headers
355
+ * @param options.method - `string` (tùy chọn) - Phương thức: `'GET'`, `'POST'`, `'PUT'`, `'DELETE'`,... Mặc định: `'GET'`
356
+ * @param options.data - `object` (tùy chọn) - Data kèm theo trong request
357
+ * @param options.timeout - `number` (tùy chọn) - Timeout (ms). Mặc định: `30000` (30s)
358
+ * @param options.dataType - `string` (tùy chọn) - Định dạng response: `'JSON'`, `'text'`, `'base64'`, `'arraybuffer'`. Mặc định: `'JSON'`
359
+ * @param options.includeHeader - `boolean` (tùy chọn) - Có bao gồm headers trong response không
360
+ * @param options.success - `(res) => void` - Callback khi thành công
361
+ * - `res.data`: `string` - Dữ liệu trả về (định dạng phụ thuộc dataType)
362
+ * - `res.headers`: `object` - Headers trả về (nếu includeHeader: true)
363
+ * - `res.status`: `number` - Response code. Mặc định: `200`
364
+ * - `res.statusText`: `string` - Thông điệp tương ứng. Mặc định: `'OK'`
365
+ * @param options.fail - `(error) => void` - Callback khi thất bại
366
+ * @param options.complete - `() => void` - Callback khi hoàn tất
367
+ */
368
+ request: IVsfRequest;
369
+ /**
370
+ * Download file từ URL và lưu tạm trên thiết bị.
371
+ *
372
+ * Khác với `apis.request` trả về raw data, `downloadFile` lưu file và trả về đường dẫn tạm thời.
373
+ *
374
+ * @param options - Tham số cấu hình
375
+ * @param options.url - `string` (bắt buộc) - Đường dẫn của file muốn download
376
+ * @param options.headers - `object` (tùy chọn) - Cấu hình headers
377
+ * @param options.success - `(res) => void` - Callback khi thành công
378
+ * - `res.filePath`: `string` - Đường dẫn của file sau khi download
379
+ * @param options.fail - `(error) => void` - Callback khi thất bại
380
+ * @param options.complete - `() => void` - Callback khi hoàn tất
381
+ */
382
+ downloadFile: IVsfDownloadFile;
383
+ /**
384
+ * Upload file từ thiết bị lên server.
385
+ *
386
+ * Chỉ hỗ trợ upload đường dẫn file tạm thời (từ `chooseImage` hoặc `downloadFile`).
387
+ *
388
+ * @param options - Tham số cấu hình
389
+ * @param options.url - `string` (bắt buộc) - Đường dẫn server muốn upload
390
+ * @param options.method - `string` (tùy chọn) - Phương thức. Mặc định: `'POST'`
391
+ * @param options.fileName - `string` (bắt buộc) - Tên file làm key trong form data
392
+ * @param options.filePath - `string` (tùy chọn) - Đường dẫn tạm thời của file
393
+ * @param options.filePaths - `string[]` (tùy chọn) - Mảng đường dẫn (upload multiple)
394
+ * @param options.formData - `object` (tùy chọn) - Các field khác của form
395
+ * @param options.fileType - `string` (bắt buộc) - Loại file: `'image'`, `'video'`, `'audio'`
396
+ * @param options.headers - `object` (tùy chọn) - Cấu hình headers
397
+ * @param options.success - `(res) => void` - Callback khi thành công
398
+ * - `res.data`: `string` - Dữ liệu trả về từ server
399
+ * @param options.fail - `(error) => void` - Callback khi thất bại
400
+ * @param options.complete - `() => void` - Callback khi hoàn tất
401
+ */
402
+ uploadFile: IVsfUploadFile;
403
+ /**
404
+ * Lấy vị trí địa lý hiện tại của thiết bị.
405
+ *
406
+ * @param options - Tham số cấu hình
407
+ * @param options.cacheTimeout - `number` (tùy chọn) - Thời gian cache (giây). Mặc định: `30`
408
+ * @param options.type - `number` (tùy chọn) - Độ chính xác: `0` = WiFi (thấp), `1` = GPS (cao)
409
+ * @param options.success - `(res) => void` - Callback khi thành công
410
+ * - `res.latitude`: `number` - Vĩ độ
411
+ * - `res.longitude`: `number` - Kinh độ
412
+ * - `res.altitude`: `number` - Độ cao so với mực nước biển (mét)
413
+ * - `res.accuracy`: `number` - Độ chính xác vị trí (mét)
414
+ * - `res.altitudeAccuracy`: `number` - Độ chính xác độ cao (mét)
415
+ * - `res.heading`: `number` - Hướng di chuyển
416
+ * - `res.speed`: `number` - Tốc độ di chuyển (m/s)
417
+ * @param options.fail - `(error) => void` - Callback khi thất bại
418
+ * @param options.complete - `() => void` - Callback khi hoàn tất
419
+ */
420
+ getLocation: IVsfGetLocation;
421
+ /**
422
+ * Mở trình quét mã vạch/QR code của thiết bị.
423
+ *
424
+ * @param options - Tham số cấu hình
425
+ * @param options.success - `(res: string) => void` - Callback khi quét thành công, trả về nội dung mã
426
+ * @param options.fail - `(error) => void` - Callback khi thất bại/hủy
427
+ * @param options.complete - `() => void` - Callback khi hoàn tất
428
+ */
429
+ scan: IVsfScan;
430
+ /**
431
+ * Thực hiện cuộc gọi điện thoại đến số được chỉ định.
432
+ *
433
+ * @param options - Tham số cấu hình
434
+ * @param options.number - `number` (bắt buộc) - Số điện thoại cần gọi
435
+ * @param options.success - `() => void` - Callback khi bắt đầu cuộc gọi
436
+ * @param options.fail - `(error) => void` - Callback khi thất bại
437
+ * @param options.complete - `() => void` - Callback khi hoàn tất
438
+ */
439
+ makePhoneCall: IVsfMakePhoneCall;
440
+ /**
441
+ * Xem trước ảnh trong trình xem gallery toàn màn hình.
442
+ *
443
+ * @param options - Tham số cấu hình
444
+ * @param options.urls - `string[]` (bắt buộc) - Danh sách URL các ảnh cần xem
445
+ * @param options.current - `number` (tùy chọn) - Vị trí ảnh hiện tại (0-indexed)
446
+ * @param options.enablesavephoto - `boolean` (tùy chọn) - Cho phép lưu ảnh
447
+ * @param options.enableShowPhotoDownload - `boolean` (tùy chọn) - Hiển thị nút tải ảnh
448
+ * @param options.success - `() => void` - Callback khi mở thành công
449
+ * @param options.fail - `(error) => void` - Callback khi thất bại
450
+ * @param options.complete - `() => void` - Callback khi hoàn tất
451
+ */
452
+ previewImage: IVsfPreviewImage;
453
+ /**
454
+ * Lưu ảnh vào thư viện ảnh của thiết bị.
455
+ *
456
+ * @param options - Tham số cấu hình
457
+ * @param options.url - `string` (bắt buộc) - Đường dẫn hoặc URL của ảnh cần lưu
458
+ * @param options.success - `() => void` - Callback khi lưu thành công
459
+ * @param options.fail - `(error) => void` - Callback khi thất bại
460
+ * @param options.complete - `() => void` - Callback khi hoàn tất
461
+ */
462
+ saveImage: IVsfSaveImage;
463
+ /**
464
+ * Lấy mã xác thực (authorization code) cho việc đăng nhập người dùng.
465
+ *
466
+ * @param options - Tham số cấu hình
467
+ * @param options.scopes - `Array<'profile' | 'phone' | 'email'>` (tùy chọn) - Các scope quyền cần yêu cầu
468
+ * @param options.success - `(res) => void` - Callback khi thành công
469
+ * - `res.authCode`: `string` - Mã xác thực
470
+ * - `res.authSuccessScopes`: `string[]` - Các scope được cấp quyền
471
+ * - `res.authErrorScopes`: `Record<string, string>` - Các scope bị lỗi và lý do
472
+ * @param options.fail - `(error) => void` - Callback khi thất bại
473
+ * @param options.complete - `() => void` - Callback khi hoàn tất
474
+ */
475
+ getAuthCode: IVsfGetAuthCode;
476
+ /**
477
+ * Lấy thông tin profile của người dùng hiện tại.
478
+ *
479
+ * @param options - Tham số cấu hình
480
+ * @param options.success - `(res) => void` - Callback khi thành công
481
+ * - `res.avatar`: `string` - URL ảnh đại diện
482
+ * - `res.name`: `string` - Tên người dùng
483
+ * - `res.gender`: `string` (tùy chọn) - Giới tính
484
+ * @param options.fail - `(error) => void` - Callback khi thất bại
485
+ * @param options.complete - `() => void` - Callback khi hoàn tất
486
+ */
487
+ getUserInfo: IVsfGetUserInfo;
488
+ /**
489
+ * Khởi tạo và xử lý giao dịch thanh toán.
490
+ *
491
+ * **Luồng thanh toán:**
492
+ * 1. Gọi `apis.showPaymentMethod` để người dùng chọn phương thức thanh toán
493
+ * 2. Tạo đơn hàng trên backend (xem tài liệu Payment API)
494
+ * 3. Gọi `apis.initPayment` để khởi tạo thanh toán
495
+ *
496
+ * **Lưu ý:** Mỗi `orderId` chỉ được sử dụng một lần.
497
+ *
498
+ * @param options - Tham số cấu hình
499
+ * @param options.paymentApiKey - `string` (bắt buộc) - Payment API key tương ứng với điểm thanh toán
500
+ * @param options.orderInfo - `object` (bắt buộc) - Thông tin đơn hàng:
501
+ * - `amount`: `number` (bắt buộc) - Số tiền thanh toán
502
+ * - `currency`: `string` (bắt buộc) - Đơn vị tiền tệ (VD: `'VND'`)
503
+ * - `description`: `string` (bắt buộc) - Mô tả đơn hàng
504
+ * - `orderId`: `string` (bắt buộc) - Mã đơn hàng (unique, chỉ dùng 1 lần)
505
+ * - `referenceId`: `string` (bắt buộc) - Mã tham chiếu
506
+ * - `secureHash`: `string` (bắt buộc) - HMAC-SHA256 hash để verify
507
+ * - `paymentMethodCode`: `string` - Mã phương thức thanh toán
508
+ * - `providerId`: `string` - ID payment provider
509
+ * - `userPaymentMethodId`: `string` (tùy chọn) - ID phương thức đã liên kết
510
+ * - `paymentType`: `'2D' | '3D'` (tùy chọn) - Loại thanh toán. Mặc định: `'3D'`
511
+ * - `businessUnitId`: `string` (tùy chọn) - Mã cơ sở kinh doanh (bắt buộc trên production)
512
+ * - `branchId`: `string` (tùy chọn) - Mã chi nhánh (bắt buộc trên production)
513
+ * - `orderInfo`: `object` (bắt buộc) - Thông tin chi tiết đơn hàng
514
+ * @param options.success - `(res: string) => void` - Callback khi thành công (luôn là `'success'`)
515
+ * @param options.fail - `(error: string) => void` - Callback khi thất bại (error message)
516
+ * @param options.complete - `() => void` - Callback khi hoàn tất
517
+ */
518
+ initPayment: IVsfInitPayment;
519
+ /**
520
+ * Hiển thị màn hình chọn phương thức thanh toán.
521
+ *
522
+ * @param options - Tham số cấu hình
523
+ * @param options.paymentApiKey - `string` (bắt buộc) - Payment API key
524
+ * @param options.amount - `number` (tùy chọn) - Giá trị đơn hàng để lọc phương thức
525
+ * @param options.success - `(res) => void` - Callback khi người dùng chọn xong
526
+ * - `res.category`: `string` - Danh mục phương thức
527
+ * - `res.code`: `string` - Mã phương thức thanh toán
528
+ * - `res.type`: `string` - Loại phương thức
529
+ * - `res.iconUrl`: `string` - URL icon
530
+ * - `res.name`: `string` - Tên phương thức
531
+ * - `res.providerId`: `string` - ID nhà cung cấp
532
+ * - `res.providerName`: `string` - Tên nhà cung cấp
533
+ * - `res.paymentMethodId`: `string` - ID phương thức
534
+ * - `res.userPaymentMethodId`: `string` - ID phương thức đã liên kết (nếu có)
535
+ * @param options.fail - `(error: string) => void` - Callback khi hủy/thất bại
536
+ * @param options.complete - `() => void` - Callback khi hoàn tất
537
+ */
538
+ showPaymentMethod: IVsfShowPaymentMethod;
539
+ /**
540
+ * Lấy phương thức thanh toán mặc định của người dùng.
541
+ *
542
+ * @param options - Tham số cấu hình
543
+ * @param options.paymentApiKey - `string` (bắt buộc) - Payment API key
544
+ * @param options.success - `(res) => void` - Callback khi thành công (cùng format với showPaymentMethod)
545
+ * @param options.fail - `(error: string) => void` - Callback khi thất bại
546
+ * @param options.complete - `() => void` - Callback khi hoàn tất
547
+ */
548
+ getDefaultPaymentMethod: IVsfGetDefaultPaymentMethod;
549
+ /**
550
+ * Đăng ký listener lắng nghe sự kiện phát hiện beacon.
551
+ *
552
+ * **Lưu ý:** Cùng callback reference được dùng để hủy đăng ký với `offBeaconDiscovery`.
553
+ *
554
+ * @param options - Tham số cấu hình
555
+ * @param options.callback - `(data: BeaconInfo) => void` (bắt buộc) - Listener được gọi mỗi khi tìm được beacon
556
+ * - `data.type`: `'iBeacon' | 'Eddystone'` - Loại beacon
557
+ * - `data.data`: `object` - Dữ liệu beacon (uuid, major, minor, rssi, distance,...)
558
+ */
559
+ onBeaconDiscovery: IVsfOnBeaconBiscovery;
560
+ /**
561
+ * Bắt đầu quét các thiết bị beacon Bluetooth gần đó.
562
+ *
563
+ * **Lưu ý:** Cần người dùng cấp quyền truy cập Bluetooth và Location.
564
+ *
565
+ * @param options - Tham số cấu hình
566
+ * @param options.success - `() => void` - Callback khi bắt đầu quét thành công
567
+ * @param options.fail - `(error) => void` - Callback khi thất bại
568
+ * @param options.complete - `() => void` - Callback khi hoàn tất
569
+ */
570
+ startBeaconDiscovery: IVsfStartBeaconDiscovery;
571
+ /**
572
+ * Dừng quét các thiết bị beacon Bluetooth.
573
+ *
574
+ * @param options - Tham số cấu hình
575
+ * @param options.success - `() => void` - Callback khi dừng thành công
576
+ * @param options.fail - `(error) => void` - Callback khi thất bại
577
+ * @param options.complete - `() => void` - Callback khi hoàn tất
578
+ */
579
+ stopBeaconDiscovery: IVsfStopBeaconDiscovery;
580
+ /**
581
+ * Xóa listener lắng nghe beacon discovery.
582
+ *
583
+ * @param options - Tham số cấu hình
584
+ * @param options.callback - `() => void` (bắt buộc) - Listener cần xóa (cùng reference với onBeaconDiscovery)
585
+ */
586
+ offBeaconDiscovery: IVsfOffBeaconDiscovery;
587
+ /**
588
+ * Lấy trạng thái quét beacon discovery hiện tại.
589
+ *
590
+ * @param options - Tham số cấu hình
591
+ * @param options.success - `(res) => void` - Callback khi thành công
592
+ * - `res.data`: `'initializing' | 'started' | 'stopped'` - Trạng thái hiện tại
593
+ * @param options.fail - `(error) => void` - Callback khi thất bại
594
+ * @param options.complete - `() => void` - Callback khi hoàn tất
595
+ */
596
+ getBeaconDiscoveryStatus: IVsfGetBeaconDiscoveryStatus;
597
+ /**
598
+ * Các API xác thực sinh trắc học cho việc xác thực cục bộ an toàn và quản lý khóa mật mã.
599
+ */
600
+ bioMetrics: {
601
+ /**
602
+ * Thực hiện xác thực sinh trắc học cục bộ (Face ID, Touch ID, vân tay).
603
+ *
604
+ * @param options - Tham số cấu hình
605
+ * @param options.content - `string` (bắt buộc) - Nội dung hiển thị khi yêu cầu xác thực
606
+ * @param options.success - `(res: boolean) => void` - Callback khi thành công (`true`)
607
+ * @param options.fail - `(error) => void` - Callback khi thất bại
608
+ * @param options.complete - `() => void` - Callback khi hoàn tất
609
+ */
610
+ localAuth: IVsfBioMetricsLocalAuth;
611
+ /**
612
+ * Kiểm tra xem thiết bị có hỗ trợ xác thực sinh trắc học không.
613
+ *
614
+ * @param options - Tham số cấu hình
615
+ * @param options.success - `(res) => void` - Callback khi thành công
616
+ * - `res.isSupported`: `boolean` - Có hỗ trợ sinh trắc học không
617
+ * - `res.mode`: `string` (tùy chọn) - Chế độ: `'facial'`, `'fingerprint'`,...
618
+ * - `res.error`: `string` (tùy chọn) - Thông báo lỗi nếu có
619
+ * @param options.fail - `(error) => void` - Callback khi thất bại
620
+ * @param options.complete - `() => void` - Callback khi hoàn tất
621
+ */
622
+ isSupported: IVsfBioMetricsIsSupported;
623
+ /**
624
+ * Kiểm tra xem khóa sinh trắc học có tồn tại không.
625
+ *
626
+ * @param options - Tham số cấu hình
627
+ * @param options.success - `(res: boolean) => void` - Callback khi thành công (`true` nếu tồn tại)
628
+ * @param options.fail - `(error) => void` - Callback khi thất bại
629
+ * @param options.complete - `() => void` - Callback khi hoàn tất
630
+ */
631
+ keyExists: IVsfBioMetricsKeyExists;
632
+ /**
633
+ * Tạo khóa mật mã mới được bảo vệ bằng sinh trắc học.
634
+ *
635
+ * @param options - Tham số cấu hình
636
+ * @param options.success - `(res) => void` - Callback khi thành công
637
+ * - `res.publicKey`: `string` - Public key được tạo
638
+ * @param options.fail - `(error) => void` - Callback khi thất bại
639
+ * @param options.complete - `() => void` - Callback khi hoàn tất
640
+ */
641
+ createKey: IVsfBioMetricsCreateKey;
642
+ /**
643
+ * Tạo chữ ký mật mã sử dụng khóa được bảo vệ bằng sinh trắc học.
644
+ *
645
+ * @param options - Tham số cấu hình
646
+ * @param options.challenge - `string` (bắt buộc) - Chuỗi challenge để ký
647
+ * @param options.content - `string` (bắt buộc) - Nội dung cần ký
648
+ * @param options.success - `(res) => void` - Callback khi thành công
649
+ * - `res.signature`: `string` - Chữ ký được tạo
650
+ * @param options.fail - `(error) => void` - Callback khi thất bại
651
+ * @param options.complete - `() => void` - Callback khi hoàn tất
652
+ */
653
+ createSignature: IVsfBioMetricsCreateSignature;
654
+ /**
655
+ * Xóa khóa mật mã được bảo vệ bằng sinh trắc học.
656
+ *
657
+ * @param options - Tham số cấu hình
658
+ * @param options.success - `(res: boolean) => void` - Callback khi thành công (`true`)
659
+ * @param options.fail - `(error) => void` - Callback khi thất bại
660
+ * @param options.complete - `() => void` - Callback khi hoàn tất
661
+ */
662
+ deleteKey: IVsfBioMetricsDeleteKey;
663
+ };
664
+ };
@@ -0,0 +1,4 @@
1
+ import { IVsfOptionsWithCallback } from '../types/common';
2
+ type IVsfFunction = (options: IVsfOptionsWithCallback<any>) => void;
3
+ export declare const getVsfPromiseFunction: <IVsfFunctionSync>(func: IVsfFunction) => IVsfFunctionSync;
4
+ export {};