@v-miniapp/apis 1.0.13 → 1.0.14

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