@tma.js/sdk 2.7.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +9 -9
  3. package/dist/dts/composables/AsyncMountable.d.ts +44 -0
  4. package/dist/dts/composables/Button.d.ts +140 -0
  5. package/dist/dts/composables/Mountable.d.ts +43 -0
  6. package/dist/dts/composables/Stateful.d.ts +35 -0
  7. package/dist/dts/errors.d.ts +41 -0
  8. package/dist/dts/features/BackButton/BackButton.d.ts +96 -0
  9. package/dist/dts/features/BackButton/exports.d.ts +2 -0
  10. package/dist/dts/features/BackButton/instance.d.ts +2 -0
  11. package/dist/dts/features/Biometry/Biometry.d.ts +122 -0
  12. package/dist/dts/features/Biometry/exports.d.ts +3 -0
  13. package/dist/dts/features/Biometry/instance.d.ts +2 -0
  14. package/dist/dts/features/Biometry/types.d.ts +84 -0
  15. package/dist/dts/features/ClosingBehavior/ClosingBehavior.d.ts +51 -0
  16. package/dist/dts/features/ClosingBehavior/exports.d.ts +2 -0
  17. package/dist/dts/features/ClosingBehavior/instance.d.ts +2 -0
  18. package/dist/dts/features/CloudStorage/CloudStorage.d.ts +90 -0
  19. package/dist/dts/features/CloudStorage/exports.d.ts +2 -0
  20. package/dist/dts/features/CloudStorage/instance.d.ts +2 -0
  21. package/dist/dts/features/HapticFeedback/HapticFeedback.d.ts +57 -0
  22. package/dist/dts/features/HapticFeedback/exports.d.ts +2 -0
  23. package/dist/dts/features/HapticFeedback/instance.d.ts +2 -0
  24. package/dist/dts/features/InitData/InitData.d.ts +84 -0
  25. package/dist/dts/features/InitData/exports.d.ts +2 -0
  26. package/dist/dts/features/InitData/instance.d.ts +2 -0
  27. package/dist/dts/features/Invoice/Invoice.d.ts +54 -0
  28. package/dist/dts/features/Invoice/exports.d.ts +2 -0
  29. package/dist/dts/features/Invoice/instance.d.ts +2 -0
  30. package/dist/dts/features/LocationManager/LocationManager.d.ts +74 -0
  31. package/dist/dts/features/LocationManager/exports.d.ts +3 -0
  32. package/dist/dts/features/LocationManager/instance.d.ts +2 -0
  33. package/dist/dts/features/LocationManager/types.d.ts +65 -0
  34. package/dist/dts/features/MainButton/MainButton.d.ts +214 -0
  35. package/dist/dts/features/MainButton/exports.d.ts +2 -0
  36. package/dist/dts/features/MainButton/instance.d.ts +2 -0
  37. package/dist/dts/features/MiniApp/MiniApp.d.ts +192 -0
  38. package/dist/dts/features/MiniApp/exports.d.ts +2 -0
  39. package/dist/dts/features/MiniApp/instance.d.ts +2 -0
  40. package/dist/dts/features/Popup/Popup.d.ts +56 -0
  41. package/dist/dts/features/Popup/exports.d.ts +3 -0
  42. package/dist/dts/features/Popup/instance.d.ts +2 -0
  43. package/dist/dts/features/Popup/prepareParams.d.ts +9 -0
  44. package/dist/dts/{components → features}/Popup/types.d.ts +5 -12
  45. package/dist/dts/features/QrScanner/QrScanner.d.ts +132 -0
  46. package/dist/dts/features/QrScanner/exports.d.ts +2 -0
  47. package/dist/dts/features/QrScanner/instance.d.ts +2 -0
  48. package/dist/dts/features/SecondaryButton/SecondaryButton.d.ts +253 -0
  49. package/dist/dts/features/SecondaryButton/exports.d.ts +2 -0
  50. package/dist/dts/features/SecondaryButton/instance.d.ts +2 -0
  51. package/dist/dts/features/SettingsButton/SettingsButton.d.ts +96 -0
  52. package/dist/dts/features/SettingsButton/exports.d.ts +2 -0
  53. package/dist/dts/features/SettingsButton/instance.d.ts +2 -0
  54. package/dist/dts/features/SwipeBehavior/SwipeBehavior.d.ts +62 -0
  55. package/dist/dts/features/SwipeBehavior/exports.d.ts +2 -0
  56. package/dist/dts/features/SwipeBehavior/instance.d.ts +2 -0
  57. package/dist/dts/features/ThemeParams/ThemeParams.d.ts +127 -0
  58. package/dist/dts/features/ThemeParams/exports.d.ts +2 -0
  59. package/dist/dts/features/ThemeParams/instance.d.ts +2 -0
  60. package/dist/dts/features/Viewport/Viewport.d.ts +220 -0
  61. package/dist/dts/features/Viewport/exports.d.ts +2 -0
  62. package/dist/dts/features/Viewport/instance.d.ts +2 -0
  63. package/dist/dts/features/emoji-status/exports.d.ts +2 -0
  64. package/dist/dts/features/emoji-status/requestEmojiStatusAccess.d.ts +16 -0
  65. package/dist/dts/features/emoji-status/setEmojiStatus.d.ts +28 -0
  66. package/dist/dts/features/home-screen/addToHomeScreen.d.ts +11 -0
  67. package/dist/dts/features/home-screen/checkHomeScreenStatus.d.ts +14 -0
  68. package/dist/dts/features/home-screen/exports.d.ts +2 -0
  69. package/dist/dts/features/links/exports.d.ts +3 -0
  70. package/dist/dts/features/links/openLink.d.ts +31 -0
  71. package/dist/dts/features/links/openTelegramLink.d.ts +18 -0
  72. package/dist/dts/features/links/shareURL.d.ts +18 -0
  73. package/dist/dts/features/privacy/exports.d.ts +3 -0
  74. package/dist/dts/features/privacy/requestContact.d.ts +59 -0
  75. package/dist/dts/features/privacy/requestPhoneAccess.d.ts +19 -0
  76. package/dist/dts/features/privacy/requestWriteAccess.d.ts +14 -0
  77. package/dist/dts/features/uncategorized/copyTextToClipboard.d.ts +5 -0
  78. package/dist/dts/features/uncategorized/downloadFile.d.ts +21 -0
  79. package/dist/dts/features/uncategorized/exports.d.ts +11 -0
  80. package/dist/dts/features/uncategorized/getCurrentTime.d.ts +15 -0
  81. package/dist/dts/features/uncategorized/hideKeyboard.d.ts +13 -0
  82. package/dist/dts/features/uncategorized/readTextFromClipboard.d.ts +13 -0
  83. package/dist/dts/features/uncategorized/retrieveAndroidDeviceData.d.ts +6 -0
  84. package/dist/dts/features/uncategorized/retrieveAndroidDeviceDataFrom.d.ts +14 -0
  85. package/dist/dts/features/uncategorized/sendData.d.ts +20 -0
  86. package/dist/dts/features/uncategorized/shareMessage.d.ts +14 -0
  87. package/dist/dts/features/uncategorized/shareStory.d.ts +50 -0
  88. package/dist/dts/features/uncategorized/switchInlineQuery.d.ts +28 -0
  89. package/dist/dts/fn-options/bottomButtonOptions.d.ts +11 -0
  90. package/dist/dts/fn-options/buttonOptions.d.ts +10 -0
  91. package/dist/dts/fn-options/createFnOption.d.ts +2 -0
  92. package/dist/dts/fn-options/sharedFeatureOptions.d.ts +8 -0
  93. package/dist/dts/fn-options/withInvokeCustomMethod.d.ts +11 -0
  94. package/dist/dts/fn-options/withPostEvent.d.ts +8 -0
  95. package/dist/dts/fn-options/withRequest.d.ts +8 -0
  96. package/dist/dts/fn-options/withStateRestore.d.ts +13 -0
  97. package/dist/dts/fn-options/withVersion.d.ts +9 -0
  98. package/dist/dts/globals/createRequestId.d.ts +4 -0
  99. package/dist/dts/globals/inline-mode.d.ts +4 -0
  100. package/dist/dts/globals/invokeCustomMethod.d.ts +16 -0
  101. package/dist/dts/globals/post-event.d.ts +4 -0
  102. package/dist/dts/globals/request.d.ts +3 -0
  103. package/dist/dts/globals/resetGlobals.d.ts +4 -0
  104. package/dist/dts/globals/signals-registry.d.ts +39 -0
  105. package/dist/dts/globals/themeParams.d.ts +4 -0
  106. package/dist/dts/globals/version.d.ts +4 -0
  107. package/dist/dts/helpers/access.d.ts +2 -0
  108. package/dist/dts/helpers/component-storage.d.ts +9 -0
  109. package/dist/dts/helpers/createIsSupportedSignal.d.ts +5 -0
  110. package/dist/dts/helpers/css-vars.d.ts +11 -0
  111. package/dist/dts/helpers/isColorDark.d.ts +11 -0
  112. package/dist/dts/{navigation/isPageReload.d.ts → helpers/navigation.d.ts} +1 -1
  113. package/dist/dts/helpers/removeUndefined.d.ts +10 -0
  114. package/dist/dts/helpers/shallowEqual.d.ts +1 -0
  115. package/dist/dts/index.d.ts +33 -168
  116. package/dist/dts/init.d.ts +42 -0
  117. package/dist/dts/types.d.ts +6 -0
  118. package/dist/dts/with-checks/throwifyWithChecksFp.d.ts +3 -0
  119. package/dist/dts/with-checks/withChecksFp.d.ts +172 -0
  120. package/dist/index.cjs +1 -3
  121. package/dist/index.cjs.map +1 -1
  122. package/dist/index.iife.js +3 -3
  123. package/dist/index.iife.js.map +1 -1
  124. package/dist/index.js +3811 -2897
  125. package/dist/index.js.map +1 -1
  126. package/package.json +19 -9
  127. package/dist/dts/bridge/captureSameReq.d.ts +0 -10
  128. package/dist/dts/bridge/events/event-emitter/createMiniAppsEventEmitter.d.ts +0 -15
  129. package/dist/dts/bridge/events/event-emitter/singleton.d.ts +0 -8
  130. package/dist/dts/bridge/events/event-handlers/cleanupEventHandlers.d.ts +0 -4
  131. package/dist/dts/bridge/events/event-handlers/defineEventHandlers.d.ts +0 -6
  132. package/dist/dts/bridge/events/event-handlers/emitMiniAppsEvent.d.ts +0 -9
  133. package/dist/dts/bridge/events/listening/off.d.ts +0 -8
  134. package/dist/dts/bridge/events/listening/on.d.ts +0 -12
  135. package/dist/dts/bridge/events/listening/subscribe.d.ts +0 -9
  136. package/dist/dts/bridge/events/listening/unsubscribe.d.ts +0 -7
  137. package/dist/dts/bridge/events/types.d.ts +0 -302
  138. package/dist/dts/bridge/invokeCustomMethod.d.ts +0 -23
  139. package/dist/dts/bridge/methods/createPostEvent.d.ts +0 -14
  140. package/dist/dts/bridge/methods/postEvent.d.ts +0 -40
  141. package/dist/dts/bridge/methods/types/custom-methods.d.ts +0 -57
  142. package/dist/dts/bridge/methods/types/haptic.d.ts +0 -40
  143. package/dist/dts/bridge/methods/types/index.d.ts +0 -4
  144. package/dist/dts/bridge/methods/types/methods.d.ts +0 -392
  145. package/dist/dts/bridge/methods/types/popup.d.ts +0 -49
  146. package/dist/dts/bridge/parseMessage.d.ts +0 -18
  147. package/dist/dts/bridge/request.d.ts +0 -53
  148. package/dist/dts/bridge/target-origin.d.ts +0 -18
  149. package/dist/dts/classes/State/State.d.ts +0 -46
  150. package/dist/dts/classes/State/types.d.ts +0 -29
  151. package/dist/dts/classes/WithStateUtils.d.ts +0 -18
  152. package/dist/dts/classes/WithSupports.d.ts +0 -19
  153. package/dist/dts/classes/WithSupportsAndStateUtils.d.ts +0 -24
  154. package/dist/dts/classes/WithSupportsAndTrackableState.d.ts +0 -16
  155. package/dist/dts/classes/WithTrackableState.d.ts +0 -16
  156. package/dist/dts/classnames/classNames.d.ts +0 -12
  157. package/dist/dts/classnames/mergeClassNames.d.ts +0 -14
  158. package/dist/dts/colors/isColorDark.d.ts +0 -6
  159. package/dist/dts/colors/isRGB.d.ts +0 -7
  160. package/dist/dts/colors/isRGBShort.d.ts +0 -7
  161. package/dist/dts/colors/toRGB.d.ts +0 -12
  162. package/dist/dts/colors/types.d.ts +0 -8
  163. package/dist/dts/components/BackButton/BackButton.d.ts +0 -41
  164. package/dist/dts/components/BackButton/initBackButton.d.ts +0 -7
  165. package/dist/dts/components/BackButton/types.d.ts +0 -25
  166. package/dist/dts/components/BiometryManager/BiometryManager.d.ts +0 -61
  167. package/dist/dts/components/BiometryManager/formatEvent.d.ts +0 -34
  168. package/dist/dts/components/BiometryManager/initBiometryManager.d.ts +0 -7
  169. package/dist/dts/components/BiometryManager/requestBiometryInfo.d.ts +0 -8
  170. package/dist/dts/components/BiometryManager/types.d.ts +0 -40
  171. package/dist/dts/components/ClosingBehavior/ClosingBehavior.d.ts +0 -26
  172. package/dist/dts/components/ClosingBehavior/initClosingBehavior.d.ts +0 -7
  173. package/dist/dts/components/ClosingBehavior/types.d.ts +0 -20
  174. package/dist/dts/components/CloudStorage/CloudStorage.d.ts +0 -47
  175. package/dist/dts/components/CloudStorage/initCloudStorage.d.ts +0 -7
  176. package/dist/dts/components/HapticFeedback/HapticFeedback.d.ts +0 -34
  177. package/dist/dts/components/HapticFeedback/initHapticFeedback.d.ts +0 -7
  178. package/dist/dts/components/InitData/InitData.d.ts +0 -55
  179. package/dist/dts/components/InitData/initInitData.d.ts +0 -7
  180. package/dist/dts/components/InitData/parseInitData.d.ts +0 -7
  181. package/dist/dts/components/InitData/parsers/chat.d.ts +0 -3
  182. package/dist/dts/components/InitData/parsers/initData.d.ts +0 -7
  183. package/dist/dts/components/InitData/parsers/user.d.ts +0 -3
  184. package/dist/dts/components/InitData/types.d.ts +0 -132
  185. package/dist/dts/components/Invoice/Invoice.d.ts +0 -31
  186. package/dist/dts/components/Invoice/initInvoice.d.ts +0 -7
  187. package/dist/dts/components/Invoice/types.d.ts +0 -20
  188. package/dist/dts/components/MainButton/MainButton.d.ts +0 -106
  189. package/dist/dts/components/MainButton/initMainButton.d.ts +0 -7
  190. package/dist/dts/components/MainButton/types.d.ts +0 -40
  191. package/dist/dts/components/MiniApp/MiniApp.d.ts +0 -121
  192. package/dist/dts/components/MiniApp/initMiniApp.d.ts +0 -7
  193. package/dist/dts/components/MiniApp/parsing/contact.d.ts +0 -7
  194. package/dist/dts/components/MiniApp/types.d.ts +0 -53
  195. package/dist/dts/components/Popup/Popup.d.ts +0 -30
  196. package/dist/dts/components/Popup/initPopup.d.ts +0 -7
  197. package/dist/dts/components/Popup/preparePopupParams.d.ts +0 -8
  198. package/dist/dts/components/QRScanner/QRScanner.d.ts +0 -33
  199. package/dist/dts/components/QRScanner/initQRScanner.d.ts +0 -7
  200. package/dist/dts/components/QRScanner/types.d.ts +0 -31
  201. package/dist/dts/components/SettingsButton/SettingsButton.d.ts +0 -37
  202. package/dist/dts/components/SettingsButton/initSettingsButton.d.ts +0 -7
  203. package/dist/dts/components/SettingsButton/types.d.ts +0 -25
  204. package/dist/dts/components/ThemeParams/ThemeParams.d.ts +0 -57
  205. package/dist/dts/components/ThemeParams/initThemeParams.d.ts +0 -7
  206. package/dist/dts/components/ThemeParams/keys.d.ts +0 -11
  207. package/dist/dts/components/ThemeParams/parsing/parseThemeParams.d.ts +0 -7
  208. package/dist/dts/components/ThemeParams/parsing/serializeThemeParams.d.ts +0 -6
  209. package/dist/dts/components/ThemeParams/parsing/themeParams.d.ts +0 -4
  210. package/dist/dts/components/ThemeParams/requestThemeParams.d.ts +0 -8
  211. package/dist/dts/components/ThemeParams/types.d.ts +0 -29
  212. package/dist/dts/components/Utils/Utils.d.ts +0 -77
  213. package/dist/dts/components/Utils/initUtils.d.ts +0 -7
  214. package/dist/dts/components/Viewport/Viewport.d.ts +0 -77
  215. package/dist/dts/components/Viewport/initViewport.d.ts +0 -7
  216. package/dist/dts/components/Viewport/requestViewport.d.ts +0 -13
  217. package/dist/dts/components/Viewport/types.d.ts +0 -35
  218. package/dist/dts/css-vars/bindMiniAppCSSVars.d.ts +0 -29
  219. package/dist/dts/css-vars/bindThemeParamsCSSVars.d.ts +0 -29
  220. package/dist/dts/css-vars/bindViewportCSSVars.d.ts +0 -32
  221. package/dist/dts/css-vars/setCSSVar.d.ts +0 -6
  222. package/dist/dts/debug/debug.d.ts +0 -14
  223. package/dist/dts/env/hasExternalNotify.d.ts +0 -10
  224. package/dist/dts/env/hasWebviewProxy.d.ts +0 -10
  225. package/dist/dts/env/initWeb.d.ts +0 -11
  226. package/dist/dts/env/isIframe.d.ts +0 -5
  227. package/dist/dts/env/isSSR.d.ts +0 -4
  228. package/dist/dts/env/isTMA.d.ts +0 -4
  229. package/dist/dts/env/mockTelegramEnv.d.ts +0 -7
  230. package/dist/dts/errors/SDKError.d.ts +0 -9
  231. package/dist/dts/errors/createError.d.ts +0 -10
  232. package/dist/dts/errors/errors.d.ts +0 -49
  233. package/dist/dts/errors/isSDKError.d.ts +0 -7
  234. package/dist/dts/errors/isSDKErrorOfType.d.ts +0 -8
  235. package/dist/dts/events/event-emitter/EventEmitter.d.ts +0 -54
  236. package/dist/dts/events/event-emitter/types.d.ts +0 -45
  237. package/dist/dts/events/onWindow.d.ts +0 -10
  238. package/dist/dts/events/types.d.ts +0 -6
  239. package/dist/dts/index.low-level.d.ts +0 -41
  240. package/dist/dts/launch-params/parseLaunchParams.d.ts +0 -7
  241. package/dist/dts/launch-params/retrieveFromLocation.d.ts +0 -7
  242. package/dist/dts/launch-params/retrieveFromPerformance.d.ts +0 -7
  243. package/dist/dts/launch-params/retrieveFromStorage.d.ts +0 -7
  244. package/dist/dts/launch-params/retrieveFromUrl.d.ts +0 -8
  245. package/dist/dts/launch-params/retrieveLaunchParams.d.ts +0 -7
  246. package/dist/dts/launch-params/saveToStorage.d.ts +0 -7
  247. package/dist/dts/launch-params/serializeLaunchParams.d.ts +0 -7
  248. package/dist/dts/launch-params/types.d.ts +0 -51
  249. package/dist/dts/logger/Logger.d.ts +0 -29
  250. package/dist/dts/misc/createCleanup.d.ts +0 -11
  251. package/dist/dts/misc/createComponentInitFn/createComponentInitFn.d.ts +0 -16
  252. package/dist/dts/misc/createComponentInitFn/types.d.ts +0 -54
  253. package/dist/dts/misc/createSingleton.d.ts +0 -15
  254. package/dist/dts/misc/isRecord.d.ts +0 -5
  255. package/dist/dts/misc/objectFromKeys.d.ts +0 -6
  256. package/dist/dts/navigation/BasicNavigator/BasicNavigator.d.ts +0 -118
  257. package/dist/dts/navigation/BasicNavigator/prepareItem.d.ts +0 -8
  258. package/dist/dts/navigation/BasicNavigator/types.d.ts +0 -37
  259. package/dist/dts/navigation/BrowserNavigator/BrowserNavigator.d.ts +0 -198
  260. package/dist/dts/navigation/BrowserNavigator/basicItemToBrowser.d.ts +0 -7
  261. package/dist/dts/navigation/BrowserNavigator/createBrowserNavigatorFromLocation.d.ts +0 -4
  262. package/dist/dts/navigation/BrowserNavigator/prepareItem.d.ts +0 -25
  263. package/dist/dts/navigation/BrowserNavigator/types.d.ts +0 -64
  264. package/dist/dts/navigation/createSafeURL.d.ts +0 -7
  265. package/dist/dts/navigation/drop.d.ts +0 -4
  266. package/dist/dts/navigation/ensurePrefix.d.ts +0 -7
  267. package/dist/dts/navigation/getFirstNavigationEntry.d.ts +0 -6
  268. package/dist/dts/navigation/getHash.d.ts +0 -15
  269. package/dist/dts/navigation/getPathname.d.ts +0 -7
  270. package/dist/dts/navigation/go.d.ts +0 -5
  271. package/dist/dts/navigation/initNavigator.d.ts +0 -9
  272. package/dist/dts/navigation/urlToPath.d.ts +0 -7
  273. package/dist/dts/parsing/ArrayParser/ArrayParser.d.ts +0 -17
  274. package/dist/dts/parsing/ArrayParser/types.d.ts +0 -12
  275. package/dist/dts/parsing/ValueParser/ValueParser.d.ts +0 -17
  276. package/dist/dts/parsing/ValueParser/types.d.ts +0 -28
  277. package/dist/dts/parsing/createTypeError.d.ts +0 -6
  278. package/dist/dts/parsing/createValueParserGenerator.d.ts +0 -10
  279. package/dist/dts/parsing/parseBySchema.d.ts +0 -9
  280. package/dist/dts/parsing/parsers/array.d.ts +0 -7
  281. package/dist/dts/parsing/parsers/boolean.d.ts +0 -6
  282. package/dist/dts/parsing/parsers/date.d.ts +0 -6
  283. package/dist/dts/parsing/parsers/json.d.ts +0 -9
  284. package/dist/dts/parsing/parsers/number.d.ts +0 -6
  285. package/dist/dts/parsing/parsers/rgb.d.ts +0 -7
  286. package/dist/dts/parsing/parsers/searchParams.d.ts +0 -9
  287. package/dist/dts/parsing/parsers/string.d.ts +0 -6
  288. package/dist/dts/parsing/toRecord.d.ts +0 -7
  289. package/dist/dts/parsing/types.d.ts +0 -30
  290. package/dist/dts/request-id/createRequestIdGenerator.d.ts +0 -6
  291. package/dist/dts/request-id/types.d.ts +0 -9
  292. package/dist/dts/storage/storage.d.ts +0 -42
  293. package/dist/dts/supports/createSupportsFn.d.ts +0 -12
  294. package/dist/dts/supports/createSupportsParamFn.d.ts +0 -16
  295. package/dist/dts/supports/supports.d.ts +0 -16
  296. package/dist/dts/supports/types.d.ts +0 -4
  297. package/dist/dts/timeout/createTimeoutError.d.ts +0 -7
  298. package/dist/dts/timeout/sleep.d.ts +0 -5
  299. package/dist/dts/timeout/withTimeout.d.ts +0 -6
  300. package/dist/dts/types/index.d.ts +0 -6
  301. package/dist/dts/types/logical.d.ts +0 -16
  302. package/dist/dts/types/methods.d.ts +0 -16
  303. package/dist/dts/types/misc.d.ts +0 -12
  304. package/dist/dts/types/platform.d.ts +0 -4
  305. package/dist/dts/types/unions.d.ts +0 -20
  306. package/dist/dts/types/utils.d.ts +0 -24
  307. package/dist/dts/version/compareVersions.d.ts +0 -10
  308. package/dist/dts/version/types.d.ts +0 -5
  309. package/dist/index.low-level.iife.js +0 -4
  310. package/dist/index.low-level.iife.js.map +0 -1
