@gala-chain/launchpad-sdk 5.0.2-beta.1 → 5.0.4-beta.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 (405) hide show
  1. package/EXAMPLES.md +141 -7
  2. package/README.md +68 -36
  3. package/dist/ai-docs.json +7357 -0
  4. package/dist/index.cjs.js +1 -1
  5. package/dist/index.d.ts +70 -11
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.esm.js +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/src/LaunchpadSDK.d.ts +3288 -214
  10. package/dist/src/LaunchpadSDK.d.ts.map +1 -1
  11. package/dist/src/api/LaunchpadAPI.d.ts +21 -41
  12. package/dist/src/api/LaunchpadAPI.d.ts.map +1 -1
  13. package/dist/src/api/dto/BurnTokensDto.d.ts.map +1 -1
  14. package/dist/src/api/dto/LockTokenDto.d.ts.map +1 -1
  15. package/dist/src/api/dto/TransferTokenDto.d.ts.map +1 -1
  16. package/dist/src/api/dto/UnlockTokenDto.d.ts.map +1 -1
  17. package/dist/src/auth/JwtAuth.d.ts +145 -0
  18. package/dist/src/auth/JwtAuth.d.ts.map +1 -0
  19. package/dist/src/auth/SessionAuthService.d.ts +146 -0
  20. package/dist/src/auth/SessionAuthService.d.ts.map +1 -0
  21. package/dist/src/auth/SignatureAuth.d.ts.map +1 -1
  22. package/dist/src/bridge/BridgeService.d.ts.map +1 -1
  23. package/dist/src/bridge/GalaConnectClient.d.ts.map +1 -1
  24. package/dist/src/bridge/constants/tokens.d.ts +4 -3
  25. package/dist/src/bridge/constants/tokens.d.ts.map +1 -1
  26. package/dist/src/bridge/index.d.ts +1 -0
  27. package/dist/src/bridge/index.d.ts.map +1 -1
  28. package/dist/src/bridge/strategies/BridgeStrategy.d.ts.map +1 -1
  29. package/dist/src/bridge/strategies/EthereumBridgeStrategy.d.ts +1 -38
  30. package/dist/src/bridge/strategies/EthereumBridgeStrategy.d.ts.map +1 -1
  31. package/dist/src/bridge/strategies/SolanaBridgeStrategy.d.ts +1 -21
  32. package/dist/src/bridge/strategies/SolanaBridgeStrategy.d.ts.map +1 -1
  33. package/dist/src/bridge/types/bridge.dto.d.ts +15 -2
  34. package/dist/src/bridge/types/bridge.dto.d.ts.map +1 -1
  35. package/dist/src/bridge/utils/RateLimiter.d.ts +1 -1
  36. package/dist/src/bridge/utils/RateLimiter.d.ts.map +1 -1
  37. package/dist/src/bridge/utils/address-formatter.d.ts +25 -0
  38. package/dist/src/bridge/utils/address-formatter.d.ts.map +1 -0
  39. package/dist/src/bridge/utils/addressValidation.d.ts +200 -0
  40. package/dist/src/bridge/utils/addressValidation.d.ts.map +1 -0
  41. package/dist/src/bridge/utils/balanceHelpers.d.ts +215 -0
  42. package/dist/src/bridge/utils/balanceHelpers.d.ts.map +1 -0
  43. package/dist/src/bridge/utils/bridgeErrors.d.ts +98 -0
  44. package/dist/src/bridge/utils/bridgeErrors.d.ts.map +1 -0
  45. package/dist/src/bridge/utils/bridgeOutHelpers.d.ts +68 -0
  46. package/dist/src/bridge/utils/bridgeOutHelpers.d.ts.map +1 -0
  47. package/dist/src/bridge/utils/bridgePayload.d.ts +107 -0
  48. package/dist/src/bridge/utils/bridgePayload.d.ts.map +1 -0
  49. package/dist/src/bridge/utils/bridgeStatusParser.d.ts +75 -0
  50. package/dist/src/bridge/utils/bridgeStatusParser.d.ts.map +1 -0
  51. package/dist/src/bridge/utils/eip712Helpers.d.ts +66 -0
  52. package/dist/src/bridge/utils/eip712Helpers.d.ts.map +1 -0
  53. package/dist/src/bridge/utils/index.d.ts +9 -0
  54. package/dist/src/bridge/utils/index.d.ts.map +1 -1
  55. package/dist/src/bridge/utils/retry.d.ts +16 -0
  56. package/dist/src/bridge/utils/retry.d.ts.map +1 -1
  57. package/dist/src/bridge/utils/strategyDelegation.d.ts +69 -0
  58. package/dist/src/bridge/utils/strategyDelegation.d.ts.map +1 -0
  59. package/dist/src/bridge/utils/tokenIdUtils.d.ts +7 -0
  60. package/dist/src/bridge/utils/tokenIdUtils.d.ts.map +1 -1
  61. package/dist/src/bridge/utils/tokenMath.d.ts.map +1 -1
  62. package/dist/src/bridge/utils/tokenMetadataResolver.d.ts +97 -0
  63. package/dist/src/bridge/utils/tokenMetadataResolver.d.ts.map +1 -0
  64. package/dist/src/constants/endpoints.d.ts +453 -0
  65. package/dist/src/constants/endpoints.d.ts.map +1 -1
  66. package/dist/src/constants/error-messages.d.ts +1 -1
  67. package/dist/src/constants/error-messages.d.ts.map +1 -1
  68. package/dist/src/constants/jwt.d.ts +41 -0
  69. package/dist/src/constants/jwt.d.ts.map +1 -0
  70. package/dist/src/constants/sdk-defaults.d.ts +37 -0
  71. package/dist/src/constants/sdk-defaults.d.ts.map +1 -0
  72. package/dist/src/constants/version.generated.d.ts +1 -1
  73. package/dist/src/helpers/sdk.d.ts.map +1 -1
  74. package/dist/src/helpers/wallet.d.ts +4 -3
  75. package/dist/src/helpers/wallet.d.ts.map +1 -1
  76. package/dist/src/index.d.ts +70 -11
  77. package/dist/src/index.d.ts.map +1 -1
  78. package/dist/src/schemas/files.d.ts +2 -2
  79. package/dist/src/schemas/launchpad.d.ts +40 -8
  80. package/dist/src/schemas/launchpad.d.ts.map +1 -1
  81. package/dist/src/schemas/pagination.d.ts +7 -7
  82. package/dist/src/schemas/primitives.d.ts.map +1 -1
  83. package/dist/src/schemas/trade.d.ts +6 -6
  84. package/dist/src/schemas/user.d.ts +4 -4
  85. package/dist/src/schemas/validators.d.ts +15 -7
  86. package/dist/src/schemas/validators.d.ts.map +1 -1
  87. package/dist/src/services/AbstractCacheService.d.ts +227 -0
  88. package/dist/src/services/AbstractCacheService.d.ts.map +1 -0
  89. package/dist/src/services/AbstractTokenFetchService.d.ts +150 -0
  90. package/dist/src/services/AbstractTokenFetchService.d.ts.map +1 -0
  91. package/dist/src/services/ApiKeyService.d.ts +205 -0
  92. package/dist/src/services/ApiKeyService.d.ts.map +1 -0
  93. package/dist/src/services/BanService.d.ts +195 -0
  94. package/dist/src/services/BanService.d.ts.map +1 -0
  95. package/dist/src/services/BaseService.d.ts +50 -3
  96. package/dist/src/services/BaseService.d.ts.map +1 -1
  97. package/dist/src/services/BatchedCacheService.d.ts +132 -0
  98. package/dist/src/services/BatchedCacheService.d.ts.map +1 -0
  99. package/dist/src/services/BridgeableTokenCache.d.ts +32 -98
  100. package/dist/src/services/BridgeableTokenCache.d.ts.map +1 -1
  101. package/dist/src/services/BridgeableTokenService.d.ts +18 -13
  102. package/dist/src/services/BridgeableTokenService.d.ts.map +1 -1
  103. package/dist/src/services/BundleService.d.ts.map +1 -1
  104. package/dist/src/services/BundlerClientFactory.d.ts +32 -0
  105. package/dist/src/services/BundlerClientFactory.d.ts.map +1 -0
  106. package/dist/src/services/ChatMessagesService.d.ts +152 -0
  107. package/dist/src/services/ChatMessagesService.d.ts.map +1 -0
  108. package/dist/src/services/CommentService.d.ts +119 -0
  109. package/dist/src/services/CommentService.d.ts.map +1 -0
  110. package/dist/src/services/CommentsService.d.ts +155 -0
  111. package/dist/src/services/CommentsService.d.ts.map +1 -0
  112. package/dist/src/services/ContentFlagService.d.ts +212 -0
  113. package/dist/src/services/ContentFlagService.d.ts.map +1 -0
  114. package/dist/src/services/ContentReactionService.d.ts +175 -0
  115. package/dist/src/services/ContentReactionService.d.ts.map +1 -0
  116. package/dist/src/services/DexBackendClient.d.ts.map +1 -1
  117. package/dist/src/services/DexPoolService.d.ts +3 -3
  118. package/dist/src/services/DexPoolService.d.ts.map +1 -1
  119. package/dist/src/services/DexQuoteService.d.ts.map +1 -1
  120. package/dist/src/services/DexService.d.ts +2 -5
  121. package/dist/src/services/DexService.d.ts.map +1 -1
  122. package/dist/src/services/GSwapAssetService.d.ts +80 -0
  123. package/dist/src/services/GSwapAssetService.d.ts.map +1 -0
  124. package/dist/src/services/GSwapLiquidityMutationService.d.ts +140 -0
  125. package/dist/src/services/GSwapLiquidityMutationService.d.ts.map +1 -0
  126. package/dist/src/services/GSwapLiquidityQueryService.d.ts +87 -0
  127. package/dist/src/services/GSwapLiquidityQueryService.d.ts.map +1 -0
  128. package/dist/src/services/GSwapPoolCalculationService.d.ts +200 -0
  129. package/dist/src/services/GSwapPoolCalculationService.d.ts.map +1 -0
  130. package/dist/src/services/GSwapPoolQueryService.d.ts +116 -0
  131. package/dist/src/services/GSwapPoolQueryService.d.ts.map +1 -0
  132. package/dist/src/services/GSwapService.d.ts +14 -0
  133. package/dist/src/services/GSwapService.d.ts.map +1 -1
  134. package/dist/src/services/GSwapSwapService.d.ts +68 -0
  135. package/dist/src/services/GSwapSwapService.d.ts.map +1 -0
  136. package/dist/src/services/GalaChainBalanceService.d.ts +155 -0
  137. package/dist/src/services/GalaChainBalanceService.d.ts.map +1 -0
  138. package/dist/src/services/GalaChainGatewayClient.d.ts +32 -1
  139. package/dist/src/services/GalaChainGatewayClient.d.ts.map +1 -1
  140. package/dist/src/services/GalaChainLockService.d.ts +144 -0
  141. package/dist/src/services/GalaChainLockService.d.ts.map +1 -0
  142. package/dist/src/services/GalaChainService.d.ts +23 -106
  143. package/dist/src/services/GalaChainService.d.ts.map +1 -1
  144. package/dist/src/services/GalaChainTokenService.d.ts +108 -0
  145. package/dist/src/services/GalaChainTokenService.d.ts.map +1 -0
  146. package/dist/src/services/GalaChainTransferService.d.ts +205 -0
  147. package/dist/src/services/GalaChainTransferService.d.ts.map +1 -0
  148. package/dist/src/services/ImageService.d.ts +24 -8
  149. package/dist/src/services/ImageService.d.ts.map +1 -1
  150. package/dist/src/services/LaunchpadService.d.ts +77 -5
  151. package/dist/src/services/LaunchpadService.d.ts.map +1 -1
  152. package/dist/src/services/ModeratorService.d.ts +269 -0
  153. package/dist/src/services/ModeratorService.d.ts.map +1 -0
  154. package/dist/src/services/MultiPoolStateManager.d.ts +4 -6
  155. package/dist/src/services/MultiPoolStateManager.d.ts.map +1 -1
  156. package/dist/src/services/NetworkKeyedCacheService.d.ts +185 -0
  157. package/dist/src/services/NetworkKeyedCacheService.d.ts.map +1 -0
  158. package/dist/src/services/OverseerService.d.ts +322 -0
  159. package/dist/src/services/OverseerService.d.ts.map +1 -0
  160. package/dist/src/services/PoolCacheManager.d.ts +2 -2
  161. package/dist/src/services/PoolCacheManager.d.ts.map +1 -1
  162. package/dist/src/services/PoolService.d.ts +61 -7
  163. package/dist/src/services/PoolService.d.ts.map +1 -1
  164. package/dist/src/services/PoolStateManager.d.ts +2 -2
  165. package/dist/src/services/PoolStateManager.d.ts.map +1 -1
  166. package/dist/src/services/PriceHistoryService.d.ts.map +1 -1
  167. package/dist/src/services/SignatureService.d.ts.map +1 -1
  168. package/dist/src/services/StreamChatService.d.ts +378 -0
  169. package/dist/src/services/StreamChatService.d.ts.map +1 -0
  170. package/dist/src/services/StreamTokenServiceBase.d.ts +371 -0
  171. package/dist/src/services/StreamTokenServiceBase.d.ts.map +1 -0
  172. package/dist/src/services/StreamWebSocketService.d.ts +268 -0
  173. package/dist/src/services/StreamWebSocketService.d.ts.map +1 -0
  174. package/dist/src/services/StreamingEventService.d.ts +431 -0
  175. package/dist/src/services/StreamingEventService.d.ts.map +1 -0
  176. package/dist/src/services/StreamingService.d.ts +547 -0
  177. package/dist/src/services/StreamingService.d.ts.map +1 -0
  178. package/dist/src/services/SwapEventQueue.d.ts +2 -2
  179. package/dist/src/services/SwapEventQueue.d.ts.map +1 -1
  180. package/dist/src/services/TokenBanService.d.ts +214 -0
  181. package/dist/src/services/TokenBanService.d.ts.map +1 -0
  182. package/dist/src/services/TokenClassKeyService.d.ts.map +1 -1
  183. package/dist/src/services/TokenMetadataCache.d.ts +36 -27
  184. package/dist/src/services/TokenMetadataCache.d.ts.map +1 -1
  185. package/dist/src/services/TokenMetadataService.d.ts +24 -4
  186. package/dist/src/services/TokenMetadataService.d.ts.map +1 -1
  187. package/dist/src/services/TokenResolverService.d.ts.map +1 -1
  188. package/dist/src/services/TradeService.d.ts +73 -0
  189. package/dist/src/services/TradeService.d.ts.map +1 -1
  190. package/dist/src/services/UserService.d.ts +56 -3
  191. package/dist/src/services/UserService.d.ts.map +1 -1
  192. package/dist/src/services/WebSocketService.d.ts +3 -3
  193. package/dist/src/services/WebSocketService.d.ts.map +1 -1
  194. package/dist/src/services/WrapService.d.ts +18 -5
  195. package/dist/src/services/WrapService.d.ts.map +1 -1
  196. package/dist/src/services/WrappableTokenCache.d.ts +8 -36
  197. package/dist/src/services/WrappableTokenCache.d.ts.map +1 -1
  198. package/dist/src/services/WrappableTokenService.d.ts +18 -12
  199. package/dist/src/services/WrappableTokenService.d.ts.map +1 -1
  200. package/dist/src/services/shared/cache-helpers.d.ts +188 -0
  201. package/dist/src/services/shared/cache-helpers.d.ts.map +1 -0
  202. package/dist/src/services/shared/http-helpers.d.ts +146 -0
  203. package/dist/src/services/shared/http-helpers.d.ts.map +1 -0
  204. package/dist/src/services/shared/pagination-helpers.d.ts +157 -0
  205. package/dist/src/services/shared/pagination-helpers.d.ts.map +1 -0
  206. package/dist/src/services/shared/service-validators.d.ts +137 -0
  207. package/dist/src/services/shared/service-validators.d.ts.map +1 -0
  208. package/dist/src/services/shared/websocket-helpers.d.ts +158 -0
  209. package/dist/src/services/shared/websocket-helpers.d.ts.map +1 -0
  210. package/dist/src/test-constants.d.ts +29 -0
  211. package/dist/src/test-constants.d.ts.map +1 -0
  212. package/dist/src/types/api-key.dto.d.ts +300 -0
  213. package/dist/src/types/api-key.dto.d.ts.map +1 -0
  214. package/dist/src/types/backend-responses.d.ts +12 -0
  215. package/dist/src/types/backend-responses.d.ts.map +1 -1
  216. package/dist/src/types/ban.dto.d.ts +413 -0
  217. package/dist/src/types/ban.dto.d.ts.map +1 -0
  218. package/dist/src/types/burn.dto.d.ts +21 -0
  219. package/dist/src/types/burn.dto.d.ts.map +1 -1
  220. package/dist/src/types/chat-messages.dto.d.ts +193 -0
  221. package/dist/src/types/chat-messages.dto.d.ts.map +1 -0
  222. package/dist/src/types/comment.dto.d.ts +180 -0
  223. package/dist/src/types/comment.dto.d.ts.map +1 -0
  224. package/dist/src/types/comments.dto.d.ts +210 -0
  225. package/dist/src/types/comments.dto.d.ts.map +1 -0
  226. package/dist/src/types/common.d.ts +369 -0
  227. package/dist/src/types/common.d.ts.map +1 -1
  228. package/dist/src/types/constraints.d.ts +374 -0
  229. package/dist/src/types/constraints.d.ts.map +1 -0
  230. package/dist/src/types/content-flag.dto.d.ts +310 -0
  231. package/dist/src/types/content-flag.dto.d.ts.map +1 -0
  232. package/dist/src/types/content-reactions.dto.d.ts +132 -0
  233. package/dist/src/types/content-reactions.dto.d.ts.map +1 -0
  234. package/dist/src/types/dex-pool.dto.d.ts +13 -37
  235. package/dist/src/types/dex-pool.dto.d.ts.map +1 -1
  236. package/dist/src/types/dto.d.ts +8 -0
  237. package/dist/src/types/dto.d.ts.map +1 -1
  238. package/dist/src/types/galachain-api.types.d.ts +30 -0
  239. package/dist/src/types/galachain-api.types.d.ts.map +1 -1
  240. package/dist/src/types/gswap-responses.types.d.ts.map +1 -1
  241. package/dist/src/types/launchpad.dto.d.ts +234 -131
  242. package/dist/src/types/launchpad.dto.d.ts.map +1 -1
  243. package/dist/src/types/launchpad.validation.d.ts.map +1 -1
  244. package/dist/src/types/lock.dto.d.ts +20 -35
  245. package/dist/src/types/lock.dto.d.ts.map +1 -1
  246. package/dist/src/types/moderator.dto.d.ts +581 -0
  247. package/dist/src/types/moderator.dto.d.ts.map +1 -0
  248. package/dist/src/types/options.dto.d.ts +25 -115
  249. package/dist/src/types/options.dto.d.ts.map +1 -1
  250. package/dist/src/types/overseer.dto.d.ts +420 -0
  251. package/dist/src/types/overseer.dto.d.ts.map +1 -0
  252. package/dist/src/types/pool.dto.d.ts +106 -0
  253. package/dist/src/types/pool.dto.d.ts.map +1 -0
  254. package/dist/src/types/result.types.d.ts +3 -2
  255. package/dist/src/types/result.types.d.ts.map +1 -1
  256. package/dist/src/types/session-auth.dto.d.ts +91 -0
  257. package/dist/src/types/session-auth.dto.d.ts.map +1 -0
  258. package/dist/src/types/stream-chat.dto.d.ts +815 -0
  259. package/dist/src/types/stream-chat.dto.d.ts.map +1 -0
  260. package/dist/src/types/streaming-events.dto.d.ts +586 -0
  261. package/dist/src/types/streaming-events.dto.d.ts.map +1 -0
  262. package/dist/src/types/streaming.dto.d.ts +1141 -0
  263. package/dist/src/types/streaming.dto.d.ts.map +1 -0
  264. package/dist/src/types/token-ban.dto.d.ts +195 -0
  265. package/dist/src/types/token-ban.dto.d.ts.map +1 -0
  266. package/dist/src/types/trade.dto.d.ts +21 -61
  267. package/dist/src/types/trade.dto.d.ts.map +1 -1
  268. package/dist/src/types/trades-query.dto.d.ts +127 -0
  269. package/dist/src/types/trades-query.dto.d.ts.map +1 -0
  270. package/dist/src/types/transfer.dto.d.ts +20 -15
  271. package/dist/src/types/transfer.dto.d.ts.map +1 -1
  272. package/dist/src/types/user.dto.d.ts +185 -73
  273. package/dist/src/types/user.dto.d.ts.map +1 -1
  274. package/dist/src/types/wrappable-token.dto.d.ts +6 -2
  275. package/dist/src/types/wrappable-token.dto.d.ts.map +1 -1
  276. package/dist/src/utils/LiquidityEventExtractor.d.ts.map +1 -1
  277. package/dist/src/utils/Logger.d.ts.map +1 -1
  278. package/dist/src/utils/MonitoringMetrics.d.ts.map +1 -1
  279. package/dist/src/utils/PoolKeyNormalizer.d.ts.map +1 -1
  280. package/dist/src/utils/ReconnectionManager.d.ts +142 -0
  281. package/dist/src/utils/ReconnectionManager.d.ts.map +1 -0
  282. package/dist/src/utils/SignatureHelper.d.ts +9 -0
  283. package/dist/src/utils/SignatureHelper.d.ts.map +1 -1
  284. package/dist/src/utils/SwapEventExtractor.d.ts.map +1 -1
  285. package/dist/src/utils/adapters.d.ts.map +1 -1
  286. package/dist/src/utils/address-formatter.d.ts +317 -0
  287. package/dist/src/utils/address-formatter.d.ts.map +1 -0
  288. package/dist/src/utils/agent-config.d.ts.map +1 -1
  289. package/dist/src/utils/amount-validator.d.ts +268 -0
  290. package/dist/src/utils/amount-validator.d.ts.map +1 -0
  291. package/dist/src/utils/api-patterns.d.ts +347 -0
  292. package/dist/src/utils/api-patterns.d.ts.map +1 -0
  293. package/dist/src/utils/array-helpers.d.ts +115 -0
  294. package/dist/src/utils/array-helpers.d.ts.map +1 -0
  295. package/dist/src/utils/async-patterns.d.ts +272 -0
  296. package/dist/src/utils/async-patterns.d.ts.map +1 -0
  297. package/dist/src/utils/auto-pagination.d.ts +195 -2
  298. package/dist/src/utils/auto-pagination.d.ts.map +1 -1
  299. package/dist/src/utils/bignumber-helpers.d.ts +119 -13
  300. package/dist/src/utils/bignumber-helpers.d.ts.map +1 -1
  301. package/dist/src/utils/bignumber-pool-cache.d.ts.map +1 -1
  302. package/dist/src/utils/bondingCurveCalculations.d.ts.map +1 -1
  303. package/dist/src/utils/cacheWarmingHelpers.d.ts +2 -2
  304. package/dist/src/utils/cacheWarmingHelpers.d.ts.map +1 -1
  305. package/dist/src/utils/data-transform-patterns.d.ts +393 -0
  306. package/dist/src/utils/data-transform-patterns.d.ts.map +1 -0
  307. package/dist/src/utils/date-utils.d.ts +166 -0
  308. package/dist/src/utils/date-utils.d.ts.map +1 -1
  309. package/dist/src/utils/delimiter-parser.d.ts +139 -0
  310. package/dist/src/utils/delimiter-parser.d.ts.map +1 -0
  311. package/dist/src/utils/error-factories.d.ts +346 -1
  312. package/dist/src/utils/error-factories.d.ts.map +1 -1
  313. package/dist/src/utils/error-handling-patterns.d.ts +390 -0
  314. package/dist/src/utils/error-handling-patterns.d.ts.map +1 -0
  315. package/dist/src/utils/error-patterns.d.ts +360 -0
  316. package/dist/src/utils/error-patterns.d.ts.map +1 -0
  317. package/dist/src/utils/error-utils.d.ts +250 -0
  318. package/dist/src/utils/error-utils.d.ts.map +1 -1
  319. package/dist/src/utils/error-wrapper.d.ts +208 -0
  320. package/dist/src/utils/error-wrapper.d.ts.map +1 -0
  321. package/dist/src/utils/errors.d.ts +70 -0
  322. package/dist/src/utils/errors.d.ts.map +1 -1
  323. package/dist/src/utils/http-factory.d.ts +36 -0
  324. package/dist/src/utils/http-factory.d.ts.map +1 -0
  325. package/dist/src/utils/http.d.ts.map +1 -1
  326. package/dist/src/utils/load-env.d.ts.map +1 -1
  327. package/dist/src/utils/multipart.d.ts.map +1 -1
  328. package/dist/src/utils/numeric-patterns.d.ts +289 -0
  329. package/dist/src/utils/numeric-patterns.d.ts.map +1 -0
  330. package/dist/src/utils/numeric-wrappers.d.ts +146 -0
  331. package/dist/src/utils/numeric-wrappers.d.ts.map +1 -0
  332. package/dist/src/utils/object-extractors.d.ts +115 -0
  333. package/dist/src/utils/object-extractors.d.ts.map +1 -0
  334. package/dist/src/utils/object-patterns.d.ts +81 -0
  335. package/dist/src/utils/object-patterns.d.ts.map +1 -0
  336. package/dist/src/utils/pagination-helpers.d.ts +230 -0
  337. package/dist/src/utils/pagination-helpers.d.ts.map +1 -0
  338. package/dist/src/utils/pool-pair-parser.d.ts +3 -1
  339. package/dist/src/utils/pool-pair-parser.d.ts.map +1 -1
  340. package/dist/src/utils/pool-state-validator.d.ts.map +1 -1
  341. package/dist/src/utils/position-filters.d.ts +1 -2
  342. package/dist/src/utils/position-filters.d.ts.map +1 -1
  343. package/dist/src/utils/query-params.d.ts +0 -16
  344. package/dist/src/utils/query-params.d.ts.map +1 -1
  345. package/dist/src/utils/response-handlers.d.ts +149 -20
  346. package/dist/src/utils/response-handlers.d.ts.map +1 -1
  347. package/dist/src/utils/response-helpers.d.ts +28 -0
  348. package/dist/src/utils/response-helpers.d.ts.map +1 -0
  349. package/dist/src/utils/response-normalizers.d.ts +27 -49
  350. package/dist/src/utils/response-normalizers.d.ts.map +1 -1
  351. package/dist/src/utils/safe-parsers.d.ts +487 -0
  352. package/dist/src/utils/safe-parsers.d.ts.map +1 -0
  353. package/dist/src/utils/service-validators.d.ts +268 -0
  354. package/dist/src/utils/service-validators.d.ts.map +1 -0
  355. package/dist/src/utils/slippage-utils.d.ts.map +1 -1
  356. package/dist/src/utils/string-patterns.d.ts +404 -0
  357. package/dist/src/utils/string-patterns.d.ts.map +1 -0
  358. package/dist/src/utils/string-transforms.d.ts +89 -0
  359. package/dist/src/utils/string-transforms.d.ts.map +1 -0
  360. package/dist/src/utils/string-utils.d.ts +108 -0
  361. package/dist/src/utils/string-utils.d.ts.map +1 -0
  362. package/dist/src/utils/swap-delta-calculator.d.ts.map +1 -1
  363. package/dist/src/utils/tick-crossing-handler.d.ts.map +1 -1
  364. package/dist/src/utils/token-format-converter.d.ts +22 -8
  365. package/dist/src/utils/token-format-converter.d.ts.map +1 -1
  366. package/dist/src/utils/token-parser.d.ts +2 -2
  367. package/dist/src/utils/token-parser.d.ts.map +1 -1
  368. package/dist/src/utils/token-stringification.d.ts +168 -0
  369. package/dist/src/utils/token-stringification.d.ts.map +1 -0
  370. package/dist/src/utils/tokenNameNormalizer.d.ts +96 -0
  371. package/dist/src/utils/tokenNameNormalizer.d.ts.map +1 -0
  372. package/dist/src/utils/tokenNormalizer.d.ts +8 -45
  373. package/dist/src/utils/tokenNormalizer.d.ts.map +1 -1
  374. package/dist/src/utils/transfer-validation.d.ts +1 -1
  375. package/dist/src/utils/transfer-validation.d.ts.map +1 -1
  376. package/dist/src/utils/type-guard-factory.d.ts +260 -0
  377. package/dist/src/utils/type-guard-factory.d.ts.map +1 -0
  378. package/dist/src/utils/unique-key-generator.d.ts +148 -0
  379. package/dist/src/utils/unique-key-generator.d.ts.map +1 -0
  380. package/dist/src/utils/validation-helpers.d.ts +906 -183
  381. package/dist/src/utils/validation-helpers.d.ts.map +1 -1
  382. package/dist/src/utils/validation-patterns.d.ts +745 -0
  383. package/dist/src/utils/validation-patterns.d.ts.map +1 -0
  384. package/dist/src/utils/validation.d.ts +2 -30
  385. package/dist/src/utils/validation.d.ts.map +1 -1
  386. package/dist/src/utils/wallet.d.ts +12 -1
  387. package/dist/src/utils/wallet.d.ts.map +1 -1
  388. package/dist/src/utils/websocket-patterns.d.ts +681 -0
  389. package/dist/src/utils/websocket-patterns.d.ts.map +1 -0
  390. package/dist/src/utils/websocket-validators.d.ts.map +1 -1
  391. package/package.json +86 -19
  392. package/dist/src/bridge/strategies/index.d.ts +0 -9
  393. package/dist/src/bridge/strategies/index.d.ts.map +0 -1
  394. package/dist/src/constants/counts.d.ts +0 -66
  395. package/dist/src/constants/counts.d.ts.map +0 -1
  396. package/dist/src/services/WebSocketManager.d.ts +0 -99
  397. package/dist/src/services/WebSocketManager.d.ts.map +0 -1
  398. package/dist/src/types/eip712-types.d.ts +0 -140
  399. package/dist/src/types/eip712-types.d.ts.map +0 -1
  400. package/dist/src/types/pool-state-manager-config.dto.d.ts +0 -103
  401. package/dist/src/types/pool-state-manager-config.dto.d.ts.map +0 -1
  402. package/dist/src/utils/number-utils.d.ts +0 -94
  403. package/dist/src/utils/number-utils.d.ts.map +0 -1
  404. package/dist/src/utils/precision-math.d.ts +0 -37
  405. package/dist/src/utils/precision-math.d.ts.map +0 -1
