zmp-sdk 2.45.1 → 2.46.0-beta.1

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.
package/index.d.ts CHANGED
@@ -1964,14 +1964,28 @@ type AsyncProgressCallback = {
1964
1964
  fail?: ((err: AsyncCallbackFailObject) => void) | undefined;
1965
1965
  };
1966
1966
  type GetLocationReturns = {
1967
- /** latitude */
1967
+ /**
1968
+ * @deprecated
1969
+ */
1968
1970
  latitude?: string;
1969
- /** longitude */
1971
+ /**
1972
+ * @deprecated
1973
+ */
1970
1974
  longitude?: string;
1971
- /** timestamp */
1975
+ /**
1976
+ * @deprecated
1977
+ */
1972
1978
  timestamp?: string;
1973
- /** provider */
1979
+ /**
1980
+ * @deprecated
1981
+ */
1974
1982
  provider?: string;
1983
+ /**
1984
+ * Là một chuỗi ký tự dùng để truy xuất thông tin vị trí thông qua server. Mỗi Token được cung cấp, bạn sẽ có thể truy xuất thông tin được 1 lần với thời gian hết hạn sau 2 phút.
1985
+ *
1986
+ * @minimumVersion Zalo App: 23.02.01
1987
+ * @minimumVersion ZMP SDK: 2.29.0
1988
+ */
1975
1989
  token?: string;
1976
1990
  };