@@ -0,0 +1,172 @@
1
+ import { MethodName, MethodNameWithVersionedParams, MethodVersionedParams } from '@tma.js/bridge';
2
+ import { Computed } from '@tma.js/signals';
3
+ import { If, IsNever, AnyFnAnyEither, RightOfReturn, LeftOfReturn, MaybeMonadReturnTypeToCommon, AnyFn } from '@tma.js/toolkit';
4
+ import { Version } from '@tma.js/types';
5
+ import { FunctionUnavailableError } from '../errors.js';
6
+ import { MaybeAccessor } from '../types.js';
7
+ import * as O from 'fp-ts/Option';
8
+ import * as E from 'fp-ts/Either';
9
+ import * as TE from 'fp-ts/TaskEither';
10
+ type IfReturnsTask<Fn extends AnyFnAnyEither, A, B> = ReturnType<Fn> extends TE.TaskEither<any, any> ? A : B;
11
+ type OptionsBasedRequires<O extends WithChecksOptions<any>> = O extends {
12
+ requires: any;
13
+ } ? true : false;
14
+ type OptionsBasedSupports<O extends WithChecksOptions<any>> = O extends {
15
+ supports: any;
16
+ } ? Extract<keyof O['supports'], string> : never;
17
+ type OptionsBasedFn<Opts extends WithChecksOptions<any>> = (...args: any[]) => (Opts['returns'] extends 'plain' ? any : Opts['returns'] extends 'promise' ? PromiseLike<any> : Opts['returns'] extends 'task' ? TE.TaskEither<any, any> : E.Either<any, any>);
18
+ /**
19
+ * @returns Error text if something is wrong.
20
+ */
21
+ export type CustomSupportFn = () => string | undefined;
22
+ export type Require = MethodName | CustomSupportFn | {
23
+ every: (MethodName | CustomSupportFn)[];
24
+ } | {
25
+ some: (MethodName | CustomSupportFn)[];
26
+ };
27
+ /**
28
+ * A map where the key is a method name with versioned parameters, and the value is a tuple
29
+ * containing the method and parameter names. The third tuple value is a function accepting
30
+ * the wrapped function arguments and returning true if support check must be applied.
31
+ */
32
+ export type SupportsMap<Args extends any[]> = {
33
+ [OptionName: string]: {
34
+ [M in MethodNameWithVersionedParams]: {
35
+ /**
36
+ * Method name.
37
+ * @example 'web_app_set_header_color'
38
+ */
39
+ method: M;
40
+ /**
41
+ * Method version-dependent parameter.
42
+ * @example `color`
43
+ */
44
+ param: MethodVersionedParams<M>;
45
+ /**
46
+ * @returns True if the support function should be called.
47
+ * @param args - function arguments.
48
+ */
49
+ shouldCheck: (...args: Args) => boolean;
50
+ };
51
+ }[MethodNameWithVersionedParams];
52
+ };
53
+ type WrappedFnReturnType<Fn extends AnyFn> = ReturnType<Fn> extends E.Either<any, any> ? E.Either<FunctionUnavailableError | LeftOfReturn<Fn>, RightOfReturn<Fn>> : ReturnType<Fn> extends TE.TaskEither<any, any> ? TE.TaskEither<FunctionUnavailableError | LeftOfReturn<Fn>, RightOfReturn<Fn>> : ReturnType<Fn> extends PromiseLike<infer U> ? TE.TaskEither<FunctionUnavailableError, U> : E.Either<FunctionUnavailableError, ReturnType<Fn>>;
54
+ export type WrappedFn<Fn extends AnyFn> = (...args: Parameters<Fn>) => WrappedFnReturnType<Fn>;
55
+ export type WithChecksFp<Fn extends AnyFn, HasSupportCheck extends boolean, SupportsMapKeySchema extends string = never> = WrappedFn<Fn> & {
56
+ /**
57
+ * A signal returning `true` if the function is available in the current environment and
58
+ * conditions.
59
+ *
60
+ * To be more accurate, the method checks the following:
61
+ * 1. The current environment is Telegram Mini Apps.
62
+ * 2. The SDK package is initialized (if this requirement is specified).
63
+ * 3. If passed, the `isSupported` signal returned true.
64
+ * 4. If passed, the `isMounted` signal returned true.
65
+ *
66
+ * *You should use this function when possible because it provides must-have code security
67
+ * mechanisms and makes a developer sure that he is using the package properly.*
68
+ *
69
+ * @returns True if the function is available in the current environment.
70
+ * @example
71
+ * if (backButton.show.isAvailable()) {
72
+ * backButton.show();
73
+ * }
74
+ */
75
+ isAvailable: Computed<boolean>;
76
+ /**
77
+ * Calls the function only in case it is available.
78
+ *
79
+ * It uses the `isAvailable` internally to check if the function is available for call.
80
+ * @example
81
+ * backButton.show.ifAvailable();
82
+ */
83
+ ifAvailable(...args: Parameters<Fn>): O.Option<ReturnType<Fn>>;
84
+ } & If<HasSupportCheck, {
85
+ /**
86
+ * The signal returning `true` if the function is supported by the Telegram client,
87
+ * including some possible additional conditions.
88
+ *
89
+ * It is highly recommended to use this signal only in certain narrow cases when only the
90
+ * function support check is required, but not its availability.
91
+ *
92
+ * This signal is not applying additional operations like checking if the current environment
93
+ * is Mini Apps and the SDK is initialized.
94
+ *
95
+ * To check if the function is available for use, use the `isAvailable` signal.
96
+ *
97
+ * @returns True if this function is supported.
98
+ * @see isAvailable
99
+ * @example
100
+ * if (backButton.show.isSupported()) {
101
+ * console.log('The method is supported');
102
+ * }
103
+ */
104
+ isSupported: Computed<boolean>;
105
+ }, {}> & If<IsNever<SupportsMapKeySchema>, {}, {
106
+ /**
107
+ * A map where the key is the function-specific option name and value is a signal indicating
108
+ * if it is supported by the current environment.
109
+ * @example
110
+ * if (miniApp.setHeaderColor.isAvailable()) {
111
+ * if (miniApp.setHeaderColor.supports('rgb')) {
112
+ * miniApp.setHeaderColor('#ffaabb');
113
+ * } else {
114
+ * miniApp.setHeaderColor('bg_color');
115
+ * }
116
+ * }
117
+ */
118
+ supports: (key: SupportsMapKeySchema) => boolean;
119
+ }>;
120
+ export type WithChecks<Fn extends AnyFn, HasSupportCheck extends boolean, SupportsMapKeySchema extends string = never> = ((...args: Parameters<Fn>) => MaybeMonadReturnTypeToCommon<Fn>) & Omit<WithChecksFp<Fn, HasSupportCheck, SupportsMapKeySchema>, 'ifAvailable'> & {
121
+ /**
122
+ * Calls the function only in case it is available.
123
+ *
124
+ * It uses the `isAvailable` internally to check if the function is available for call.
125
+ * @example
126
+ * backButton.show.ifAvailable();
127
+ */
128
+ ifAvailable(...args: Parameters<Fn>): {
129
+ ok: true;
130
+ data: MaybeMonadReturnTypeToCommon<Fn>;
131
+ } | {
132
+ ok: false;
133
+ };
134
+ };
135
+ export interface WithChecksOptions<Fn extends AnyFn> {
136
+ /**
137
+ * Signal returning true if the owning component is mounted.
138
+ */
139
+ isMounted?: () => boolean;
140
+ /**
141
+ * Signal returning true if the owning component is mounting.
142
+ */
143
+ isMounting?: () => boolean;
144
+ /**
145
+ * A value determining the function requirements. This will enable additional checks for
146
+ * the function before being called.
147
+ */
148
+ requires?: Require;
149
+ /**
150
+ * A signal to retrieve the current Telegram Mini Apps version or the value itself.
151
+ */
152
+ isTma: MaybeAccessor<boolean>;
153
+ /**
154
+ * A map where the key is a method name with versioned parameters, and the value is a tuple
155
+ * containing the method and parameter names. The third tuple value is a function accepting
156
+ * the wrapped function arguments and returning true if support check must be applied.
157
+ */
158
+ supports?: SupportsMap<Parameters<Fn>>;
159
+ /**
160
+ * A signal to retrieve the current Telegram Mini Apps version or the value itself.
161
+ */
162
+ version?: MaybeAccessor<Version>;
163
+ /**
164
+ * Allows to determine what exactly should be returned from the function - TaskEither or Either.
165
+ * There is no other way to know it until the function itself is called, but we need to perform
166
+ * some checks before calling it and return a valid value based on the function return type.
167
+ */
168
+ returns: Fn extends AnyFnAnyEither ? IfReturnsTask<Fn, 'task', 'either'> : ReturnType<Fn> extends PromiseLike<any> ? 'promise' : 'plain';
169
+ }
170
+ export declare function withChecksFp<Fn extends AnyFn, O extends WithChecksOptions<Fn>>(fn: Fn, options: O): WithChecksFp<Fn, OptionsBasedRequires<O>, OptionsBasedSupports<O>>;
171
+ export declare function createWithChecksFp<O extends WithChecksOptions<any>>(options: O): <Fn extends OptionsBasedFn<O>>(fn: Fn) => WithChecksFp<Fn, OptionsBasedRequires<O>, OptionsBasedSupports<O>>;
172
+ export {};
package/dist/index.cjs CHANGED
@@ -1,4 +1,2 @@
1
- "use strict";var Se=Object.defineProperty;var Pe=(e,t,s)=>t in e?Se(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var c=(e,t,s)=>Pe(e,typeof t!="symbol"?t+"":t,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function yt(e,t){let s;const n=()=>{s!==void 0&&t&&t(s),s=void 0};return[()=>s===void 0?s=e(n):s,n]}function K(e){const t=L(),{count:s}=t;t.unsubscribe(e),s&&!t.count&&Me()}function Et(e){return L().subscribe(e),()=>K(e)}class Re{constructor(t,s={}){this.scope=t,this.options=s}print(t,...s){const n=new Date,r=Intl.DateTimeFormat("en-GB",{hour:"2-digit",minute:"2-digit",second:"2-digit",fractionalSecondDigits:3,timeZone:"UTC"}).format(n),{textColor:i,bgColor:o}=this.options,a="font-weight: bold;padding: 0 5px;border-radius:5px";console[t](`%c${r}%c / %c${this.scope}`,`${a};background-color: lightblue;color:black`,"",`${a};${i?`color:${i};`:""}${o?`background-color:${o}`:""}`,...s)}error(...t){this.print("error",...t)}log(...t){this.print("log",...t)}}const Q=new Re("SDK",{bgColor:"forestgreen",textColor:"white"});let F=!1;const gt=({name:e,payload:t})=>{Q.log("Event received:",t?{name:e,payload:t}:{name:e})};function Te(e){F!==e&&(F=e,e?Et(gt):K(gt))}function Ce(...e){F&&Q.log(...e)}class S{constructor(){c(this,"listeners",new Map);c(this,"listenersCount",0);c(this,"subscribeListeners",[])}clear(){this.listeners.clear(),this.subscribeListeners=[]}get count(){return this.listenersCount+this.subscribeListeners.length}emit(t,...s){this.subscribeListeners.forEach(r=>r({event:t,args:s})),(this.listeners.get(t)||[]).forEach(([r,i])=>{r(...s),i&&this.off(t,r)})}on(t,s,n){let r=this.listeners.get(t);return r||this.listeners.set(t,r=[]),r.push([s,n]),this.listenersCount+=1,()=>this.off(t,s)}off(t,s){const n=this.listeners.get(t)||[];for(let r=0;r<n.length;r+=1)if(s===n[r][0]){n.splice(r,1),this.listenersCount-=1;return}}subscribe(t){return this.subscribeListeners.push(t),()=>this.unsubscribe(t)}unsubscribe(t){for(let s=0;s<this.subscribeListeners.length;s+=1)if(this.subscribeListeners[s]===t){this.subscribeListeners.splice(s,1);return}}}function J(e,t,s){return window.addEventListener(e,t,s),()=>window.removeEventListener(e,t,s)}function X(...e){let t=!1;const s=e.flat(1);return[n=>!t&&s.push(n),()=>{t||(t=!0,s.forEach(n=>n()))},t]}class q extends Error{constructor(t,s,n){super(s,{cause:n}),this.type=t,Object.setPrototypeOf(this,q.prototype)}}function f(e,t,s){return new q(e,t,s)}const vt="ERR_METHOD_UNSUPPORTED",St="ERR_METHOD_PARAMETER_UNSUPPORTED",Pt="ERR_UNKNOWN_ENV",Rt="ERR_INVOKE_CUSTOM_METHOD_RESPONSE",Tt="ERR_TIMED_OUT",Ct="ERR_UNEXPECTED_TYPE",Z="ERR_PARSE",At="ERR_NAVIGATION_LIST_EMPTY",It="ERR_NAVIGATION_CURSOR_INVALID",Ae="ERR_NAVIGATION_ITEM_INVALID",Ie="ERR_SSR_INIT",xt="ERR_INVALID_PATH_BASE";function T(){return f(Ct,"Value has unexpected type")}class B{constructor(t,s,n){this.parser=t,this.isOptional=s,this.type=n}parse(t){if(!(this.isOptional&&t===void 0))try{return this.parser(t)}catch(s){throw f(Z,`Unable to parse value${this.type?` as ${this.type}`:""}`,s)}}optional(){return this.isOptional=!0,this}}function C(e,t){return()=>new B(e,!1,t)}const w=C(e=>{if(typeof e=="boolean")return e;const t=String(e);if(t==="1"||t==="true")return!0;if(t==="0"||t==="false")return!1;throw T()},"boolean");function Nt(e,t){const s={};for(const n in e){const r=e[n];if(!r)continue;let i,o;if(typeof r=="function"||"parse"in r)i=n,o=typeof r=="function"?r:r.parse.bind(r);else{const{type:a}=r;i=r.from||n,o=typeof a=="function"?a:a.parse.bind(a)}try{const a=o(t(i));a!==void 0&&(s[n]=a)}catch(a){throw f(Z,`Unable to parse field "${n}"`,a)}}return s}function qt(e){let t=e;if(typeof t=="string"&&(t=JSON.parse(t)),typeof t!="object"||t===null||Array.isArray(t))throw T();return t}function g(e,t){return new B(s=>{const n=qt(s);return Nt(e,r=>n[r])},!1,t)}const y=C(e=>{if(typeof e=="number")return e;if(typeof e=="string"){const t=Number(e);if(!Number.isNaN(t))return t}throw T()},"number"),p=C(e=>{if(typeof e=="string"||typeof e=="number")return e.toString();throw T()},"string");function kt(e){return g({eventType:p(),eventData:t=>t}).parse(e)}function xe(){["TelegramGameProxy_receiveEvent","TelegramGameProxy","Telegram"].forEach(e=>{delete window[e]})}function Y(e,t){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:e,eventData:t}),source:window.parent}))}function Ne(){[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["Telegram","WebView","receiveEvent"]].forEach(e=>{let t=window;e.forEach((s,n,r)=>{if(n===r.length-1){t[s]=Y;return}s in t||(t[s]={}),t=t[s]})})}const qe={clipboard_text_received:g({req_id:p(),data:e=>e===null?e:p().optional().parse(e)}),custom_method_invoked:g({req_id:p(),result:e=>e,error:p().optional()}),popup_closed:{parse(e){return g({button_id:t=>t==null?void 0:p().parse(t)}).parse(e??{})}},viewport_changed:g({height:y(),width:e=>e==null?window.innerWidth:y().parse(e),is_state_stable:w(),is_expanded:w()})};function ke(){const e=new S,t=new S;t.subscribe(n=>{e.emit("event",{name:n.event,payload:n.args[0]})}),Ne();const[,s]=X(xe,J("resize",()=>{t.emit("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}),J("message",n=>{if(n.source!==window.parent)return;let r;try{r=kt(n.data)}catch{return}const{eventType:i,eventData:o}=r,a=qe[i];try{const h=a?a.parse(o):o;t.emit(...h?[i,h]:[i])}catch(h){Q.error(`An error occurred processing the "${i}" event from the Telegram application.
2
- Please, file an issue here:
3
- https://github.com/Telegram-Mini-Apps/tma.js/issues/new/choose`,r,h)}}),()=>e.clear(),()=>t.clear());return[{on:t.on.bind(t),off:t.off.bind(t),subscribe(n){return e.on("event",n)},unsubscribe(n){e.off("event",n)},get count(){return t.count+e.count}},s]}const[De,Me]=yt(e=>{const[t,s]=ke(),n=t.off.bind(t);return t.off=(r,i)=>{const{count:o}=t;n(r,i),o&&!t.count&&e()},[t,s]},([,e])=>e());function L(){return De()[0]}function k(e,t){L().off(e,t)}function b(e,t,s){return L().on(e,t,s)}function D(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Dt(e,t){const s=e.split("."),n=t.split("."),r=Math.max(s.length,n.length);for(let i=0;i<r;i+=1){const o=parseInt(s[i]||"0",10),a=parseInt(n[i]||"0",10);if(o!==a)return o>a?1:-1}return 0}function _(e,t){return Dt(e,t)<=0}function E(e,t,s){if(typeof s=="string"){if(e==="web_app_open_link"){if(t==="try_instant_view")return _("6.4",s);if(t==="try_browser")return _("7.6",s)}if(e==="web_app_set_header_color"&&t==="color")return _("6.9",s);if(e==="web_app_close"&&t==="return_back")return _("7.6",s)}switch(e){case"web_app_open_tg_link":case"web_app_open_invoice":case"web_app_setup_back_button":case"web_app_set_background_color":case"web_app_set_header_color":case"web_app_trigger_haptic_feedback":return _("6.1",t);case"web_app_open_popup":return _("6.2",t);case"web_app_close_scan_qr_popup":case"web_app_open_scan_qr_popup":case"web_app_read_text_from_clipboard":return _("6.4",t);case"web_app_switch_inline_query":return _("6.7",t);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return _("6.9",t);case"web_app_setup_settings_button":return _("6.10",t);case"web_app_biometry_get_info":case"web_app_biometry_open_settings":case"web_app_biometry_request_access":case"web_app_biometry_request_auth":case"web_app_biometry_update_token":return _("7.2",t);default:return["iframe_ready","iframe_will_reload","web_app_close","web_app_data_send","web_app_expand","web_app_open_link","web_app_ready","web_app_request_theme","web_app_request_viewport","web_app_setup_main_button","web_app_setup_closing_behavior"].includes(e)}}function Mt(e){return"external"in e&&D(e.external)&&"notify"in e.external&&typeof e.external.notify=="function"}function Vt(e){return"TelegramWebviewProxy"in e&&D(e.TelegramWebviewProxy)&&"postEvent"in e.TelegramWebviewProxy&&typeof e.TelegramWebviewProxy.postEvent=="function"}function tt(){try{return window.self!==window.top}catch{return!0}}const Ve="https://web.telegram.org";let Bt=Ve;function Be(e){Bt=e}function Lt(){return Bt}function P(e,t,s){let n={},r;if(!t&&!s?n={}:t&&s?(n=s,r=t):t&&("targetOrigin"in t?n=t:r=t),Ce("Posting event:",r?{event:e,data:r}:{event:e}),tt())return window.parent.postMessage(JSON.stringify({eventType:e,eventData:r}),n.targetOrigin||Lt());if(Mt(window)){window.external.notify(JSON.stringify({eventType:e,eventData:r}));return}if(Vt(window)){window.TelegramWebviewProxy.postEvent(e,JSON.stringify(r));return}throw f(Pt,"Unable to determine current environment and possible way to send event. You are probably trying to use Mini Apps method outside the Telegram application environment.")}function Ot(e){return(t,s)=>{if(!E(t,e))throw f(vt,`Method "${t}" is unsupported in Mini Apps version ${e}`);if(D(s)&&t==="web_app_set_header_color"&&"color"in s&&!E(t,"color",e))throw f(St,`Parameter "color" of "${t}" method is unsupported in Mini Apps version ${e}`);return P(t,s)}}function et(e){return({req_id:t})=>t===e}function Ut(e){return f(Tt,`Timeout reached: ${e}ms`)}function st(e,t){return Promise.race([typeof e=="function"?e():e,new Promise((s,n)=>{setTimeout(()=>{n(Ut(t))},t)})])}async function l(e){let t;const s=new Promise(a=>t=a),{event:n,capture:r,timeout:i}=e,[,o]=X((Array.isArray(n)?n:[n]).map(a=>b(a,h=>{(!r||(Array.isArray(n)?r({event:a,payload:h}):r(h)))&&t(h)})));try{return(e.postEvent||P)(e.method,e.params),await(i?st(s,i):s)}finally{o()}}async function v(e,t,s,n={}){const{result:r,error:i}=await l({...n,method:"web_app_invoke_custom_method",event:"custom_method_invoked",params:{method:e,params:t,req_id:s},capture:et(s)});if(i)throw f(Rt,i);return r}function V(...e){return e.map(t=>{if(typeof t=="string")return t;if(D(t))return V(Object.entries(t).map(s=>s[1]&&s[0]));if(Array.isArray(t))return V(...t)}).filter(Boolean).join(" ")}function Le(...e){return e.reduce((t,s)=>(D(s)&&Object.entries(s).forEach(([n,r])=>{const i=V(t[n],r);i.length&&(t[n]=i)}),t),{})}function O(e){return/^#[\da-f]{6}$/i.test(e)}function $t(e){return/^#[\da-f]{3}$/i.test(e)}function nt(e){const t=e.replace(/\s/g,"").toLowerCase();if(O(t))return t;if($t(t)){let n="#";for(let r=0;r<3;r+=1)n+=t[1+r].repeat(2);return n}const s=t.match(/^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/)||t.match(/^rgba\((\d{1,3}),(\d{1,3}),(\d{1,3}),\d{1,3}\)$/);if(!s)throw new Error(`Value "${e}" does not satisfy any of known RGB formats.`);return s.slice(1).reduce((n,r)=>{const i=parseInt(r,10).toString(16);return n+(i.length===1?"0":"")+i},"#")}function rt(e){const t=nt(e);return Math.sqrt([.299,.587,.114].reduce((s,n,r)=>{const i=parseInt(t.slice(1+r*2,1+(r+1)*2),16);return s+i*i*n},0))<120}class Oe{constructor(t){c(this,"ee",new S);c(this,"on",this.ee.on.bind(this.ee));c(this,"off",this.ee.off.bind(this.ee));this.state=t}clone(){return{...this.state}}set(t,s){Object.entries(typeof t=="string"?{[t]:s}:t).reduce((r,[i,o])=>this.state[i]===o||o===void 0?r:(this.state[i]=o,this.ee.emit(`change:${i}`,o),!0),!1)&&this.ee.emit("change",this.state)}get(t){return this.state[t]}}class it{constructor(t){c(this,"state");c(this,"get");c(this,"set");c(this,"clone");this.state=new Oe(t),this.set=this.state.set.bind(this.state),this.get=this.state.get.bind(this.state),this.clone=this.state.clone.bind(this.state)}}function Wt(e,t){return s=>E(t[s],e)}class ot extends it{constructor(s,n,r){super(s);c(this,"supports");this.supports=Wt(n,r)}}class Ht extends ot{constructor(s,n,r){super({isVisible:s},n,{show:"web_app_setup_back_button",hide:"web_app_setup_back_button"});c(this,"on",(s,n)=>s==="click"?b("back_button_pressed",n):this.state.on(s,n));c(this,"off",(s,n)=>s==="click"?k("back_button_pressed",n):this.state.off(s,n));this.postEvent=r}set isVisible(s){this.set("isVisible",s),this.postEvent("web_app_setup_back_button",{is_visible:s})}get isVisible(){return this.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}const at=C(e=>e instanceof Date?e:new Date(y().parse(e)*1e3),"Date");function U(e,t){return new B(s=>{if(typeof s!="string"&&!(s instanceof URLSearchParams))throw T();const n=typeof s=="string"?new URLSearchParams(s):s;return Nt(e,r=>{const i=n.get(r);return i===null?void 0:i})},!1,t)}const Ue=g({id:y(),type:p(),title:p(),photoUrl:{type:p().optional(),from:"photo_url"},username:p().optional()},"Chat").optional(),bt=g({addedToAttachmentMenu:{type:w().optional(),from:"added_to_attachment_menu"},allowsWriteToPm:{type:w().optional(),from:"allows_write_to_pm"},firstName:{type:p(),from:"first_name"},id:y(),isBot:{type:w().optional(),from:"is_bot"},isPremium:{type:w().optional(),from:"is_premium"},languageCode:{type:p().optional(),from:"language_code"},lastName:{type:p().optional(),from:"last_name"},photoUrl:{type:p().optional(),from:"photo_url"},username:p().optional()},"User").optional();function Gt(){return U({authDate:{type:at(),from:"auth_date"},canSendAfter:{type:y().optional(),from:"can_send_after"},chat:Ue,chatInstance:{type:p().optional(),from:"chat_instance"},chatType:{type:p().optional(),from:"chat_type"},hash:p(),queryId:{type:p().optional(),from:"query_id"},receiver:bt,startParam:{type:p().optional(),from:"start_param"},user:bt},"InitData")}const jt=C(e=>nt(p().parse(e)),"rgb");function $e(e){return e.replace(/_[a-z]/g,t=>t[1].toUpperCase())}function We(e){return e.replace(/[A-Z]/g,t=>`_${t.toLowerCase()}`)}const zt=C(e=>{const t=jt().optional();return Object.entries(qt(e)).reduce((s,[n,r])=>(s[$e(n)]=t.parse(r),s),{})},"ThemeParams");function $(e){return U({botInline:{type:w().optional(),from:"tgWebAppBotInline"},initData:{type:Gt().optional(),from:"tgWebAppData"},initDataRaw:{type:p().optional(),from:"tgWebAppData"},platform:{type:p(),from:"tgWebAppPlatform"},showSettings:{type:w().optional(),from:"tgWebAppShowSettings"},startParam:{type:p().optional(),from:"tgWebAppStartParam"},themeParams:{type:zt(),from:"tgWebAppThemeParams"},version:{type:p(),from:"tgWebAppVersion"}}).parse(e)}function Ft(e){return $(e.replace(/^[^?#]*[?#]/,"").replace(/[?#]/g,"&"))}function He(){return Ft(window.location.href)}function Jt(){return performance.getEntriesByType("navigation")[0]}function Ge(){const e=Jt();if(!e)throw new Error("Unable to get first navigation entry.");return Ft(e.name)}function Yt(e){return`tma.js/${e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}`}function Kt(e,t){sessionStorage.setItem(Yt(e),JSON.stringify(t))}function Qt(e){const t=sessionStorage.getItem(Yt(e));try{return t?JSON.parse(t):void 0}catch{}}function je(){return $(Qt("launchParams")||"")}function ct(e){return JSON.stringify(Object.fromEntries(Object.entries(e).map(([t,s])=>[We(t),s])))}function Xt(e){const{initDataRaw:t,themeParams:s,platform:n,version:r,showSettings:i,startParam:o,botInline:a}=e,h=new URLSearchParams;return h.set("tgWebAppPlatform",n),h.set("tgWebAppThemeParams",ct(s)),h.set("tgWebAppVersion",r),t&&h.set("tgWebAppData",t),o&&h.set("tgWebAppStartParam",o),typeof i=="boolean"&&h.set("tgWebAppShowSettings",i?"1":"0"),typeof a=="boolean"&&h.set("tgWebAppBotInline",a?"1":"0"),h.toString()}function Zt(e){Kt("launchParams",Xt(e))}function te(){for(const e of[He,Ge,je])try{const t=e();return Zt(t),t}catch{}throw new Error("Unable to retrieve launch parameters from any known source.")}function ht(){const e=Jt();return!!(e&&e.type==="reload")}function ze(){let e=0;return()=>(e+=1).toString()}const[Fe]=yt(ze);function d(e,t){return()=>{const s=te(),n={...s,postEvent:Ot(s.version),createRequestId:Fe()};if(typeof e=="function")return e(n);const[r,i,o]=X(),a=t({...n,state:ht()?Qt(e):void 0,addCleanup:r}),h=u=>(o||r(u.on("change",ve=>{Kt(e,ve)})),u);return[a instanceof Promise?a.then(h):h(a),i]}}const Je=d("backButton",({postEvent:e,version:t,state:s={isVisible:!1}})=>new Ht(s.isVisible,t,e));class M extends ot{constructor(){super(...arguments);c(this,"on",this.state.on.bind(this.state));c(this,"off",this.state.off.bind(this.state))}}function ee(e){const t=e.available?e:{available:!1,device_id:"",token_saved:!1,access_requested:!1,access_granted:!1,type:""};return{available:!0,type:t.type,deviceId:t.device_id,tokenSaved:t.token_saved,accessRequested:t.access_requested,accessGranted:t.access_granted}}class se extends M{constructor({postEvent:s,version:n,...r}){super(r,n,{auth:"web_app_biometry_request_auth",openSettings:"web_app_biometry_open_settings",requestAccess:"web_app_biometry_request_access",updateToken:"web_app_biometry_update_token"});c(this,"postEvent");c(this,"authPromise");c(this,"accessPromise");this.postEvent=s}get available(){return this.get("available")}get accessGranted(){return this.get("accessGranted")}get accessRequested(){return this.get("accessRequested")}async authenticate({reason:s,...n}){return this.authPromise||(this.authPromise=l({...n,method:"web_app_biometry_request_auth",event:"biometry_auth_requested",postEvent:this.postEvent,params:{reason:(s||"").trim()}}).then(({token:r})=>r).finally(()=>this.authPromise=void 0)),this.authPromise}get deviceId(){return this.get("deviceId")}openSettings(){this.postEvent("web_app_biometry_open_settings")}requestAccess({reason:s,...n}={}){return this.accessPromise||(this.accessPromise=l({...n,postEvent:this.postEvent,method:"web_app_biometry_request_access",event:"biometry_info_received",params:{reason:s||""}}).then(r=>{const i=ee(r);return this.set(i),i.accessGranted}).finally(()=>this.accessPromise=void 0)),this.accessPromise}get biometryType(){return this.get("biometryType")}get tokenSaved(){return this.get("tokenSaved")}async updateToken({token:s,...n}={}){return["removed","updated"].includes((await l({...n,postEvent:this.postEvent,method:"web_app_biometry_update_token",event:"biometry_token_updated",params:{token:s||""}})).status)}}async function ne(e){return ee(await l({...e||{},method:"web_app_biometry_get_info",event:"biometry_info_received"}))}const Ye=d("biometryManager",async({postEvent:e,version:t,state:s})=>new se({...s||E("web_app_biometry_get_info",t)?s||await ne({timeout:1e3}):{available:!1,accessGranted:!1,accessRequested:!1,tokenSaved:!1,deviceId:""},version:t,postEvent:e}));class pt extends it{constructor(){super(...arguments);c(this,"on",this.state.on.bind(this.state));c(this,"off",this.state.off.bind(this.state))}}class re extends pt{constructor(t,s){super({isConfirmationNeeded:t}),this.postEvent=s}set isConfirmationNeeded(t){this.set("isConfirmationNeeded",t),this.postEvent("web_app_setup_closing_behavior",{need_confirmation:t})}get isConfirmationNeeded(){return this.get("isConfirmationNeeded")}disableConfirmation(){this.isConfirmationNeeded=!1}enableConfirmation(){this.isConfirmationNeeded=!0}}const Ke=d("closingBehavior",({postEvent:e,state:t={isConfirmationNeeded:!1}})=>new re(t.isConfirmationNeeded,e));class ut{constructor(t,s){c(this,"supports");this.supports=Wt(t,s)}}function Qe(e){if(Array.isArray(e))return e;if(typeof e=="string")try{const t=JSON.parse(e);if(Array.isArray(t))return t}catch{}throw T()}class Xe extends B{constructor(s,n,r){super(Qe,n,r);c(this,"itemParser");this.itemParser=typeof s=="function"?s:s.parse.bind(s)}parse(s){const n=super.parse(s);return n===void 0?n:n.map(this.itemParser)}of(s){return this.itemParser=typeof s=="function"?s:s.parse.bind(s),this}}function ie(e){return new Xe(t=>t,!1,e)}function wt(e,t){return Object.fromEntries(e.map(s=>[s,t]))}class oe extends ut{constructor(t,s,n){super(t,{delete:"web_app_invoke_custom_method",get:"web_app_invoke_custom_method",getKeys:"web_app_invoke_custom_method",set:"web_app_invoke_custom_method"}),this.createRequestId=s,this.postEvent=n}async delete(t,s={}){const n=Array.isArray(t)?t:[t];n.length&&await v("deleteStorageValues",{keys:n},this.createRequestId(),{...s,postEvent:this.postEvent})}async getKeys(t={}){return ie().of(p()).parse(await v("getStorageKeys",{},this.createRequestId(),{...t,postEvent:this.postEvent}))}async get(t,s={}){const n=Array.isArray(t)?t:[t];if(!n.length)return wt(n,"");const r=await v("getStorageValues",{keys:n},this.createRequestId(),{...s,postEvent:this.postEvent}),i=g(wt(n,p()),"CloudStorageData").parse(r);return Array.isArray(t)?i:i[t]}async set(t,s,n={}){await v("saveStorageValue",{key:t,value:s},this.createRequestId(),{...n,postEvent:this.postEvent})}}const Ze=d(({createRequestId:e,postEvent:t,version:s})=>new oe(s,e,t));class ae extends ut{constructor(t,s){super(t,{impactOccurred:"web_app_trigger_haptic_feedback",notificationOccurred:"web_app_trigger_haptic_feedback",selectionChanged:"web_app_trigger_haptic_feedback"}),this.postEvent=s}impactOccurred(t){this.postEvent("web_app_trigger_haptic_feedback",{type:"impact",impact_style:t})}notificationOccurred(t){this.postEvent("web_app_trigger_haptic_feedback",{type:"notification",notification_type:t})}selectionChanged(){this.postEvent("web_app_trigger_haptic_feedback",{type:"selection_change"})}}const ts=d(({version:e,postEvent:t})=>new ae(e,t));class ce{constructor(t){this.initData=t}get authDate(){return this.initData.authDate}get canSendAfter(){return this.initData.canSendAfter}get canSendAfterDate(){const{canSendAfter:t}=this;return t?new Date(this.authDate.getTime()+t*1e3):void 0}get chat(){return this.initData.chat}get chatType(){return this.initData.chatType}get chatInstance(){return this.initData.chatInstance}get hash(){return this.initData.hash}get queryId(){return this.initData.queryId}get receiver(){return this.initData.receiver}get startParam(){return this.initData.startParam}get user(){return this.initData.user}}const es=d(({initData:e})=>e?new ce(e):void 0);function ss(e){return Gt().parse(e)}class he extends M{constructor(t,s,n){super({isOpened:t},s,{open:"web_app_open_invoice"}),this.postEvent=n}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t,s){if(this.isOpened)throw new Error("Invoice is already opened");let n;if(!s)n=t;else{const{hostname:r,pathname:i}=new URL(t,window.location.href);if(r!=="t.me")throw new Error(`Incorrect hostname: ${r}`);const o=i.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/);if(!o)throw new Error('Link pathname has incorrect format. Expected to receive "/invoice/{slug}" or "/${slug}"');[,,n]=o}this.isOpened=!0;try{return(await l({method:"web_app_open_invoice",event:"invoice_closed",params:{slug:n},postEvent:this.postEvent,capture(i){return n===i.slug}})).status}finally{this.isOpened=!1}}}const ns=d(({version:e,postEvent:t})=>new he(!1,e,t));class pe extends it{constructor({postEvent:s,...n}){super(n);c(this,"postEvent");c(this,"on",(s,n)=>s==="click"?b("main_button_pressed",n):this.state.on(s,n));c(this,"off",(s,n)=>s==="click"?k("main_button_pressed",n):this.state.off(s,n));this.postEvent=s}get bgColor(){return this.get("bgColor")}commit(){this.text!==""&&this.postEvent("web_app_setup_main_button",{is_visible:this.isVisible,is_active:this.isEnabled,is_progress_visible:this.isLoaderVisible,text:this.text,color:this.bgColor,text_color:this.textColor})}disable(){return this.isEnabled=!1,this}enable(){return this.isEnabled=!0,this}hide(){return this.isVisible=!1,this}hideLoader(){return this.isLoaderVisible=!1,this}set isEnabled(s){this.setParams({isEnabled:s})}get isEnabled(){return this.get("isEnabled")}set isLoaderVisible(s){this.setParams({isLoaderVisible:s})}get isLoaderVisible(){return this.get("isLoaderVisible")}set isVisible(s){this.setParams({isVisible:s})}get isVisible(){return this.get("isVisible")}show(){return this.isVisible=!0,this}showLoader(){return this.isLoaderVisible=!0,this}setText(s){return this.setParams({text:s})}setTextColor(s){return this.setParams({textColor:s})}setBgColor(s){return this.setParams({bgColor:s})}setParams(s){return this.set(s),this.commit(),this}get text(){return this.get("text")}get textColor(){return this.get("textColor")}}const rs=d("mainButton",({postEvent:e,themeParams:t,state:s={isVisible:!1,isEnabled:!1,text:"",isLoaderVisible:!1,textColor:t.buttonTextColor||"#ffffff",bgColor:t.buttonColor||"#000000"}})=>new pe({...s,postEvent:e}));function is(){return U({contact:g({userId:{type:y(),from:"user_id"},phoneNumber:{type:p(),from:"phone_number"},firstName:{type:p(),from:"first_name"},lastName:{type:p().optional(),from:"last_name"}}),authDate:{type:at(),from:"auth_date"},hash:p()},"RequestedContact")}function ue(e,t){return s=>{const[n,r]=t[s];return E(n,r,e)}}function os(e){return new Promise(t=>{setTimeout(t,e)})}class le extends M{constructor({postEvent:s,createRequestId:n,version:r,botInline:i,...o}){super(o,r,{requestPhoneAccess:"web_app_request_phone",requestWriteAccess:"web_app_request_write_access",switchInlineQuery:"web_app_switch_inline_query",setHeaderColor:"web_app_set_header_color",setBackgroundColor:"web_app_set_background_color"});c(this,"botInline");c(this,"postEvent");c(this,"createRequestId");c(this,"requestPhoneAccessPromise");c(this,"requestWriteAccessPromise");c(this,"supportsParam");this.createRequestId=n,this.postEvent=s,this.botInline=i;const a=this.supports.bind(this);this.supports=h=>a(h)?h!=="switchInlineQuery"||i:!1,this.supportsParam=ue(r,{"setHeaderColor.color":["web_app_set_header_color","color"]})}async getRequestedContact({timeout:s=1e4}={}){return is().parse(await v("getRequestedContact",{},this.createRequestId(),{postEvent:this.postEvent,timeout:s}))}get bgColor(){return this.get("bgColor")}close(s){this.postEvent("web_app_close",{return_back:s})}get headerColor(){return this.get("headerColor")}get isBotInline(){return this.botInline}get isDark(){return rt(this.bgColor)}ready(){this.postEvent("web_app_ready")}async requestContact({timeout:s=5e3}={}){try{return await this.getRequestedContact()}catch{}if(await this.requestPhoneAccess()!=="sent")throw new Error("Access denied.");const r=Date.now()+s;let i=50;return st(async()=>{for(;Date.now()<r;){try{return await this.getRequestedContact()}catch{}await os(i),i+=50}throw Ut(s)},s)}async requestPhoneAccess(s={}){return this.requestPhoneAccessPromise||(this.requestPhoneAccessPromise=l({...s,method:"web_app_request_phone",event:"phone_requested",postEvent:this.postEvent}).then(({status:n})=>n).finally(()=>this.requestPhoneAccessPromise=void 0)),this.requestPhoneAccessPromise}async requestWriteAccess(s={}){return this.requestWriteAccessPromise||(this.requestWriteAccessPromise=l({...s,method:"web_app_request_write_access",event:"write_access_requested",postEvent:this.postEvent}).then(({status:n})=>n).finally(()=>this.requestWriteAccessPromise=void 0)),this.requestWriteAccessPromise}sendData(s){const{size:n}=new Blob([s]);if(!n||n>4096)throw new Error(`Passed data has incorrect size: ${n}`);this.postEvent("web_app_data_send",{data:s})}setHeaderColor(s){this.postEvent("web_app_set_header_color",O(s)?{color:s}:{color_key:s}),this.set("headerColor",s)}setBgColor(s){this.postEvent("web_app_set_background_color",{color:s}),this.set("bgColor",s)}switchInlineQuery(s,n=[]){if(!this.supports("switchInlineQuery")&&!this.isBotInline)throw new Error("Method is unsupported because Mini App should be launched in inline mode.");this.postEvent("web_app_switch_inline_query",{query:s,chat_types:n})}}const as=d("miniApp",({themeParams:e,botInline:t=!1,state:s={bgColor:e.bgColor||"#ffffff",headerColor:e.headerBgColor||"#000000"},...n})=>new le({...n,...s,botInline:t}));function cs(e){const t=e.message.trim(),s=(e.title||"").trim(),n=e.buttons||[];let r;if(s.length>64)throw new Error(`Title has incorrect size: ${s.length}`);if(!t.length||t.length>256)throw new Error(`Message has incorrect size: ${t.length}`);if(n.length>3)throw new Error(`Buttons have incorrect size: ${n.length}`);return n.length?r=n.map(i=>{const{id:o=""}=i;if(o.length>64)throw new Error(`Button ID has incorrect size: ${o}`);if(!i.type||i.type==="default"||i.type==="destructive"){const a=i.text.trim();if(!a.length||a.length>64){const h=i.type||"default";throw new Error(`Button text with type "${h}" has incorrect size: ${i.text.length}`)}return{...i,text:a,id:o}}return{...i,id:o}}):r=[{type:"close",id:""}],{title:s,message:t,buttons:r}}class de extends M{constructor(t,s,n){super({isOpened:t},s,{open:"web_app_open_popup"}),this.postEvent=n}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t){if(this.isOpened)throw new Error("Popup is already opened.");this.isOpened=!0;try{const{button_id:s=null}=await l({event:"popup_closed",method:"web_app_open_popup",postEvent:this.postEvent,params:cs(t)});return s}finally{this.isOpened=!1}}}const hs=d(({postEvent:e,version:t})=>new de(!1,t,e));class _e extends M{constructor(t,s,n){super({isOpened:t},s,{close:"web_app_close_scan_qr_popup",open:"web_app_open_scan_qr_popup"}),this.postEvent=n}close(){this.postEvent("web_app_close_scan_qr_popup"),this.isOpened=!1}set isOpened(t){this.set("isOpened",t)}get isOpened(){return this.get("isOpened")}async open(t){if(this.isOpened)throw new Error("The scanner is already opened");const{text:s,capture:n}=(typeof t=="string"?{text:t}:t)||{};this.isOpened=!0;try{const i=(await l({method:"web_app_open_scan_qr_popup",event:["qr_text_received","scan_qr_popup_closed"],postEvent:this.postEvent,params:{text:s},capture(o){return o.event==="scan_qr_popup_closed"||!n||n(o.payload)}})||{}).data||null;return i&&this.close(),i}finally{this.isOpened=!1}}}const ps=d(({version:e,postEvent:t})=>new _e(!1,e,t));class fe extends ot{constructor(s,n,r){super({isVisible:s},n,{show:"web_app_setup_settings_button",hide:"web_app_setup_settings_button"});c(this,"on",(s,n)=>s==="click"?b("settings_button_pressed",n):this.state.on(s,n));c(this,"off",(s,n)=>s==="click"?k("settings_button_pressed",n):this.state.off(s,n));this.postEvent=r}set isVisible(s){this.set("isVisible",s),this.postEvent("web_app_setup_settings_button",{is_visible:s})}get isVisible(){return this.get("isVisible")}hide(){this.isVisible=!1}show(){this.isVisible=!0}}const us=d("settingsButton",({version:e,postEvent:t,state:s={isVisible:!1}})=>new fe(s.isVisible,e,t));function lt(e){return zt().parse(e)}class ge extends pt{get accentTextColor(){return this.get("accentTextColor")}get bgColor(){return this.get("bgColor")}get buttonColor(){return this.get("buttonColor")}get buttonTextColor(){return this.get("buttonTextColor")}get destructiveTextColor(){return this.get("destructiveTextColor")}getState(){return this.clone()}get headerBgColor(){return this.get("headerBgColor")}get hintColor(){return this.get("hintColor")}get isDark(){return!this.bgColor||rt(this.bgColor)}get linkColor(){return this.get("linkColor")}get secondaryBgColor(){return this.get("secondaryBgColor")}get sectionBgColor(){return this.get("sectionBgColor")}get sectionHeaderTextColor(){return this.get("sectionHeaderTextColor")}get sectionSeparatorColor(){return this.get("sectionHeaderTextColor")}listen(){return b("theme_changed",t=>{this.set(lt(t.theme_params))})}get subtitleTextColor(){return this.get("subtitleTextColor")}get textColor(){return this.get("textColor")}}const ls=d("themeParams",({themeParams:e,state:t=e,addCleanup:s})=>{const n=new ge(t);return s(n.listen()),n});function ds(e={}){return l({...e,method:"web_app_request_theme",event:"theme_changed"}).then(lt)}function x(e,t){return e.startsWith(t)?e:`${t}${e}`}function R(e){return new URL(typeof e=="string"?e:`${e.pathname||""}${x(e.search||"","?")}${x(e.hash||"","#")}`,"http://a")}class be extends ut{constructor(s,n,r){super(s,{readTextFromClipboard:"web_app_read_text_from_clipboard"});c(this,"supportsParam");this.version=s,this.createRequestId=n,this.postEvent=r,this.supportsParam=ue(s,{"openLink.tryInstantView":["web_app_open_link","try_instant_view"]})}openLink(s,n){const r=R(s).toString();if(!E("web_app_open_link",this.version)){window.open(r,"_blank");return}const i=typeof n=="boolean"?{tryInstantView:n}:n||{};this.postEvent("web_app_open_link",{url:r,try_browser:i.tryBrowser,try_instant_view:i.tryInstantView})}openTelegramLink(s){const{hostname:n,pathname:r,search:i}=new URL(s,"https://t.me");if(n!=="t.me")throw new Error(`URL has not allowed hostname: ${n}. Only "t.me" is allowed`);if(!E("web_app_open_tg_link",this.version)){window.location.href=s;return}this.postEvent("web_app_open_tg_link",{path_full:r+i})}async readTextFromClipboard(){const s=this.createRequestId(),{data:n=null}=await l({method:"web_app_read_text_from_clipboard",event:"clipboard_text_received",postEvent:this.postEvent,params:{req_id:s},capture:et(s)});return n}shareURL(s,n){this.openTelegramLink("https://t.me/share/url?"+new URLSearchParams({url:s,text:n||""}).toString().replace(/\+/g,"%20"))}}const _s=d(({version:e,postEvent:t,createRequestId:s})=>new be(e,s,t));async function dt(e={}){const{is_expanded:t,is_state_stable:s,...n}=await l({...e,method:"web_app_request_viewport",event:"viewport_changed"});return{...n,isExpanded:t,isStateStable:s}}function A(e){return e<0?0:e}class we extends pt{constructor({postEvent:s,stableHeight:n,height:r,width:i,isExpanded:o}){super({height:A(r),isExpanded:o,stableHeight:A(n),width:A(i)});c(this,"postEvent");this.postEvent=s}async sync(s){const{isStateStable:n,...r}=await dt(s);this.set({...r,stableHeight:n?r.height:this.get("stableHeight")})}get height(){return this.get("height")}get stableHeight(){return this.get("stableHeight")}listen(){return b("viewport_changed",s=>{const{height:n,width:r,is_expanded:i,is_state_stable:o}=s,a=A(n);this.set({height:a,isExpanded:i,width:A(r),...o?{stableHeight:a}:{}})})}get isExpanded(){return this.get("isExpanded")}get width(){return this.get("width")}expand(){this.postEvent("web_app_expand"),this.set("isExpanded",!0)}get isStable(){return this.stableHeight===this.height}}const fs=d("viewport",async({state:e,platform:t,postEvent:s,addCleanup:n})=>{let r=!1,i=0,o=0,a=0;if(e)r=e.isExpanded,i=e.height,o=e.width,a=e.stableHeight;else if(["macos","tdesktop","unigram","webk","weba","web"].includes(t))r=!0,i=window.innerHeight,o=window.innerWidth,a=window.innerHeight;else{const u=await dt({timeout:1e3,postEvent:s});r=u.isExpanded,i=u.height,o=u.width,a=u.isStateStable?i:0}const h=new we({postEvent:s,height:i,width:o,stableHeight:a,isExpanded:r});return n(h.listen()),h});function m(e,t){document.documentElement.style.setProperty(e,t)}function gs(e,t,s){s||(s=a=>`--tg-${a}-color`);const n=s("header"),r=s("bg"),i=()=>{const{headerColor:a}=e;if(O(a))m(n,a);else{const{bgColor:h,secondaryBgColor:u}=t;a==="bg_color"&&h?m(n,h):a==="secondary_bg_color"&&u&&m(n,u)}m(r,e.bgColor)},o=[t.on("change",i),e.on("change",i)];return i(),()=>o.forEach(a=>a())}function bs(e,t){t||(t=n=>`--tg-theme-${n.replace(/[A-Z]/g,r=>`-${r.toLowerCase()}`)}`);const s=()=>{Object.entries(e.getState()).forEach(([n,r])=>{r&&m(t(n),r)})};return s(),e.on("change",s)}function ws(e,t){t||(t=u=>`--tg-viewport-${u}`);const[s,n,r]=["height","width","stable-height"].map(u=>t(u)),i=()=>m(s,`${e.height}px`),o=()=>m(n,`${e.width}px`),a=()=>m(r,`${e.stableHeight}px`),h=[e.on("change:height",i),e.on("change:width",o),e.on("change:stableHeight",a)];return i(),o(),a(),()=>h.forEach(u=>u())}function ms(e=!0){const t=[b("reload_iframe",()=>{P("iframe_will_reload"),window.location.reload()})],s=()=>t.forEach(n=>n());if(e){const n=document.createElement("style");n.id="telegram-custom-styles",document.head.appendChild(n),t.push(b("set_custom_style",r=>{n.innerHTML=r}),()=>document.head.removeChild(n))}return P("iframe_ready",{reload_supported:!0}),s}function ys(){return typeof window>"u"}async function Es(){if(Vt(window))return!0;try{return await l({method:"web_app_request_theme",event:"theme_changed",timeout:100}),!0}catch{return!1}}function vs(e){const t=typeof e=="string"?$(e):e;Zt(t);function s(r){if(typeof r=="string")try{const{eventType:i}=kt(r);i==="web_app_request_theme"&&Y("theme_changed",{theme_params:JSON.parse(ct(t.themeParams))}),i==="web_app_request_viewport"&&Y("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}catch{}}if(tt()){const r=window.parent.postMessage.bind(window.parent);window.parent.postMessage=i=>{s(i),r(i)};return}if(Mt(window)){const r=window.external.notify.bind(window.external);window.external.notify=i=>{s(i),r(i)};return}const n=window.TelegramWebviewProxy;window.TelegramWebviewProxy={...n||{},postEvent(...r){s(JSON.stringify({eventType:r[0],eventData:r[1]})),n&&n.postEvent(...r)}}}function me(e){return e instanceof q}function Ss(e,t){return me(e)&&e.type===t}function W(e,t){let s,n,r;return typeof e=="string"?s=e:(s=e.pathname===void 0?t:e.pathname,n=e.params,r=e.id),Object.freeze({id:r||(Math.random()*2**14|0).toString(16),pathname:s,params:n})}class ye{constructor(t,s,n=P){c(this,"history");c(this,"ee",new S);c(this,"attached",!1);c(this,"back",()=>this.go(-1));c(this,"on",this.ee.on.bind(this.ee));c(this,"off",this.ee.off.bind(this.ee));if(this._index=s,this.postEvent=n,t.length===0)throw f(At,"History should not be empty.");if(s<0||s>=t.length)throw f(It,"Index should not be zero and higher or equal than history size.");this.history=t.map(r=>W(r,""))}attach(){this.attached||(this.attached=!0,this.sync(),b("back_button_pressed",this.back))}get current(){return this.history[this.index]}detach(){this.attached=!1,k("back_button_pressed",this.back)}forward(){this.go(1)}go(t,s){const n=this.index+t,r=Math.min(Math.max(0,n),this.history.length-1);(n===r||s)&&this.replaceAndMove(r,this.history[r])}goTo(t,s){this.go(t-this.index,s)}get hasPrev(){return this.index>0}get hasNext(){return this.index!==this.history.length-1}get index(){return this._index}push(t){this.hasNext&&this.history.splice(this.index+1),this.replaceAndMove(this.index+1,W(t,this.current.pathname))}replace(t){this.replaceAndMove(this.index,W(t,this.current.pathname))}replaceAndMove(t,s){const n=t-this.index;if(!n&&this.current===s)return;const r=this.current;if(this.index!==t){const i=this._index;this._index=t,this.attached&&i>0!=t>0&&this.sync()}this.history[t]=s,this.ee.emit("change",{navigator:this,from:r,to:this.current,delta:n})}sync(){this.postEvent("web_app_setup_back_button",{is_visible:!!this.index})}}function H({params:e,...t}){return{...e||{hash:"",search:""},...t}}function N(e){const t=typeof e=="string"?e.startsWith("/"):!!(e.pathname&&e.pathname.startsWith("/")),s=R(e);return`${t?s.pathname:s.pathname.slice(1)}${s.search}${s.hash}`}function G(e,t,s){let n,r;typeof e=="string"?n=e:(n=N(e),s=e.state,r=e.id);const{pathname:i,search:o,hash:a}=new URL(n,`http://a${x(t,"/")}`);return{id:r,pathname:i,params:{hash:a,search:o,state:s}}}async function I(e){return e===0?!0:Promise.race([new Promise(t=>{const s=J("popstate",()=>{s(),t(!0)});window.history.go(e)}),new Promise(t=>{setTimeout(t,50,!1)})])}async function Ps(){if(window.history.length<=1||(window.history.pushState(null,""),await I(1-window.history.length)))return;let t=await I(-1);for(;t;)t=await I(-1)}function _t(e){return R(e).pathname}const mt=0,j=1,z=2;class ft{constructor(t,s,{postEvent:n,hashMode:r="classic",base:i}={}){c(this,"navigator");c(this,"ee",new S);c(this,"hashMode");c(this,"base");c(this,"attached",!1);c(this,"onPopState",({state:t})=>{if(t===null)return this.push(this.parsePath(window.location.href));t===mt?window.history.forward():t===j&&this.back(),t===z&&this.forward()});c(this,"onNavigatorChange",async({to:t,from:s,delta:n})=>{this.attached&&await this.syncHistory(),this.ee.emit("change",{delta:n,from:H(s),to:H(t),navigator:this})});c(this,"on",this.ee.on.bind(this.ee));c(this,"off",this.ee.off.bind(this.ee));this.navigator=new ye(t.map(o=>G(o,"/")),s,n),this.navigator.on("change",o=>{this.onNavigatorChange(o)}),this.hashMode=r,this.base=_t(i||"")}async attach(){this.attached||(this.attached=!0,this.navigator.attach(),window.addEventListener("popstate",this.onPopState),await this.syncHistory())}back(){this.navigator.back()}detach(){this.attached=!1,this.navigator.detach(),window.removeEventListener("popstate",this.onPopState)}forward(){return this.navigator.forward()}get index(){return this.navigator.index}get id(){return this.navigator.current.id}go(t,s){return this.navigator.go(t,s)}goTo(t,s){this.navigator.goTo(t,s)}get hash(){return(this.navigator.current.params||{}).hash||""}get hasPrev(){return this.navigator.hasPrev}get hasNext(){return this.navigator.hasNext}get history(){return this.navigator.history.map(H)}get path(){return N(this)}get pathname(){return this.navigator.current.pathname}parsePath(t){let s=R(t);return this.hashMode&&(s=R(s.hash.slice(1))),{pathname:s.pathname,search:s.search,hash:s.hash}}push(t,s){const n=G(t,this.path),{state:r=s}=n.params;this.navigator.push({...n,params:{...n.params,state:r}})}replace(t,s){const n=G(t,this.path),{state:r=s}=n.params;this.navigator.replace({...n,params:{...n.params,state:r}})}renderPath(t){const s=(this.base.length===1?"":this.base)+x(N(t),"/");return this.hashMode?x(s.slice(1),this.hashMode==="classic"?"#":"#/"):s}async syncHistory(){window.removeEventListener("popstate",this.onPopState);const{state:t}=this,s=this.renderPath(this);await Ps(),this.hasPrev&&this.hasNext?(window.history.replaceState(j,""),window.history.pushState(t,"",s),window.history.pushState(z,""),await I(-1)):this.hasPrev?(window.history.replaceState(j,""),window.history.pushState(t,"",s)):this.hasNext?(window.history.replaceState(t,s),window.history.pushState(z,""),await I(-1)):(window.history.replaceState(mt,""),window.history.pushState(t,"",s)),window.addEventListener("popstate",this.onPopState)}get search(){return(this.navigator.current.params||{}).search||""}get state(){return(this.navigator.current.params||{}).state}}function Ee(e){e||(e={});const{href:t,hash:s}=window.location;let n=N(e.hashMode===null?t:s.includes("?")?s.slice(1):`?${s.slice(1)}`);const r=e.base?_t(e.base):void 0;if(r){if(!n.startsWith(r))throw f(xt,`Path "${n}" expected to be starting with "${r}"`);n=n.slice(r.length)}return new ft([n],0,e)}function Rs(e){const t=e.match(/#(.+)/);return t?t[1]:null}function Ts(e,t){if(ht()){const s=sessionStorage.getItem(e);if(s)try{const{index:n,history:r}=JSON.parse(s);return new ft(r,n,t)}catch(n){console.error("Unable to restore hash navigator state.",n)}}return Ee(t)}function Cs(e,t){const s=Ts(e,t),n=()=>sessionStorage.setItem(e,JSON.stringify({index:s.index,history:s.history}));return s.on("change",n),n(),s}exports.BackButton=Ht;exports.BasicNavigator=ye;exports.BiometryManager=se;exports.BrowserNavigator=ft;exports.ClosingBehavior=re;exports.CloudStorage=oe;exports.ERR_INVALID_PATH_BASE=xt;exports.ERR_INVOKE_CUSTOM_METHOD_RESPONSE=Rt;exports.ERR_METHOD_PARAMETER_UNSUPPORTED=St;exports.ERR_METHOD_UNSUPPORTED=vt;exports.ERR_NAVIGATION_HISTORY_EMPTY=At;exports.ERR_NAVIGATION_INDEX_INVALID=It;exports.ERR_NAVIGATION_ITEM_INVALID=Ae;exports.ERR_PARSE=Z;exports.ERR_SSR_INIT=Ie;exports.ERR_TIMED_OUT=Tt;exports.ERR_UNEXPECTED_TYPE=Ct;exports.ERR_UNKNOWN_ENV=Pt;exports.EventEmitter=S;exports.HapticFeedback=ae;exports.InitData=ce;exports.Invoice=he;exports.MainButton=pe;exports.MiniApp=le;exports.Popup=de;exports.QRScanner=_e;exports.SDKError=q;exports.SettingsButton=fe;exports.ThemeParams=ge;exports.Utils=be;exports.Viewport=we;exports.array=ie;exports.bindMiniAppCSSVars=gs;exports.bindThemeParamsCSSVars=bs;exports.bindViewportCSSVars=ws;exports.boolean=w;exports.captureSameReq=et;exports.classNames=V;exports.compareVersions=Dt;exports.createBrowserNavigatorFromLocation=Ee;exports.createPostEvent=Ot;exports.createSafeURL=R;exports.date=at;exports.getHash=Rs;exports.getPathname=_t;exports.initBackButton=Je;exports.initBiometryManager=Ye;exports.initClosingBehavior=Ke;exports.initCloudStorage=Ze;exports.initHapticFeedback=ts;exports.initInitData=es;exports.initInvoice=ns;exports.initMainButton=rs;exports.initMiniApp=as;exports.initNavigator=Cs;exports.initPopup=hs;exports.initQRScanner=ps;exports.initSettingsButton=us;exports.initThemeParams=ls;exports.initUtils=_s;exports.initViewport=fs;exports.initWeb=ms;exports.invokeCustomMethod=v;exports.isColorDark=rt;exports.isIframe=tt;exports.isPageReload=ht;exports.isRGB=O;exports.isRGBShort=$t;exports.isSDKError=me;exports.isSDKErrorOfType=Ss;exports.isSSR=ys;exports.isTMA=Es;exports.json=g;exports.mergeClassNames=Le;exports.mockTelegramEnv=vs;exports.number=y;exports.off=k;exports.on=b;exports.parseInitData=ss;exports.parseLaunchParams=$;exports.parseThemeParams=lt;exports.postEvent=P;exports.request=l;exports.requestBiometryInfo=ne;exports.requestThemeParams=ds;exports.requestViewport=dt;exports.retrieveLaunchParams=te;exports.rgb=jt;exports.searchParams=U;exports.serializeLaunchParams=Xt;exports.serializeThemeParams=ct;exports.setCSSVar=m;exports.setDebug=Te;exports.setTargetOrigin=Be;exports.string=p;exports.subscribe=Et;exports.supports=E;exports.targetOrigin=Lt;exports.toRGB=nt;exports.unsubscribe=K;exports.urlToPath=N;exports.withTimeout=st;
1
+ "use strict";var cr=Object.defineProperty;var pr=(r,t,s)=>t in r?cr(r,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):r[t]=s;var e=(r,t,s)=>pr(r,typeof t!="symbol"?t+"":t,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("@tma.js/signals"),h=require("@tma.js/bridge"),O=require("@tma.js/toolkit"),lr=require("better-promises"),q=require("@tma.js/transformers"),K=require("error-kid"),k=require("valibot");var hr=function(r,t,s){if(s||arguments.length===2)for(var n=0,i=t.length,o;n<i;n++)(o||!(n in t))&&(o||(o=Array.prototype.slice.call(t,0,n)),o[n]=t[n]);return r.concat(o||Array.prototype.slice.call(t))};function ot(r,t,s,n,i,o,u,a,l){switch(arguments.length){case 1:return r;case 2:return function(){return t(r.apply(this,arguments))};case 3:return function(){return s(t(r.apply(this,arguments)))};case 4:return function(){return n(s(t(r.apply(this,arguments))))};case 5:return function(){return i(n(s(t(r.apply(this,arguments)))))};case 6:return function(){return o(i(n(s(t(r.apply(this,arguments))))))};case 7:return function(){return u(o(i(n(s(t(r.apply(this,arguments)))))))};case 8:return function(){return a(u(o(i(n(s(t(r.apply(this,arguments))))))))};case 9:return function(){return l(a(u(o(i(n(s(t(r.apply(this,arguments)))))))))}}}function c(r,t,s,n,i,o,u,a,l){switch(arguments.length){case 1:return r;case 2:return t(r);case 3:return s(t(r));case 4:return n(s(t(r)));case 5:return i(n(s(t(r))));case 6:return o(i(n(s(t(r)))));case 7:return u(o(i(n(s(t(r))))));case 8:return a(u(o(i(n(s(t(r)))))));case 9:return l(a(u(o(i(n(s(t(r))))))));default:{for(var p=arguments[0],b=1;b<arguments.length;b++)p=arguments[b](p);return p}}}var he=function(r,t){var s=typeof r=="number"?function(n){return n.length>=r}:r;return function(){var n=Array.from(arguments);return s(arguments)?t.apply(this,n):function(i){return t.apply(void 0,hr([i],n,!1))}}},dr={_tag:"None"},fr=function(r){return{_tag:"Some",value:r}},mr=function(r){return r._tag==="Left"},it=function(r){return{_tag:"Left",left:r}},at=function(r){return{_tag:"Right",right:r}},qe={};function br(r,t){return function(s){return function(n){return r.ap(r.map(n,function(i){return function(o){return t.ap(i,o)}}),s)}}}function _r(r,t){return function(s){return function(n){return r.map(n,function(i){return t.map(i,s)})}}}function xe(r){return function(t,s){return function(n){return r.chain(n,function(i){return r.map(s(i),function(o){var u;return Object.assign({},i,(u={},u[t]=o,u))})})}}}var L=it,I=at,gr=he(2,function(r,t){return ne(r)?r:t(r.right)}),Me=function(r,t){return c(r,H(t))},ut=function(r,t){return c(r,Sr(t))},Te="Either",H=function(r){return function(t){return ne(t)?t:I(r(t.right))}},Fr={URI:Te,map:Me},Cr=I,wr=function(r){return function(t){return ne(t)?t:ne(r)?r:I(t.right(r.right))}},Sr=wr,vr={URI:Te,map:Me,ap:ut},yr={URI:Te,map:Me,ap:ut,chain:gr},kr=function(r,t){return function(s){return ne(s)?L(r(s.left)):I(t(s.right))}},ne=mr,ct=function(r,t){return function(s){return ne(s)?r(s.left):t(s.right)}},de=ct,Er=function(r,t){try{return I(r())}catch(s){return L(t(s))}},Ar=Cr(qe),Br=xe(yr),rt=Br;function D(r){return typeof r=="function"?r():r}function Y(r,t){return _.computed(()=>h.supports(r,D(t)))}var ie=dr,fe=fr,Pr=function(r,t){return c(r,xr(t))},Ir=function(r,t){return c(r,Tr(t))},qr="Option",xr=function(r){return function(t){return pe(t)?ie:fe(r(t.value))}},Mr=fe,Tr=function(r){return function(t){return pe(t)||pe(r)?ie:fe(t.value(r.value))}},Lr=he(2,function(r,t){return pe(r)?ie:t(r.value)}),Or={URI:qr,map:Pr,ap:Ir,chain:Lr},pe=function(r){return r._tag==="None"},Vr=function(r,t){return function(s){return pe(s)?r():t(s.value)}},pt=Vr,Rr=Mr(qe),st=xe(Or);function $r(r){return ot(I,r.of)}function jr(r){return ot(L,r.of)}function Dr(r){return _r(r,Fr)}function Ur(r){return br(r,vr)}function Gr(r){return function(t,s){return r.chain(t,function(n){return ne(n)?r.of(n):s(n.right)})}}function Hr(r){return function(t,s,n){return r.map(t,kr(s,n))}}function Qr(r){return function(t,s){return function(n){return r.map(n,de(t,s))}}}var Le=function(r,t){return c(r,Wr(t))},lt=function(r,t){return c(r,Kr(t))},Wr=function(r){return function(t){return function(){return Promise.resolve().then(t).then(r)}}},Kr=function(r){return function(t){return function(){return Promise.all([Promise.resolve().then(t),Promise.resolve().then(r)]).then(function(s){var n=s[0],i=s[1];return n(i)})}}},Oe=function(r){return function(){return Promise.resolve(r)}},zr=he(2,function(r,t){return function(){return Promise.resolve().then(r).then(function(s){return t(s)()})}}),Ve="Task",Re={URI:Ve,map:Le},ht={of:Oe},Nr={URI:Ve,map:Le,ap:lt},Jr={URI:Ve,map:Le,of:Oe,ap:lt,chain:zr},Yr=function(r,t,s,n){function i(o){return o instanceof s?o:new s(function(u){u(o)})}return new(s||(s=Promise))(function(o,u){function a(b){try{p(n.next(b))}catch(m){u(m)}}function l(b){try{p(n.throw(b))}catch(m){u(m)}}function p(b){b.done?o(b.value):i(b.value).then(a,l)}p((n=n.apply(r,t||[])).next())})},Zr=function(r,t){var s={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,i,o,u;return u={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function a(p){return function(b){return l([p,b])}}function l(p){if(n)throw new TypeError("Generator is already executing.");for(;u&&(u=0,p[0]&&(s=0)),s;)try{if(n=1,i&&(o=p[0]&2?i.return:p[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,p[1])).done)return o;switch(i=0,o&&(p=[p[0]&2,o.value]),p[0]){case 0:case 1:o=p;break;case 4:return s.label++,{value:p[1],done:!1};case 5:s.label++,i=p[1],p=[0];continue;case 7:p=s.ops.pop(),s.trys.pop();continue;default:if(o=s.trys,!(o=o.length>0&&o[o.length-1])&&(p[0]===6||p[0]===2)){s=0;continue}if(p[0]===3&&(!o||p[1]>o[0]&&p[1]<o[3])){s.label=p[1];break}if(p[0]===6&&s.label<o[1]){s.label=o[1],o=p;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(p);break}o[2]&&s.ops.pop(),s.trys.pop();continue}p=t.call(r,s)}catch(b){p=[6,b],i=0}finally{n=o=0}if(p[0]&5)throw p[1];return{value:p[0]?p[1]:void 0,done:!0}}},R=jr(ht),M=$r(ht),dt=Oe,Xr=Qr(Re),es=function(r,t){return function(){return Yr(void 0,void 0,void 0,function(){var s;return Zr(this,function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,r().then(at)];case 1:return[2,n.sent()];case 2:return s=n.sent(),[2,it(t(s))];case 3:return[2]}})})}},ts=function(r,t){return c(r,x(t))},rs=function(r,t){return c(r,ss(t))},x=Dr(Re),$e=he(3,Hr(Re)),ss=Ur(Nr),je=he(2,Gr(Jr)),ns=M,os="TaskEither",is={URI:os,map:ts,ap:rs,chain:je},as=ns(qe),us=xe(is),Ce=us,X=je,ae=je;function oe(r){return[r]}class ce extends K.errorClassWithData("ValidationError",(t,s)=>({input:t,issues:s}),"Validation error"){}class we extends K.errorClass("CSSVarsBoundError","CSS variables are already bound"){}class ft extends K.errorClass("NotAvailableError",oe){}class cs extends K.errorClass("InvalidEnvError",oe){}class mt extends K.errorClass("FunctionNotAvailableError",oe){}class J extends K.errorClass("InvalidArgumentsError",(t,s)=>[t,{cause:s}]){}class Se extends K.errorClass("ConcurrentCallError",oe){}class bt extends K.errorClass("SetEmojiStatusError",t=>[`Failed to set emoji status: ${t}`]){}class De extends K.errorClass("AccessDeniedError",oe){}class _t extends K.errorClass("FullscreenFailedError",oe){}class gt extends K.errorClass("ShareMessageError",oe){}class Ft extends K.errorClass("UnknownThemeParamsKeyError",t=>[`Unknown theme params key passed: ${t}`]){}function P(r,t){const s=_.computed(()=>D(t.version)||"100"),n=_.computed(()=>D(t.isTma)),{requires:i}=t,o=i?typeof i=="object"?i:{every:[i]}:void 0,u=w=>{if(!t.supports)return!0;const F=t.supports[w];return h.supports(F.method,F.param,s())},a=()=>{if(!o)return;const[w,F]="every"in o?["every",o.every]:["some",o.some];for(let g=0;g<F.length;g++){const v=F[g],d=typeof v=="function"?v():h.supports(v,s())?void 0:`it is unsupported in Mini Apps version ${s()}`;if(d&&(w==="every"||g===F.length-1))return d}},l=(...w)=>{for(const F in t.supports)if(t.supports[F].shouldCheck(...w)&&!u(F))return`option ${F} is not supported in Mini Apps version ${s()}`},p=_.computed(()=>!a()),b=_.computed(()=>s()!=="0.0"),m=_.computed(()=>t.isMounted?t.isMounted():!0),C=_.computed(()=>n()&&b()&&p()&&m()),S=w=>{const F=new mt(w);return["task","promise"].includes(t.returns)?R(F):L(F)};return Object.assign((...w)=>{var V;const F="Unable to call function:";if(!n())return S(`${F} it can't be called outside Mini Apps`);if(!b())return S(`${F} the SDK was not initialized. Use the SDK init() function`);const g=a();if(g)return S(`${F} ${g}`);const v=l(...w);if(v)return S(`${F} ${v}`);if(!m()){const j=(V=t.isMounting)!=null&&V.call(t)?"mounting. Wait for the mount completion":"unmounted. Use the mount() method";return S(`${F} the component is ${j}`)}const{returns:d}=t;return d==="plain"?Er(()=>r(...w),j=>j):d==="promise"?es(()=>r(...w),j=>j):r(...w)},r,{isAvailable:C,ifAvailable(...w){return C()?fe(r(...w)):ie}},o?{isSupported:p}:{},t.supports?{supports:u}:{})}function B(r){return t=>P(t,r)}function f(r){return Object.assign(O.throwifyFpFn(r),{ifAvailable(...t){return c(r.ifAvailable(...t),pt(()=>({ok:!1}),s=>({ok:!0,data:O.throwifyAnyEither(s)})))}})}function Ae(r){const t={};for(const s in r){const n=r[s];n!==void 0&&(t[s]=n)}return t}function ye(r,t){const s=Object.keys(r),n=Object.keys(t);return s.length!==n.length?!1:s.every(i=>Object.prototype.hasOwnProperty.call(t,i)&&r[i]===t[i])}class te{constructor({initialState:t,onChange:s}){e(this,"_state");e(this,"state");e(this,"setState",t=>{const s={...this.state(),...Ae(t)};ye(s,this.state())||this._state.set(s)});this._state=_.signal(t,{equals:ye}),this.state=_.computed(this._state),this.state.sub(s)}getter(t){return _.computed(()=>this._state()[t])}hasDiff(t){return!ye({...this.state(),...Ae(t)},this.state())}}class me{constructor({onMounted:t,restoreState:s,initialState:n,onUnmounted:i,isPageReload:o}){e(this,"_isMounted",_.signal(!1));e(this,"isMounted",_.computed(this._isMounted));e(this,"mount");e(this,"unmount");this.mount=()=>{if(this.isMounted())return I(void 0);const u=D(o)?s():void 0,a=u?I(u):typeof n=="function"?n():I(n);return c(a,H(l=>{_.batch(()=>{this._isMounted.set(!0),t==null||t(l)})}))},this.unmount=()=>{this._isMounted()&&_.batch(()=>{this._isMounted.set(!1),i==null||i()})}}}class ve{constructor({isTma:t,storage:s,onClick:n,offClick:i,initialState:o,isPageReload:u,postEvent:a,payload:l,method:p,version:b}){e(this,"isMounted");e(this,"isSupported");e(this,"state");e(this,"stateSetters");e(this,"stateBoolSetters");e(this,"setStateFp");e(this,"setState");e(this,"onClickFp");e(this,"onClick");e(this,"offClickFp");e(this,"offClick");e(this,"mountFp");e(this,"mount");e(this,"unmount");const m=new te({initialState:o,onChange(g){s.set(g)}}),C=new me({initialState:o,isPageReload:u,onMounted:m.setState,restoreState:s.get}),S={version:b,requires:p,isTma:t},w=B({...S,returns:"plain"}),F=B({...S,returns:"either",isMounted:C.isMounted});this.isMounted=C.isMounted,this.isSupported=Y(p,b),this.state=m.state,this.setStateFp=F(g=>{const v={...this.state(),...Ae(g)};return m.hasDiff(v)?c(a(p,l(v)),H(()=>{m.setState(v)})):I(void 0)}),this.setState=f(this.setStateFp),this.onClickFp=w(n),this.onClick=f(this.onClickFp),this.offClickFp=w(i),this.offClick=f(this.offClickFp),this.mountFp=w(()=>{const g=()=>{};return c(C.mount(),de(g,g))}),this.mount=f(this.mountFp),this.unmount=C.unmount,this.stateSetters=g=>{const v=F(d=>this.setStateFp({[g]:d}));return[f(v),v]},this.stateBoolSetters=g=>{const[,v]=this.stateSetters(g),d=F(()=>v(!1)),V=F(()=>v(!0));return[[f(d),d],[f(V),V]]}}stateGetter(t){return _.computed(()=>this.state()[t])}}class Ct{constructor(t){e(this,"isVisible");e(this,"isMounted");e(this,"isSupported");e(this,"hideFp");e(this,"hide");e(this,"showFp");e(this,"show");e(this,"onClickFp");e(this,"onClick");e(this,"offClickFp");e(this,"offClick");e(this,"mountFp");e(this,"mount");e(this,"unmount");const s=new ve({...t,method:"web_app_setup_back_button",payload:n=>({is_visible:n.isVisible}),initialState:{isVisible:!1}});this.isVisible=s.stateGetter("isVisible"),this.isMounted=s.isMounted,this.isSupported=s.isSupported,[[this.hide,this.hideFp],[this.show,this.showFp]]=s.stateBoolSetters("isVisible"),this.onClick=s.onClick,this.onClickFp=s.onClickFp,this.offClick=s.offClick,this.offClickFp=s.offClickFp,this.mount=s.mount,this.mountFp=s.mountFp,this.unmount=s.unmount}}function y(){return{isTma:_.computed(()=>h.isTMAFp())}}function ps(r){return{get:()=>O.getStorageValue(r),set(t){O.setStorageValue(r,t)}}}function ls(){return performance.getEntriesByType("navigation")[0]}function hs(){const r=ls();return!!r&&r.type==="reload"}function be(r){return t=>({...t,...D(r)})}function re(r){return be({storage:ps(r),isPageReload:hs})}function _e(r,t){return _.signal(r,t)}const wt=_e(h.postEventFp),ue=(...r)=>wt()(...r),St=(...r)=>O.throwifyAnyEither(ue(...r)),$=be({postEvent:ue}),Be=_e("0.0"),E=be({version:Be});function Ue(r,t){return{...c(y(),$,E,re(r)),onClick(s,n){return h.on(t,s,n)},offClick(s,n){h.off(t,s,n)}}}const ds=new Ct(Ue("backButton","back_button_pressed"));class Ge{constructor({initialState:t,onMounted:s,restoreState:n,onUnmounted:i,isPageReload:o}){e(this,"_isMounted",_.signal(!1));e(this,"isMounted",_.computed(this._isMounted));e(this,"mount");e(this,"unmount");this.mount=u=>{if(this._isMounted())return M(void 0);const a=D(o)?n():void 0;return c(a?M(a):t(u),x(l=>{this._isMounted()||_.batch(()=>{this._isMounted.set(!0),s==null||s(l)})}))},this.unmount=()=>{this._isMounted()&&_.batch(()=>{this._isMounted.set(!1),i==null||i()})}}}const nt=new ft("Biometry is not available");function ke(r){let t=!1,s=!1,n="",i=!1,o="",u=!1;return r.available&&(t=!0,s=r.token_saved,n=r.device_id,i=r.access_requested,o=r.type,u=r.access_granted),{available:t,tokenSaved:s,deviceId:n,type:o,accessGranted:u,accessRequested:i}}class vt{constructor({version:t,request:s,postEvent:n,storage:i,onInfoReceived:o,offInfoReceived:u,isTma:a,isPageReload:l}){e(this,"isAvailable");e(this,"isSupported");e(this,"isMounted");e(this,"state");e(this,"authenticateFp");e(this,"authenticate");e(this,"openSettingsFp");e(this,"openSettings");e(this,"requestAccessFp");e(this,"requestAccess");e(this,"updateTokenFp");e(this,"updateToken");e(this,"mountFp");e(this,"mount");e(this,"unmount");const p=g=>{b.setState(ke(g))},b=new te({initialState:{available:!1,type:"unknown",accessGranted:!1,accessRequested:!1,deviceId:"",tokenSaved:!1},onChange:i.set}),m=new Ge({initialState(g){return c(s("web_app_biometry_get_info","biometry_info_received",g),x(ke))},isPageReload:l,onMounted(g){b.setState(g),o(p)},onUnmounted(){u(p)},restoreState:i.get}),C={version:t,requires:"web_app_biometry_request_auth",isTma:a},S=B({...C,returns:"either"}),w=B({...C,returns:"task"}),F=B({...C,isMounted:m.isMounted,returns:"task"});this.isAvailable=b.getter("available"),this.isMounted=m.isMounted,this.isSupported=Y("web_app_biometry_request_auth",t),this.state=b.state,this.unmount=m.unmount,this.mountFp=w(m.mount),this.authenticateFp=F(g=>this.isAvailable()?c(s("web_app_biometry_request_auth","biometry_auth_requested",{...g,params:{reason:((g||{}).reason||"").trim()}}),x(v=>(b.setState({token:v.token}),v))):R(nt)),this.openSettingsFp=S(()=>n("web_app_biometry_open_settings")),this.requestAccessFp=F(g=>c(s("web_app_biometry_request_access","biometry_info_received",{...g,params:{reason:((g||{}).reason||"").trim()}}),X(v=>{const d=ke(v);return d.available?(b.setState(d),M(d.accessRequested)):R(nt)}))),this.updateTokenFp=F((g={})=>{var v;return c(s("web_app_biometry_update_token","biometry_token_updated",{...g,params:{token:g.token||"",reason:(v=g.reason)==null?void 0:v.trim()}}),x(d=>d.status))}),this.authenticate=f(this.authenticateFp),this.openSettings=f(this.openSettingsFp),this.requestAccess=f(this.requestAccessFp),this.updateToken=f(this.updateTokenFp),this.mount=f(this.mountFp)}}const He=(r,t,s)=>h.requestFp(r,t,{postEvent:ue,...s}),fs=(...r)=>lr.BetterPromise.fn(()=>He(...r)()),Q=be({request:He}),ms=new vt({...c(y(),$,E,Q,re("biometry")),offInfoReceived(r){h.off("biometry_info_received",r)},onInfoReceived(r){return h.on("biometry_info_received",r)}});class yt{constructor({postEvent:t,storage:s,isTma:n,isPageReload:i}){e(this,"isConfirmationEnabled");e(this,"isMounted");e(this,"mountFp");e(this,"mount");e(this,"unmount");e(this,"disableConfirmationFp");e(this,"disableConfirmation");e(this,"enableConfirmationFp");e(this,"enableConfirmation");const o=new te({initialState:{isConfirmationEnabled:!1},onChange(m){s.set(m)}}),u=new me({onMounted:o.setState,restoreState:s.get,initialState:{isConfirmationEnabled:!1},isPageReload:i}),a={requires:"web_app_setup_closing_behavior",isTma:n},l=B({...a,returns:"plain"}),p=B({...a,returns:"either",isMounted:u.isMounted}),b=m=>m===this.isConfirmationEnabled()?I(void 0):(o.setState({isConfirmationEnabled:m}),t("web_app_setup_closing_behavior",{need_confirmation:m}));this.isConfirmationEnabled=o.getter("isConfirmationEnabled"),this.isMounted=u.isMounted,this.disableConfirmationFp=p(()=>b(!1)),this.enableConfirmationFp=p(()=>b(!0)),this.mountFp=l(()=>{const m=()=>{};return c(u.mount(),de(m,m))}),this.unmount=u.unmount,this.disableConfirmation=f(this.disableConfirmationFp),this.enableConfirmation=f(this.enableConfirmationFp),this.mount=f(this.mountFp)}}const bs=new yt(c(y(),re("closingBehavior"),$));class kt{constructor({version:t,isTma:s,invokeCustomMethod:n}){e(this,"isSupported");e(this,"deleteItemFp");e(this,"deleteItem");e(this,"getItemFp");e(this,"getItem");e(this,"getItemsFp");e(this,"getItems");e(this,"getKeysFp");e(this,"getKeys");e(this,"setItemFp");e(this,"setItem");e(this,"clearFp");e(this,"clear");const i=B({version:t,requires:"web_app_invoke_custom_method",isTma:s,returns:"task"});this.isSupported=Y("web_app_invoke_custom_method",t),this.deleteItemFp=i((o,u)=>{const a=Array.isArray(o)?o:[o];return c(a.length?n("deleteStorageValues",{keys:a},u):M(void 0),x(()=>{}))}),this.getItemFp=i((o,u)=>c(this.getItemsFp([o],u),x(a=>a[o]||""))),this.getItemsFp=i((o,u)=>c(o.length?n("getStorageValues",{keys:o},u):M({}),x(a=>({...o.reduce((l,p)=>(l[p]="",l),{}),...k.parse(k.record(k.string(),k.string()),a)})))),this.getKeysFp=i(o=>c(n("getStorageKeys",{},o),x(u=>k.parse(k.array(k.string()),u)))),this.setItemFp=i((o,u,a)=>c(n("saveStorageValue",{key:o,value:u},a),x(()=>{}))),this.clearFp=i(o=>c(this.getKeysFp(o),X(this.deleteItemFp))),this.deleteItem=f(this.deleteItemFp),this.getItem=f(this.getItemFp),this.getItems=f(this.getItemsFp),this.getKeys=f(this.getKeysFp),this.setItem=f(this.setItemFp),this.clear=f(this.clearFp)}}const Ee=_e(0);function Qe(){return Ee.set(Ee()+1),Ee().toString()}function Et(r,t,s){return h.invokeCustomMethodFp(r,t,Qe(),{...s||{},postEvent:ue})}const We=be({invokeCustomMethod:Et}),_s=new kt(c(y(),E,We));function gs({request:r,...t}){return P(s=>c(r("web_app_request_emoji_status_access","emoji_status_access_requested",s),x(n=>n.status)),{...t,requires:"web_app_request_emoji_status_access",returns:"task"})}const At=gs(c(y(),E,Q)),Fs=f(At);function Cs({request:r,...t}){return P((s,n)=>c(r("web_app_set_emoji_status",["emoji_status_set","emoji_status_failed"],{params:{custom_emoji_id:s,duration:(n||{}).duration},...n}),ae(i=>i&&"error"in i?R(new bt(i.error)):M(void 0))),{...t,requires:"web_app_set_emoji_status",returns:"task"})}const Bt=Cs(c(y(),Q,E)),ws=f(Bt);class Pt{constructor({postEvent:t,isTma:s,version:n}){e(this,"isSupported");e(this,"impactOccurredFp");e(this,"impactOccurred");e(this,"notificationOccurredFp");e(this,"notificationOccurred");e(this,"selectionChangedFp");e(this,"selectionChanged");const i="web_app_trigger_haptic_feedback",o=B({requires:i,isTma:s,version:n,returns:"plain"});this.isSupported=Y(i,n),this.impactOccurredFp=o(u=>t(i,{type:"impact",impact_style:u})),this.notificationOccurredFp=o(u=>t(i,{type:"notification",notification_type:u})),this.selectionChangedFp=o(()=>t(i,{type:"selection_change"})),this.impactOccurred=f(this.impactOccurredFp),this.notificationOccurred=f(this.notificationOccurredFp),this.selectionChanged=f(this.selectionChangedFp)}}const Ss=new Pt(c(y(),$,E));function vs({postEvent:r,...t}){return P(()=>r("web_app_add_to_home_screen"),{...t,requires:"web_app_add_to_home_screen",returns:"either"})}const It=vs(c(y(),E,$)),ys=f(It);function ks({request:r,...t}){return P(s=>c(r("web_app_check_home_screen","home_screen_checked",s),x(n=>n.status||"unknown")),{...t,requires:"web_app_check_home_screen",returns:"task"})}const qt=ks(c(y(),E,Q)),Es=f(qt);class xt{constructor({retrieveInitData:t}){e(this,"_state",_.signal());e(this,"_raw",_.signal());e(this,"state",_.computed(this._state));e(this,"authDate",this.fromState("auth_date"));e(this,"canSendAfter",this.fromState("can_send_after"));e(this,"canSendAfterDate",_.computed(()=>{const t=this.authDate(),s=this.canSendAfter();return s&&t?new Date(t.getTime()+s*1e3):void 0}));e(this,"chat",this.fromState("chat"));e(this,"chatType",this.fromState("chat_type"));e(this,"chatInstance",this.fromState("chat_instance"));e(this,"hash",this.fromState("hash"));e(this,"queryId",this.fromState("query_id"));e(this,"raw",_.computed(this._raw));e(this,"receiver",this.fromState("receiver"));e(this,"signature",this.fromState("signature"));e(this,"startParam",this.fromState("start_param"));e(this,"user",this.fromState("user"));e(this,"restoreFp");e(this,"restore");this.restoreFp=()=>c(t(),H(pt(()=>{},({raw:s,obj:n})=>{this._state.set(n),this._raw.set(s)}))),this.restore=O.throwifyFpFn(this.restoreFp)}fromState(t){return _.computed(()=>{const s=this._state();return s?s[t]:void 0})}}const As=new xt({retrieveInitData(){return c(Ar,rt("obj",()=>c(h.retrieveLaunchParamsFp(),H(({tgWebAppData:r})=>r?fe(r):ie))),rt("raw",h.retrieveRawInitDataFp),H(({obj:r,raw:t})=>c(Rr,st("obj",()=>r),st("raw",()=>t))))}});class Mt{constructor({version:t,request:s,isTma:n}){e(this,"isOpened");e(this,"isSupported");e(this,"openSlugFp");e(this,"openSlug");e(this,"openUrlFp");e(this,"openUrl");const i=B({version:t,isTma:n,requires:"web_app_open_invoice",returns:"task"}),o=_.signal(!1),u=()=>{o.set(!1)};this.isSupported=Y("web_app_open_invoice",t),this.isOpened=_.computed(o),this.openSlugFp=i((a,l)=>c(this.isOpened()?R(new Se("Invoice is already opened")):M(void 0),X(()=>(o.set(!0),s("web_app_open_invoice","invoice_closed",{...l,params:{slug:a},capture:p=>a===p.slug}))),$e(p=>(u(),p),p=>(u(),p.status)))),this.openUrlFp=i((a,l)=>{const{hostname:p,pathname:b}=new URL(a,window.location.href);if(p!=="t.me")return R(new J(`Link has unexpected hostname: ${p}`));const m=b.match(/^\/(\$|invoice\/)([A-Za-z0-9\-_=]+)$/);return m?this.openSlugFp(m[2],l):R(new J('Expected to receive a link with a pathname in format "/invoice/{slug}" or "/${slug}"'))}),this.openUrl=f(this.openUrlFp),this.openSlug=f(this.openSlugFp)}}const Bs=new Mt(c(y(),Q,E));function Ps({postEvent:r,...t}){return P((s,n={})=>{if(typeof s=="string")try{s=new URL(s)}catch(i){return L(new J(`"${s.toString()}" is invalid URL`,i))}return r("web_app_open_link",{url:s.toString(),try_browser:n.tryBrowser,try_instant_view:n.tryInstantView})},{...t,returns:"either"})}const Tt=Ps(c(y(),$)),Is=f(Tt);function qs({postEvent:r,version:t,...s}){return P(n=>{const i=n.toString();return i.match(/^https:\/\/t.me\/.+/)?h.supports("web_app_open_tg_link",D(t))?(n=new URL(n),r("web_app_open_tg_link",{path_full:n.pathname+n.search})):(window.location.href=i,I(void 0)):L(new J(`"${i}" is invalid URL`))},{...s,returns:"either"})}const Ke=qs(c(y(),$,E)),xs=f(Ke);function Ms({openTelegramLink:r,...t}){return P((s,n)=>r("https://t.me/share/url?"+new URLSearchParams({url:s,text:n||""}).toString().replace(/\+/g,"%20")),{...t,returns:"either"})}const Lt=Ms({...y(),openTelegramLink:Ke}),Ts=f(Lt);function Ls(r){let t=!1,s,n;return r.available&&(t=!0,s=r.access_requested,n=r.access_granted),{available:t,accessGranted:n||!1,accessRequested:s||!1}}class Ot{constructor({version:t,request:s,postEvent:n,storage:i,isTma:o,isPageReload:u}){e(this,"state");e(this,"isAvailable");e(this,"isAccessGranted");e(this,"isAccessRequested");e(this,"isMounted");e(this,"isSupported");e(this,"openSettingsFp");e(this,"openSettings");e(this,"requestLocationFp");e(this,"requestLocation");e(this,"mountFp");e(this,"mount");e(this,"unmount");const a=new te({initialState:{available:!1,accessGranted:!1,accessRequested:!1},onChange:i.set}),l=new Ge({isPageReload:u,restoreState:i.get,onMounted:a.setState,initialState(S){return c(s("web_app_check_location","location_checked",S),x(Ls))}}),p={version:t,requires:"web_app_check_location",isTma:o},b=B({...p,returns:"either"}),m=B({...p,returns:"task"}),C=B({...p,returns:"task",isMounted:l.isMounted});this.isAvailable=a.getter("available"),this.isAccessRequested=a.getter("accessRequested"),this.isAccessGranted=a.getter("accessGranted"),this.isSupported=Y("web_app_check_location",t),this.isMounted=l.isMounted,this.state=a.state,this.unmount=l.unmount,this.mountFp=m(l.mount),this.openSettingsFp=b(()=>n("web_app_open_location_settings")),this.requestLocationFp=C(S=>c(s("web_app_request_location","location_requested",S),x(w=>{if(!w.available)return a.setState({available:!1}),null;const{available:F,...g}=w;return g}))),this.mount=f(this.mountFp),this.openSettings=f(this.openSettingsFp),this.requestLocation=f(this.requestLocationFp)}}const Os=new Ot(c(y(),$,E,Q,re("locationManager")));class Vt{constructor({defaults:t,...s}){e(this,"bgColor");e(this,"hasShineEffect");e(this,"isEnabled");e(this,"isLoaderVisible");e(this,"isVisible");e(this,"isMounted");e(this,"state");e(this,"text");e(this,"textColor");e(this,"showFp");e(this,"show");e(this,"hideFp");e(this,"hide");e(this,"enableFp");e(this,"enable");e(this,"enableShineEffectFp");e(this,"enableShineEffect");e(this,"disableFp");e(this,"disable");e(this,"disableShineEffectFp");e(this,"disableShineEffect");e(this,"setBgColorFp");e(this,"setBgColor");e(this,"setTextColorFp");e(this,"setTextColor");e(this,"setTextFp");e(this,"setText");e(this,"showLoaderFp");e(this,"showLoader");e(this,"hideLoaderFp");e(this,"hideLoader");e(this,"setParamsFp");e(this,"setParams");e(this,"mountFp");e(this,"mount");e(this,"unmount");e(this,"onClickFp");e(this,"onClick");e(this,"offClickFp");e(this,"offClick");const n=new ve({...s,version:"100",initialState:{hasShineEffect:!1,isEnabled:!0,isLoaderVisible:!1,isVisible:!1,text:"Continue"},method:"web_app_setup_main_button",payload:o=>({has_shine_effect:o.hasShineEffect,is_visible:o.isVisible,is_active:o.isEnabled,is_progress_visible:o.isLoaderVisible,text:o.text,color:o.bgColor,text_color:o.textColor})}),i=(o,u)=>{const a=n.stateGetter(o);return _.computed(()=>a()||D(u))};this.bgColor=i("bgColor",t.bgColor),this.textColor=i("textColor",t.textColor),this.hasShineEffect=n.stateGetter("hasShineEffect"),this.isEnabled=n.stateGetter("isEnabled"),this.isLoaderVisible=n.stateGetter("isLoaderVisible"),this.text=n.stateGetter("text"),this.isVisible=n.stateGetter("isVisible"),this.isMounted=n.isMounted,this.state=n.state,[this.setBgColor,this.setBgColorFp]=n.stateSetters("bgColor"),[this.setTextColor,this.setTextColorFp]=n.stateSetters("textColor"),[[this.disableShineEffect,this.disableShineEffectFp],[this.enableShineEffect,this.enableShineEffectFp]]=n.stateBoolSetters("hasShineEffect"),[[this.disable,this.disableFp],[this.enable,this.enableFp]]=n.stateBoolSetters("isEnabled"),[[this.hideLoader,this.hideLoaderFp],[this.showLoader,this.showLoaderFp]]=n.stateBoolSetters("isLoaderVisible"),[this.setText,this.setTextFp]=n.stateSetters("text"),[[this.hide,this.hideFp],[this.show,this.showFp]]=n.stateBoolSetters("isVisible"),this.setParams=n.setState,this.setParamsFp=n.setStateFp,this.onClick=n.onClick,this.onClickFp=n.onClickFp,this.offClick=n.offClick,this.offClickFp=n.offClickFp,this.mount=n.mount,this.mountFp=n.mountFp,this.unmount=n.unmount}}function Rt(r,t,s){return c(Ue(r,t),n=>({...n,defaults:s}))}const Pe=_e({});function ze(r,t){document.documentElement.style.setProperty(r,t)}function Ne(r){document.documentElement.style.removeProperty(r)}function $t(r){return c(q.toRGBFullFp(r),H(t=>Math.sqrt([.299,.587,.114].reduce((s,n,i)=>{const o=parseInt(t.slice(1+i*2,1+(i+1)*2),16);return s+o*o*n},0))<120))}const Je=O.throwifyFpFn($t);class jt{constructor({initialState:t,onChange:s,offChange:n,isTma:i,storage:o,isPageReload:u}){e(this,"accentTextColor");e(this,"bgColor");e(this,"buttonColor");e(this,"buttonTextColor");e(this,"bottomBarBgColor");e(this,"destructiveTextColor");e(this,"headerBgColor");e(this,"hintColor");e(this,"linkColor");e(this,"secondaryBgColor");e(this,"sectionBgColor");e(this,"sectionHeaderTextColor");e(this,"sectionSeparatorColor");e(this,"subtitleTextColor");e(this,"textColor");e(this,"_isCssVarsBound",_.signal(!1));e(this,"isCssVarsBound",_.computed(this._isCssVarsBound));e(this,"bindCssVarsFp");e(this,"bindCssVars");e(this,"state");e(this,"isDark",_.computed(()=>{const t=this.bgColor();return!t||Je(t)}));e(this,"isMounted");e(this,"mountFp");e(this,"mount");e(this,"unmount");const a=new te({initialState:{},onChange:o.set}),l=S=>{a.setState(S.theme_params)},p=new me({initialState:()=>I(D(t)),isPageReload:u,onMounted(S){a.setState(S),s(l)},onUnmounted(){n(l)},restoreState:o.get}),b={isTma:i,returns:"either"},m=B(b),C=B({...b,isMounted:p.isMounted});this.accentTextColor=a.getter("accent_text_color"),this.bgColor=a.getter("bg_color"),this.buttonColor=a.getter("button_color"),this.buttonTextColor=a.getter("button_text_color"),this.bottomBarBgColor=a.getter("bottom_bar_bg_color"),this.destructiveTextColor=a.getter("destructive_text_color"),this.headerBgColor=a.getter("header_bg_color"),this.hintColor=a.getter("hint_color"),this.linkColor=a.getter("link_color"),this.secondaryBgColor=a.getter("secondary_bg_color"),this.sectionBgColor=a.getter("section_bg_color"),this.sectionHeaderTextColor=a.getter("section_header_text_color"),this.sectionSeparatorColor=a.getter("section_separator_color"),this.subtitleTextColor=a.getter("subtitle_text_color"),this.textColor=a.getter("text_color"),this.state=a.state,this.isMounted=p.isMounted,this.bindCssVarsFp=C(S=>{if(this._isCssVarsBound())return L(new we);S||(S=g=>`--tg-theme-${O.snakeToKebab(g)}`);const w=g=>{Object.entries(a.state()).forEach(([v,d])=>{d&&g(v,d)})},F=()=>{w((g,v)=>{ze(S(g),v)})};return F(),a.state.sub(F),this._isCssVarsBound.set(!0),I(()=>{w(Ne),a.state.unsub(F),this._isCssVarsBound.set(!1)})}),this.mountFp=m(p.mount),this.unmount=p.unmount,this.bindCssVars=f(this.bindCssVarsFp),this.mount=f(this.mountFp)}}const le=new jt({...c(y(),re("themeParams")),offChange(r){h.off("theme_changed",r)},onChange(r){h.on("theme_changed",r)},initialState:Pe}),Vs=new Vt(Rt("mainButton","main_button_pressed",{bgColor:_.computed(()=>le.buttonColor()||"#2481cc"),textColor:_.computed(()=>le.buttonTextColor()||"#ffffff")}));class Dt{constructor({storage:t,isPageReload:s,version:n,postEvent:i,isTma:o,theme:u,onVisibilityChanged:a,offVisibilityChanged:l}){e(this,"isSupported");e(this,"isDark",_.computed(()=>{const t=this.bgColorRgb();return t?Je(t):!1}));e(this,"isActive");e(this,"state");e(this,"isCssVarsBound");e(this,"bindCssVarsFp");e(this,"bindCssVars");e(this,"isMounted");e(this,"mountFp");e(this,"mount");e(this,"unmount");e(this,"bgColor");e(this,"bgColorRgb");e(this,"setBgColorFp");e(this,"setBgColor");e(this,"headerColor");e(this,"headerColorRgb");e(this,"setHeaderColorFp");e(this,"setHeaderColor");e(this,"bottomBarColor");e(this,"bottomBarColorRgb");e(this,"setBottomBarColorFp");e(this,"setBottomBarColor");e(this,"closeFp");e(this,"close");e(this,"readyFp");e(this,"ready");const p=d=>{C.setState({isActive:d.is_visible})},b=d=>{[[this.headerColor,"web_app_set_header_color"],[this.bgColor,"web_app_set_background_color"],[this.bottomBarColor,"web_app_set_bottom_bar_color"]].forEach(([V,j])=>{const U=V();if(!q.isRGB(U)&&(j==="web_app_set_header_color"||!["bg_color","secondary_bg_color"].includes(U))){const G=d[U];G&&i(j,{color:G})}})},m=new me({initialState(){const d=D(u);return I({bgColor:d.bg_color||"bg_color",headerColor:d.header_bg_color||"header_bg_color",bottomBarColor:d.bottom_bar_bg_color||"bottom_bar_bg_color",isActive:!0})},isPageReload:s,onMounted:d=>{this.setBgColorFp.ifAvailable(d.bgColor),this.setBottomBarColorFp.ifAvailable(d.bottomBarColor),this.setHeaderColorFp.ifAvailable(d.headerColor),a(p),u.sub(b),C.setState(d)},onUnmounted(){l(p),u.unsub(b)},restoreState:t.get});this.isMounted=m.isMounted,this.mountFp=P(()=>{const d=()=>{};return c(m.mount(),de(d,d))},{isTma:o,returns:"plain"}),this.mount=f(this.mountFp),this.unmount=m.unmount;const C=new te({initialState:{bgColor:"bg_color",bottomBarColor:"bottom_bar_bg_color",headerColor:"bg_color",isActive:!1},onChange:t.set});this.state=C.state;const S=d=>q.isRGB(d)?d:D(u)[d],w=d=>_.computed(()=>S(d()));this.isActive=C.getter("isActive"),this.isSupported=_.computed(()=>["web_app_set_header_color","web_app_set_background_color","web_app_set_bottom_bar_color"].some(d=>h.supports(d,D(n))));const F=_.signal(!1);this.isCssVarsBound=_.computed(F),this.bindCssVarsFp=P(d=>{if(F())return L(new we);const[V,j]=O.createCbCollector(()=>{F.set(!1)}),U=(G,W)=>{const z=()=>{ze(G,W()||null)};z(),V(W.sub(z),Ne.bind(null,G))};return d||(d=G=>`--tg-${O.camelToKebab(G)}`),U(d("bgColor"),this.bgColorRgb),U(d("bottomBarColor"),this.bottomBarColorRgb),U(d("headerColor"),this.headerColorRgb),F.set(!0),I(j)},{isTma:o,returns:"either",isMounted:this.isMounted}),this.bindCssVars=f(this.bindCssVarsFp);const g=d=>{const V=C.getter(d),j=w(V),U={headerColor:"web_app_set_header_color",bgColor:"web_app_set_background_color",bottomBarColor:"web_app_set_bottom_bar_color"}[d],G=P(W=>{if(W===V())return I(void 0);if(U==="web_app_set_header_color"&&(W==="bg_color"||W==="secondary_bg_color"))return i("web_app_set_header_color",{color_key:W});const z=S(W);return c(z?i(U,{color:z}):L(new Ft(W)),H(()=>{C.setState({[d]:z})}))},{isTma:o,version:n,requires:U,isMounted:this.isMounted,returns:"either",supports:d==="headerColor"?{rgb:{method:"web_app_set_header_color",param:"color",shouldCheck:q.isRGB}}:void 0});return[V,j,f(G),G]};[this.bgColor,this.bgColorRgb,this.setBgColor,this.setBgColorFp]=g("bgColor"),[this.headerColor,this.headerColorRgb,this.setHeaderColor,this.setHeaderColorFp]=g("headerColor"),[this.bottomBarColor,this.bottomBarColorRgb,this.setBottomBarColor,this.setBottomBarColorFp]=g("bottomBarColor");const v=B({isTma:o,returns:"either"});this.closeFp=v(d=>i("web_app_close",{return_back:d})),this.close=f(this.closeFp),this.readyFp=v(()=>i("web_app_ready")),this.ready=f(this.readyFp)}}const Ut=new Dt({...c(y(),$,E,re("miniApp")),offVisibilityChanged(r){h.off("visibility_changed",r)},onVisibilityChanged(r){h.on("visibility_changed",r)},theme:le.state});function Rs(r){const t=r.message.trim(),s=(r.title||"").trim(),n=r.buttons||[];if(s.length>64)return L(new J(`Invalid title: ${s}`));if(!t||t.length>256)return L(new J(`Invalid message: ${t}`));if(n.length>3)return L(new J(`Invalid buttons count: ${n.length}`));const i=[];if(!n.length)i.push({type:"close",id:""});else for(let o=0;o<n.length;o++){const u=n[o],a=u.id||"";if(a.length>64)return L(new J(`Button with index ${o} has invalid id: ${a}`));if(!u.type||u.type==="default"||u.type==="destructive"){const l=u.text.trim();if(!l||l.length>64)return L(new J(`Button with index ${o} has invalid text: ${l}`));i.push({type:u.type,text:l,id:a})}else i.push({type:u.type,id:a})}return I({title:s,message:t,buttons:i})}class Gt{constructor({version:t,isTma:s,request:n}){e(this,"isOpened");e(this,"isSupported");e(this,"showFp");e(this,"show");const i=_.signal(!1),o=()=>{i.set(!1)},u=B({version:t,isTma:s,requires:"web_app_open_popup",returns:"task"});this.isSupported=Y("web_app_open_popup",t),this.isOpened=_.computed(i),this.showFp=u(a=>c(this.isOpened()?R(new Se("A popup is already opened")):M(void 0),ae(()=>dt(Rs(a))),X(l=>(i.set(!0),n("web_app_open_popup","popup_closed",{...a,params:l}))),$e(l=>(o(),l),l=>(o(),l.button_id)))),this.show=f(this.showFp)}}const $s=new Gt(c(y(),Q,E));function js({request:r,...t}){return P(s=>c(r("web_app_request_phone","phone_requested",s),x(n=>n.status)),{...t,requires:"web_app_request_phone",returns:"task"})}const Ye=js(c(y(),E,Q)),Ds=f(Ye);function Us({invokeCustomMethod:r,requestPhoneAccess:t,...s}){const n=u=>c(r("getRequestedContact",{},{...u,timeout:(u||{}).timeout||5e3}),ae(a=>{const l=k.safeParse(k.string(),a);if(!l.success)return R(new ce(a,l.issues));if(!l.output)return M(void 0);const p=k.safeParse(q.pipeQueryToSchema(k.looseObject({contact:q.pipeJsonToSchema(k.looseObject({user_id:k.number(),phone_number:k.string(),first_name:k.string(),last_name:k.optional(k.string())})),auth_date:k.pipe(k.string(),k.transform(b=>new Date(Number(b)*1e3)),k.date()),hash:k.string()})),l.output);return p.success?M({raw:l.output,parsed:p.output}):R(new ce(l.output,p.issues))})),i=u=>c(n(u),Xr(a=>ce.is(a)?L(a):I(void 0),a=>I(a))),o=u=>O.BetterTaskEither(async(a,l,p)=>{let b=50;for(;!p.isRejected;){const m=await i(p)();if(m._tag==="Left")return l(m.left);if(m.right)return a(m.right);await new Promise(C=>setTimeout(C,b)),b+=50}},u);return P(u=>O.BetterTaskEither.fn(a=>c(i(a),X(l=>l?M(l):c(t(a),ae(p=>p==="sent"?o(a):R(new De("User denied access")))))),u),{...s,returns:"task",requires:"web_app_request_phone"})}function Gs({requestContact:r,...t}){return P(r,{...t,returns:"task",requires:"web_app_request_phone"})}const Ze=Us({...c(y(),We,E),requestPhoneAccess:Ye}),Hs=f(Ze),Ht=Gs({...c(y(),E),requestContact(r){return c(Ze(r),x(t=>t.parsed))}}),Qs=f(Ht);function Ws({request:r,...t}){return P(s=>c(r("web_app_request_write_access","write_access_requested",s),x(n=>n.status)),{...t,requires:"web_app_request_write_access",returns:"task"})}const Qt=Ws(c(y(),E,Q)),Ks=f(Qt);class Wt{constructor({version:t,onClosed:s,onTextReceived:n,isTma:i,postEvent:o}){e(this,"isOpened");e(this,"isSupported");e(this,"captureFp");e(this,"capture");e(this,"closeFp");e(this,"close");e(this,"openFp");e(this,"open");const u={version:t,requires:"web_app_open_scan_qr_popup",isTma:i},a=B({...u,returns:"either"}),l=B({...u,returns:"task"}),p=_.signal(!1),b=()=>{p.set(!1)};this.isSupported=Y("web_app_open_scan_qr_popup",t),this.isOpened=_.computed(p),this.captureFp=l(m=>{let C;return c(this.openFp({...m,onCaptured:S=>{m.capture(S)&&(C=S,this.close())}}),x(()=>C))}),this.closeFp=a(()=>c(o("web_app_close_scan_qr_popup"),H(b))),this.openFp=l(m=>c(this.isOpened()?R(new Se("The QR Scanner is already opened")):async()=>o("web_app_open_scan_qr_popup",{text:m.text}),ae(()=>{const[C,S]=O.createCbCollector(),w=F=>(S(),F);return c(O.BetterTaskEither(F=>{C(s(F),n(m.onCaptured))},m),$e(w,w))}))),this.open=f(this.openFp),this.capture=f(this.captureFp),this.close=f(this.closeFp)}}const zs=new Wt({...c(y(),$,E),onClosed(r){return h.on("scan_qr_popup_closed",r)},onTextReceived(r){return h.on("qr_text_received",t=>{r(t.data)})}});class Kt{constructor({defaults:t,...s}){e(this,"isSupported");e(this,"position");e(this,"bgColor");e(this,"hasShineEffect");e(this,"isEnabled");e(this,"isLoaderVisible");e(this,"isVisible");e(this,"isMounted");e(this,"state");e(this,"text");e(this,"textColor");e(this,"showFp");e(this,"show");e(this,"hideFp");e(this,"hide");e(this,"enableFp");e(this,"enable");e(this,"enableShineEffectFp");e(this,"enableShineEffect");e(this,"disableFp");e(this,"disable");e(this,"disableShineEffectFp");e(this,"disableShineEffect");e(this,"setBgColorFp");e(this,"setBgColor");e(this,"setTextColorFp");e(this,"setTextColor");e(this,"setTextFp");e(this,"setText");e(this,"setPositionFp");e(this,"setPosition");e(this,"showLoaderFp");e(this,"showLoader");e(this,"hideLoaderFp");e(this,"hideLoader");e(this,"setParamsFp");e(this,"setParams");e(this,"mountFp");e(this,"mount");e(this,"unmount");e(this,"onClickFp");e(this,"onClick");e(this,"offClickFp");e(this,"offClick");const n=new ve({...s,initialState:{hasShineEffect:!1,isEnabled:!0,isLoaderVisible:!1,isVisible:!1,text:"Cancel",position:"left"},method:"web_app_setup_secondary_button",payload:o=>({has_shine_effect:o.hasShineEffect,is_visible:o.isVisible,is_active:o.isEnabled,is_progress_visible:o.isLoaderVisible,text:o.text,color:o.bgColor,text_color:o.textColor,position:o.position})}),i=(o,u)=>{const a=n.stateGetter(o);return _.computed(()=>a()||D(u))};this.isSupported=Y("web_app_setup_secondary_button",s.version),this.bgColor=i("bgColor",t.bgColor),this.textColor=i("textColor",t.textColor),this.position=n.stateGetter("position"),this.hasShineEffect=n.stateGetter("hasShineEffect"),this.isEnabled=n.stateGetter("isEnabled"),this.isLoaderVisible=n.stateGetter("isLoaderVisible"),this.text=n.stateGetter("text"),this.isVisible=n.stateGetter("isVisible"),this.isMounted=n.isMounted,this.state=n.state,[this.setPosition,this.setPositionFp]=n.stateSetters("position"),[this.setBgColor,this.setBgColorFp]=n.stateSetters("bgColor"),[this.setTextColor,this.setTextColorFp]=n.stateSetters("textColor"),[[this.disableShineEffect,this.disableShineEffectFp],[this.enableShineEffect,this.enableShineEffectFp]]=n.stateBoolSetters("hasShineEffect"),[[this.disable,this.disableFp],[this.enable,this.enableFp]]=n.stateBoolSetters("isEnabled"),[[this.hideLoader,this.hideLoaderFp],[this.showLoader,this.showLoaderFp]]=n.stateBoolSetters("isLoaderVisible"),[this.setText,this.setTextFp]=n.stateSetters("text"),[[this.hide,this.hideFp],[this.show,this.showFp]]=n.stateBoolSetters("isVisible"),this.setParams=n.setState,this.setParamsFp=n.setStateFp,this.onClick=n.onClick,this.onClickFp=n.onClickFp,this.offClick=n.offClick,this.offClickFp=n.offClickFp,this.mount=n.mount,this.mountFp=n.mountFp,this.unmount=n.unmount}}const Ns=new Kt(Rt("secondaryButton","secondary_button_pressed",{bgColor:_.computed(()=>Ut.bottomBarColorRgb()||"#000000"),textColor:_.computed(()=>le.buttonColor()||"#2481cc")}));class zt{constructor(t){e(this,"isVisible");e(this,"isMounted");e(this,"isSupported");e(this,"hideFp");e(this,"hide");e(this,"showFp");e(this,"show");e(this,"onClickFp");e(this,"onClick");e(this,"offClickFp");e(this,"offClick");e(this,"mountFp");e(this,"mount");e(this,"unmount");const s=new ve({...t,method:"web_app_setup_settings_button",payload:n=>({is_visible:n.isVisible}),initialState:{isVisible:!1}});this.isVisible=s.stateGetter("isVisible"),this.isMounted=s.isMounted,this.isSupported=s.isSupported,[[this.hide,this.hideFp],[this.show,this.showFp]]=s.stateBoolSetters("isVisible"),this.onClick=s.onClick,this.onClickFp=s.onClickFp,this.offClick=s.offClick,this.offClickFp=s.offClickFp,this.mount=s.mount,this.mountFp=s.mountFp,this.unmount=s.unmount}}const Js=new zt(Ue("settingsButton","settings_button_pressed"));class Nt{constructor({postEvent:t,storage:s,isTma:n,isPageReload:i,version:o}){e(this,"isSupported");e(this,"isVerticalEnabled");e(this,"isMounted");e(this,"mountFp");e(this,"mount");e(this,"unmount");e(this,"disableVerticalFp");e(this,"disableVertical");e(this,"enableVerticalFp");e(this,"enableVertical");const u=new te({initialState:{isVerticalEnabled:!1},onChange(C){s.set(C)}}),a=new me({initialState:{isVerticalEnabled:!1},isPageReload:i,onMounted:u.setState,restoreState:s.get}),l={requires:"web_app_setup_swipe_behavior",isTma:n,version:o},p=B({...l,returns:"plain"}),b=B({...l,isMounted:a.isMounted,returns:"either"}),m=C=>{const S={isVerticalEnabled:C};return u.hasDiff(S)?c(t("web_app_setup_swipe_behavior",{allow_vertical_swipe:C}),H(()=>{u.setState(S)})):I(void 0)};this.isSupported=Y("web_app_setup_swipe_behavior",o),this.isVerticalEnabled=u.getter("isVerticalEnabled"),this.isMounted=a.isMounted,this.disableVerticalFp=b(()=>m(!1)),this.enableVerticalFp=b(()=>m(!0)),this.mountFp=p(()=>{const C=()=>{};return c(a.mount(),de(C,C))}),this.unmount=a.unmount,this.disableVertical=f(this.disableVerticalFp),this.enableVertical=f(this.enableVerticalFp),this.mount=f(this.mountFp)}}const Ys=new Nt(c(y(),$,E,re("swipeBehavior")));async function Zs(r){try{const{clipboard:s}=navigator;if(s)return await s.writeText(r)}catch{}const t=document.createElement("textarea");t.value=r,t.style.top="0",t.style.left="0",t.style.position="fixed",document.body.appendChild(t),t.focus(),t.select();try{document.execCommand("copy")}finally{document.body.removeChild(t)}}function Xs({request:r,...t}){return P((s,n,i)=>c(r("web_app_request_file_download","file_download_requested",{...i,params:{url:s,file_name:n}}),X(o=>o.status==="downloading"?M(void 0):R(new De("User denied the action")))),{...t,requires:"web_app_request_file_download",returns:"task"})}const Jt=Xs(c(y(),Q,E)),en=f(Jt);function tn({invokeCustomMethod:r,...t}){return P(s=>c(r("getCurrentTime",{},s),X(n=>{const i=k.safeParse(k.pipe(k.number(),k.integer(),k.transform(o=>new Date(o*1e3)),k.date()),n);return i.success?M(i.output):R(new ce(n,i.issues))})),{...t,requires:"web_app_invoke_custom_method",returns:"task"})}const Yt=tn(c(y(),We,E)),rn=f(Yt);function sn({postEvent:r,...t}){return P(()=>r("web_app_hide_keyboard"),{...t,returns:"either",requires:"web_app_hide_keyboard"})}const Zt=sn(c(y(),$,E)),nn=f(Zt);function on({request:r,createRequestId:t,...s}){return P(n=>{const i=t();return c(r("web_app_read_text_from_clipboard","clipboard_text_received",{...n,params:{req_id:i},capture:h.captureSameReq(i)}),x(({data:o=null})=>o))},{...s,requires:"web_app_read_text_from_clipboard",returns:"task"})}const Xt=on({...c(y(),E,Q),createRequestId:Qe}),an=f(Xt);function er(r){const t={},s=r.match(/Telegram-Android(?:\/([^ ]+))?(?: (\([^)]+\))?|$)/);if(s){const[,n,i]=s;n&&(t.appVersion=n),i&&i.slice(1,i.length-1).split(";").forEach(o=>{const[u,a]=o.trim().split(" ");if(u==="Android")t.androidVersion=a;else if(u==="SDK"){const l=parseInt(a,10);l&&(t.sdkVersion=l)}else a?(t.manufacturer=u,t.model=a):t.performanceClass=u})}return t}function un(){return er(navigator.userAgent)}function cn({postEvent:r,...t}){return P(s=>{const{size:n}=new Blob([s]);return!n||n>4096?L(new J(n?"Maximum size of data to send is 4096 bytes":"Attempted to send empty data")):r("web_app_data_send",{data:s})},{...t,returns:"either"})}const tr=cn(c(y(),$)),pn=f(tr);function ln({request:r,...t}){return P((s,n)=>c(r("web_app_send_prepared_message",["prepared_message_failed","prepared_message_sent"],{...n,params:{id:s}}),X(i=>i&&"error"in i?R(new gt(i.error)):M(void 0))),{...t,requires:"web_app_send_prepared_message",returns:"task"})}const rr=ln(c(y(),Q,E)),hn=f(rr);function dn({postEvent:r,...t}){return P((s,n={})=>r("web_app_share_to_story",{text:n.text,media_url:s,widget_link:n.widgetLink}),{...t,requires:"web_app_share_to_story",returns:"either"})}const sr=dn(c(y(),$,E)),fn=f(sr),Ie=_e(!1);function mn({isInlineMode:r,postEvent:t,...s}){return P((n,i)=>t("web_app_switch_inline_query",{query:n,chat_types:i||[]}),{...s,requires:{every:["web_app_switch_inline_query",()=>D(r)?void 0:"The application must be launched in the inline mode"]},returns:"either"})}const nr=mn({...c(y(),$,E),isInlineMode:Ie}),bn=f(nr);class or{constructor({storage:t,isPageReload:s,onContentSafeAreaInsetsChanged:n,onSafeAreaInsetsChanged:i,onViewportChanged:o,onFullscreenChanged:u,offContentSafeAreaInsetsChanged:a,offFullscreenChanged:l,offSafeAreaInsetsChanged:p,offViewportChanged:b,request:m,isViewportStable:C,isFullscreen:S,isTma:w,version:F,postEvent:g}){e(this,"state");e(this,"height");e(this,"stableHeight");e(this,"width");e(this,"isExpanded");e(this,"isStable",_.computed(()=>this.height()===this.stableHeight()));e(this,"contentSafeAreaInsets");e(this,"contentSafeAreaInsetTop");e(this,"contentSafeAreaInsetLeft");e(this,"contentSafeAreaInsetRight");e(this,"contentSafeAreaInsetBottom");e(this,"safeAreaInsets");e(this,"safeAreaInsetTop");e(this,"safeAreaInsetLeft");e(this,"safeAreaInsetRight");e(this,"safeAreaInsetBottom");e(this,"isFullscreen");e(this,"requestFullscreenFp");e(this,"requestFullscreen");e(this,"exitFullscreenFp");e(this,"exitFullscreen");e(this,"isCssVarsBound");e(this,"bindCssVarsFp");e(this,"bindCssVars");e(this,"isMounted");e(this,"mountFp");e(this,"mount");e(this,"expandFp");e(this,"expand");const v={top:0,right:0,left:0,bottom:0},d=new te({initialState:{contentSafeAreaInsets:v,height:0,isExpanded:!1,isFullscreen:!1,safeAreaInsets:v,stableHeight:0,width:0},onChange:t.set}),V=A=>{d.setState({isExpanded:A.is_expanded,height:A.height,width:A.width,stableHeight:A.is_state_stable?A.height:void 0})},j=A=>{d.setState({isFullscreen:A.is_fullscreen})},U=A=>{d.setState({safeAreaInsets:A})},G=A=>{d.setState({contentSafeAreaInsets:A})},W=new Ge({initialState(A){const se=Z=>()=>{const[ee,N]=Z==="safe-area"?["web_app_request_safe_area","safe_area_changed"]:["web_app_request_content_safe_area","content_safe_area_changed"];return h.supports(ee,D(F))?m(ee,N,A):M({top:0,left:0,right:0,bottom:0})},T=Z=>()=>typeof Z=="boolean"?M(Z):dt(Z());return c(as,Ce("safeAreaInsets",se("safe-area")),Ce("contentSafeAreaInsets",se("content-safe-area")),Ce("isFullscreen",T(S)),Ce("isViewportStable",T(C)),ae(({isViewportStable:Z,...ee})=>Z?M({...ee,height:window.innerHeight,isExpanded:!0,stableHeight:window.innerHeight,width:window.innerWidth}):c(m("web_app_request_viewport","viewport_changed",A),x(N=>({...ee,height:N.height,isExpanded:N.is_expanded,stableHeight:N.is_state_stable?N.height:0,width:N.width})))))},isPageReload:s,onMounted(A){o(V),u(j),i(U),n(G),d.setState(A)},onUnmounted(){b(V),l(j),p(U),a(G)},restoreState:t.get}),z=A=>_.computed(()=>this.safeAreaInsets()[A]),ge=A=>_.computed(()=>this.contentSafeAreaInsets()[A]);this.state=d.state,this.height=d.getter("height"),this.stableHeight=d.getter("stableHeight"),this.width=d.getter("width"),this.isExpanded=d.getter("isExpanded"),this.safeAreaInsets=d.getter("safeAreaInsets"),this.safeAreaInsetTop=z("top"),this.safeAreaInsetBottom=z("bottom"),this.safeAreaInsetLeft=z("left"),this.safeAreaInsetRight=z("right"),this.contentSafeAreaInsets=d.getter("contentSafeAreaInsets"),this.contentSafeAreaInsetTop=ge("top"),this.contentSafeAreaInsetBottom=ge("bottom"),this.contentSafeAreaInsetLeft=ge("left"),this.contentSafeAreaInsetRight=ge("right");const ar=B({isTma:w,returns:"task"}),Xe=B({isTma:w,returns:"either"}),ur=B({isTma:w,requires:"web_app_request_fullscreen",version:F,returns:"task"}),et=A=>ur(se=>c(m(A?"web_app_request_fullscreen":"web_app_exit_fullscreen",["fullscreen_changed","fullscreen_failed"],se),X(T=>"error"in T&&T.error!=="ALREADY_FULLSCREEN"?R(new _t(T.error)):(d.setState({isFullscreen:"is_fullscreen"in T?T.is_fullscreen:!0}),M(void 0)))));this.isMounted=W.isMounted,this.mountFp=ar(W.mount),this.mount=f(this.mountFp),this.isFullscreen=d.getter("isFullscreen"),this.requestFullscreenFp=et(!0),this.requestFullscreen=f(this.requestFullscreenFp),this.exitFullscreenFp=et(!1),this.exitFullscreen=f(this.exitFullscreenFp);const Fe=_.signal(!1);this.isCssVarsBound=_.computed(Fe),this.bindCssVarsFp=Xe(A=>{if(Fe())return L(new we);A||(A=T=>`--tg-viewport-${O.camelToKebab(T)}`);const se=[["height",this.height],["stableHeight",this.stableHeight],["width",this.width],["safeAreaInsetTop",this.safeAreaInsetTop],["safeAreaInsetBottom",this.safeAreaInsetBottom],["safeAreaInsetLeft",this.safeAreaInsetLeft],["safeAreaInsetRight",this.safeAreaInsetRight],["contentSafeAreaInsetTop",this.contentSafeAreaInsetTop],["contentSafeAreaInsetBottom",this.contentSafeAreaInsetBottom],["contentSafeAreaInsetLeft",this.contentSafeAreaInsetLeft],["contentSafeAreaInsetRight",this.contentSafeAreaInsetRight]].reduce((T,[Z,ee])=>{const N=A(Z);if(N){const tt=()=>{ze(N,`${ee()}px`)};T.push({update:tt,removeListener:ee.sub(tt),cssVar:N})}return T},[]);return se.forEach(T=>{T.update()}),Fe.set(!0),I(()=>{se.forEach(T=>{T.removeListener(),Ne(T.cssVar)}),Fe.set(!1)})}),this.bindCssVars=f(this.bindCssVarsFp),this.expandFp=Xe(()=>g("web_app_expand")),this.expand=f(this.expandFp)}}function _n(){const r=o=>({on:u=>{h.on(o,u)},off:u=>{h.off(o,u)}}),t=r("viewport_changed"),s=r("fullscreen_changed"),n=r("safe_area_changed"),i=r("content_safe_area_changed");return new or({...c(y(),re("viewport"),E,$,Q),isFullscreen(){return c(h.retrieveLaunchParamsFp(),H(o=>!!o.tgWebAppFullscreen))},isViewportStable(){return c(h.retrieveLaunchParamsFp(),H(o=>["macos","tdesktop","unigram","webk","weba","web"].includes(o.tgWebAppPlatform)))},offContentSafeAreaInsetsChanged:i.off,offFullscreenChanged:s.off,offSafeAreaInsetsChanged:n.off,offViewportChanged:t.off,onContentSafeAreaInsetsChanged:i.on,onFullscreenChanged:s.on,onSafeAreaInsetsChanged:n.on,onViewportChanged:t.on})}const gn=_n();function ir(r={}){const{version:t,isInlineMode:s,themeParams:n}=r;if(t&&typeof s=="boolean"&&n)Be.set(t),Ie.set(s),Pe.set(n);else{const a=c(h.retrieveLaunchParamsFp(),ct(l=>l,l=>{Be.set(t||l.tgWebAppVersion),Ie.set(typeof s=="boolean"?s:!!l.tgWebAppBotInline),Pe.set(n||l.tgWebAppThemeParams)}));if(a)return L(a)}r.postEvent&&wt.set(r.postEvent);const[i,o]=O.createCbCollector(h.on("reload_iframe",()=>{h.logger().log("Received a request to reload the page"),St("iframe_will_reload"),window.location.reload()})),{acceptCustomStyles:u=!0}=r;if(u){const a=document.createElement("style");a.id="telegram-custom-styles",document.head.appendChild(a),i(h.on("set_custom_style",l=>{a.innerHTML=l}),()=>{document.head.removeChild(a)})}return c(ue("iframe_ready",{reload_supported:!0}),H(()=>(h.logger().log("The package was initialized"),o)))}const Fn=O.throwifyFpFn(ir);Object.defineProperty(exports,"CancelledError",{enumerable:!0,get:()=>h.CancelledError});Object.defineProperty(exports,"InvalidLaunchParamsError",{enumerable:!0,get:()=>h.InvalidLaunchParamsError});Object.defineProperty(exports,"InvokeCustomMethodFailedError",{enumerable:!0,get:()=>h.InvokeCustomMethodFailedError});Object.defineProperty(exports,"LaunchParamsRetrieveError",{enumerable:!0,get:()=>h.LaunchParamsRetrieveError});Object.defineProperty(exports,"MethodParameterUnsupportedError",{enumerable:!0,get:()=>h.MethodParameterUnsupportedError});Object.defineProperty(exports,"MethodUnsupportedError",{enumerable:!0,get:()=>h.MethodUnsupportedError});Object.defineProperty(exports,"TimeoutError",{enumerable:!0,get:()=>h.TimeoutError});Object.defineProperty(exports,"UnknownEnvError",{enumerable:!0,get:()=>h.UnknownEnvError});Object.defineProperty(exports,"applyPolyfills",{enumerable:!0,get:()=>h.applyPolyfills});Object.defineProperty(exports,"createLogger",{enumerable:!0,get:()=>h.createLogger});Object.defineProperty(exports,"createPostEvent",{enumerable:!0,get:()=>h.createPostEvent});Object.defineProperty(exports,"createStartParam",{enumerable:!0,get:()=>h.createStartParam});Object.defineProperty(exports,"createStartParamFp",{enumerable:!0,get:()=>h.createStartParamFp});Object.defineProperty(exports,"debug",{enumerable:!0,get:()=>h.debug});Object.defineProperty(exports,"decodeBase64Url",{enumerable:!0,get:()=>h.decodeBase64Url});Object.defineProperty(exports,"decodeBase64UrlFp",{enumerable:!0,get:()=>h.decodeBase64UrlFp});Object.defineProperty(exports,"decodeStartParam",{enumerable:!0,get:()=>h.decodeStartParam});Object.defineProperty(exports,"decodeStartParamFp",{enumerable:!0,get:()=>h.decodeStartParamFp});Object.defineProperty(exports,"deepSnakeToCamelObjKeys",{enumerable:!0,get:()=>h.deepSnakeToCamelObjKeys});Object.defineProperty(exports,"encodeBase64Url",{enumerable:!0,get:()=>h.encodeBase64Url});Object.defineProperty(exports,"getReleaseVersion",{enumerable:!0,get:()=>h.getReleaseVersion});Object.defineProperty(exports,"isSafeToCreateStartParam",{enumerable:!0,get:()=>h.isSafeToCreateStartParam});Object.defineProperty(exports,"isTMA",{enumerable:!0,get:()=>h.isTMA});Object.defineProperty(exports,"isTMAFp",{enumerable:!0,get:()=>h.isTMAFp});Object.defineProperty(exports,"logger",{enumerable:!0,get:()=>h.logger});Object.defineProperty(exports,"mockTelegramEnv",{enumerable:!0,get:()=>h.mockTelegramEnv});Object.defineProperty(exports,"off",{enumerable:!0,get:()=>h.off});Object.defineProperty(exports,"offAll",{enumerable:!0,get:()=>h.offAll});Object.defineProperty(exports,"on",{enumerable:!0,get:()=>h.on});Object.defineProperty(exports,"retrieveLaunchParams",{enumerable:!0,get:()=>h.retrieveLaunchParams});Object.defineProperty(exports,"retrieveLaunchParamsFp",{enumerable:!0,get:()=>h.retrieveLaunchParamsFp});Object.defineProperty(exports,"retrieveRawInitData",{enumerable:!0,get:()=>h.retrieveRawInitData});Object.defineProperty(exports,"retrieveRawInitDataFp",{enumerable:!0,get:()=>h.retrieveRawInitDataFp});Object.defineProperty(exports,"retrieveRawLaunchParams",{enumerable:!0,get:()=>h.retrieveRawLaunchParams});Object.defineProperty(exports,"retrieveRawLaunchParamsFp",{enumerable:!0,get:()=>h.retrieveRawLaunchParamsFp});Object.defineProperty(exports,"setDebug",{enumerable:!0,get:()=>h.setDebug});Object.defineProperty(exports,"setTargetOrigin",{enumerable:!0,get:()=>h.setTargetOrigin});Object.defineProperty(exports,"supports",{enumerable:!0,get:()=>h.supports});Object.defineProperty(exports,"targetOrigin",{enumerable:!0,get:()=>h.targetOrigin});Object.defineProperty(exports,"isAnyRGB",{enumerable:!0,get:()=>q.isAnyRGB});Object.defineProperty(exports,"isRGB",{enumerable:!0,get:()=>q.isRGB});Object.defineProperty(exports,"isRGBA",{enumerable:!0,get:()=>q.isRGBA});Object.defineProperty(exports,"isRGBAShort",{enumerable:!0,get:()=>q.isRGBAShort});Object.defineProperty(exports,"isRGBShort",{enumerable:!0,get:()=>q.isRGBShort});Object.defineProperty(exports,"parseInitDataQuery",{enumerable:!0,get:()=>q.parseInitDataQuery});Object.defineProperty(exports,"parseInitDataQueryFp",{enumerable:!0,get:()=>q.parseInitDataQueryFp});Object.defineProperty(exports,"parseLaunchParamsQuery",{enumerable:!0,get:()=>q.parseLaunchParamsQuery});Object.defineProperty(exports,"parseLaunchParamsQueryFp",{enumerable:!0,get:()=>q.parseLaunchParamsQueryFp});Object.defineProperty(exports,"serializeInitDataQuery",{enumerable:!0,get:()=>q.serializeInitDataQuery});Object.defineProperty(exports,"serializeLaunchParamsQuery",{enumerable:!0,get:()=>q.serializeLaunchParamsQuery});Object.defineProperty(exports,"toRGB",{enumerable:!0,get:()=>q.toRGB});Object.defineProperty(exports,"toRGBFp",{enumerable:!0,get:()=>q.toRGBFp});Object.defineProperty(exports,"toRGBFull",{enumerable:!0,get:()=>q.toRGBFull});Object.defineProperty(exports,"toRGBFullFp",{enumerable:!0,get:()=>q.toRGBFullFp});exports.AccessDeniedError=De;exports.BackButton=Ct;exports.Biometry=vt;exports.CSSVarsBoundError=we;exports.ClosingBehavior=yt;exports.CloudStorage=kt;exports.ConcurrentCallError=Se;exports.FullscreenFailedError=_t;exports.FunctionUnavailableError=mt;exports.HapticFeedback=Pt;exports.InitData=xt;exports.InvalidArgumentsError=J;exports.InvalidEnvError=cs;exports.Invoice=Mt;exports.LocationManager=Ot;exports.MainButton=Vt;exports.MiniApp=Dt;exports.NotAvailableError=ft;exports.Popup=Gt;exports.QrScanner=Wt;exports.SecondaryButton=Kt;exports.SetEmojiStatusError=bt;exports.SettingsButton=zt;exports.ShareMessageError=gt;exports.SwipeBehavior=Nt;exports.ThemeParams=jt;exports.UnknownThemeParamsKeyError=Ft;exports.ValidationError=ce;exports.Viewport=or;exports.addToHomeScreen=ys;exports.addToHomeScreenFp=It;exports.backButton=ds;exports.biometry=ms;exports.checkHomeScreenStatus=Es;exports.checkHomeScreenStatusFp=qt;exports.closingBehavior=bs;exports.cloudStorage=_s;exports.copyTextToClipboard=Zs;exports.createRequestId=Qe;exports.downloadFile=en;exports.downloadFileFp=Jt;exports.getCurrentTime=rn;exports.getCurrentTimeFp=Yt;exports.hapticFeedback=Ss;exports.hideKeyboard=nn;exports.hideKeyboardFp=Zt;exports.init=Fn;exports.initData=As;exports.initFp=ir;exports.invoice=Bs;exports.invokeCustomMethod=Et;exports.isColorDark=Je;exports.isColorDarkFp=$t;exports.locationManager=Os;exports.mainButton=Vs;exports.miniApp=Ut;exports.openLink=Is;exports.openLinkFp=Tt;exports.openTelegramLink=xs;exports.openTelegramLinkFp=Ke;exports.popup=$s;exports.postEvent=St;exports.postEventFp=ue;exports.qrScanner=zs;exports.readTextFromClipboard=an;exports.readTextFromClipboardFp=Xt;exports.request=fs;exports.requestContact=Qs;exports.requestContactComplete=Hs;exports.requestContactCompleteFp=Ze;exports.requestContactFp=Ht;exports.requestEmojiStatusAccess=Fs;exports.requestEmojiStatusAccessFp=At;exports.requestFp=He;exports.requestPhoneAccess=Ds;exports.requestPhoneAccessFp=Ye;exports.requestWriteAccess=Ks;exports.requestWriteAccessFp=Qt;exports.retrieveAndroidDeviceData=un;exports.retrieveAndroidDeviceDataFrom=er;exports.secondaryButton=Ns;exports.sendData=pn;exports.sendDataFp=tr;exports.setEmojiStatus=ws;exports.setEmojiStatusFp=Bt;exports.settingsButton=Js;exports.shareMessage=hn;exports.shareMessageFp=rr;exports.shareStory=fn;exports.shareStoryFp=sr;exports.shareURL=Ts;exports.shareURLFp=Lt;exports.swipeBehavior=Ys;exports.switchInlineQuery=bn;exports.switchInlineQueryFp=nr;exports.themeParams=le;exports.viewport=gn;
4
2
  //# sourceMappingURL=index.cjs.map