@@ -0,0 +1,371 @@
1
+ /**
2
+ * Stream Token Service Base
3
+ *
4
+ * Abstract base class providing shared functionality for streaming-related services.
5
+ * Contains common helper methods for token validation, endpoint building,
6
+ * admin authentication, JWT authentication, and response handling.
7
+ *
8
+ * @category Services
9
+ * @since 5.1.1
10
+ * @internal
11
+ */
12
+ import { HttpClient } from '../utils/http';
13
+ import { BaseService } from './BaseService';
14
+ import { TokenNameConstraint, InternalApiResponse } from '../types/common';
15
+ import type { JwtAuth } from '../auth/JwtAuth';
16
+ /**
17
+ * Admin API key header name
18
+ */
19
+ export declare const ADMIN_API_KEY_HEADER = "x-api-key";
20
+ /**
21
+ * Stream Token Service Base Class
22
+ *
23
+ * Provides shared functionality for StreamingService and StreamChatService:
24
+ * - Token name validation
25
+ * - Endpoint URL building with path parameters
26
+ * - Admin header management
27
+ * - JWT authentication support
28
+ * - Response data extraction
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * class MyStreamService extends StreamTokenServiceBase {
33
+ * constructor(http: HttpClient, adminApiKey?: string, jwtAuth?: JwtAuth) {
34
+ * super(http, adminApiKey, jwtAuth, false);
35
+ * }
36
+ *
37
+ * async getStatus(tokenName: string) {
38
+ * this.validateTokenName(tokenName, MY_CONSTRAINTS.TOKEN_NAME);
39
+ * const endpoint = this.buildEndpoint('/api/:tokenName/status', { tokenName });
40
+ * const response = await this.http.get(endpoint, this.getAdminHeaders());
41
+ * return this.extractData(response);
42
+ * }
43
+ *
44
+ * async startStream(tokenName: string) {
45
+ * // JWT-protected endpoint
46
+ * const endpoint = this.buildEndpoint('/api/:tokenName/start', { tokenName });
47
+ * const response = await this.http.post(endpoint, {}, { headers: this.getJwtHeaders() });
48
+ * return this.extractData(response);
49
+ * }
50
+ * }
51
+ * ```
52
+ */
53
+ export declare abstract class StreamTokenServiceBase extends BaseService {
54
+ /**
55
+ * Admin API key for authenticated endpoints
56
+ */
57
+ protected readonly adminApiKey: string | undefined;
58
+ /**
59
+ * JWT authentication manager for session-based auth
60
+ */
61
+ protected jwtAuth: JwtAuth | undefined;
62
+ /**
63
+ * Create a new stream token service instance
64
+ *
65
+ * @param http - HTTP client for API requests
66
+ * @param adminApiKey - Optional admin API key for admin-only endpoints
67
+ * @param jwtAuth - Optional JWT auth manager for session-based auth
68
+ * @param debugMode - Enable debug logging
69
+ */
70
+ constructor(http: HttpClient, adminApiKey?: string, jwtAuth?: JwtAuth, debugMode?: boolean);
71
+ /**
72
+ * Set the JWT authentication manager
73
+ *
74
+ * This allows dynamic configuration of JWT auth after service creation.
75
+ *
76
+ * @param jwtAuth - JWT auth manager instance
77
+ */
78
+ setJwtAuth(jwtAuth: JwtAuth): void;
79
+ /**
80
+ * Validate token name format against provided constraints
81
+ *
82
+ * @param tokenName - Token name to validate
83
+ * @param constraints - Token name validation constraints
84
+ * @throws {ValidationError} If token name is invalid
85
+ */
86
+ protected validateTokenName(tokenName: string, constraints: TokenNameConstraint): void;
87
+ /**
88
+ * Validate a required string parameter
89
+ *
90
+ * @param value - Value to validate
91
+ * @param fieldName - Technical field name for error details
92
+ * @param displayName - Human-readable name for error message
93
+ * @throws {ValidationError} If value is missing or not a string
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * this.validateRequiredString(assetId, 'assetId', 'Asset ID');
98
+ * // Throws: ValidationError('Asset ID is required', 'assetId', 'REQUIRED')
99
+ * ```
100
+ */
101
+ protected validateRequiredString(value: string | undefined, fieldName: string, displayName: string): void;
102
+ /**
103
+ * Validate an optional string parameter with max length constraint
104
+ *
105
+ * @param value - Value to validate (undefined/null allowed)
106
+ * @param fieldName - Technical field name for error details
107
+ * @param displayName - Human-readable name for error message
108
+ * @param maxLength - Maximum allowed string length
109
+ * @throws {ValidationError} If value is not a string or exceeds maxLength
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * this.validateOptionalString(description, 'description', 'Description', 255);
114
+ * this.validateOptionalString(reason, 'reason', 'Reason', 500);
115
+ * ```
116
+ */
117
+ protected validateOptionalString(value: string | undefined | null, fieldName: string, displayName: string, maxLength: number): void;
118
+ /**
119
+ * Validate an optional number parameter with min/max constraints
120
+ *
121
+ * @param value - Value to validate (undefined/null allowed)
122
+ * @param fieldName - Technical field name for error details
123
+ * @param displayName - Human-readable name for error message
124
+ * @param min - Minimum allowed value
125
+ * @param max - Maximum allowed value
126
+ * @param minMessage - Custom message suffix for minimum violation
127
+ * @param maxMessage - Custom message suffix for maximum violation
128
+ * @throws {ValidationError} If value is not a number or out of range
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * this.validateOptionalNumber(durationSeconds, 'durationSeconds', 'Duration', 60, 31536000, '1 minute', '1 year');
133
+ * ```
134
+ */
135
+ protected validateOptionalNumber(value: number | undefined | null, fieldName: string, displayName: string, min: number, max: number, minMessage?: string, maxMessage?: string): void;
136
+ /**
137
+ * Validate an optional ISO 8601 date string
138
+ *
139
+ * @param value - Value to validate (undefined/null allowed)
140
+ * @param fieldName - Technical field name for error details
141
+ * @param displayName - Human-readable name for error message
142
+ * @throws {ValidationError} If value is not a valid ISO 8601 date
143
+ *
144
+ * @example
145
+ * ```typescript
146
+ * this.validateOptionalDate(expiresAt, 'expiresAt', 'Expiration date');
147
+ * ```
148
+ */
149
+ protected validateOptionalDate(value: string | undefined | null, fieldName: string, displayName: string): void;
150
+ /**
151
+ * Validate a positive integer (for IDs)
152
+ *
153
+ * @param value - Value to validate
154
+ * @param fieldName - Technical field name for error details
155
+ * @param displayName - Human-readable name for error message
156
+ * @throws {ValidationError} If value is not a positive integer
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * this.validatePositiveInteger(id, 'id', 'API key ID');
161
+ * this.validatePositiveInteger(inviteId, 'inviteId', 'Invite ID');
162
+ * ```
163
+ */
164
+ protected validatePositiveInteger(value: number, fieldName: string, displayName: string): void;
165
+ /**
166
+ * Validate a status filter against an enum object
167
+ *
168
+ * Generic validator for status filters used in list operations.
169
+ * Works with any enum-like const object (OVERSEER_STATUS, INVITE_STATUS, etc.)
170
+ *
171
+ * @param status - Status value to validate (undefined allowed)
172
+ * @param validStatusEnum - Enum-like const object to validate against
173
+ * @param fieldName - Field name for error message (default: 'status')
174
+ * @throws {ValidationError} If status is not a valid enum value
175
+ *
176
+ * @example
177
+ * ```typescript
178
+ * this.validateStatusFilter(options.status, OVERSEER_INVITE_STATUS);
179
+ * this.validateStatusFilter(options.status, OVERSEER_STATUS);
180
+ * ```
181
+ */
182
+ protected validateStatusFilter<T extends Record<string, string>>(status: string | undefined, validStatusEnum: T, fieldName?: string): void;
183
+ /**
184
+ * Build pagination query parameters with max limit enforcement
185
+ *
186
+ * Consolidates the common pagination building pattern used across services:
187
+ * - Converts page/limit to strings
188
+ * - Enforces max limit constraint
189
+ * - Only includes params that are defined
190
+ *
191
+ * @param options - Options object with optional page and limit
192
+ * @param maxLimit - Maximum allowed limit value
193
+ * @returns Query params object with stringified page and limit
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * const params = this.buildPaginationParams(
198
+ * { page: 1, limit: 50 },
199
+ * CONSTRAINTS.PAGINATION.MAX_LIMIT
200
+ * );
201
+ * // Result: { page: '1', limit: '20' } if max is 20
202
+ * ```
203
+ */
204
+ protected buildPaginationParams(options: {
205
+ page?: number;
206
+ limit?: number;
207
+ }, maxLimit: number): Record<string, string>;
208
+ /**
209
+ * Add optional filter parameters to a query params object
210
+ *
211
+ * Consolidates the common pattern of conditionally adding filter params.
212
+ * Only adds params that have truthy values (not undefined, null, or empty string).
213
+ *
214
+ * @param params - Query params object to add to (mutated)
215
+ * @param options - Options object containing filter values
216
+ * @param fields - Array of field names to extract from options
217
+ * @returns The mutated params object (for chaining)
218
+ *
219
+ * @example
220
+ * ```typescript
221
+ * const params = this.buildPaginationParams(options, MAX_LIMIT);
222
+ * this.addOptionalFilterParams(params, options, ['search', 'name', 'userAddress']);
223
+ * ```
224
+ */
225
+ protected addOptionalFilterParams<T>(params: Record<string, string>, options: T, fields: (keyof T & string)[]): Record<string, string>;
226
+ /**
227
+ * Build endpoint URL with path parameters
228
+ *
229
+ * @param template - URL template with :param placeholders
230
+ * @param params - Parameters to substitute (values are lowercased and encoded)
231
+ * @returns Built URL with substituted parameters
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * const url = this.buildEndpoint('/api/:tokenName/status', { tokenName: 'MyToken' });
236
+ * // Returns: '/api/mytoken/status'
237
+ * ```
238
+ */
239
+ protected buildEndpoint(template: string, params: Record<string, string>): string;
240
+ /**
241
+ * Build endpoint URL with an ID parameter (case-preserved)
242
+ *
243
+ * Unlike buildEndpoint which lowercases values (for tokenName),
244
+ * this preserves the ID case for message IDs and other identifiers.
245
+ *
246
+ * This consolidates the duplicate buildEndpointWithId methods found in
247
+ * CommentsService and ChatMessagesService.
248
+ *
249
+ * @param template - URL template with :id placeholder
250
+ * @param id - ID value to substitute (case-preserved, URI-encoded)
251
+ * @returns Built URL with ID substituted
252
+ *
253
+ * @example
254
+ * ```typescript
255
+ * const url = this.buildEndpointWithId('/api/messages/:id', 'msg-1234567890123-abc');
256
+ * // Returns: '/api/messages/msg-1234567890123-abc'
257
+ * ```
258
+ */
259
+ protected buildEndpointWithId(template: string, id: string): string;
260
+ /**
261
+ * Validate token name and build endpoint URL in one step
262
+ *
263
+ * Consolidates the common pattern of validating token name then building endpoint:
264
+ * ```typescript
265
+ * this.validateTokenName(tokenName, constraints);
266
+ * const endpoint = this.buildEndpoint(template, { tokenName });
267
+ * ```
268
+ *
269
+ * @param tokenName - Token name to validate
270
+ * @param constraints - Token name validation constraints
271
+ * @param template - URL template with :tokenName placeholder
272
+ * @returns Built endpoint URL with validated, normalized token name
273
+ * @throws {ValidationError} If token name is invalid
274
+ *
275
+ * @example
276
+ * ```typescript
277
+ * const endpoint = this.validateAndBuildTokenEndpoint(
278
+ * tokenName,
279
+ * STREAMING_CONSTRAINTS.TOKEN_NAME,
280
+ * STREAMING_ENDPOINTS.GET_STREAM_INFO
281
+ * );
282
+ * ```
283
+ */
284
+ protected validateAndBuildTokenEndpoint(tokenName: string, constraints: TokenNameConstraint, template: string): string;
285
+ /**
286
+ * Get admin headers for admin-only endpoints
287
+ *
288
+ * @returns Headers object with admin API key
289
+ * @throws {ConfigurationError} If admin API key is not configured
290
+ */
291
+ protected getAdminHeaders(): Record<string, string>;
292
+ /**
293
+ * Get JWT headers for session-authenticated endpoints
294
+ *
295
+ * @returns Headers object with Authorization: Bearer token
296
+ * @throws {ConfigurationError} If JWT auth is not configured or no token
297
+ */
298
+ protected getJwtHeaders(): Record<string, string>;
299
+ /**
300
+ * Check if JWT authentication is available
301
+ *
302
+ * @returns true if JWT auth is configured with a valid token
303
+ */
304
+ protected hasJwtAuth(): boolean;
305
+ /**
306
+ * Check if admin API key is configured
307
+ *
308
+ * @returns true if admin API key is set
309
+ */
310
+ protected hasAdminApiKey(): boolean;
311
+ /**
312
+ * Get headers for dual-auth endpoints (API key OR JWT).
313
+ *
314
+ * Dual-auth endpoints accept either admin API key or JWT authentication.
315
+ * This allows both admins and owners to perform the same operation with
316
+ * different authorization levels.
317
+ *
318
+ * Priority:
319
+ * 1. Admin API key (if configured) - takes precedence
320
+ * 2. JWT auth (if authenticated) - fallback for owners
321
+ *
322
+ * @returns Headers for authentication
323
+ * @throws ConfigurationError if neither auth method is available
324
+ *
325
+ * @example
326
+ * ```typescript
327
+ * // In a subclass
328
+ * async toggleFeatureWithDualAuth(tokenName: string) {
329
+ * const headers = this.getDualAuthHeaders();
330
+ * // If admin API key is set, uses admin headers
331
+ * // Otherwise, requires valid JWT authentication
332
+ * return this.http.post(endpoint, {}, headers);
333
+ * }
334
+ * ```
335
+ */
336
+ protected getDualAuthHeaders(): Record<string, string>;
337
+ /**
338
+ * Extract data from backend response wrapper
339
+ *
340
+ * @param response - Response object with data, error, and message fields
341
+ * @returns Extracted data
342
+ * @throws {Error} If response indicates an error or has no data
343
+ */
344
+ protected extractData<T>(response: InternalApiResponse<T>): T;
345
+ /**
346
+ * Toggle a feature (enable/disable) for a token
347
+ *
348
+ * Shared implementation for enable/disable patterns in streaming services.
349
+ * Handles validation, endpoint building, admin auth, and response extraction.
350
+ *
351
+ * @param tokenName - Token name to toggle feature for
352
+ * @param endpoint - API endpoint template with :tokenName placeholder
353
+ * @param constraints - Token name validation constraints
354
+ * @returns Toggle result with enabled status and token name
355
+ * @throws {ValidationError} If token name is invalid
356
+ * @throws {ConfigurationError} If admin API key is not configured
357
+ *
358
+ * @example
359
+ * ```typescript
360
+ * // In StreamingService
361
+ * async disableStream(tokenName: string) {
362
+ * return this.toggleFeature(tokenName, STREAMING_ENDPOINTS.DISABLE_STREAM, STREAMING_CONSTRAINTS.TOKEN_NAME);
363
+ * }
364
+ * ```
365
+ */
366
+ protected toggleFeature(tokenName: string, endpoint: string, constraints: TokenNameConstraint): Promise<{
367
+ enabled: boolean;
368
+ tokenName: string;
369
+ }>;
370
+ }
371
+ //# sourceMappingURL=StreamTokenServiceBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamTokenServiceBase.d.ts","sourceRoot":"","sources":["../../../src/services/StreamTokenServiceBase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,268 @@
1
+ /**
2
+ * Stream WebSocket Service
3
+ *
4
+ * Handles real-time streaming and chat events via Socket.IO including:
5
+ * - Stream status updates (IDLE/ACTIVE/DISABLED)
6
+ * - Viewer count updates
7
+ * - Chat messages
8
+ * - Subscription management
9
+ *
10
+ * @category Services
11
+ * @since 5.1.0
12
+ */
13
+ import { Socket } from 'socket.io-client';
14
+ import { LoggerBase } from './BaseService';
15
+ import { StreamStatusEvent, StreamSubscribedEvent, StreamUnsubscribedEvent, ViewerCountEvent, StreamGlobalStatusEvent, StreamCountdownEvent, StreamLanguageEvent } from '../types/streaming.dto';
16
+ import { StreamChatMessageEvent, StreamChatSentEvent, StreamChatErrorEvent, StreamChatStatusEvent, StreamChatGlobalStatusEvent, StreamChatAuthenticatedEvent, StreamChatAuthErrorEvent, StreamReactionEvent, StreamReactionErrorEvent, StreamChatPinnedEvent, StreamChatUnpinnedEvent, TypingIndicatorEvent } from '../types/stream-chat.dto';
17
+ /**
18
+ * Stream WebSocket configuration
19
+ */
20
+ export interface StreamWebSocketConfig {
21
+ /** Stream WebSocket server URL (SEPARATE from bundleBaseUrl) */
22
+ url: string;
23
+ /** JWT token for authentication (optional - required for chat) */
24
+ authToken?: string;
25
+ /** Maximum reconnection attempts (default: 5) */
26
+ reconnectAttempts?: number;
27
+ /** Delay between reconnection attempts in ms (default: 2000) */
28
+ reconnectDelay?: number;
29
+ /** Subscription timeout in ms (default: 10000) */
30
+ subscriptionTimeout?: number;
31
+ }
32
+ /**
33
+ * Stream event names used by the backend
34
+ */
35
+ export declare const STREAM_EVENTS: {
36
+ readonly SUBSCRIBE: "subscribe_token";
37
+ readonly UNSUBSCRIBE: "unsubscribe_token";
38
+ readonly AUTHENTICATE: "authenticate";
39
+ readonly SEND_CHAT: "send_stream_chat";
40
+ readonly SEND_REACTION: "send_stream_reaction";
41
+ readonly TYPING_START: "typing_start";
42
+ readonly TYPING_STOP: "typing_stop";
43
+ readonly STREAM_STATUS: "stream_status";
44
+ readonly STREAM_SUBSCRIBED: "token_subscribed";
45
+ readonly STREAM_UNSUBSCRIBED: "token_unsubscribed";
46
+ readonly VIEWER_COUNT: "viewer_count";
47
+ readonly STREAM_GLOBAL_STATUS: "stream_global_status";
48
+ readonly CHAT_MESSAGE: "stream_chat_message";
49
+ readonly CHAT_SENT: "stream_chat_sent";
50
+ readonly CHAT_ERROR: "stream_chat_error";
51
+ readonly CHAT_STATUS: "stream_chat_status";
52
+ readonly CHAT_GLOBAL_STATUS: "stream_chat_global_status";
53
+ readonly CHAT_AUTHENTICATED: "stream_chat_authenticated";
54
+ readonly CHAT_AUTH_ERROR: "stream_chat_auth_error";
55
+ readonly REACTION: "stream_reaction";
56
+ readonly REACTION_ERROR: "stream_reaction_error";
57
+ readonly USER_TYPING: "user_typing";
58
+ readonly CHAT_PINNED: "stream_chat_pinned";
59
+ readonly CHAT_UNPINNED: "stream_chat_unpinned";
60
+ readonly COUNTDOWN_UPDATED: "stream_countdown_updated";
61
+ readonly LANGUAGE_UPDATED: "stream_language_updated";
62
+ };
63
+ /**
64
+ * Callback types for stream events
65
+ */
66
+ export interface StreamEventCallbacks {
67
+ onStreamStatus?: (event: StreamStatusEvent) => void;
68
+ onStreamSubscribed?: (event: StreamSubscribedEvent) => void;
69
+ onStreamUnsubscribed?: (event: StreamUnsubscribedEvent) => void;
70
+ onViewerCount?: (event: ViewerCountEvent) => void;
71
+ onStreamGlobalStatus?: (event: StreamGlobalStatusEvent) => void;
72
+ onChatMessage?: (event: StreamChatMessageEvent) => void;
73
+ onChatSent?: (event: StreamChatSentEvent) => void;
74
+ onChatError?: (event: StreamChatErrorEvent) => void;
75
+ onChatStatus?: (event: StreamChatStatusEvent) => void;
76
+ onChatGlobalStatus?: (event: StreamChatGlobalStatusEvent) => void;
77
+ onChatAuthenticated?: (event: StreamChatAuthenticatedEvent) => void;
78
+ onChatAuthError?: (event: StreamChatAuthErrorEvent) => void;
79
+ onReaction?: (event: StreamReactionEvent) => void;
80
+ onReactionError?: (event: StreamReactionErrorEvent) => void;
81
+ onTypingIndicator?: (event: TypingIndicatorEvent) => void;
82
+ onChatPinned?: (event: StreamChatPinnedEvent) => void;
83
+ onChatUnpinned?: (event: StreamChatUnpinnedEvent) => void;
84
+ onCountdownUpdated?: (event: StreamCountdownEvent) => void;
85
+ onLanguageUpdated?: (event: StreamLanguageEvent) => void;
86
+ }
87
+ /**
88
+ * Stream WebSocket Service
89
+ *
90
+ * Manages real-time connections for streaming and chat functionality.
91
+ * Uses a SEPARATE WebSocket endpoint from the bundle backend.
92
+ *
93
+ * Key features:
94
+ * - Event buffering to prevent race conditions
95
+ * - Room-based subscriptions per token
96
+ * - Automatic reconnection with re-subscription
97
+ * - Memory-safe listener cleanup
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * const wsService = new StreamWebSocketService({
102
+ * url: 'wss://stream.gala.com',
103
+ * authToken: 'jwt-token-here'
104
+ * });
105
+ *
106
+ * await wsService.connect();
107
+ *
108
+ * // Subscribe to a stream
109
+ * await wsService.subscribeToStream('mytoken', {
110
+ * onStreamStatus: (event) => console.log('Status:', event.status),
111
+ * onViewerCount: (event) => console.log('Viewers:', event.count),
112
+ * onChatMessage: (event) => console.log('Chat:', event.message.content)
113
+ * });
114
+ *
115
+ * // Send a chat message
116
+ * wsService.sendChatMessage('mytoken', 'Hello everyone!');
117
+ *
118
+ * // Cleanup
119
+ * wsService.unsubscribeFromStream('mytoken');
120
+ * wsService.disconnect();
121
+ * ```
122
+ */
123
+ export declare class StreamWebSocketService extends LoggerBase {
124
+ private socket;
125
+ private config;
126
+ private isSocketIOAvailable;
127
+ private reconnectionManager;
128
+ private isAuthenticated;
129
+ private subscribedRooms;
130
+ private roomCallbacks;
131
+ private pendingSubscriptions;
132
+ private eventBuffer;
133
+ private eventBufferTimeouts;
134
+ private readonly MAX_BUFFER_SIZE;
135
+ private readonly BUFFER_CLEANUP_MS;
136
+ private globalCallbacks;
137
+ constructor(config: StreamWebSocketConfig, debug?: boolean);
138
+ /**
139
+ * Check if Socket.IO is available
140
+ */
141
+ private checkSocketIOAvailability;
142
+ /**
143
+ * Get room name for token
144
+ */
145
+ private getRoomName;
146
+ /**
147
+ * Buffer an event for potential late listeners
148
+ */
149
+ private bufferEvent;
150
+ /**
151
+ * Process buffered events for a newly subscribed token
152
+ */
153
+ private processBufferedEvents;
154
+ /**
155
+ * Setup global event listeners
156
+ */
157
+ private setupGlobalListeners;
158
+ /**
159
+ * Re-subscribe to all active rooms after reconnection
160
+ */
161
+ private resubscribeAll;
162
+ /**
163
+ * Connect to the stream WebSocket server
164
+ *
165
+ * @returns Promise that resolves when connected
166
+ * @throws ConfigurationError if Socket.IO is not available
167
+ */
168
+ connect(): Promise<void>;
169
+ /**
170
+ * Authenticate with the stream server for chat operations
171
+ *
172
+ * @param token JWT token for authentication
173
+ */
174
+ authenticate(token: string): void;
175
+ /**
176
+ * Subscribe to a token's stream events
177
+ *
178
+ * @param tokenName Token name to subscribe to
179
+ * @param callbacks Event callbacks for this subscription
180
+ * @returns Promise that resolves when subscription is confirmed
181
+ * @throws ValidationError if WebSocket is not connected
182
+ * @throws Error if subscription times out
183
+ */
184
+ subscribeToStream(tokenName: string, callbacks?: StreamEventCallbacks): Promise<StreamSubscribedEvent>;
185
+ /**
186
+ * Unsubscribe from a token's stream events
187
+ *
188
+ * @param tokenName Token name to unsubscribe from
189
+ */
190
+ unsubscribeFromStream(tokenName: string): void;
191
+ /**
192
+ * Send a chat message via WebSocket (faster than REST)
193
+ *
194
+ * @param tokenName Token name for the chat room
195
+ * @param content Message content
196
+ * @throws ValidationError if not authenticated or not connected
197
+ */
198
+ sendChatMessage(tokenName: string, content: string): void;
199
+ /**
200
+ * Send an ephemeral emoji reaction to a live stream
201
+ *
202
+ * Reactions are broadcast to all viewers but NOT persisted to database.
203
+ * Rate limiting is enforced server-side (burst of 10, then 0.5/sec refill).
204
+ *
205
+ * @param tokenName Token name for the stream
206
+ * @param emoji Emoji to send (single emoji or short sequence, max 15 chars)
207
+ * @param streamTime Current stream timecode in seconds (for viewer sync)
208
+ * @throws ValidationError if not authenticated or not connected
209
+ * @since 5.2.0
210
+ */
211
+ sendReaction(tokenName: string, emoji: string, streamTime?: number): void;
212
+ /**
213
+ * Send typing indicator start event
214
+ *
215
+ * Indicates user has started typing in chat. Server broadcasts typing
216
+ * status to all viewers in the room except the sender.
217
+ *
218
+ * Auto-expires after 5 seconds if no typing activity.
219
+ * Use sendTypingStop() to explicitly stop the indicator.
220
+ *
221
+ * @param tokenName Token name for the chat room
222
+ * @throws ValidationError if not authenticated or not connected
223
+ * @since 5.11.0
224
+ */
225
+ sendTypingStart(tokenName: string): void;
226
+ /**
227
+ * Send typing indicator stop event
228
+ *
229
+ * Indicates user has stopped typing (e.g., message sent, input cleared, blur).
230
+ * Call this when user sends message, clears input, or loses focus.
231
+ *
232
+ * @param tokenName Token name for the chat room
233
+ * @throws ValidationError if not authenticated or not connected
234
+ * @since 5.11.0
235
+ */
236
+ sendTypingStop(tokenName: string): void;
237
+ /**
238
+ * Set global event callbacks (not per-room)
239
+ *
240
+ * @param callbacks Global event callbacks
241
+ */
242
+ setGlobalCallbacks(callbacks: StreamEventCallbacks): void;
243
+ /**
244
+ * Get list of currently subscribed tokens
245
+ */
246
+ getSubscribedTokens(): string[];
247
+ /**
248
+ * Check if connected to the WebSocket server
249
+ */
250
+ isConnected(): boolean;
251
+ /**
252
+ * Check if authenticated for chat operations
253
+ */
254
+ isAuthenticatedForChat(): boolean;
255
+ /**
256
+ * Get the underlying Socket.IO instance
257
+ */
258
+ getSocket(): Socket | null;
259
+ /**
260
+ * Disconnect from the stream WebSocket server
261
+ *
262
+ * Cleans up all listeners, subscriptions, and buffers.
263
+ * All cleanup operations are wrapped in try-catch to ensure
264
+ * complete cleanup even if individual steps fail.
265
+ */
266
+ disconnect(): void;
267
+ }
268
+ //# sourceMappingURL=StreamWebSocketService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamWebSocketService.d.ts","sourceRoot":"","sources":["../../../src/services/StreamWebSocketService.ts"],"names":[],"mappings":"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"}