1977
1991
  type CameraParams = {
@@ -1980,19 +1994,39 @@ type CameraParams = {
1980
1994
  videoElement: HTMLVideoElement;
1981
1995
  };
1982
1996
  interface SystemInfo {
1983
- /** Mini app version */
1997
+ /**
1998
+ * Phiên bản đang được sử dụng của Zalo Mini App này.
1999
+ */
1984
2000
  version: string;
1985
- /** SDK version */
2001
+ /**
2002
+ * Phiên bản đang sử dụng của ZMP SDK.
2003
+ */
1986
2004
  apiVersion: string;
1987
- /** Zalo version */
2005
+ /**
2006
+ * Phiên bản của ứng dụng Zalo trên thiết bị.
2007
+ */
1988
2008
  zaloVersion: string;
1989
- /** Client platform */
1990
- platform: string;
1991
- /** Language set in Zalo */
2009
+ /**
2010
+ * Thông tin hệ điều hành của thiết bị.
2011
+ */
2012
+ platform: "android" | "iOS" | "wp" | "unknown" | "";
2013
+ /**
2014
+ * Ngôn ngữ hiển thị của thiết bị.
2015
+ */
1992
2016
  language: string;
1993
- /** Language set in Zalo */
2017
+ /**
2018
+ * Ngôn ngữ hiển thị của ứng dụng Zalo trên thiết bị.
2019
+ * @minimumVersion Zalo iOS: 22.03.01.r2
2020
+ * @minimumVersion Zalo Android: 21.09.01
2021
+ * @minimumVersion ZMP SDK: 2.17.3
2022
+ */
1994
2023
  zaloLanguage: string;
1995
- /** Theme set in Zalo */
2024
+ /**
2025
+ * Theme hiện tại của ứng dụng Zalo trên thiết bị.
2026
+ * @minimumVersion Zalo iOS: 22.03.01.r2
2027
+ * @minimumVersion Zalo Android: 21.09.01
2028
+ * @minimumVersion ZMP SDK: 2.17.3
2029
+ */
1996
2030
  zaloTheme: string;
1997
2031
  }
1998
2032
  type SetStorageReturns = {
@@ -2008,17 +2042,56 @@ type StorageInfo = {
2008
2042
  type RemoveStorageReturns = {
2009
2043
  errorKeys: string[];
2010
2044
  };
2045
+ type UserInfo = {
2046
+ /**
2047
+ * Chuỗi định danh người dùng theo Zalo App. Chuỗi này là duy nhất cho mỗi người dùng trên mỗi Zalo App. Các Mini App cùng chung một Zalo App ID sẽ có thể dùng chuỗi này để định danh người dùng. Có thể sử dụng ID này để gửi thông báo tới người dùng qua OA chung của Zalo Mini App, tham khảo tại [đây](https://mini.zalo.me/documents/open-apis/notifications/send/).
2048
+ */
2049
+ id: string;
2050
+ /**
2051
+ * Tên hiển thị của người dùng.
2052
+ */
2053
+ name: string;
2054
+ /**
2055
+ * Ảnh đại diện người dùng.
2056
+ */
2057
+ avatar: string;
2058
+ /**
2059
+ * Chuỗi định danh người dùng theo Official Account. Có thể sử dụng ID này để gửi tin nhắn cho người dùng (xem [cách gửi tin nhắn với idByOA](https://mini.zalo.me/documents/intro/send-message-oa-to-user/)). Chuỗi có giá trị nếu thỏa 1 trong các điều kiện dưới đây:
2060
+ * - Mini App đã được xác thực bởi Official Account, chi tiết xem [tại đây](https://mini.zalo.me/blog/thong-bao-huong-dan-xac-thuc-mini-app-qua-zalo-oa/#3.b).
2061
+ * - Zalo App phải được liên kết với Official Account và người dùng đã follow Official Account đó.
2062
+ *
2063
+ * @minimumVersion 2.23.3
2064
+ */
2065
+ idByOA?: string;
2066
+ /**
2067
+ * Trạng thái theo dõi Official Account đã được liên kết với Zalo App.
2068
+ *
2069
+ * @minimumVersion 2.23.3
2070
+ */
2071
+ followedOA?: boolean;
2072
+ /**
2073
+ * Trả về 1 trong 2 giá trị:
2074
+ * - `true`: tài khoản này thuộc nhóm người dùng cần nhà phát triển Mini App xác minh và áp dụng các cơ chế xử lý dữ liệu phù hợp theo quy định Pháp luật, có thể bao gồm nhưng không giới hạn người đã chết hoặc mất tích, người không biết chữ, người khuyết tật, trẻ em,…
2075
+ * - `false`: tài khoản này thuộc nhóm người dùng bình thường.
2076
+ *
2077
+ * @minimumVersion 2.28.0
2078
+ */
2079
+ isSensitive?: boolean;
2080
+ };
2011
2081
  type GetUserInfoReturns = {
2012
- userInfo: {
2013
- id: string;
2014
- name: string;
2015
- avatar: string;
2016
- idByOA?: string;
2017
- isSensitive?: boolean;
2018
- followedOA?: boolean;
2019
- };
2082
+ /**
2083
+ * Thông tin người dùng.
2084
+ */
2085
+ userInfo: UserInfo;
2020
2086
  };
2021
2087
  type GetNetworkTypeReturns = {
2088
+ /**
2089
+ * Kiểu kết nối mạng hiện tại với các giá trị:
2090
+ * - `none`: Không có mạng.
2091
+ * - `wifi`: Mạng Wi-Fi.
2092
+ * - `cellular`: Mạng di động (2g/3g/4g).
2093
+ * - `unknown`: Mạng không xác định (Android).
2094
+ */
2022
2095
  networkType: NetworkType;
2023
2096
  };
2024
2097
  type iBeaconInfo = {
@@ -2040,13 +2113,42 @@ type ScanQRCodeReturns = {
2040
2113
  content: string;
2041
2114
  };
2042
2115
  type OpenPostFeedReturns = {
2116
+ /**
2117
+ * Trạng thái chia sẻ:
2118
+ * - `0`: User nhấn hủy/cancel bài viết.
2119
+ * - `1`: Đăng bài viết thành công.
2120
+ */
2043
2121
  status: 0 | 1;
2122
+ /**
2123
+ * Trạng thái bài chia sẻ:
2124
+ * - `0`: Công khai.
2125
+ * - `1`: Chỉ mình tôi.
2126
+ * - `2`: Chia sẻ cho danh sách bạn.
2127
+ */
2044
2128
  shareType: 0 | 1 | 2;
2129
+ /**
2130
+ * Số lượng user nhận được bài chia sẻ trong trường hợp `shareType=2`.
2131
+ */
2045
2132
  numberOfUser: number;
2046
2133
  };
2047
2134
  type OpenShareSheetReturns = {
2135
+ /**
2136
+ * Trạng thái chia sẻ:
2137
+ * - `0`: User nhấn hủy/cancel bài viết.
2138
+ * - `1`: Đăng bài viết thành công lên nhật ký.
2139
+ * - `2`: Đăng bài viết thành công qua cửa sổ chat.
2140
+ */
2048
2141
  status: 0 | 2 | 1;
2142
+ /**
2143
+ * Trạng thái bài chia sẻ:
2144
+ * - `0`: Công khai.
2145
+ * - `1`: Chỉ mình tôi.
2146
+ * - `2`: Chia sẻ cho danh sách bạn.
2147
+ */
2049
2148
  shareType: 0 | 2 | 1;
2149
+ /**
2150
+ * Số lượng user nhận được bài chia sẻ trong trường hợp `shareType=2`.
2151
+ */
2050
2152
  numberOfUser: number;
2051
2153
  };
2052
2154
  type RequestCameraPermissionReturns = {
@@ -2076,36 +2178,91 @@ type OpenWebviewReturns = {
2076
2178
  success: boolean;
2077
2179
  };
2078
2180
  type GetAppInfoReturns = {
2181
+ /**
2182
+ * Tên Zalo Mini App.
2183
+ */
2184
+ name: string;
2185
+ /**
2186
+ * Mô tả Zalo Mini App.
2187
+ */
2079
2188
  description: string;
2189
+ /**
2190
+ * Phiên bản live hiện tại.
2191
+ */
2080
2192
  version: string;
2081
- name: string;
2193
+ /**
2194
+ * Link chia sẻ Zalo Mini App.
2195
+ */
2082
2196
  appUrl: string;
2197
+ /**
2198
+ * Link QR của Zalo Mini App.
2199
+ */
2083
2200
  qrCodeUrl: string;
2201
+ /**
2202
+ * Đường dẫn đến hình ảnh logo của Zalo Mini App.
2203
+ */
2084
2204
  logoUrl?: string;
2085
2205
  };
2086
2206
  type GetPhoneNumberReturns = {
2207
+ /**
2208
+ * @deprecated
2209
+ */
2087
2210
  number?: string;
2211
+ /**
2212
+ * Là một chuỗi ký tự dùng để truy xuất thông tin số điện thoại thông qua server. Mỗi token được cung cấp chỉ có thể truy xuất thông tin được 1 lần với thời gian hết hạn sau 2 phút.
2213
+ */
2088
2214
  token?: string;
2089
2215
  };
2216
+ type ProfileInfo = {
2217
+ /**
2218
+ * Tên hiển thị của người dùng.
2219
+ */
2220
+ name: string;
2221
+ /**
2222
+ * Ảnh đại diện người dùng.
2223
+ */
2224
+ avatar: string;
2225
+ };
2226
+ type PickedProfile = {
2227
+ /**
2228
+ * Mã người dùng. Chuỗi này là duy nhất cho mỗi người dùng trên mỗi ứng dụng Zalo App. Các Zalo Mini App cùng chung một Zalo App sẽ dùng được mã người dùng của nhau.
2229
+ */
2230
+ id: string;
2231
+ /**
2232
+ * Thông tin của người dùng.
2233
+ */
2234
+ profile: ProfileInfo;
2235
+ /**
2236
+ * Mã lỗi:
2237
+ * - 0: Lấy thông tin của người dùng thành công.
2238
+ * - 1: Lấy thông tin người dùng thất bại.
2239
+ */
2240
+ code: number;
2241
+ /**
2242
+ * Thông báo lỗi.
2243
+ */
2244
+ message: string;
2245
+ };
2090
2246
  type OpenProfilePickerReturns = {
2091
- users: {
2092
- id: string;
2093
- profile: {
2094
- name: string;
2095
- avatar: string;
2096
- };
2097
- code: number;
2098
- message: string;
2099
- }[];
2247
+ /**
2248
+ * Danh sách những bạn bè được chọn.
2249
+ */
2250
+ users: PickedProfile[];
2100
2251
  };
2101
2252
  type OpenMediaPickerReturns = {
2253
+ /**
2254
+ * Toàn bộ nội dung trả về của server upload media.
2255
+ */
2102
2256
  data: string;
2103
2257
  };
2104
- /**
2105
- * Context info
2106
- */
2107
2258
  type ContextInfo = {
2108
- type?: string;
2259
+ /**
2260
+ * Ngữ cảnh hiện tại là người dùng hoặc nhóm chat.
2261
+ */
2262
+ type?: "USER_CHAT" | "GROUP_CHAT" | "";
2263
+ /**
2264
+ * ID của người dùng hoặc nhóm chat tương ứng.
2265
+ */
2109
2266
  id?: string;
2110
2267
  };
2111
2268
  type GetAuthCodeReturns = {
@@ -2118,12 +2275,25 @@ type GetZPITokenReturns = {
2118
2275
  zpp: string;
2119
2276
  zpt: string;
2120
2277
  };
2278
+ type TempFile = {
2279
+ /**
2280
+ * Đường dẫn các temp file đã chọn.
2281
+ */
2282
+ path: string;
2283
+ /**
2284
+ * Kích thước các temp file đã chọn.
2285
+ */
2286
+ size: number;
2287
+ };
2121
2288
  type ChooseImageReturns = {
2289
+ /**
2290
+ * Đường dẫn các file đã chọn.
2291
+ */
2122
2292
  filePaths: Array<string>;
2123
- tempFiles: Array<{
2124
- path: string;
2125
- size: number;
2126
- }>;
2293
+ /**
2294
+ * Thông tin các temp files.
2295
+ */
2296
+ tempFiles: Array<TempFile>;
2127
2297
  };
2128
2298
  type CreateOrderReturns = {
2129
2299
  orderId: string;
@@ -2157,6 +2327,19 @@ type AuthorizeType<T extends ScopeValues> = Partial<{
2157
2327
  [key in T]: boolean;
2158
2328
  }>;
2159
2329
  type GetSettingReturn = {
2330
+ /**
2331
+ * Thông tin cấp quyền, tham khảo bảng Scopes.
2332
+ *
2333
+ * | Scope | Corresponding APIs | Description |
2334
+ * |-----------------------|------------------------------------------------------------------|---------------------------------|
2335
+ * | scope.userInfo | [getUserInfo](../user-information/getUserInfo.md) | Thông tin user (tên, avatar...) |
2336
+ * | scope.userLocation | [getLocation](../../location/getLocation.md) | Thông tin vị trí user |
2337
+ * | scope.userPhonenumber | [getPhoneNumber](../user-information/getPhoneNumber.md) | Số điện thoại |
2338
+ * | scope.camera | [createCameraContext](../../media/camera/createCameraContext.md) | Camera |
2339
+ * | scope.micro | [createCameraContext](../../media/camera/createCameraContext.md) | Micro |
2340
+ *
2341
+ * Với các scope có giá trị trả về là `true`, tương ứng với việc người dùng đã cấp quyền sử dụng API trước đó, Mini Apps có thể truy xuất thông tin một cách trực tiếp.
2342
+ */
2160
2343
  authSetting: AuthorizeType<(typeof GET_SETTINGS_SCOPE_VALUES)[number]>;
2161
2344
  };
2162
2345
  type SaveFileReturns = {
@@ -2216,17 +2399,89 @@ type PhotoConstraint = {
2216
2399
  minScreenshotHeight?: number;
2217
2400
  };
2218
2401
 
2402
+ /***
2403
+ * Lấy thông tin của cache theo cơ chế đồng bộ.
2404
+ *
2405
+ * @minimumVersion 2.43.0
2406
+ * @behavior Ở môi trường phát triển, nhóm API Native Storage sẽ fallback về Local Storage để lưu trữ dữ liệu. Khi chạy bên trong ứng dụng Zalo mobile, Native Storage lưu trữ dữ liệu trong bộ nhớ của ứng dụng Zalo.
2407
+
2408
+ * @returns {StorageInfo} thông tin của cache.
2409
+ *
2410
+ * @example
2411
+ * ```ts
2412
+ * const { currentSize, limitSize } = nativeStorage.getStorageInfo();
2413
+ * ```
2414
+ */
2219
2415
  declare function getStorageInfoSync(): StorageInfo;
2220
2416
 
2221
2417
  declare const removeItemArgs: ZodString[];
2418
+ /**
2419
+ * Xoá dữ liệu trong cache theo cơ chế đồng bộ.
2420
+ *
2421
+ * @minimumVersion 2.43.0
2422
+ * @behavior Ở môi trường phát triển, nhóm API Native Storage sẽ fallback về Local Storage để lưu trữ dữ liệu. Khi chạy bên trong ứng dụng Zalo mobile, Native Storage lưu trữ dữ liệu trong bộ nhớ của ứng dụng Zalo.
2423
+ *
2424
+ * @param {string} key Tên khóa của dữ liệu cần lấy
2425
+ *
2426
+ * @example Xoá từ khoá tìm kiếm cũ khỏi bộ nhớ:
2427
+ * ```ts
2428
+ * nativeStorage.removeItem("recentSearch");
2429
+ * ```
2430
+ */
2222
2431
  declare function removeItem(key: TypeOf<(typeof removeItemArgs)[0]>): void;
2223
2432
 
2433
+ /**
2434
+ * Xoá toàn bộ dữ liệu trong cache theo cơ chế đồng bộ.
2435
+ *
2436
+ * @minimumVersion 2.43.0
2437
+ * @behavior Ở môi trường phát triển, nhóm API Native Storage sẽ fallback về Local Storage để lưu trữ dữ liệu. Khi chạy bên trong ứng dụng Zalo mobile, Native Storage lưu trữ dữ liệu trong bộ nhớ của ứng dụng Zalo.
2438
+ *
2439
+ * @example Xoá toàn bộ dữ liệu trong cache:
2440
+ * ```ts
2441
+ * nativeStorage.clear();
2442
+ * ```
2443
+ */
2224
2444
  declare function clear(): void;
2225
2445
 
2226
2446
  declare const setItemArgs: ZodString[];
2447
+ /**
2448
+ * Lưu trữ dữ liệu xuống bộ đệm theo cơ chế đồng bộ. Dữ liệu sẽ được lưu ở thiết bị của người dùng. Dữ liệu cũ nhất sẽ bị xoá nếu bộ nhớ đạt giới hạn (5MB).
2449
+ *
2450
+ * @minimumVersion 2.43.0
2451
+ * @behavior Ở môi trường phát triển, nhóm API Native Storage sẽ fallback về Local Storage để lưu trữ dữ liệu. Khi chạy bên trong ứng dụng Zalo mobile, Native Storage lưu trữ dữ liệu trong bộ nhớ của ứng dụng Zalo.
2452
+ *
2453
+ * @param {string} key Tên khóa mà bạn muốn tạo/cập nhật.
2454
+ * @param {string} value Giá trị mà bạn muốn cung cấp cho khóa mà bạn đang tạo/cập nhật.
2455
+ * @example Lưu từ khoá tìm kiếm vào bộ nhớ:
2456
+ * ```ts
2457
+ * nativeStorage.setItem("recentSearch", keyword);
2458
+ * ```
2459
+ */
2227
2460
  declare function setItem(key: TypeOf<(typeof setItemArgs)[0]>, value: TypeOf<(typeof setItemArgs)[1]>): void;
2228
2461
 
2229
2462
  declare const getItemArgs: ZodString[];
2463
+ /**
2464
+ * Lấy dữ liệu đã lưu ở cache theo cơ chế đồng bộ.
2465
+ *
2466
+ * @minimumVersion 2.43.0
2467
+ * @behavior Ở môi trường phát triển, nhóm API Native Storage sẽ fallback về Local Storage để lưu trữ dữ liệu. Khi chạy bên trong ứng dụng Zalo mobile, Native Storage lưu trữ dữ liệu trong bộ nhớ của ứng dụng Zalo.
2468
+ *
2469
+ * @param {string} key Tên khóa của dữ liệu cần lấy
2470
+ * @returns {string} Giá trị của khóa cần lấy, hoặc `null` nếu khóa không tồn tại.
2471
+ * @example Lấy giá trị tìm kiếm gần đây
2472
+ * ```ts
2473
+ * const keyword = getItem("recentSearch");
2474
+ * ```
2475
+ *
2476
+ * @example Lấy danh sách sản phẩm từ cache. Đảm bảo luôn sử dụng `try/catch` khi parse JSON để tránh lỗi có thể dẫn đến crash app.
2477
+ * ```ts
2478
+ * try {
2479
+ * const data: Product[] = JSON.parse(getItem("cache.productList"));
2480
+ * } catch (error) {
2481
+ * // Không tìm thấy dữ liệu trong cache, hoặc dữ liệu không phải chuỗi JSON hợp lệ
2482
+ * }
2483
+ * ```
2484
+ */
2230
2485
  declare function getItem(key: TypeOf<(typeof getItemArgs)[0]>): string;
2231
2486
 
2232
2487
  /**
@@ -2370,10 +2625,31 @@ declare namespace eventemitter3 {
2370
2625
 
2371
2626
  declare function login(args?: AsyncCallback<string>): Promise<string>;
2372
2627
 
2628
+ /**
2629
+ * API dùng để lấy thông tin xác thực người dùng.
2630
+ *
2631
+ * @important Cập nhật
2632
+ * Từ phiên bản SDK 2.35.0, ứng dụng mặc định có quyền truy xuất access tokens mà không cần người dùng xác nhận đồng ý. Thông qua access tokens này, ứng dụng chỉ có thể xuất ID người sử dụng. Nếu ứng dụng có nhu cầu sử dụng Tên và Ảnh đại diện, vui lòng sử dụng API authorize để yêu cầu người dùng cho phép truy cập scope.userInfo trước khi sử dụng API này. Lưu ý: Với các Zalo App có nhiều hơn 1 Mini App, hệ thống vẫn yêu cầu người dùng xác nhận khi truy xuất access tokens cho từng Mini App.
2633
+ *
2634
+ * @param args
2635
+ * @returns {string} `accessToken`
2636
+ * @example
2637
+ * ```ts
2638
+ * const accessToken = await getAccessToken();
2639
+ * ```
2640
+ */
2373
2641
  declare function getAccessToken(args?: AsyncCallback<string>): Promise<string>;
2374
2642
 
2375
2643
  declare function getVersion(): string;
2376
2644
 
2645
+ /**
2646
+ * API truy xuất thông tin hệ thống, thiết bị đang sử dụng.
2647
+ * @returns {SystemInfo} các thông tin về phiên bản, ngôn ngữ, theme của hệ thống.
2648
+ * @example Lấy các thông tin phiên bản:
2649
+ * ```ts
2650
+ * const { version, apiVersion, zaloVersion } = getSystemInfo();
2651
+ * ```
2652
+ */
2377
2653
  declare function getSystemInfo(): SystemInfo;
2378
2654
 
2379
2655
  declare const setNavigationBarTitleArgs: ZodOptional<ZodObject<{
@@ -2383,6 +2659,20 @@ declare const setNavigationBarTitleArgs: ZodOptional<ZodObject<{
2383
2659
  }, {
2384
2660
  title: string;
2385
2661
  }>>[];
2662
+ /**
2663
+ * API đặt lại tiêu đề trên thanh điều hướng của trang hiện tại.
2664
+ *
2665
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
2666
+ *
2667
+ * @param {string} title Tiêu đề mới cần đặt cho trang.
2668
+ * @example Khi người dùng truy cập trang Giỏ hàng:
2669
+ * ```ts
2670
+ * function CartPage() {
2671
+ * useEffect(() => {
2672
+ * setNavigationBarTitle({ title: "Giỏ hàng" });
2673
+ * }, []);
2674
+ * ```
2675
+ */
2386
2676
  declare function setNavigationBarTitle(args: AsyncVoidCallback & TypeOf<(typeof setNavigationBarTitleArgs)[0]>): Promise<void>;
2387
2677
 
2388
2678
  declare const setNavigationBarColorArgs: ZodOptional<ZodObject<{
@@ -2398,6 +2688,21 @@ declare const setNavigationBarColorArgs: ZodOptional<ZodObject<{
2398
2688
  statusBarColor?: string | undefined;
2399
2689
  color: string;
2400
2690
  }>>[];
2691
+ /**
2692
+ * API đặt lại màu thanh điều hướng của trang hiện tại.
2693
+ *
2694
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
2695
+ *
2696
+ * @param {string} color Giá trị màu, có giá trị hợp lệ là màu thập lục phân, ví dụ `#000000`. Nếu giá trị này rỗng thì thanh điều hướng sẽ bị ẩn.
2697
+ * @param {"black" | "white"} [textColor] Màu của text và icon trên thanh action bar và status bar. Trên thiết bị iOS, chỉ có thể thay đổi màu icon ở thanh action bar.
2698
+ * @param {string} [statusBarColor] Màu của thanh status bar khi thanh điều hướng bị ẩn, có giá trị hợp lệ là màu thập lục phân, ví dụ `#000000`.
2699
+ * @example Đổi màu thanh điều hướng thành màu đen:
2700
+ * ```ts
2701
+ * setNavigationBarColor({
2702
+ * color: "#000000",
2703
+ * });
2704
+ * ```
2705
+ */
2401
2706
  declare function setNavigationBarColor(args: AsyncVoidCallback & TypeOf<(typeof setNavigationBarColorArgs)[0]>): Promise<void>;
2402
2707
 
2403
2708
  declare const setNavigationBarLeftButtonArgs: ZodOptional<ZodObject<{
@@ -2407,6 +2712,41 @@ declare const setNavigationBarLeftButtonArgs: ZodOptional<ZodObject<{
2407
2712
  }, {
2408
2713
  type: "none" | "home" | "both" | "back";
2409
2714
  }>>[];
2715
+ /**
2716
+ * API đặt lại nút bên trái trên thanh điều hướng của trang hiện tại.
2717
+ *
2718
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
2719
+ *
2720
+ * @param {"none" | "back" | "home" | "both"} [type="back"] Loại nút bên trái.
2721
+ *
2722
+ * @example Hiển thị mũi tên quay lại:
2723
+ * ```ts
2724
+ * await setNavigationBarLeftButton({
2725
+ * type: "back"
2726
+ * });
2727
+ * ```
2728
+ *
2729
+ * @example Hiển thị nút trở về trang chủ:
2730
+ * ```ts
2731
+ * await setNavigationBarLeftButton({
2732
+ * type: "home"
2733
+ * });
2734
+ * ```
2735
+ *
2736
+ * @example Hiển thị cả nút quay lại và nút trở về trang chủ:
2737
+ * ```ts
2738
+ * await setNavigationBarLeftButton({
2739
+ * type: "both"
2740
+ * });
2741
+ * ```
2742
+ *
2743
+ * @example Không hiển thị nút bên trái:
2744
+ * ```ts
2745
+ * await setNavigationBarLeftButton({
2746
+ * type: "none"
2747
+ * });
2748
+ * ```
2749
+ */
2410
2750
  declare function setNavigationBarLeftButton(args: AsyncVoidCallback & TypeOf<(typeof setNavigationBarLeftButtonArgs)[0]>): Promise<void>;
2411
2751
 
2412
2752
  declare const setStorageArgs: ZodOptional<ZodObject<{
@@ -2466,14 +2806,52 @@ declare const getUserInfoArgs: ZodOptional<ZodObject<{
2466
2806
  avatarType: ZodOptional<ZodEnum<["small", "normal", "large"]>>;
2467
2807
  autoRequestPermission: ZodOptional<ZodDefault<ZodBoolean>>;
2468
2808
  }, "strip", ZodTypeAny, {
2469
- avatarType?: "normal" | "small" | "large" | undefined;
2809
+ avatarType?: "small" | "normal" | "large" | undefined;
2470
2810
  autoRequestPermission?: boolean | undefined;
2471
2811
  }, {
2472
- avatarType?: "normal" | "small" | "large" | undefined;
2812
+ avatarType?: "small" | "normal" | "large" | undefined;
2473
2813
  autoRequestPermission?: boolean | undefined;
2474
2814
  }>>[];
2815
+ /**
2816
+ * API truy xuất thông tin của người dùng bao gồm:
2817
+ * - ID: chuỗi định danh người dùng theo Zalo App, được cấp mặc định.
2818
+ * - Tên và Ảnh đại diện: nhằm tuân thủ Nghị Định số 13/2023/NĐ-CP về chính sách bảo vệ dữ liệu cá nhân, thông tin này sẽ yêu cầu người dùng xác nhận cho phép trước khi truy xuất. Nếu ứng dụng cần sử dụng thông tin này, vui lòng truyền param `autoRequestPermission` với giá trị `true`, hoặc sử dụng API [authorize](https://mini.zalo.me/documents/api/authorize/) để yêu cầu người dùng cho phép truy cập trước khi sử dụng API này.
2819
+
2820
+ * @param {"small" | "normal" | "large"} [avatarType] Kích thước ảnh avatar trả về. Mặc định là ảnh nhỏ nhất.
2821
+ * @param {boolean} [autoRequestPermission=false] Nếu `true`, ứng dụng sẽ tự động hiển thị form yêu cầu người dùng cho phép truy cập thông tin.
2822
+ * @returns {GetUserInfoReturns} Thông tin người dùng bao gồm ID, Tên, và Ảnh đại diện.
2823
+ * @example Tự động yêu cầu quyền truy cập thông tin người dùng:
2824
+ * ```ts
2825
+ * const { userInfo } = await getUserInfo({
2826
+ * autoRequestPermission: true,
2827
+ * });
2828
+ * ```
2829
+ *
2830
+ * @example Xử lý sự kiện người dùng từ chối truy cập thông tin:
2831
+ * ```ts
2832
+ * try {
2833
+ * const { userInfo } = await getUserInfo();
2834
+ * } catch (error) {
2835
+ * if (error instanceof AppError) {
2836
+ * if (error.code === -1401) {
2837
+ * // Người dùng từ chối cung cấp tên và ảnh đại diện
2838
+ * }
2839
+ * }
2840
+ * }
2841
+ * ```
2842
+ */
2475
2843
  declare function getUserInfo(args?: AsyncCallback<GetUserInfoReturns> & TypeOf<(typeof getUserInfoArgs)[0]>): Promise<GetUserInfoReturns>;
2476
2844
 
2845
+ /**
2846
+ * API truy xuất kiểu kết nối mạng hiện tại.
2847
+ *
2848
+ * @returns {GetNetworkTypeReturns} chứa kiểu kết nối mạng hiện tại.
2849
+ *
2850
+ * @example Lấy kiểu kết nối mạng hiện tại:
2851
+ * ```ts
2852
+ * const { networkType } = await getNetworkType();
2853
+ * ```
2854
+ */
2477
2855
  declare function getNetworkType(args?: AsyncCallback<GetNetworkTypeReturns>): Promise<GetNetworkTypeReturns>;
2478
2856
 
2479
2857
  declare const onNetworkStatusChangeArgs: ZodFunction<ZodTuple<[ZodObject<{
@@ -2481,11 +2859,31 @@ declare const onNetworkStatusChangeArgs: ZodFunction<ZodTuple<[ZodObject<{
2481
2859
  networkType: ZodEnum<["none", "wifi", "cellular", "unknown"]>;
2482
2860
  }, "strip", ZodTypeAny, {
2483
2861
  isConnected: boolean;
2484
- networkType: "none" | "unknown" | "wifi" | "cellular";
2862
+ networkType: "unknown" | "none" | "wifi" | "cellular";
2485
2863
  }, {
2486
2864
  isConnected: boolean;
2487
- networkType: "none" | "unknown" | "wifi" | "cellular";
2865
+ networkType: "unknown" | "none" | "wifi" | "cellular";
2488
2866
  }>], ZodUnknown>, ZodVoid>[];
2867
+ /**
2868
+ * Callback để lắng nghe sự kiện thay đổi mạng.
2869
+ *
2870
+ * @param {function} callback - Callback function được gọi khi mạng thay đổi.
2871
+ * @param {Object} callback.data - Dữ liệu trả về khi mạng thay đổi.
2872
+ * @param {boolean} callback.data.isConnected - Trạng thái kết nối mạng.
2873
+ * @param {string} callback.data.networkType - Kiểu kết nối mạng hiện tại với các giá trị:
2874
+ * - `none`: Không có mạng.
2875
+ * - `wifi`: Mạng Wi-Fi.
2876
+ * - `cellular`: Mạng di động (2g/3g/4g).
2877
+ * - `unknown`: Mạng không xác định (Android).
2878
+ *
2879
+ * @example Lắng nghe sự kiện thay đổi mạng:
2880
+ * ```ts
2881
+ * onNetworkStatusChange(function (data) {
2882
+ * const { isConnected, networkType } = data;
2883
+ * console.log(`Kết nối mạng: ${isConnected}, Loại mạng: ${networkType}`);
2884
+ * });
2885
+ * ```
2886
+ */
2489
2887
  declare function onNetworkStatusChange(args: TypeOf<(typeof onNetworkStatusChangeArgs)[0]>): void;
2490
2888
 
2491
2889
  declare const startBeaconDiscoveryArgs: ZodOptional<ZodObject<{
@@ -2590,6 +2988,15 @@ declare function stopBeaconDiscovery(args: AsyncCallback<boolean>): Promise<bool
2590
2988
 
2591
2989
  declare function getBeacons(args?: AsyncCallback<GetBeaconDiscoveryReturns>): Promise<GetBeaconDiscoveryReturns>;
2592
2990
 
2991
+ /**
2992
+ * API yêu cầu đóng Zalo Mini App.
2993
+ *
2994
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
2995
+ * @example Đóng Zalo Mini App:
2996
+ * ```ts
2997
+ * closeApp();
2998
+ * ```
2999
+ */
2593
3000
  declare function closeApp(args?: AsyncVoidCallback): Promise<void>;
2594
3001
 
2595
3002
  declare function scanQRCode(args?: AsyncCallback<ScanQRCodeReturns>): Promise<ScanQRCodeReturns>;
@@ -2610,6 +3017,34 @@ declare const openProfileArgs: ZodOptional<ZodObject<{
2610
3017
  type: "user" | "oa" | "aliasOA";
2611
3018
  id: string;
2612
3019
  }>>[];
3020
+ /**
3021
+ * API cho phép ứng dụng mở profile của User hoặc Official Account.
3022
+ *
3023
+ * @minimumVersion 2.5.3
3024
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3025
+ *
3026
+ * @param {string} type - Nhận các giá trị sau:
3027
+ * - `user`: Mở profile User.
3028
+ * - `oa`: Mở profile OA.
3029
+ * - `aliasOA`: Mở profile OA bằng Alias (field id truyền lên là alias của OA).
3030
+ * @param {string} id - Id của User hoặc OA.
3031
+ *
3032
+ * @example Mở cửa sổ chat với người dùng:
3033
+ * ```ts
3034
+ * await openProfile({
3035
+ * type: "user",
3036
+ * id: "user-id",
3037
+ * });
3038
+ * ```
3039
+ *
3040
+ * @example Mở profile của Official Account:
3041
+ * ```tsx
3042
+ * await openProfile({
3043
+ * type: "oa",
3044
+ * id: "oa-id",
3045
+ * });
3046
+ * ```
3047
+ */
2613
3048
  declare function openProfile(args: AsyncVoidCallback & TypeOf<(typeof openProfileArgs)[0]>): Promise<void>;
2614
3049
 
2615
3050
  declare const openChatArgs: ZodOptional<ZodObject<{
@@ -2631,6 +3066,42 @@ declare const openChatArgs: ZodOptional<ZodObject<{
2631
3066
  type: "user" | "oa";
2632
3067
  id: string;
2633
3068
  }>>[];
3069
+ /**
3070
+ * API cho phép ứng dụng mở cửa sổ chat với User hoặc Official Account. Có thể tự động điền nội dung tin nhắn, tuy nhiên việc gửi tin nhắn hay không phụ thuộc vào quyết định của người dùng.
3071
+ *
3072
+ * @minimumVersion 2.5.3
3073
+ * @minimumVersion 2.20.0: hỗ trợ tự điền nội dung tin nhắn với `message`.
3074
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3075
+ *
3076
+ * @param {"user" | "oa"} type Đối tượng mở cửa sổ chat.
3077
+ * @param {string} id Id của User hoặc Official Account tương ứng.
3078
+ * @param {string} [message] Nội dung sẽ được tự động điền vào ô tin nhắn. Người dùng có thể thay đổi nội dung này trước khi gửi.
3079
+ *
3080
+ * @example Mở cửa sổ chat với người dùng:
3081
+ * ```ts
3082
+ * await openChat({
3083
+ * type: "user",
3084
+ * id: "xxx",
3085
+ * });
3086
+ * ```
3087
+ *
3088
+ * @example Mở cửa sổ chat với Official Account:
3089
+ * ```ts
3090
+ * await openChat({
3091
+ * type: "oa",
3092
+ * id: "xxx",
3093
+ * });
3094
+ * ```
3095
+ *
3096
+ * @example Tự động điền nội dung tin nhắn:
3097
+ * ```ts
3098
+ * await openChat({
3099
+ * type: "oa",
3100
+ * id: "xxx",
3101
+ * message: `Xin chào, tôi muốn mua sản phẩm này: ${productName}`,
3102
+ * });
3103
+ * ```
3104
+ */
2634
3105
  declare function openChat(args: AsyncVoidCallback & TypeOf<(typeof openChatArgs)[0]>): Promise<void>;
2635
3106
 
2636
3107
  declare const openPostFeedArgs: ZodUnion<[ZodObject<{
@@ -2711,6 +3182,53 @@ declare const openPostFeedArgs: ZodUnion<[ZodObject<{
2711
3182
  };
2712
3183
  type: "profile";
2713
3184
  }>]>[];
3185
+ /**
3186
+ * API cho phép ứng dụng mở giao diện chia sẻ để người dùng chia sẻ thông tin lên nhật ký Zalo.
3187
+ *
3188
+ * @minimumVersion 2.5.3
3189
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3190
+ *
3191
+ * @param {string} type - Nhận các giá trị sau:
3192
+ * - `image`: Chia sẻ hình ảnh.
3193
+ * - `link`: Chia sẻ liên kết.
3194
+ * - `profile`: Chia sẻ profile OA.
3195
+ * @param {Object} data - Nội dung cần chia sẻ, tùy thuộc vào `type`.
3196
+ *
3197
+ * @returns {OpenPostFeedReturns} chứa thông tin kết quả chia sẻ.
3198
+ *
3199
+ * @example Chia sẻ hình ảnh:
3200
+ * ```ts
3201
+ * const { status, shareType, numberOfUser } = await openPostFeed({
3202
+ * type: "image",
3203
+ * data: {
3204
+ * imageUrls: ["link-to-image"],
3205
+ * },
3206
+ * });
3207
+ * ```
3208
+ *
3209
+ * @example Chia sẻ liên kết:
3210
+ * ```ts
3211
+ * const { status, shareType, numberOfUser } = await openPostFeed({
3212
+ * type: "link",
3213
+ * data: {
3214
+ * link: "http://news.zing.vn/Trung-uong-quyet-dinh-phuong-an-nhan-su-cap-cao-post632739.html",
3215
+ * title: "Trung ương quyết định phương án nhân sự cấp cao",
3216
+ * thumb: "link-to-thumb",
3217
+ * description: "description",
3218
+ * },
3219
+ * });
3220
+ * ```
3221
+ *
3222
+ * @example Chia sẻ profile:
3223
+ * ```ts
3224
+ * const { status, shareType, numberOfUser } = await openPostFeed({
3225
+ * type: "profile",
3226
+ * data: {
3227
+ * id: "765465772305886642",
3228
+ * },
3229
+ * });
3230
+ * ```
3231
+ */
2714
3232
  declare function openPostFeed(args: AsyncCallback<OpenPostFeedReturns> & TypeOf<(typeof openPostFeedArgs)[0]>): Promise<OpenPostFeedReturns>;
2715
3233
 
2716
3234
  declare const followOAArgs: ZodOptional<ZodObject<{
@@ -2723,6 +3241,38 @@ declare const followOAArgs: ZodOptional<ZodObject<{
2723
3241
  showDialogConfirm?: boolean | undefined;
2724
3242
  id: string;
2725
3243
  }>>[];
3244
+ /**
3245
+ * API yêu cầu theo dõi Official Account. Khi gọi API, một thông báo sẽ được hiển thị.
3246
+ *
3247
+ * @minimumVersion 2.5.3
3248
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3249
+ *
3250
+ * @param {string} id - Id của Official Account cần theo dõi.
3251
+ *
3252
+ * @example Theo dõi Official Account:
3253
+ * ```ts
3254
+ * await followOA({
3255
+ * id: "xxxx",
3256
+ * });
3257
+ * ```
3258
+ *
3259
+ * @example Xử lý lỗi:
3260
+ * ```ts
3261
+ * try {
3262
+ * await followOA({
3263
+ * id: "xxxx",
3264
+ * });
3265
+ * console.log("Theo dõi thành công");
3266
+ * } catch (error) {
3267
+ * const code = (error as AppError).code;
3268
+ * if (code === -201) {
3269
+ * console.log("Người dùng đã từ chối theo dõi");
3270
+ * } else {
3271
+ * console.log("Lỗi khác");
3272
+ * }
3273
+ * }
3274
+ * ```
3275
+ */
2726
3276
  declare function followOA(args: AsyncVoidCallback & TypeOf<(typeof followOAArgs)[0]>): Promise<void>;
2727
3277
 
2728
3278
  declare const unfollowOAArgs: ZodOptional<ZodObject<{
@@ -2732,6 +3282,21 @@ declare const unfollowOAArgs: ZodOptional<ZodObject<{
2732
3282
  }, {
2733
3283
  id: string;
2734
3284
  }>>[];
3285
+ /**
3286
+ * API cho phép ứng dụng hiển thị giao diện yêu cầu bỏ theo dõi Official Account để người dùng xác nhận.
3287
+ *
3288
+ * @minimumVersion 2.5.3
3289
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3290
+ *
3291
+ * @param {string} id Id của Official Account.
3292
+ *
3293
+ * @example Hiển thị giao diện yêu cầu bỏ theo dõi Official Account:
3294
+ * ```ts
3295
+ * await unfollowOA({
3296
+ * id: "xxxx",
3297
+ * });
3298
+ * ```
3299
+ */
2735
3300
  declare function unfollowOA(args: AsyncVoidCallback & TypeOf<(typeof unfollowOAArgs)[0]>): Promise<void>;
2736
3301
 
2737
3302
  declare const openShareSheetArgs: ZodUnion<[ZodObject<{
@@ -2906,33 +3471,139 @@ declare const openShareSheetArgs: ZodUnion<[ZodObject<{
2906
3471
  path: ZodOptional<ZodString>;
2907
3472
  description: ZodOptional<ZodDefault<ZodString>>;
2908
3473
  }, "strip", ZodTypeAny, {
2909
- description?: string | undefined;
2910
3474
  path?: string | undefined;
3475
+ description?: string | undefined;
2911
3476
  title: string;
2912
3477
  thumbnail: string;
2913
3478
  }, {
2914
- description?: string | undefined;
2915
3479
  path?: string | undefined;
3480
+ description?: string | undefined;
2916
3481
  title: string;
2917
3482
  thumbnail: string;
2918
3483
  }>;
2919
3484
  }, "strip", ZodTypeAny, {
2920
3485
  data: {
2921
- description?: string | undefined;
2922
3486
  path?: string | undefined;
3487
+ description?: string | undefined;
2923
3488
  title: string;
2924
3489
  thumbnail: string;
2925
3490
  };
2926
3491
  type: "zmp" | "zmp_deep_link";
2927
3492
  }, {
2928
3493
  data: {
2929
- description?: string | undefined;
2930
3494
  path?: string | undefined;
3495
+ description?: string | undefined;
2931
3496
  title: string;
2932
3497
  thumbnail: string;
2933
3498
  };
2934
3499
  type: "zmp" | "zmp_deep_link";
2935
3500
  }>]>[];
3501
+ /**
3502
+ * API cho phép ứng dụng mở giao diện chia sẻ để người dùng chia sẻ thông tin với bạn bè Zalo.
3503
+ *
3504
+ * @minimumVersion 2.5.3
3505
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3506
+ *
3507
+ * @param {"image" | "link" | "oa" | "gif" | "video" | "zmp" | "zmp_deep_link"} type Nhận các giá trị sau:
3508
+ * `image`: Chia sẻ hình ảnh.
3509
+ * `link`: Chia sẻ liên kết.
3510
+ * `oa`: Chia sẻ Official Account.
3511
+ * `gif`: Chia sẻ ảnh động.
3512
+ * `video`: Chia sẻ video.
3513
+ * `zmp`: Chia sẻ page hiện tại của Zalo Mini App.
3514
+ * `zmp_deep_link`: Chia sẻ page hiện tại của Zalo Mini App thông qua deep link (hỗ trợ từ API 2.25.7).
3515
+ * @param {object} data Nội dung cần chia sẻ, tùy thuộc vào `type`.
3516
+ *
3517
+ * @returns {OpenShareSheetReturns} Promise chứa thông tin kết quả chia sẻ.
3518
+ *
3519
+ * @example Chia sẻ hình ảnh:
3520
+ * ```ts
3521
+ * const data = await openShareSheet({
3522
+ * type: "image",
3523
+ * data: {
3524
+ * imageUrls: ["http://dev.org.zads.zdn.vn/2a16c7fefbbb12e54baa"],
3525
+ * },
3526
+ * });
3527
+ * console.log(data);
3528
+ * ```
3529
+ *
3530
+ * @example Chia sẻ liên kết:
3531
+ * ```ts
3532
+ * const data = await openShareSheet({
3533
+ * type: "link",
3534
+ * data: {
3535
+ * link: "http://news.zing.vn/Trung-uong-quyet-dinh-phuong-an-nhan-su-cap-cao-post632739.html",
3536
+ * chatOnly: false,
3537
+ * },
3538
+ * });
3539
+ * console.log(data);
3540
+ * ```
3541
+ *
3542
+ * @example Chia sẻ Official Account:
3543
+ * ```ts
3544
+ * const data = await openShareSheet({
3545
+ * type: "oa",
3546
+ * data: {
3547
+ * id: "765465772305886642",
3548
+ * },
3549
+ * });
3550
+ * console.log(data);
3551
+ * ```
3552
+ *
3553
+ * @example Chia sẻ GIF:
3554
+ * ```ts
3555
+ * const data = await openShareSheet({
3556
+ * type: "gif",
3557
+ * data: {
3558
+ * imageUrl: "http://dev.org.zads.zdn.vn/2a16c7fefbbb12e54baa",
3559
+ * gifUrl: "http://dev.org.zads.zdn.vn/fc88fe60c2252b7b7234",
3560
+ * width: 480,
3561
+ * height: 270,
3562
+ * },
3563
+ * });
3564
+ * console.log(data);
3565
+ * ```
3566
+ *
3567
+ * @example Chia sẻ video:
3568
+ * ```ts
3569
+ * const data = await openShareSheet({
3570
+ * type: "video",
3571
+ * data: {
3572
+ * videoThumb: "http://dev.org.zads.zdn.vn/fc88fe60c2252b7b7234",
3573
+ * videoUrl: "http://dev.org.zads.zdn.vn/fc88fe60c2252b7b7234",
3574
+ * width: 480,
3575
+ * height: 270,
3576
+ * },
3577
+ * });
3578
+ * console.log(data);
3579
+ * ```
3580
+ *
3581
+ * @example Chia sẻ page hiện tại của Zalo Mini App:
3582
+ * ```ts
3583
+ * const data = await openShareSheet({
3584
+ * type: "zmp",
3585
+ * data: {
3586
+ * title: "My Zalo Mini App - HomePage",
3587
+ * description: "Home page",
3588
+ * thumbnail: "https://sample-videos.com/img/Sample-jpg-image-50kb.jpg",
3589
+ * },
3590
+ * });
3591
+ * console.log(data);
3592
+ * ```
3593
+ *
3594
+ * @example Chia sẻ page hiện tại của Zalo Mini App thông qua deep link:
3595
+ * ```ts
3596
+ * const data = await openShareSheet({
3597
+ * type: "zmp_deep_link",
3598
+ * data: {
3599
+ * title: "My Zalo Mini App - HomePage",
3600
+ * description: "Home page",
3601
+ * thumbnail: "https://sample-videos.com/img/Sample-jpg-image-50kb.jpg",
3602
+ * },
3603
+ * });
3604
+ * console.log(data);
3605
+ * ```
3606
+ */
2936
3607
  declare function openShareSheet(args: AsyncCallback<OpenShareSheetReturns> & TypeOf<(typeof openShareSheetArgs)[0]>): Promise<OpenShareSheetReturns>;
2937
3608
 
2938
3609
  declare function requestCameraPermission(args?: AsyncCallback<RequestCameraPermissionReturns>): Promise<RequestCameraPermissionReturns>;
@@ -2944,6 +3615,32 @@ declare const createShortcutArgs: ZodOptional<ZodObject<{
2944
3615
  }, {
2945
3616
  params?: Record<string, string> | undefined;
2946
3617
  }>>[];
3618
+ /**
3619
+ * API cho phép ứng dụng tạo shortcut trên màn hình chờ.
3620
+ *
3621
+ * Chi tiết về giao diện tạo shortcut trên cả hai nền tảng vui lòng tham khảo tại [đây](https://mini.zalo.me/documents/api/createShortcut/).
3622
+ *
3623
+ * @minimumVersion 2.5.3: chỉ hỗ trợ tạo shortcut trên Android.
3624
+ * @minimumVersion 2.16.1: hỗ trợ tạo shortcut trên cả iOS và Android.
3625
+ * @minimumVersion 2.16.3: hỗ trợ thêm params vào shortcut.
3626
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3627
+ *
3628
+ * @param {Record<string, string>} [params] - Params cần thêm vào Zalo Mini App khi mở..
3629
+ *
3630
+ * @example Tạo shortcut đơn giản:
3631
+ * ```ts
3632
+ * await createShortcut();
3633
+ * ```
3634
+ *
3635
+ * @example Tạo shortcut với params:
3636
+ * ```ts
3637
+ * await createShortcut({
3638
+ * params: {
3639
+ * utm_source: "shortcut",
3640
+ * },
3641
+ * });
3642
+ * ```
3643
+ */
2947
3644
  declare function createShortcut(args?: AsyncCallback<any> & TypeOf<(typeof createShortcutArgs)[0]>): Promise<any>;
2948
3645
 
2949
3646
  declare const openBioAuthenticationArgs: ZodOptional<ZodObject<{
@@ -2990,8 +3687,31 @@ declare const showToastArgs: ZodOptional<ZodObject<{
2990
3687
  }, {
2991
3688
  message: string;
2992
3689
  }>>[];
3690
+ /**
3691
+ * API hiển thị một thông báo ngắn trên màn hình.
3692
+ *
3693
+ * @param {string} message Nội dung thông báo cần hiển thị.
3694
+ *
3695
+ * @example Hiện thông báo đặt hàng thành công:
3696
+ * ```ts
3697
+ * showToast({
3698
+ * message: "Đặt hàng thành công!"
3699
+ * });
3700
+ * ```
3701
+ */
2993
3702
  declare function showToast(args: AsyncVoidCallback & TypeOf<(typeof showToastArgs)[0]>): Promise<void>;
2994
3703
 
3704
+ /**
3705
+ * API để ẩn bàn phím ảo.
3706
+ *
3707
+ * @minimumVersion 2.5.3
3708
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3709
+ *
3710
+ * @example Chủ động ẩn bàn phím ảo:
3711
+ * ```ts
3712
+ * hideKeyboard();
3713
+ * ```
3714
+ */
2995
3715
  declare function hideKeyboard(args?: AsyncVoidCallback): Promise<void>;
2996
3716
 
2997
3717
  declare const openPhoneArgs: ZodObject<{
@@ -3001,6 +3721,28 @@ declare const openPhoneArgs: ZodObject<{
3001
3721
  }, {
3002
3722
  phoneNumber: string;
3003
3723
  }>[];
3724
+ /**
3725
+ * API cho phép mở màn hình cuộc gọi với một số điện thoại cụ thể.
3726
+ *
3727
+ * @minimumVersion 2.5.3
3728
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3729
+ *
3730
+ * @param {string} phoneNumber - Số điện thoại cần gọi.
3731
+ *
3732
+ * @example Mở màn hình cuộc gọi với số điện thoại cụ thể:
3733
+ * ```ts
3734
+ * await openPhone({
3735
+ * phoneNumber: "0123456789",
3736
+ * });
3737
+ * ```
3738
+ *
3739
+ * @example Số điện thoại có thể bắt đầu bằng mã quốc tế:
3740
+ * ```ts
3741
+ * await openPhone({
3742
+ * phoneNumber: "+84123456789",
3743
+ * });
3744
+ * ```
3745
+ */
3004
3746
  declare function openPhone(args: AsyncVoidCallback & TypeOf<(typeof openPhoneArgs)[0]>): Promise<void>;
3005
3747
 
3006
3748
  declare const openSMSArgs: ZodObject<{
@@ -3013,6 +3755,23 @@ declare const openSMSArgs: ZodObject<{
3013
3755
  content: string;
3014
3756
  phoneNumber: string;
3015
3757
  }>[];
3758
+ /**
3759
+ * API mở ứng dụng tin nhắn với nội dung và số điện thoại cụ thể.
3760
+ *
3761
+ * @minimumVersion 2.5.3
3762
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3763
+ *
3764
+ * @param {string} content Nội dung tin nhắn.
3765
+ * @param {string} phoneNumber Số điện thoại nhận tin nhắn.
3766
+ *
3767
+ * @example Mở ứng dụng tin nhắn với nội dung và số điện thoại cụ thể:
3768
+ * ```ts
3769
+ * await openSMS({
3770
+ * content: "text",
3771
+ * phoneNumber: "+84123456789",
3772
+ * });
3773
+ * ```
3774
+ */
3016
3775
  declare function openSMS(args: AsyncVoidCallback & TypeOf<(typeof openSMSArgs)[0]>): Promise<void>;
3017
3776
 
3018
3777
  declare const viewOAQrArgs: ZodObject<{
@@ -3025,6 +3784,23 @@ declare const viewOAQrArgs: ZodObject<{
3025
3784
  displayName?: string | undefined;
3026
3785
  id: string;
3027
3786
  }>[];
3787
+ /**
3788
+ * API cho phép ứng dụng hiển thị QR code của OA.
3789
+ *
3790
+ * @minimumVersion 2.5.3
3791
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3792
+ *
3793
+ * @param {string} id Id của OA.
3794
+ * @param {string} [displayName] Tên hiển thị của QR code.
3795
+ *
3796
+ * @example Hiển thị QR code của OA:
3797
+ * ```ts
3798
+ * await viewOAQr({
3799
+ * id: "765465772305886642",
3800
+ * displayName: "Galaxy Cinema",
3801
+ * });
3802
+ * ```
3803
+ */
3028
3804
  declare function viewOAQr(args: AsyncVoidCallback & TypeOf<(typeof viewOAQrArgs)[0]>): Promise<void>;
3029
3805
 
3030
3806
  declare const keepScreenArgs: ZodObject<{
@@ -3034,6 +3810,29 @@ declare const keepScreenArgs: ZodObject<{
3034
3810
  }, {
3035
3811
  keepScreenOn: boolean;
3036
3812
  }>[];
3813
+ /**
3814
+ * API cho phép ứng dụng giữ cho màn hình luôn bật. Ví dụ: trường hợp play video. Khi thoát khỏi ứng dụng, cài đặt này sẽ quay về mặc định để tránh màn hình luôn bật.
3815
+ *
3816
+ * @minimumVersion 2.5.3
3817
+ * @requirePermission Cần xin Cấp quyền sử dụng các API này cho Mini App ID tại trang Quản lý ứng dụng. Nếu không, sẽ bị [lỗi với người dùng bình thường, mặc dù Developer/Admin thì không bị](https://mini.zalo.me/community/8746968970844796879/loi-chi-xay-ra-voi-nguoi-dung-binh-thuong-con-developer-admin-thi-khong-bi).
3818
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3819
+ *
3820
+ * @param {boolean} keepScreenOn Truyền `true` để giữ màn hình luôn bật. Truyền `false` để tắt chế độ này.
3821
+ *
3822
+ * @example Giữ màn hình luôn bật:
3823
+ * ```ts
3824
+ * await keepScreen({
3825
+ * keepScreenOn: true,
3826
+ * });
3827
+ * ```
3828
+ *
3829
+ * @example Tắt chế độ giữ màn hình:
3830
+ * ```ts
3831
+ * await keepScreen({
3832
+ * keepScreenOn: false,
3833
+ * });
3834
+ * ```
3835
+ */
3037
3836
  declare function keepScreen(args: AsyncCallback<KeepScreenReturns> & TypeOf<(typeof keepScreenArgs)[0]>): Promise<void>;
3038
3837
 
3039
3838
  declare function onKeepScreen(args?: AsyncVoidCallback): Promise<void>;
@@ -3050,6 +3849,46 @@ declare const saveImageToGalleryArgs: ZodOptional<ZodObject<{
3050
3849
  imageUrl?: string | undefined;
3051
3850
  imageBase64Data?: string | undefined;
3052
3851
  }>>[];
3852
+ /**
3853
+ * Lưu ảnh vào thư viện media của thiết bị.
3854
+ *
3855
+ * @minimumVersion 2.16.0
3856
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3857
+ *
3858
+ * @param {string} [imageBase64Data] Giá trị base64 của ảnh cần lưu.
3859
+ * @param {string} [imageUrl] Đường dẫn của ảnh cần lưu.
3860
+ * @param {(progress: number) => void} [onProgress] Callback function tiến độ tải file. Với `progress` là số từ 0 đến 100%.
3861
+ *
3862
+ * @example Thông báo một lần sau khi lưu ảnh xong:
3863
+ * ```ts
3864
+ * await saveImageToGallery({
3865
+ * imageUrl: "https://sample-videos.com/img/Sample-jpg-image-50kb.jpg",
3866
+ * });
3867
+ * console.log("Lưu ảnh thành công!");
3868
+ * ```
3869
+ *
3870
+ * @example Xử lý lỗi khi lưu ảnh:
3871
+ * ```ts
3872
+ * try {
3873
+ * await saveImageToGallery({
3874
+ * imageUrl: "https://sample-videos.com/img/Sample-jpg-image-50kb.jpg",
3875
+ * });
3876
+ * } catch (error) {
3877
+ * console.error(error);
3878
+ * }
3879
+ * ```
3880
+ *
3881
+ * @example Báo cáo tiến độ lưu ảnh:
3882
+ * ```ts
3883
+ * await saveImageToGallery({
3884
+ * imageUrl: "https://sample-videos.com/img/Sample-jpg-image-50kb.jpg",
3885
+ * onProgress: (progress) => {
3886
+ * console.log(`Đã lưu được ${progress}%...`);
3887
+ * },
3888
+ * });
3889
+ * console.log("Lưu ảnh thành công!");
3890
+ * ```
3891
+ */
3053
3892
  declare function saveImageToGallery(args: AsyncProgressCallback & TypeOf<(typeof saveImageToGalleryArgs)[0]>): Promise<void>;
3054
3893
 
3055
3894
  declare const saveVideoToGalleryArgs: ZodOptional<ZodObject<{
@@ -3059,6 +3898,46 @@ declare const saveVideoToGalleryArgs: ZodOptional<ZodObject<{
3059
3898
  }, {
3060
3899
  videoUrl: string;
3061
3900
  }>>[];
3901
+ /**
3902
+ * Lưu video vào thư viện media của thiết bị.
3903
+ *
3904
+ * @minimumVersion 2.44.0
3905
+ * @requirePermission Cần xin Cấp quyền sử dụng các API này cho Mini App ID tại trang Quản lý ứng dụng. Nếu không, sẽ bị [lỗi với người dùng bình thường, mặc dù Developer/Admin thì không bị](https://mini.zalo.me/community/8746968970844796879/loi-chi-xay-ra-voi-nguoi-dung-binh-thuong-con-developer-admin-thi-khong-bi).
3906
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3907
+ *
3908
+ * @param {string} videoUrl Đường dẫn của video cần lưu.
3909
+ * @param {(progress: number) => void} [onProgress] Callback function tiến độ tải file. Với `progress` là số từ 0 đến 100%.
3910
+ *
3911
+ * @example Thông báo một lần sau khi lưu video xong:
3912
+ * ```ts
3913
+ * await saveVideoToGallery({
3914
+ * videoUrl: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4",
3915
+ * });
3916
+ * console.log("Lưu video thành công!");
3917
+ * ```
3918
+ *
3919
+ * @example Xử lý lỗi khi lưu video:
3920
+ * ```ts
3921
+ * try {
3922
+ * await saveVideoToGallery({
3923
+ * videoUrl: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4",
3924
+ * });
3925
+ * } catch (error) {
3926
+ * console.error(error);
3927
+ * }
3928
+ * ```
3929
+ *
3930
+ * @example Báo cáo tiến độ lưu video:
3931
+ * ```ts
3932
+ * await saveVideoToGallery({
3933
+ * videoUrl: "https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4",
3934
+ * onProgress: (progress) => {
3935
+ * console.log(`Đã lưu được ${progress}%...`);
3936
+ * },
3937
+ * });
3938
+ * console.log("Lưu video thành công!");
3939
+ * ```
3940
+ */
3062
3941
  declare function saveVideoToGallery(args: AsyncProgressCallback & TypeOf<(typeof saveVideoToGalleryArgs)[0]>): Promise<void>;
3063
3942
 
3064
3943
  declare const openMiniAppArgs: ZodObject<{
@@ -3074,18 +3953,77 @@ declare const openMiniAppArgs: ZodObject<{
3074
3953
  params?: Record<string, string> | undefined;
3075
3954
  appId: string;
3076
3955
  }>[];
3956
+ /**
3957
+ * API dùng để mở một Zalo Mini App khác. Có thể mở với một đường dẫn cụ thể bên trong Mini App đó, hoặc đính kèm các tham số bổ sung.
3958
+ *
3959
+ * @minimumVersion 2.7.0
3960
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
3961
+ *
3962
+ * @param {string} appId ID của Zalo Mini App cần mở.
3963
+ * @param {string} [path] Đường dẫn đến một trang cụ thể bên trong Zalo Mini App cần mở.
3964
+ * @param {Record<string, string>} [params] Object chứa các tham số bổ sung cần đính kèm với đường dẫn.
3965
+ *
3966
+ *
3967
+ * @example Mở Mini App "ZaUI Coffee":
3968
+ * ```ts
3969
+ * openMiniApp({
3970
+ * appId: "194839900003483517",
3971
+ * });
3972
+ * ```
3973
+ *
3974
+ * @example Mở tab "Cá nhân" bên trong "ZaUI Coffee":
3975
+ * ```ts
3976
+ * openMiniApp({
3977
+ * appId: "194839900003483517",
3978
+ * path: "/profile",
3979
+ * });
3980
+ * ```
3981
+ *
3982
+ * @example Mở "ZaUI Coffee" với `utm_campaign` tracking:
3983
+ * ```ts
3984
+ * openMiniApp({
3985
+ * appId: "194839900003483517",
3986
+ * params: {
3987
+ * utm_campaign: "spring_promo",
3988
+ * },
3989
+ * });
3990
+ * ```
3991
+ */
3077
3992
  declare function openMiniApp(args: AsyncVoidCallback & TypeOf<(typeof openMiniAppArgs)[0]>): Promise<void>;
3078
3993
 
3079
3994
  declare const vibrateArgs: ZodObject<{
3080
- type: ZodDefault<ZodEnum<["oneShot"]>>;
3995
+ type: ZodOptional<ZodDefault<ZodEnum<["oneShot"]>>>;
3081
3996
  milliseconds: ZodOptional<ZodNumber>;
3082
3997
  }, "strip", ZodTypeAny, {
3998
+ type?: "oneShot" | undefined;
3083
3999
  milliseconds?: number | undefined;
3084
- type: "oneShot";
3085
4000
  }, {
3086
4001
  type?: "oneShot" | undefined;
3087
4002
  milliseconds?: number | undefined;
3088
4003
  }>[];
4004
+ /**
4005
+ * API rung thiết bị.
4006
+ *
4007
+ * @minimumVersion 2.9.8
4008
+ * @requirePermission Cần xin Cấp quyền sử dụng các API này cho Mini App ID tại trang Quản lý ứng dụng. Nếu không, sẽ bị [lỗi với người dùng bình thường, mặc dù Developer/Admin thì không bị](https://mini.zalo.me/community/8746968970844796879/loi-chi-xay-ra-voi-nguoi-dung-binh-thuong-con-developer-admin-thi-khong-bi).
4009
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4010
+ *
4011
+ * @param {string} [type="oneShot"] Loại rung, hiện tại chỉ hỗ trợ `oneShot`.
4012
+ * @param {number} [milliseconds=500] Thời gian rung (tính bằng mili giây). Chỉ có thể thiết lập trên thiết bị Android.
4013
+ *
4014
+ * @example Rung thiết bị trong 500 mili giây:
4015
+ * ```ts
4016
+ * await vibrate();
4017
+ * ```
4018
+ *
4019
+ * @example Rung thiết bị trong 1 giây:
4020
+ * ```ts
4021
+ * vibrate({
4022
+ * type: "oneShot",
4023
+ * milliseconds: 1000
4024
+ * })
4025
+ * ```
4026
+ */
3089
4027
  declare function vibrate(args?: AsyncVoidCallback & TypeOf<(typeof vibrateArgs)[0]>): Promise<void>;
3090
4028
 
3091
4029
  declare const openWebviewArgs: ZodObject<{
@@ -3113,10 +4051,60 @@ declare const openWebviewArgs: ZodObject<{
3113
4051
  } | undefined;
3114
4052
  url: string;
3115
4053
  }>[];
4054
+ /**
4055
+ * Tải một trang web bằng Webview.
4056
+ * Để biết khi nào Webview được đóng, vui lòng lắng nghe sự kiện [WebviewClosed](https://mini.zalo.me/documents/api/events/#webviewclosed).
4057
+ *
4058
+ * @minimumVersion 2.11.0
4059
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4060
+ *
4061
+ * @param {string} url Đường dẫn của trang web cần tải.
4062
+ * @param {"bottomSheet" | "normal"} [config.style="bottomSheet"] Kiểu hiển thị của Webview:
4063
+ * - `bottomSheet`: Cửa sổ hiển thị từ dưới đáy của màn hình.
4064
+ * - `normal`: Cửa sổ hiển thị toàn màn hình.
4065
+ * @param {"back" | "none"} [config.leftButton="back"] Nút bên trái thanh header: (chỉ hỗ trợ cho style 'bottomSheet')
4066
+ * - `back`: Nút quay về trang trước.
4067
+ * - `none`: không hiển thị nút.
4068
+ *
4069
+ * @example Mở trang chủ của Zalo Mini App:
4070
+ * ```ts
4071
+ * openWebview({
4072
+ * url: "https://mini.zalo.me",
4073
+ * });
4074
+ * ```
4075
+ * @example Mở trang chủ của Zalo Mini App toàn màn hình:
4076
+ * ```ts
4077
+ * openWebview({
4078
+ * url: "https://mini.zalo.me",
4079
+ * config: {
4080
+ * style: "normal",
4081
+ * }
4082
+ * });
4083
+ * ```
4084
+ */
3116
4085
  declare function openWebview(args: AsyncCallback<OpenWebviewReturns> & TypeOf<(typeof openWebviewArgs)[0]>): Promise<void>;
3117
4086
 
4087
+ /**
4088
+ * API truy xuất các tham số được gửi đến trang hiện tại.
4089
+ *
4090
+ * @minimumVersion 2.11.0
4091
+ * @returns {Record<string, string>} tất cả tham số dưới dạng key-value.
4092
+ *
4093
+ * @example Lấy ID của sản phẩm được truyền vào trong URL:
4094
+ * ```ts
4095
+ * const { id } = getRouteParams();
4096
+ * ```
4097
+ */
3118
4098
  declare function getRouteParams(): Record<string, string>;
3119
4099
 
4100
+ /**
4101
+ * API truy xuất thông tin Zalo Mini App hiện tại.
4102
+ * @returns {GetAppInfoReturns} các thông tin Zalo Mini App hiện tại.
4103
+ * @example Lấy tên và phiên bản live hiện tại:
4104
+ * ```ts
4105
+ * const { name, version } = await getAppInfo({});
4106
+ * ```
4107
+ */
3120
4108
  declare function getAppInfo(args?: AsyncCallback<GetAppInfoReturns>): Promise<GetAppInfoReturns>;
3121
4109
 
3122
4110
  declare const sendDataToPreviousMiniAppArgs: ZodObject<{
@@ -3126,8 +4114,97 @@ declare const sendDataToPreviousMiniAppArgs: ZodObject<{
3126
4114
  }, {
3127
4115
  data?: any;
3128
4116
  }>[];
4117
+ /**
4118
+ * Gửi dữ liệu cho Zalo Mini App trước đó.
4119
+ * Zalo Mini App trước đó cần lắng nghe sự kiện [OnDataCallback](https://mini.zalo.me/documents/api/events/#ondatacallback) để nhận dữ liệu.
4120
+ * Nếu API được gọi nhiều lần thì dữ liệu cuối cùng sẽ được gửi đi.
4121
+ *
4122
+ * @minimumVersion 2.13.0
4123
+ *
4124
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4125
+ *
4126
+ * @param {any} data Dữ liệu cần gửi.
4127
+ *
4128
+ * @example Ví dụ có 2 Zalo Mini App A với id là `2953132499190403100` và B với id là `2953132499190403200`. Để B có thể gửi dữ liệu cho A, chúng ta cần thực hiện những bước sau:
4129
+ *
4130
+ * 1. Lắng nghe sự kiện [OnDataCallback](https://mini.zalo.me/documents/api/events/#ondatacallback) ở app A:
4131
+ * ```ts
4132
+ * import { events, EventName } from "zmp-sdk/apis";
4133
+ *
4134
+ * const callback = (data) => {
4135
+ * console.log(data);
4136
+ * };
4137
+ *
4138
+ * events.on(EventName.OnDataCallback, callback);
4139
+ * ```
4140
+ *
4141
+ * 2. Gọi API [openMiniApp](https://mini.zalo.me/documents/api/openMiniApp/) để chuyển đến app B:
4142
+ * ```ts
4143
+ * import { openMiniApp } from "zmp-sdk/apis";
4144
+ *
4145
+ * openMiniApp({
4146
+ * appId: "2953132499190403200",
4147
+ * success: (res) => {
4148
+ * // xử lý khi gọi API thành công
4149
+ * },
4150
+ * fail: (error) => {
4151
+ * // xử lý khi gọi API thất bại
4152
+ * console.log(error);
4153
+ * },
4154
+ * });
4155
+ * ```
4156
+ *
4157
+ * 3. Ở app B, gửi dữ liệu cho app A:
4158
+ * ```ts
4159
+ * import { sendDataToPreviousMiniApp } from "zmp-sdk/apis";
4160
+ *
4161
+ * sendDataToPreviousMiniApp({
4162
+ * data: "Success",
4163
+ * success: (res) => {
4164
+ * // xử lý khi gọi API thành công
4165
+ * },
4166
+ * fail: (err) => {
4167
+ * // xử lý khi gọi API thất bại
4168
+ * console.log(err);
4169
+ * },
4170
+ * });
4171
+ * ```
4172
+ *
4173
+ * 4. Tắt app B bằng API [closeApp](https://mini.zalo.me/documents/api/closeApp/) hoặc nhấn nút tắt Mini App trên header:
4174
+ * ```ts
4175
+ * import { closeApp } from "zmp-sdk/apis";
4176
+ *
4177
+ * closeApp();
4178
+ * ```
4179
+ *
4180
+ * 5. Sau khi app B đóng hoàn toàn, app A sẽ nhận được dữ liệu đã gửi.
4181
+ */
3129
4182
  declare function sendDataToPreviousMiniApp(args: AsyncVoidCallback & TypeOf<(typeof sendDataToPreviousMiniAppArgs)[0]>): Promise<void>;
3130
4183
 
4184
+ /**
4185
+ * Lấy thông tin số điện thoại của người dùng. Khi gọi API, một thông báo xin cấp quyền sẽ được hiển thị. Mini App chỉ lấy được thông tin số điện thoại nếu người dùng đồng ý cấp quyền chia sẻ số điện thoại.
4186
+ *
4187
+ * Lưu ý, để giúp các nhà phát triển Mini App sử dụng flow xin quyền một cách hiệu quả, cũng như phù hợp với [chính sách của Zalo Mini App điều 3.3.4](https://mini.zalo.me/documents/zalo-mini-app-developer-program-agreement/#33-api-quy%E1%BB%81n-truy-c%E1%BA%ADp), Mini App Team đã đưa ra một số gợi ý thiết kế trải nghiệm như thông tin bên dưới. Nhà phát triển cần giải thích rõ ràng và trực quan mục đích xin quyền để người dùng dễ dàng hiểu và đồng ý cung cấp thông tin.
4188
+ *
4189
+ * - **Trường hợp chỉ cần số điện thoại cho một số tính năng nhất định**: Chỉ nên yêu cầu người dùng chia sẻ số điện thoại khi người dùng bắt đầu sử dụng các tính năng đó như khi tiến hành đặt hàng, đăng ký tham dự sự kiện...
4190
+ * - **Trường hợp bắt buộc phải cung cấp số điện thoại để sử dụng ứng dụng**: Cần hiển thị UI Onboarding giải thích cụ thể lý do người dùng cần phải cung cấp số điện thoại.
4191
+ *
4192
+ * Nhằm đảm bảo trải nghiệm thoải mái của người dùng Mini App, chúng tôi sẽ từ chối xét duyệt cho những Mini App có luồng xin cấp quyền chưa rõ ràng, không nêu được mục đích xin quyền đến người dùng.
4193
+ *
4194
+ * @minimumVersion 2.13.0
4195
+ * @requirePermission Cần xin Cấp quyền sử dụng các API này cho Mini App ID tại trang Quản lý ứng dụng. Nếu không, sẽ bị [lỗi với người dùng bình thường, mặc dù Developer/Admin thì không bị](https://mini.zalo.me/community/8746968970844796879/loi-chi-xay-ra-voi-nguoi-dung-binh-thuong-con-developer-admin-thi-khong-bi).
4196
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4197
+ *
4198
+ * @returns {GetPhoneNumberReturns} chứa token để truy xuất thông tin số điện thoại.
4199
+ *
4200
+ * @example
4201
+ * 1. Ở Zalo Mini App, gọi API này để lấy token số điện thoại:
4202
+ * ```ts
4203
+ * const { token } = await getPhoneNumber();
4204
+ * ```
4205
+ * 2. Dùng fetch hoặc axios để gửi token này lên server. Nếu không, bạn sẽ bị [lỗi khi gọi các API Server-Server từ Mini App](https://mini.zalo.me/community/9107262438710014159/loi-khi-goi-cac-api-server-server-tu-mini-app).
4206
+ * 3. Server chuyển đổi token thành thông tin số điện thoại và trả về cho Mini App theo [hướng dẫn sau](https://mini.zalo.me/documents/api/getPhoneNumber/#hướng-dẫn-chuyển-đổi-token-thành-số-điện-thoại-người-dùng).
4207
+ */
3131
4208
  declare function getPhoneNumber(args?: AsyncCallback<GetPhoneNumberReturns>): Promise<GetPhoneNumberReturns>;
3132
4209
 
3133
4210
  declare const openProfilePickerArgs: ZodObject<{
@@ -3137,6 +4214,24 @@ declare const openProfilePickerArgs: ZodObject<{
3137
4214
  }, {
3138
4215
  maxProfile?: number | undefined;
3139
4216
  }>[];
4217
+ /**
4218
+ * API mở cửa sổ chọn bạn bè trong Zalo, API sẽ trả về danh sách những người được chọn.
4219
+ *
4220
+ * @minimumVersion 2.16.1
4221
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4222
+ *
4223
+ * @param {number} [maxProfile=1] - Số lượng bạn bè tối đa được chọn. Giới hạn trong khoảng 1 đến 10.
4224
+ *
4225
+ * @returns {OpenProfilePickerReturns} chứa danh sách những bạn bè được chọn.
4226
+ *
4227
+ * @example Mở cửa sổ chọn bạn bè và lấy danh sách người dùng được chọn:
4228
+ * ```ts
4229
+ * const { users } = await openProfilePicker({
4230
+ * maxProfile: 2,
4231
+ * });
4232
+ * console.log(users);
4233
+ * ```
4234
+ */
3140
4235
  declare function openProfilePicker(args?: AsyncCallback<OpenProfilePickerReturns> & TypeOf<(typeof openProfilePickerArgs)[0]>): Promise<OpenProfilePickerReturns>;
3141
4236
 
3142
4237
  declare const connectWifiArgs: ZodObject<{
@@ -3191,6 +4286,72 @@ declare const openMediaPickerArgs: ZodObject<{
3191
4286
  type: "video" | "zcamera" | "zcamera_photo" | "zcamera_video" | "zcamera_scan" | "photo" | "file";
3192
4287
  serverUploadUrl: string;
3193
4288
  }>[];
4289
+ /**
4290
+ * Mở cửa sổ chọn media (camera, ảnh, file, video) từ thiết bị.
4291
+ *
4292
+ * Media sau khi chọn sẽ được tải lên server của bạn dưới dạng dữ liệu `multipart/form-data`, `fieldname=file`.
4293
+ *
4294
+ * @minimumVersion 2.18.11
4295
+ * @minimumVersion 2.23.2: hỗ trợ các type `zcamera`, `zcamera_photo`, `zcamera_video`, `zcamera_scan`.
4296
+ * @requirePermission Cần xin Cấp quyền sử dụng các API này cho Mini App ID tại trang Quản lý ứng dụng. Nếu không, sẽ bị [lỗi với người dùng bình thường, mặc dù Developer/Admin thì không bị](https://mini.zalo.me/community/8746968970844796879/loi-chi-xay-ra-voi-nguoi-dung-binh-thuong-con-developer-admin-thi-khong-bi).
4297
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4298
+ *
4299
+ * @param {string} serverUploadUrl Đường dẫn upload media. Server phải hỗ trợ upload media qua POST và trả về kết quả dạng JSON. Xem ví dụ về server tại [đây](https://mini.zalo.me/documents/api/openMediaPicker/#server).
4300
+ * @param {"photo" | "file" | "video" | "zcamera" | "zcamera_photo" | "zcamera_video" | "zcamera_scan"} typeLoại media cần chọn. Các giá trị:
4301
+ * - 'photo': Mở cửa sổ chọn ảnh.
4302
+ * - 'file': Mở cửa sổ chọn file.
4303
+ * - 'video': Mở cửa sổ chọn video.
4304
+ * - 'zcamera': Mở camera Zalo.
4305
+ * - 'zcamera_photo': Mở camera Zalo để chụp ảnh.
4306
+ * - 'zcamera_video': Mở camera Zalo để quay phim.
4307
+ * - 'zcamera_scan': Mở camera Zalo để chụp tài liệu.
4308
+ * Các type `zcamera`, `zcamera_photo`, `zcamera_video`, `zcamera_scan` hỗ trợ từ phiên bản API 2.23.2.
4309
+ * @param {number} [maxItemSize] Giới hạn kích thước (byte) tối đa của media được phép chọn.
4310
+ * @param {number} [maxSelectItem=1] Giới hạn số lượng tối đa media được chọn.
4311
+ * @param {boolean} [silentRequest=false] Hiển thị hoặc ẩn dialog xử lý các tác vụ ngầm:
4312
+ * - `false`: Hiện dialog xử lý các tác vụ ngầm như render video, upload media, và có nút hủy tác vụ.
4313
+ * - `true`: Không hiện dialog xử lý các tác vụ ngầm.
4314
+ * @param {Object} [editView] Hiển thị view chỉnh sửa ảnh.
4315
+ * @param {boolean} [editView.enable=true] Hiển thị view chỉnh sửa ảnh.
4316
+ * @param {string} [editView.aspectRatio="1:1"] Cắt ảnh theo tỉ lệ đã chỉ định. Tỉ lệ truyền vào theo format `width:height` (phân số tối giản quy định tỉ lệ width/height).
4317
+ *
4318
+ * @returns {OpenMediaPickerReturns} chứa kết quả trả về.
4319
+ *
4320
+ * @example Mở cửa sổ chọn ảnh nhận kết quả trả về dạng JSON:
4321
+ * ```ts
4322
+ * const { data } = await openMediaPicker({
4323
+ * serverUploadUrl: "https://<your-domain-api>/upload/media",
4324
+ * type: "photo",
4325
+ * });
4326
+ * const result = JSON.parse(data);
4327
+ * console.log(result);
4328
+ * ```
4329
+ *
4330
+ * @example Chọn nhiều ảnh:
4331
+ * ```ts
4332
+ * const { data } = await openMediaPicker({
4333
+ * serverUploadUrl: "https://<your-domain-api>/upload/media",
4334
+ * type: "photo",
4335
+ * maxSelectItem: 5,
4336
+ * });
4337
+ * ```
4338
+ *
4339
+ * @example Chọn video:
4340
+ * ```ts
4341
+ * const { data } = await openMediaPicker({
4342
+ * serverUploadUrl: "https://<your-domain-api>/upload/media",
4343
+ * type: "video",
4344
+ * });
4345
+ * ```
4346
+ *
4347
+ * @example Chọn ảnh từ camera Zalo:
4348
+ * ```ts
4349
+ * const { data } = await openMediaPicker({
4350
+ * serverUploadUrl: "https://<your-domain-api>/upload/media",
4351
+ * type: "zcamera_photo",
4352
+ * });
4353
+ * ```
4354
+ */
3194
4355
  declare function openMediaPicker(args: AsyncCallback<OpenMediaPickerReturns> & TypeOf<(typeof openMediaPickerArgs)[0]>): Promise<OpenMediaPickerReturns>;
3195
4356
 
3196
4357
  declare const getShareableLinkArgs: ZodObject<{
@@ -3204,15 +4365,46 @@ declare const getShareableLinkArgs: ZodObject<{
3204
4365
  description: string;
3205
4366
  title: string;
3206
4367
  }, {
3207
- description?: string | undefined;
3208
4368
  path?: string | undefined;
4369
+ description?: string | undefined;
3209
4370
  thumbnail?: string | undefined;
3210
4371
  title: string;
3211
4372
  }>[];
3212
4373
  declare function getShareableLink(args: AsyncCallback<string> & TypeOf<(typeof getShareableLinkArgs)[0]>): Promise<string>;
3213
4374
 
4375
+ /**
4376
+ * Khi người dùng mở Zalo Mini App, một màn hình loading sẽ được hiển thị trong lúc chờ Mini App được tải. Màn hình này gọi là Splash Loading.
4377
+ * Mặc định Splash Loading sẽ tự động đóng khi Mini App được tải xong. Tuy nhiên, phía tích hợp có thể chọn thời điểm phù hợp để đóng loading bằng cách:
4378
+ * - Thêm thiết lập `selfControlLoading: true` trong `app-config.json`. Xem [Cấu Hình Zalo Mini App](https://mini.zalo.me/documents/intro/getting-started/app-config/#app).
4379
+ * - Gọi `closeLoading` ở thời điểm thích hợp để đóng Splash Loading.
4380
+ *
4381
+ * Lưu ý:
4382
+ * - Nếu thiết lập `selfControlLoading: true` mà API này không được gọi, **Mini App sẽ stuck ở màn hình Splash Loading**.
4383
+ * - Do code gọi API này chỉ được thực thi sau khi Mini App đã được tải xong, nên Splash Loading sẽ được đóng trễ hơn so với bình thường. Chỉ sử dụng cơ chế này khi cần thiết (để giảm layout shift hoặc không muốn người dùng thấy nội dung chưa hoàn chỉnh).
4384
+
4385
+ * @minimumVersion 2.17.0
4386
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4387
+ * @example Đóng loading sau khi HomePage đã render xong:
4388
+ * ```ts
4389
+ * function HomePage() {
4390
+ * useEffect(() => {
4391
+ * closeLoading();
4392
+ * }, []);
4393
+ * ```
4394
+ */
3214
4395
  declare function closeLoading(args?: AsyncVoidCallback): Promise<void>;
3215
4396
 
4397
+ /**
4398
+ * API chủ động điều hướng người dùng tới AppStore/CH Play để cập nhật phiên bản Zalo mới nhất.
4399
+ *
4400
+ * @minimumVersion 2.19.3
4401
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4402
+ *
4403
+ * @example
4404
+ * ```ts
4405
+ * await requestUpdateZalo();
4406
+ * ```
4407
+ */
3216
4408
  declare function requestUpdateZalo(args?: AsyncVoidCallback): Promise<void>;
3217
4409
 
3218
4410
  declare const onConfirmToExitArgs: ZodFunction<ZodTuple<[], ZodUnknown>, ZodUnknown>[];
@@ -3222,10 +4414,31 @@ declare function offConfirmToExit(): void;
3222
4414
 
3223
4415
  declare function getDeviceId(): string;
3224
4416
 
4417
+ /**
4418
+ * API trả về chuỗi Device ID của thiết bị đã được hash. Các tài khoản người dùng khác nhau đăng nhập trên cùng 1 thiết bị và sử dụng cùng 1 Mini App (hoặc các Mini App có chung Zalo App ID) sẽ có giá trị Device ID giống nhau. Nếu không lấy được Device ID thì giá trị trả về là `unknown`.
4419
+ * @returns {string} chuỗi Device ID của thiết bị đã được hash.
4420
+ * @example Sử dụng kết hợp với `await`:
4421
+ * ```ts
4422
+ * const deviceId = await getDeviceIdAsync();
4423
+ * ```
4424
+ */
3225
4425
  declare function getDeviceIdAsync(args?: AsyncCallback<string>): Promise<string>;
3226
4426
 
3227
4427
  declare function getContext(): ContextInfo | null;
3228
4428
 
4429
+ /**
4430
+ * API trả về thông tin ngữ cảnh của người dùng hoặc nhóm khi Mini App được mở từ Menu mở rộng trong cửa sổ chat Zalo.
4431
+ * Nếu ngữ cảnh không hợp lệ hoặc phiên bản Zalo không hỗ trợ, giá trị trả về sẽ rỗng.
4432
+ *
4433
+ * @returns {ContextInfo} ngữ cảnh hiện tại.
4434
+ * @example Kiểm tra ngữ cảnh hợp lệ và trả về thông tin ngữ cảnh:
4435
+ * ```ts
4436
+ * const contextInfo = await getContextAsync();
4437
+ * if (contextInfo) { // Ngữ cảnh hợp lệ
4438
+ * const { id, type } = contextInfo;
4439
+ * }
4440
+ * ```
4441
+ */
3229
4442
  declare function getContextAsync(args?: AsyncCallback<ContextInfo>): Promise<ContextInfo | null>;
3230
4443
 
3231
4444
  declare function getAuthCode(args?: AsyncCallback<GetAuthCodeReturns>): Promise<GetAuthCodeReturns>;
@@ -3257,8 +4470,59 @@ declare const chooseImageArgs: ZodObject<{
3257
4470
  sourceType?: ("album" | "camera")[] | undefined;
3258
4471
  cameraType?: "back" | "front" | undefined;
3259
4472
  }>[];
4473
+ /**
4474
+ * API chọn hình ảnh từ album hoặc camera.
4475
+ *
4476
+ * @minimumVersion 2.23.4
4477
+ *
4478
+ * @param {("album" | "camera")[]} [sourceType] Nguồn chọn hình ảnh. Có thể chọn từ album/tệp (`album`), chụp ảnh mới từ camera (`camera`), hoặc cả hai.
4479
+ * @param {("back" | "front")} [cameraType] Xác định camera cần mở là camera trước hay sau.
4480
+ * @param {number} [count] Số lượng hình ảnh tối đa có thể chọn.
4481
+ * @returns {ChooseImageReturns} chứa đường dẫn tới hình ảnh đã chọn.
4482
+ * @example Chụp hình ảnh từ camera trước:
4483
+ * ```ts
4484
+ * const { filePaths } = await chooseImage({
4485
+ * sourceType: ["camera"],
4486
+ * cameraType: "front",
4487
+ * });
4488
+ * ```
4489
+ * @example Chụp hình ảnh từ camera sau:
4490
+ * ```ts
4491
+ * const { filePaths } = await chooseImage({
4492
+ * sourceType: ["camera"],
4493
+ * cameraType: "back",
4494
+ * });
4495
+ * ```
4496
+ * @example Chọn nhiều hình ảnh để viết đánh giá sản phẩm:
4497
+ * ```ts
4498
+ * const { filePaths } = await chooseImage({
4499
+ * sourceType: ["album", "camera"],
4500
+ * count: 5,
4501
+ * });
4502
+ * ```
4503
+ */
3260
4504
  declare function chooseImage(args: AsyncCallback<ChooseImageReturns> & TypeOf<(typeof chooseImageArgs)[0]>): Promise<ChooseImageReturns>;
3261
4505
 
4506
+ /**
4507
+ * API truy xuất vị trí hiện tại của người dùng. Khi gọi API, một thông báo xin cấp quyền sẽ được hiển thị. Mini App chỉ lấy được thông tin vị trí nếu người dùng đồng ý cấp quyền chia sẻ vị trí.
4508
+ *
4509
+ * Lưu ý, để giúp các nhà phát triển Mini App sử dụng flow xin quyền một cách hiệu quả, cũng như phù hợp với [chính sách của Zalo Mini App điều 3.3.4](https://mini.zalo.me/documents/zalo-mini-app-developer-program-agreement/#33-api-quy%E1%BB%81n-truy-c%E1%BA%ADp), Mini App Team đã đưa ra một số gợi ý thiết kế trải nghiệm như thông tin bên dưới. Nhà phát triển cần giải thích rõ ràng và trực quan mục đích xin quyền để người dùng dễ dàng hiểu và đồng ý cung cấp thông tin.
4510
+ *
4511
+ * Nhằm đảm bảo trải nghiệm thoải mái của người dùng Mini App, chúng tôi sẽ từ chối xét duyệt cho những Mini App có luồng xin cấp quyền chưa rõ ràng, không nêu được mục đích xin quyền đến người dùng.
4512
+ *
4513
+ * @requirePermission Cần xin Cấp quyền sử dụng các API này cho Mini App ID tại trang Quản lý ứng dụng. Nếu không, sẽ bị [lỗi với người dùng bình thường, mặc dù Developer/Admin thì không bị](https://mini.zalo.me/community/8746968970844796879/loi-chi-xay-ra-voi-nguoi-dung-binh-thuong-con-developer-admin-thi-khong-bi).
4514
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4515
+ * @behavior Ở môi trường phát triển, API này sẽ luôn thành công và trả về token rỗng (`""`). Khi chạy bên trong ứng dụng Zalo mobile, API này sẽ hiển thị thông báo xin cấp quyền, và trả về token hợp lệ nếu người dùng đồng ý hoặc lỗi nếu người dùng từ chối.
4516
+ *
4517
+ * @returns {GetLocationReturns} chứa token vị trí.
4518
+ * @example
4519
+ * 1. Ở Zalo Mini App, gọi API này để lấy token vị trí:
4520
+ * ```ts
4521
+ * const { token } = await getLocation();
4522
+ * ```
4523
+ * 2. Dùng fetch hoặc axios để gửi token này lên server. Nếu không, bạn sẽ bị [lỗi khi gọi các API Server-Server từ Mini App](https://mini.zalo.me/community/9107262438710014159/loi-khi-goi-cac-api-server-server-tu-mini-app).
4524
+ * 3. Server chuyển đổi token thành thông tin vị trí và trả về cho Mini App theo [hướng dẫn sau](https://mini.zalo.me/documents/api/getLocation/#hướng-dẫn-chuyển-đổi-token-thành-thông-tin-vị-trí-người-dùng).
4525
+ */
3262
4526
  declare function getLocation(args?: AsyncCallback<GetLocationReturns>): Promise<GetLocationReturns>;
3263
4527
 
3264
4528
  declare const onCallbackDataArgs: ZodFunction<ZodTuple<[ZodObject<{
@@ -3520,18 +4784,124 @@ declare const configAppViewArgs: ZodObject<{
3520
4784
  hideAndroidBottomNavigationBar?: boolean | undefined;
3521
4785
  hideIOSSafeAreaBottom?: boolean | undefined;
3522
4786
  }>[];
4787
+ /**
4788
+ * API tuỳ chỉnh các thành phần giao diện chính trên Mini App, bao gồm:
4789
+ * - Status bar
4790
+ * - Action bar
4791
+ * - Bottom Navigation (Android) / Safe Area Inset Bottom (iOS)
4792
+ *
4793
+ * Với api `configAppView`, bạn có thể ẩn/ hiện, tuỳ chỉnh màu sắc, kiểu hiển thị của các thành phần mặc định trên Mini App. Xem hình ảnh mô tả bên dưới để hiểu rõ các thành phần có thể tuỳ chỉnh trên Mini App của bạn.
4794
+ *
4795
+ * @minimumVersion Zalo iOS: 23.02.01.r2
4796
+ * @minimumVersion Zalo Android: 23.02.01.r2
4797
+ * @minimumVersion ZMP SDK: 2.25.0
4798
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4799
+ *
4800
+ * @param {string} headerColor Mã màu, có giá trị hợp lệ là màu thập lục phân, ví dụ `#000000`.
4801
+ * @param {"white" | "black"} [headerTextColor] Màu của text và icon trên thanh action bar và status bar.
4802
+ * @param {"normal" | "hidden" | "transparent"} [statusBarType="normal"] Kiểu hiển thị của status bar.
4803
+ * @param {boolean} [hideAndroidBottomNavigationBar=false] Ẩn thanh navigation bar trên Android.
4804
+ * @param {boolean} [hideIOSSafeAreaBottom=false] Ẩn thanh safe area inset bottom trên iOS.
4805
+ * @param {boolean} [actionBar.hide] Ẩn action bar.
4806
+ * @param {string} [actionBar.title] Tiêu đề hiển thị trên action bar.
4807
+ * @param {"back" | "none"} [actionBar.leftButton="back"] Tuỳ chỉnh nút điều hướng bên trái action bar. Mặc định hiển thị nút back. Truyền `none` để ẩn nút.
4808
+ * @param {"left" | "center"} [actionBar.textAlign="left"] Tuỳ chỉnh vị trí tiêu đề hiển thị trên action bar.
4809
+ *
4810
+ * @example Thay đổi tiêu đề action bar:
4811
+ * ```ts
4812
+ * configAppView({
4813
+ * actionBar: {
4814
+ * title: "Giỏ hàng",
4815
+ * },
4816
+ * });
4817
+ * ```
4818
+ *
4819
+ * @example Để có được giao diện toàn màn hình:
4820
+ * ```ts
4821
+ * configAppView({
4822
+ * hideAndroidBottomNavigationBar: true,
4823
+ * hideIOSSafeAreaBottom: true,
4824
+ * statusBarType: "transparent", // hoặc "hidden"
4825
+ * actionBar: {
4826
+ * hide: true,
4827
+ * },
4828
+ * });
4829
+ * ```
4830
+ */
3523
4831
  declare function configAppView(args: AsyncVoidCallback & TypeOf<(typeof configAppViewArgs)[0]>): Promise<void>;
3524
4832
 
4833
+ /**
4834
+ * API chủ động thu nhỏ ứng dụng. Khi gọi API, Mini App sẽ được thu nhỏ vào một floating icon ở góc màn hình, giúp người sử dụng có thể tạm thời sử dụng các chức năng khác của Zalo, và quay trở lại Mini App của bạn mà không cần phải tải lại từ đầu.
4835
+ *
4836
+ * ![Thu nhỏ ứng dụng](https://mini.zalo.me/documents/img/ZMA-Floating.png)
4837
+ *
4838
+ * @minimumVersion 2.26.1
4839
+ * @requirePermission Cần xin Cấp quyền sử dụng các API này cho Mini App ID tại trang Quản lý ứng dụng. Nếu không, sẽ bị [lỗi với người dùng bình thường, mặc dù Developer/Admin thì không bị](https://mini.zalo.me/community/8746968970844796879/loi-chi-xay-ra-voi-nguoi-dung-binh-thuong-con-developer-admin-thi-khong-bi).
4840
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4841
+ *
4842
+ * @example Thu nhỏ ứng dụng:
4843
+ * ```ts
4844
+ * await minimizeApp();
4845
+ * ```
4846
+ */
3525
4847
  declare function minimizeApp(args?: AsyncVoidCallback): Promise<void>;
3526
4848
 
4849
+ /**
4850
+ * API mở cửa sổ Quản lý quyền mà người dùng đã cấp cho Mini App. Người dùng có thể thay đổi các thiết lập quyền (cấp thêm hoặc thu hồi) tại đây.
4851
+ *
4852
+ * @minimumVersion 2.27.1
4853
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4854
+ *
4855
+ * @returns {Promise<void>} Promise không trả về giá trị.
4856
+ *
4857
+ * @example Mở cửa sổ cài đặt quyền:
4858
+ * ```ts
4859
+ * await openPermissionSetting();
4860
+ * ```
4861
+ */
3527
4862
  declare function openPermissionSetting(args?: AsyncVoidCallback): Promise<void>;
3528
4863
 
4864
+ /**
4865
+ * API thêm ứng dụng vào danh sách ưa thích của người dùng ở Zalo Mini Apps Store.
4866
+ * ![Danh sách ưa thích ở Zalo Mini Apps Store](https://mini.zalo.me/documents/img/api/favoriteApp/favorite_screen.jpeg)
4867
+ *
4868
+ * @minimumVersion 2.27.1
4869
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4870
+ *
4871
+ * @example Thêm ứng dụng vào danh sách ưa thích:
4872
+ * ```ts
4873
+ * await favoriteApp();
4874
+ * ```
4875
+ */
3529
4876
  declare function favoriteApp(args?: AsyncVoidCallback): Promise<void>;
3530
4877
 
3531
4878
  declare function openGroupList(args?: AsyncVoidCallback): Promise<void>;
3532
4879
 
4880
+ /**
4881
+ * API yêu cầu người dùng cho phép nhận thông báo qua OA Mini App. Khi gọi API, một thông báo sẽ được hiển thị.
4882
+ *
4883
+ * @minimumVersion 2.27.1
4884
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4885
+ *
4886
+ * @example Yêu cầu người dùng cho phép nhận thông báo:
4887
+ * ```ts
4888
+ * await requestSendNotification();
4889
+ * ```
4890
+ */
3533
4891
  declare function requestSendNotification(args?: AsyncVoidCallback): Promise<void>;
3534
4892
 
4893
+ /**
4894
+ * API mở cửa sổ đánh giá ứng dụng, hỗ trợ ghi nhận đánh giá phản hồi của người dùng về chất lượng của Mini App.
4895
+ *
4896
+ * @minimumVersion 2.28.0
4897
+ * @important Chỉ có thể hiển thị cửa sổ đánh giá 1 lần/tuần đối với mỗi người dùng. Quá giới hạn trên sẽ trả về [lỗi](https://mini.zalo.me/documents/api/errorCode/).
4898
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4899
+ *
4900
+ * @example Mở cửa sổ đánh giá ứng dụng:
4901
+ * ```ts
4902
+ * await addRating();
4903
+ * ```
4904
+ */
3535
4905
  declare function addRating(args?: AsyncVoidCallback): Promise<void>;
3536
4906
 
3537
4907
  declare const interactOAArgs$1: ZodObject<{
@@ -3541,6 +4911,38 @@ declare const interactOAArgs$1: ZodObject<{
3541
4911
  }, {
3542
4912
  oaId: string;
3543
4913
  }>[];
4914
+ /**
4915
+ * API yêu cầu người dùng cho phép gửi thông báo thông qua Official Account. Khi gọi API, một thông báo sẽ được hiển thị.
4916
+ *
4917
+ * @minimumVersion 2.28.8
4918
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4919
+ *
4920
+ * @param {string} oaId - Id của Official Account.
4921
+ *
4922
+ * @example Yêu cầu người dùng cho phép gửi thông báo thông qua Official Account:
4923
+ * ```ts
4924
+ * await interactOA({
4925
+ * oaId: "xxxx",
4926
+ * });
4927
+ * ```
4928
+ *
4929
+ * @example Xử lý lỗi:
4930
+ * ```ts
4931
+ * try {
4932
+ * await interactOA({
4933
+ * oaId: "xxxx",
4934
+ * });
4935
+ * console.log("Người dùng đã cho phép");
4936
+ * } catch (error) {
4937
+ * const code = (error as AppError).code;
4938
+ * if (code === -201) {
4939
+ * console.log("Người dùng đã từ chối");
4940
+ * } else {
4941
+ * console.log("Lỗi khác");
4942
+ * }
4943
+ * }
4944
+ * ```
4945
+ */
3544
4946
  declare function interactOA(args: AsyncVoidCallback & TypeOf<(typeof interactOAArgs$1)[0]>): Promise<void>;
3545
4947
 
3546
4948
  declare const interactOAArgs: ZodObject<{
@@ -3552,6 +4954,19 @@ declare const interactOAArgs: ZodObject<{
3552
4954
  }>[];
3553
4955
  declare function checkIsAllowedInteractWithOA(args: AsyncVoidCallback & TypeOf<(typeof interactOAArgs)[0]>): Promise<void>;
3554
4956
 
4957
+ /**
4958
+ * API lấy thông tin cài đặt hiện tại của người dùng.
4959
+ *
4960
+ * @minimumVersion 2.31.0
4961
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4962
+ *
4963
+ * @returns {GetSettingReturn} chứa thông tin cài đặt hiện tại của người dùng.
4964
+ *
4965
+ * @example Lấy thông tin cài đặt hiện tại của người dùng:
4966
+ * ```ts
4967
+ * const { authSetting } = await getSetting();
4968
+ * ```
4969
+ */
3555
4970
  declare function getSetting(args?: AsyncCallback<GetSettingReturn>): Promise<GetSettingReturn>;
3556
4971
 
3557
4972
  declare const authorizeArgs: ZodOptional<ZodObject<{
@@ -3561,10 +4976,87 @@ declare const authorizeArgs: ZodOptional<ZodObject<{
3561
4976
  }, {
3562
4977
  scopes?: ("scope.userInfo" | "scope.userLocation" | "scope.userPhonenumber")[] | undefined;
3563
4978
  }>>[];
4979
+ /**
4980
+ * @minimumVersion Zalo iOS: 23.12.02 (573)
4981
+ * @minimumVersion Zalo Android: 23.12.02 (724)
4982
+ * @minimumVersion ZMP SDK: 2.34.0
4983
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
4984
+ *
4985
+ * ### Cấp quyền sử dụng API
4986
+ *
4987
+ * Một số API cần sự cho phép của người dùng trước khi có thể được gọi. Các API này được chia thành nhiều phạm vi (Scope) tương ứng với từng mục đích sử dụng, mô tả chi tiết tham khảo bảng Scopes:
4988
+ *
4989
+ * | Scope | Corresponding APIs | Description |
4990
+ * |-------------------------|--------------------|---------------------------------|
4991
+ * | `scope.userInfo` | `getUserInfo` | Thông tin user (tên, avatar...) |
4992
+ * | `scope.userLocation` | `getLocation` | Thông tin vị trí user |
4993
+ * | `scope.userPhonenumber` | `getPhoneNumber` | Số điện thoại |
4994
+ *
4995
+ * Khi một API như vậy được gọi:
4996
+ * - Nếu người dùng chưa chấp nhận hoặc từ chối, một cửa sổ pop-up sẽ xuất hiện để hỏi người dùng có muốn chấp nhận không. API chỉ có thể được gọi sau khi người dùng bấm chấp nhận.
4997
+ * - Nếu người dùng đã chấp nhận cho phép, API có thể được gọi trực tiếp.
4998
+ * - Nếu người dùng từ chối cho phép, callback lỗi sẽ được trả về.
4999
+ * - Developer có thể sử dụng api `authorize` để chủ động khởi tạo yêu cầu cấp quyền đối với người dùng khi cần, hỗ trợ xin tối đa 3 quyền (đã bao gồm quyền User Authen).
5000
+ *
5001
+ * ### Lấy trạng thái của scope
5002
+ *
5003
+ * Developer có thể sử dụng API `getSetting` để lấy trạng thái cho phép hiện tại của người dùng.
5004
+ *
5005
+ * ### Quản lý cấp/thu hồi quyền cho người dùng
5006
+ *
5007
+ * Developer có thể gọi API `openPermissionSetting` để mở cài đặt và hướng dẫn người dùng bật/tắt cho phép API.
5008
+ *
5009
+ * ### Thời gian hiệu lực
5010
+ *
5011
+ * Sau khi user đồng ý hoặc từ chối cấp quyền, trạng thái cấp quyền sẽ được ghi nhận và đồng bộ cho những lần sử dụng sau này.
5012
+ *
5013
+ * ### Best Practices
5014
+ *
5015
+ * - Chỉ khởi tạo yêu cầu cấp quyền khi cần thiết, giải thích rõ ràng lý do tại sao bạn muốn sử dụng nó trong yêu cầu cấp quyền.
5016
+ * - Sử dụng API `getSetting` trước để lấy trạng thái cho phép hiện tại của người dùng, sau đó yêu cầu xin cấp thêm các quyền còn thiếu.
5017
+ *
5018
+ * @param {string[]} scopes Danh sách các quyền cần được cấp, tham khảo bảng Scopes.
5019
+ *
5020
+ * @returns {Promise<Scopes>} chứa các trạng thái của các quyền được cấp.
5021
+ * @property {boolean} scope.userInfo Trạng thái quyền thông tin user.
5022
+ * @property {boolean} scope.userLocation Trạng thái quyền vị trí user.
5023
+ * @property {boolean} scope.userPhonenumber Trạng thái quyền số điện thoại.
5024
+ *
5025
+ * @example Khởi tạo cấp quyền
5026
+ * ```ts
5027
+ * try {
5028
+ * const data = await authorize({
5029
+ * scopes: ["scope.userLocation", "scope.userPhonenumber"],
5030
+ * });
5031
+ * console.log(data["scope.userLocation"]); // `true` nếu người dùng đồng ý cấp vị trí
5032
+ * console.log(data["scope.userPhonenumber"]); // `true` nếu người dùng đồng ý cấp số điện thoại
5033
+ * } catch (error) {
5034
+ * const code = (error as AppError).code;
5035
+ * if (code === -201) {
5036
+ * console.log("Người dùng đã từ chối cấp quyền");
5037
+ * } else {
5038
+ * console.log("Lỗi khác");
5039
+ * }
5040
+ * }
5041
+ * ```
5042
+ */
3564
5043
  declare function authorize(args?: AsyncVoidCallback & TypeOf<(typeof authorizeArgs)[0]>): Promise<AuthorizeType<(typeof AUTHEN_SCOPE_VALUES)[number]>>;
3565
5044
 
3566
5045
  declare function checkZaloCameraPermission(args?: AsyncCallback<CheckZaloCameraPermissionReturns>): Promise<CheckZaloCameraPermissionReturns>;
3567
5046
 
5047
+ /**
5048
+ * API cho phép truy xuất ID người dùng. Với ID là chuỗi định danh người dùng theo Zalo App. Chuỗi này là duy nhất cho mỗi người dùng trên mỗi ID Zalo App. Các Mini App cùng chung một ID Zalo App sẽ có thể dùng chuỗi này để định danh người dùng. (API này sẽ không cần yêu cầu người dùng xác nhận).
5049
+ *
5050
+ * @minimumVersion 2.32.2
5051
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
5052
+ *
5053
+ * @returns {string} chứa ID người dùng.
5054
+ *
5055
+ * @example Truy xuất ID người dùng:
5056
+ * ```ts
5057
+ * const userID = await getUserID({});
5058
+ * ```
5059
+ */
3568
5060
  declare function getUserID(args?: AsyncCallback<string>): Promise<string>;
3569
5061
 
3570
5062
  declare function getIDToken(args?: AsyncCallback<string>): Promise<string>;
@@ -3707,6 +5199,30 @@ declare const cameraArgs: ZodOptional<ZodObject<{
3707
5199
  }>>[];
3708
5200
  declare function createCameraContext(args: CameraParams & TypeOf<(typeof cameraArgs)[0]>): ZMACamera;
3709
5201
 
5202
+ /**
5203
+ * API cấu hình các thông tin dùng để chạy quảng cáo. API cần được gọi khi khởi tạo ứng dụng.
5204
+ *
5205
+ * @minimumVersion 2.37.0
5206
+ * @info Tính năng đang trong giai đoạn thử nghiệm và chỉ được mở cho một số đối tác nhất định.
5207
+ *
5208
+ * @example Bên trong `app.ts`:
5209
+ * ```ts
5210
+ * import React from "react";
5211
+ * import { createRoot } from "react-dom/client";
5212
+ * import { setupAd } from "zmp-sdk/apis";
5213
+ *
5214
+ * import "zmp-ui/zaui.css";
5215
+ * import "./css/app.scss";
5216
+ *
5217
+ * import App from "./components/app";
5218
+ *
5219
+ * // Setup advertising
5220
+ * setupAd();
5221
+ *
5222
+ * const root = createRoot(document.getElementById("app"));
5223
+ * root.render(React.createElement(App));
5224
+ * ```
5225
+ */
3710
5226
  declare function setupAd(args?: AsyncCallback): Promise<void>;
3711
5227
 
3712
5228
  declare const loadAdArgs: ZodObject<{
@@ -3734,6 +5250,46 @@ declare const loadAdArgs: ZodObject<{
3734
5250
  } | undefined;
3735
5251
  ids: string | string[];
3736
5252
  }>[];
5253
+ /**
5254
+ * API dùng để tải quảng cáo. Có các loại quảng cáo sau đây:
5255
+ *
5256
+ * ID Size
5257
+ * ZMA_Masthead 480x270
5258
+ * ZMA_Middle 300x250
5259
+ * ZMA_Fullscreen Toàn màn hình
5260
+ * ZMA_Reward Toàn màn hình
5261
+ * ZMA_Bottom Tùy chỉnh
5262
+ *
5263
+ * Mặc định quảng cáo sẽ được hiển thị sau khi tải xong. Vị trí hiển thị quảng cáo sẽ được xác định theo ID của từng loại.
5264
+ *
5265
+ * @minimumVersion 2.37.0
5266
+ *
5267
+ * @param {string | string[]} ids ID của loại quảng cáo cần tải trong trang.
5268
+ * @param {Object} [config] Cấu hình thêm.
5269
+ * @param {boolean} [config.display=true] Hiển thị quảng cáo sau khi tải (true) hoặc không hiển thị (false).
5270
+ * @param {function} [config.onClose] Callback được gọi sau khi quảng cáo ZMA_Reward đóng, trả về reward token.
5271
+ *
5272
+ * @example Tải quảng cáo ZMA_Middle:
5273
+ * ```ts
5274
+ * import React, { useEffect } from "react";
5275
+ * import { loadAd } from "zmp-sdk/apis";
5276
+ *
5277
+ * function HomePage() {
5278
+ * useEffect(() => {
5279
+ * loadAd({ ids: ["ZMA_Middle"] });
5280
+ * }, []);
5281
+ *
5282
+ * return (
5283
+ * <>
5284
+ * ...
5285
+ * <div id="ZMA_Middle"></div>
5286
+ * </>
5287
+ * );
5288
+ * }
5289
+ *
5290
+ * export default HomePage;
5291
+ * ```
5292
+ */
3737
5293
  declare function loadAd(args: AsyncCallback & TypeOf<(typeof loadAdArgs)[0]>): Promise<void>;
3738
5294
 
3739
5295
  declare const displayAdArgs: ZodObject<{
@@ -3743,6 +5299,45 @@ declare const displayAdArgs: ZodObject<{
3743
5299
  }, {
3744
5300
  id: string;
3745
5301
  }>[];
5302
+ /**
5303
+ * API dùng để hiển thị quảng cáo sau khi tải xong. Vị trí hiển thị quảng cáo sẽ được xác định theo ID của từng loại.
5304
+ *
5305
+ * @minimumVersion 2.37.0
5306
+ *
5307
+ * @param {string} id ID của loại quảng cáo cần hiển thị trong trang.
5308
+ *
5309
+ * @example Hiển thị quảng cáo ZMA_Middle:
5310
+ * ```ts
5311
+ * import React from "react";
5312
+ * import { createRoot } from "react-dom/client";
5313
+ * import { setupAd, loadAd, displayAd } from "zmp-sdk/apis";
5314
+ *
5315
+ * function App() {
5316
+ * useEffect(() => {
5317
+ * displayAd({ id: "ZMA_Middle" });
5318
+ * }, []);
5319
+ *
5320
+ * return (
5321
+ * <>
5322
+ * ...
5323
+ * <div id='ZMA_Middle' />
5324
+ * ...
5325
+ * </>
5326
+ * );
5327
+ * }
5328
+ *
5329
+ * setupAd();
5330
+ * loadAd({
5331
+ * ids: ["ZMA_Middle"],
5332
+ * config: {
5333
+ * display: false
5334
+ * }
5335
+ * });
5336
+ *
5337
+ * const root = createRoot(document.getElementById("app"));
5338
+ * root.render(React.createElement(App));
5339
+ * ```
5340
+ */
3746
5341
  declare function displayAd(args: AsyncCallback & TypeOf<(typeof displayAdArgs)[0]>): Promise<void>;
3747
5342
 
3748
5343
  declare const refreshAdArgs: ZodOptional<ZodObject<{
@@ -3752,6 +5347,18 @@ declare const refreshAdArgs: ZodOptional<ZodObject<{
3752
5347
  }, {
3753
5348
  id?: string | undefined;
3754
5349
  }>>[];
5350
+ /**
5351
+ * API dùng để xóa quảng cáo ở phiên hiện tại.
5352
+ *
5353
+ * @minimumVersion 2.37.0
5354
+ *
5355
+ * @param {string} [id] ID của loại quảng cáo cần xóa.
5356
+ *
5357
+ * @example Xóa quảng cáo ZMA_Middle:
5358
+ * ```ts
5359
+ * refreshAd({ id: "ZMA_Middle" });
5360
+ * ```
5361
+ */
3755
5362
  declare function refreshAd(args: AsyncCallback & TypeOf<(typeof refreshAdArgs)[0]>): Promise<void>;
3756
5363
 
3757
5364
  declare const showOAWidgetArgs: ZodObject<{
@@ -3775,6 +5382,47 @@ declare const showOAWidgetArgs: ZodObject<{
3775
5382
  onError?: ((...args: unknown[]) => unknown) | undefined;
3776
5383
  id: string;
3777
5384
  }>[];
5385
+ /**
5386
+ * Widget Quan tâm OA: Người dùng bấm nút "Quan tâm" trên widget sẽ thực hiện quan tâm ngay mà không cần hiển thị bottom sheet xin quyền. Thông tin OA được lấy từ OA đã xác thực Mini App.
5387
+ *
5388
+ * @minimumVersion 2.38.0
5389
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
5390
+ *
5391
+ * @param {string} id ID của element, nơi cần hiển thị widget.
5392
+ * @param {string} [guidingText="Nhận thông báo khuyến mãi mới nhất từ cửa hàng"] Chuỗi dùng để thông báo cho người dùng.
5393
+ * @param {string} [color="#0068FF"] Màu chủ đạo của widget. Giá trị phải là chuỗi hex.
5394
+ * @param {function} [onStatusChange] Trả về trạng thái khi nhấn theo dõi OA.
5395
+ * @param {function} [onError] Trả về lỗi khi thao tác widget.
5396
+ *
5397
+ * @example Hiển thị Widget Quan tâm OA:
5398
+ * ```ts
5399
+ * import React, { useEffect } from "react";
5400
+ * import { showOAWidget } from "zmp-sdk/apis";
5401
+ *
5402
+ * function HomePage() {
5403
+ * useEffect(() => {
5404
+ * showOAWidget({
5405
+ * id: "oaWidget",
5406
+ * guidingText: "Nhận thông báo khuyến mãi mới nhất từ cửa hàng",
5407
+ * color: "#0068FF",
5408
+ * onStatusChange: (status) => {
5409
+ * console.log(status);
5410
+ * },
5411
+ * });
5412
+ * }, []);
5413
+ *
5414
+ * return (
5415
+ * <>
5416
+ * ...
5417
+ * <div id="oaWidget" />
5418
+ * ...
5419
+ * </>
5420
+ * );
5421
+ * }
5422
+ *
5423
+ * export default HomePage;
5424
+ * ```
5425
+ */
3778
5426
  declare function showOAWidget(args: AsyncVoidCallback & TypeOf<(typeof showOAWidgetArgs)[0]>): Promise<void>;
3779
5427
 
3780
5428
  declare const showFunctionButtonWidgetArgs: ZodObject<{
@@ -3804,6 +5452,70 @@ declare const showFunctionButtonWidgetArgs: ZodObject<{
3804
5452
  type: string;
3805
5453
  id: string;
3806
5454
  }>[];
5455
+ /**
5456
+ * Widget Function Button: Khi người dùng nhấn vào button này, Mini App sẽ nhận được 1 message token (có giá trị trong 7 ngày) để gửi tin nhắn tới người dùng. Chi tiết hướng dẫn gửi tin nhắn thông qua message token tham khảo [tại đây](https://developers.zalo.me/docs/official-account/tin-nhan/cac-loai-tin-khac/gui-tin-nhan-miniapp-den-nguoi-dung).
5457
+ *
5458
+ * @minimumVersion 2.39.0
5459
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
5460
+ *
5461
+ * @param {string} id ID của element, nơi cần hiển thị widget.
5462
+ * @param {"ORDER"} type Loại nút, hiện tại chỉ hỗ trợ giá trị: `ORDER`.
5463
+ * @param {"Thanh toán" |"Đặt món" |"Đặt xe" |"Đặt hàng" |"Mua vé" |"Booking" |"Đặt chỗ" |"Tạo đơn hàng" |"Đặt trước" |"Mua hàng" |"Đặt lịch" |"Tra cứu" |"Kiểm tra"} text Chuỗi hiển thị trong button. Phải là một trong các giá trị được cho phép:
5464
+ * - Thanh toán
5465
+ * - Đặt món
5466
+ * - Đặt xe
5467
+ * - Đặt hàng
5468
+ * - Mua vé
5469
+ * - Booking
5470
+ * - Đặt chỗ
5471
+ * - Tạo đơn hàng
5472
+ * - Đặt trước
5473
+ * - Mua hàng
5474
+ * - Đặt lịch
5475
+ * - Tra cứu
5476
+ * - Kiểm tra
5477
+ * @param {string} [fontSize="16px"] Kích thước font chữ. Giá trị nhỏ nhất là 14px.
5478
+ * @param {string} [color="#0068FF"] Màu chủ đạo của widget. Giá trị phải là chuỗi hex.
5479
+ * @param {string} [textColor="#FFFFFF"] Màu chữ trong button. Giá trị phải là chuỗi hex.
5480
+ * @param {string} [borderRadius="48px"] Bo góc (bo tròn các góc của button).
5481
+ * @param {function} [onDataReceived] Trả về `messageToken` khi click widget.
5482
+ * @param {function} [onError] Trả về `error` khi click widget.
5483
+ *
5484
+ * @example Hiển thị Widget Function Button:
5485
+ * ```ts
5486
+ * import React, { useEffect } from "react";
5487
+ * import { showFunctionButtonWidget } from "zmp-sdk/apis";
5488
+ *
5489
+ * function HomePage() {
5490
+ * useEffect(() => {
5491
+ * showFunctionButtonWidget({
5492
+ * id: "orderButton",
5493
+ * type: "ORDER",
5494
+ * text: "Đặt hàng",
5495
+ * color: "#0068FF",
5496
+ * textColor: "#FFFFFF",
5497
+ * borderRadius: "48px",
5498
+ * onDataReceived: (messageToken) => {
5499
+ * console.log(messageToken);
5500
+ * },
5501
+ * onError: (error) => {
5502
+ * console.error("onError:", error);
5503
+ * },
5504
+ * });
5505
+ * }, []);
5506
+ *
5507
+ * return (
5508
+ * <>
5509
+ * ...
5510
+ * <div id="orderButton" />
5511
+ * ...
5512
+ * </>
5513
+ * );
5514
+ * }
5515
+ *
5516
+ * export default HomePage;
5517
+ * ```
5518
+ */
3807
5519
  declare function showFunctionButtonWidget(args: AsyncVoidCallback & TypeOf<(typeof showFunctionButtonWidgetArgs)[0]>): Promise<void>;
3808
5520
 
3809
5521
  declare const scanNFCArgs: ZodObject<{
@@ -3860,16 +5572,74 @@ declare const downloadFileArgs: ZodOptional<ZodObject<{
3860
5572
  }, {
3861
5573
  url: string;
3862
5574
  }>>[];
5575
+ /**
5576
+ * API hỗ trợ tải file về thiết bị. Hỗ trợ giao thức tải file `https://` với các định dạng được liệt kê bên dưới.
5577
+ *
5578
+ * | Định dạng | Đuôi file |
5579
+ * | -------- | -------------------------------------------------------- |
5580
+ * | Văn bản | pdf, doc, docx, odt, xls, xlsx, ppt, pptx, txt, rtf, csv |
5581
+ * | Hình ảnh | jpg, jpeg, png, gif, bmp |
5582
+ * | Video | mp4, avi, mkv, mov, wmv |
5583
+ *
5584
+ * @minimumVersion 2.44.0
5585
+ * @requirePermission Cần xin Cấp quyền sử dụng các API này cho Mini App ID tại trang Quản lý ứng dụng. Nếu không, sẽ bị [lỗi với người dùng bình thường, mặc dù Developer/Admin thì không bị](https://mini.zalo.me/community/8746968970844796879/loi-chi-xay-ra-voi-nguoi-dung-binh-thuong-con-developer-admin-thi-khong-bi).
5586
+ * @zaloOnly Chỉ hoạt động khi chạy bên trong ứng dụng Zalo mobile.
5587
+ *
5588
+ * @param {string} url - Đường dẫn của file muốn download.
5589
+ * @param {(progress: number) => void} [onProgress] - Callback function tiến độ tải file. Với `progress` là số từ 0 đến 100%.
5590
+ *
5591
+ * @example Thông báo một lần sau khi tải file xong:
5592
+ * ```ts
5593
+ * await downloadFile({
5594
+ * url: "https://stc-zmp.zadn.vn/mini-app/landingpage-banner-new.png",
5595
+ * });
5596
+ * console.log("Tải file thành công!");
5597
+ * ```
5598
+ *
5599
+ * @example Xử lý lỗi khi tải file (tham khảo bảng mã lỗi tại [đây](https://mini.zalo.me/documents/api/downloadFile/#errors)):
5600
+ * ```ts
5601
+ * try {
5602
+ * await downloadFile({
5603
+ * url: "https://stc-zmp.zadn.vn/mini-app/landingpage-banner-new.png",
5604
+ * });
5605
+ * } catch (error) {
5606
+ * // Đã có lỗi xảy ra
5607
+ * console.error(error);
5608
+ * }
5609
+ * ```
5610
+ *
5611
+ * @example Báo cáo tiến độ tải file:
5612
+ * ```ts
5613
+ * await downloadFile({
5614
+ * url: "https://stc-zmp.zadn.vn/mini-app/landingpage-banner-new.png",
5615
+ * onProgress: (progress) => {
5616
+ * console.log(`Đã tải được ${progress}%...`);
5617
+ * },
5618
+ * });
5619
+ * console.log("Tải file thành công!");
5620
+ * ```
5621
+ */
3863
5622
  declare function downloadFile(args: AsyncProgressCallback & TypeOf<(typeof downloadFileArgs)[0]>): Promise<void>;
3864
5623
 
3865
5624
  declare const trackingManager: {
3866
5625
  logEvent: typeof logEvent;
3867
5626
  };
3868
5627
 
5628
+ declare class AppError {
5629
+ code: number;
5630
+ message: string | string[];
5631
+ api?: string | symbol;
5632
+ detail?: any;
5633
+ constructor(code: number, message: string | string[], api?: string | symbol, detail?: any);
5634
+ toString(): string;
5635
+ toJSON(): object;
5636
+ }
5637
+
3869
5638
  declare const otherApis: {
3870
5639
  Events: typeof Events;
3871
5640
  EventName: typeof Events;
3872
5641
  CameraEvents: typeof CameraEvents;
5642
+ AppError: typeof AppError;
3873
5643
  login: typeof login;
3874
5644
  getAccessToken: typeof getAccessToken;
3875
5645
  getVersion: typeof getVersion;
@@ -3996,4 +5766,4 @@ declare const otherApis: {
3996
5766
  ZMACameraImp: typeof ZMACameraImp;
3997
5767
  };
3998
5768
 
3999
- export { Action, AndroidBottomNavigationBarType, AsyncCallback, AsyncCallbackFailObject, AsyncProgressCallback, AsyncVoidCallback, AuthorizeType, CameraEvents, CameraParams, ChatType, CheckStateBioAuthenticationReturns, CheckTransactionReturns, CheckZaloCameraPermissionReturns, CheckoutSDK, ChooseImageReturns, Common, ContextInfo, CreateOrderIAPReturns, CreateOrderReturns, Events as EventName, Events, FacingMode, FunctionProps, GetAppInfoReturns, GetAuthCodeReturns, GetBeaconDiscoveryReturns, GetLocationReturns, GetNetworkTypeReturns, GetPhoneNumberReturns, GetSettingReturn, GetStorageReturns, GetUserInfoReturns, GetZPITokenReturns, IAPMethodType, IAPPayType, IAPPayTypeType, IOSSafeAreaBottomType, JumpStatus, KeepScreenReturns, LogData, MediaConstraints, MediaDevice, MediaPickerType, NativeCallBackData, NetworkType, OpenBioAuthenticationReturns, OpenMediaPickerReturns, OpenPostFeedReturns, OpenProfilePickerReturns, OpenShareSheetReturns, OpenWebviewReturns, OrientationType, Payment, PhotoConstraint, PhotoFormat, PhotoFrame, PhotoQuality, PickAttr, PlatformType, PostFeedType, ProfileType, ProrationMode, ProrationModeType, RemoveStorageReturns, RequestCameraPermissionReturns, SaveFileReturns, ScanNFCType, ScanQRCodeReturns, SelectPaymentMethodReturns, SetStorageReturns, ShareSheetType, StatusBarType, StorageInfo, StreamType, SystemInfo, TextAlignType, VibrateType, ZMACamera, ZMACameraImp, addRating, authorize, checkNFC, checkStateBioAuthentication, checkTransaction, checkZaloCameraPermission, chooseImage, clearStorage, closeApp, closeLoading, configAppView, connectWifi, createCameraContext, createOrder, createOrderIAP, createShortcut, otherApis as default, displayAd, downloadFile, events, favoriteApp, followOA, getAccessToken, getAppInfo, getAuthCode, getBeacons, getContext, getContextAsync, getDeviceId, getDeviceIdAsync, getIDToken, getLocation, getNetworkType, getPhoneNumber, getRouteParams, getSetting, getShareableLink, getStorage, getStorageInfo, getSystemInfo, getUserID, getUserInfo, getVersion, getZPIToken, hideKeyboard, iBeaconInfo, interactOA, interactOA as interactOa, checkIsAllowedInteractWithOA as isAllowedInteractWithOA, keepScreen, loadAd, login, minimizeApp, nativeStorage, offConfirmToExit, offKeepScreen, onCallbackData, onConfirmToExit, onKeepScreen, onNetworkStatusChange, openBioAuthentication, openChat, openGroupList, openMediaPicker, openMiniApp, openOutApp, openPermissionSetting, openPhone, openPostFeed, openProfile, openProfilePicker, openSMS, openShareSheet, openWebview, purchase, refreshAd, removeStorage, requestCameraPermission, requestSendNotification, requestUpdateZalo, saveImageToGallery, saveVideoToGallery, scanNFC, scanQRCode, selectPaymentMethod, sendDataToPreviousMiniApp, setAccessToken, setAndroidBottomNavigationBar, setIOSBottomSafeArea, setNavigationBarColor, setNavigationBarLeftButton, setNavigationBarTitle, setStatusBar, setStorage, setupAd, showFunctionButtonWidget, showOAWidget, showToast, startBeaconDiscovery, stopBeaconDiscovery, trackingManager, unfollowOA, vibrate, viewOAQr };
5769
+ export { Action, AndroidBottomNavigationBarType, AppError, AsyncCallback, AsyncCallbackFailObject, AsyncProgressCallback, AsyncVoidCallback, AuthorizeType, CameraEvents, CameraParams, ChatType, CheckStateBioAuthenticationReturns, CheckTransactionReturns, CheckZaloCameraPermissionReturns, CheckoutSDK, ChooseImageReturns, Common, ContextInfo, CreateOrderIAPReturns, CreateOrderReturns, Events as EventName, Events, FacingMode, FunctionProps, GetAppInfoReturns, GetAuthCodeReturns, GetBeaconDiscoveryReturns, GetLocationReturns, GetNetworkTypeReturns, GetPhoneNumberReturns, GetSettingReturn, GetStorageReturns, GetUserInfoReturns, GetZPITokenReturns, IAPMethodType, IAPPayType, IAPPayTypeType, IOSSafeAreaBottomType, JumpStatus, KeepScreenReturns, LogData, MediaConstraints, MediaDevice, MediaPickerType, NativeCallBackData, NetworkType, OpenBioAuthenticationReturns, OpenMediaPickerReturns, OpenPostFeedReturns, OpenProfilePickerReturns, OpenShareSheetReturns, OpenWebviewReturns, OrientationType, Payment, PhotoConstraint, PhotoFormat, PhotoFrame, PhotoQuality, PickAttr, PickedProfile, PlatformType, PostFeedType, ProfileInfo, ProfileType, ProrationMode, ProrationModeType, RemoveStorageReturns, RequestCameraPermissionReturns, SaveFileReturns, ScanNFCType, ScanQRCodeReturns, SelectPaymentMethodReturns, SetStorageReturns, ShareSheetType, StatusBarType, StorageInfo, StreamType, SystemInfo, TempFile, TextAlignType, UserInfo, VibrateType, ZMACamera, ZMACameraImp, addRating, authorize, checkNFC, checkStateBioAuthentication, checkTransaction, checkZaloCameraPermission, chooseImage, clearStorage, closeApp, closeLoading, configAppView, connectWifi, createCameraContext, createOrder, createOrderIAP, createShortcut, otherApis as default, displayAd, downloadFile, events, favoriteApp, followOA, getAccessToken, getAppInfo, getAuthCode, getBeacons, getContext, getContextAsync, getDeviceId, getDeviceIdAsync, getIDToken, getLocation, getNetworkType, getPhoneNumber, getRouteParams, getSetting, getShareableLink, getStorage, getStorageInfo, getSystemInfo, getUserID, getUserInfo, getVersion, getZPIToken, hideKeyboard, iBeaconInfo, interactOA, interactOA as interactOa, checkIsAllowedInteractWithOA as isAllowedInteractWithOA, keepScreen, loadAd, login, minimizeApp, nativeStorage, offConfirmToExit, offKeepScreen, onCallbackData, onConfirmToExit, onKeepScreen, onNetworkStatusChange, openBioAuthentication, openChat, openGroupList, openMediaPicker, openMiniApp, openOutApp, openPermissionSetting, openPhone, openPostFeed, openProfile, openProfilePicker, openSMS, openShareSheet, openWebview, purchase, refreshAd, removeStorage, requestCameraPermission, requestSendNotification, requestUpdateZalo, saveImageToGallery, saveVideoToGallery, scanNFC, scanQRCode, selectPaymentMethod, sendDataToPreviousMiniApp, setAccessToken, setAndroidBottomNavigationBar, setIOSBottomSafeArea, setNavigationBarColor, setNavigationBarLeftButton, setNavigationBarTitle, setStatusBar, setStorage, setupAd, showFunctionButtonWidget, showOAWidget, showToast, startBeaconDiscovery, stopBeaconDiscovery, trackingManager, unfollowOA, vibrate, viewOAQr };