@openora/core 0.4.1-canary.9 → 0.4.1-canary.91

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 (1814) hide show
  1. package/README.md +15 -10
  2. package/bin/migrate.mjs +55 -0
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/admin-console/__tests__/backoffice.router.test.js +82 -51
  5. package/dist/admin-console/__tests__/backoffice.router.test.js.map +1 -1
  6. package/dist/admin-console/__tests__/backoffice.service.int.test.d.ts +2 -0
  7. package/dist/admin-console/__tests__/backoffice.service.int.test.d.ts.map +1 -0
  8. package/dist/admin-console/__tests__/backoffice.service.int.test.js +333 -0
  9. package/dist/admin-console/__tests__/backoffice.service.int.test.js.map +1 -0
  10. package/dist/admin-console/contract/index.d.ts +274 -30
  11. package/dist/admin-console/contract/index.d.ts.map +1 -1
  12. package/dist/admin-console/contract/index.js +81 -13
  13. package/dist/admin-console/contract/index.js.map +1 -1
  14. package/dist/admin-console/plugin.d.ts +120 -1
  15. package/dist/admin-console/plugin.d.ts.map +1 -1
  16. package/dist/admin-console/plugin.js +6 -6
  17. package/dist/admin-console/plugin.js.map +1 -1
  18. package/dist/admin-console/router/index.d.ts +121 -19
  19. package/dist/admin-console/router/index.d.ts.map +1 -1
  20. package/dist/admin-console/router/index.js +18 -2
  21. package/dist/admin-console/router/index.js.map +1 -1
  22. package/dist/admin-console/service/backoffice.service.d.ts +66 -40
  23. package/dist/admin-console/service/backoffice.service.d.ts.map +1 -1
  24. package/dist/admin-console/service/backoffice.service.js +80 -39
  25. package/dist/admin-console/service/backoffice.service.js.map +1 -1
  26. package/dist/analytics/__tests__/analytics.contract.test.d.ts +2 -0
  27. package/dist/analytics/__tests__/analytics.contract.test.d.ts.map +1 -0
  28. package/dist/analytics/__tests__/analytics.contract.test.js +36 -0
  29. package/dist/analytics/__tests__/analytics.contract.test.js.map +1 -0
  30. package/dist/analytics/__tests__/analytics.router.test.d.ts +2 -0
  31. package/dist/analytics/__tests__/analytics.router.test.d.ts.map +1 -0
  32. package/dist/analytics/__tests__/analytics.router.test.js +56 -0
  33. package/dist/analytics/__tests__/analytics.router.test.js.map +1 -0
  34. package/dist/analytics/__tests__/financial-analytics.service.test.d.ts +2 -0
  35. package/dist/analytics/__tests__/financial-analytics.service.test.d.ts.map +1 -0
  36. package/dist/analytics/__tests__/financial-analytics.service.test.js +87 -0
  37. package/dist/analytics/__tests__/financial-analytics.service.test.js.map +1 -0
  38. package/dist/analytics/__tests__/funnel-analytics.service.test.d.ts +2 -0
  39. package/dist/analytics/__tests__/funnel-analytics.service.test.d.ts.map +1 -0
  40. package/dist/analytics/__tests__/funnel-analytics.service.test.js +42 -0
  41. package/dist/analytics/__tests__/funnel-analytics.service.test.js.map +1 -0
  42. package/dist/analytics/contract/financial.d.ts +121 -0
  43. package/dist/analytics/contract/financial.d.ts.map +1 -0
  44. package/dist/analytics/contract/financial.js +45 -0
  45. package/dist/analytics/contract/financial.js.map +1 -0
  46. package/dist/analytics/contract/funnel.d.ts +52 -0
  47. package/dist/analytics/contract/funnel.d.ts.map +1 -0
  48. package/dist/analytics/contract/funnel.js +24 -0
  49. package/dist/analytics/contract/funnel.js.map +1 -0
  50. package/dist/analytics/contract/index.d.ts +68 -0
  51. package/dist/analytics/contract/index.d.ts.map +1 -0
  52. package/dist/analytics/contract/index.js +9 -0
  53. package/dist/analytics/contract/index.js.map +1 -0
  54. package/dist/analytics/index.d.ts +2 -0
  55. package/dist/analytics/index.d.ts.map +1 -0
  56. package/dist/analytics/index.js +2 -0
  57. package/dist/analytics/index.js.map +1 -0
  58. package/dist/analytics/plugin.d.ts +122 -0
  59. package/dist/analytics/plugin.d.ts.map +1 -0
  60. package/dist/analytics/plugin.js +13 -0
  61. package/dist/analytics/plugin.js.map +1 -0
  62. package/dist/analytics/router/index.d.ts +69 -0
  63. package/dist/analytics/router/index.d.ts.map +1 -0
  64. package/dist/analytics/router/index.js +24 -0
  65. package/dist/analytics/router/index.js.map +1 -0
  66. package/dist/analytics/server.d.ts +5 -0
  67. package/dist/analytics/server.d.ts.map +1 -0
  68. package/dist/analytics/server.js +5 -0
  69. package/dist/analytics/server.js.map +1 -0
  70. package/dist/analytics/service/financial-analytics.service.d.ts +14 -0
  71. package/dist/analytics/service/financial-analytics.service.d.ts.map +1 -0
  72. package/dist/analytics/service/financial-analytics.service.js +145 -0
  73. package/dist/analytics/service/financial-analytics.service.js.map +1 -0
  74. package/dist/analytics/service/funnel-analytics.service.d.ts +11 -0
  75. package/dist/analytics/service/funnel-analytics.service.d.ts.map +1 -0
  76. package/dist/analytics/service/funnel-analytics.service.js +83 -0
  77. package/dist/analytics/service/funnel-analytics.service.js.map +1 -0
  78. package/dist/audit/__tests__/audit.service.int.test.d.ts +2 -0
  79. package/dist/audit/__tests__/audit.service.int.test.d.ts.map +1 -0
  80. package/dist/audit/__tests__/audit.service.int.test.js +633 -0
  81. package/dist/audit/__tests__/audit.service.int.test.js.map +1 -0
  82. package/dist/audit/contract/index.d.ts +68 -10
  83. package/dist/audit/contract/index.d.ts.map +1 -1
  84. package/dist/audit/contract/index.js +24 -4
  85. package/dist/audit/contract/index.js.map +1 -1
  86. package/dist/audit/plugin.d.ts +121 -1
  87. package/dist/audit/plugin.d.ts.map +1 -1
  88. package/dist/audit/plugin.js +383 -30
  89. package/dist/audit/plugin.js.map +1 -1
  90. package/dist/audit/router/index.d.ts +29 -5
  91. package/dist/audit/router/index.d.ts.map +1 -1
  92. package/dist/audit/router/index.js +1 -5
  93. package/dist/audit/router/index.js.map +1 -1
  94. package/dist/audit/service/audit.service.d.ts +10 -6
  95. package/dist/audit/service/audit.service.d.ts.map +1 -1
  96. package/dist/audit/service/audit.service.js +87 -34
  97. package/dist/audit/service/audit.service.js.map +1 -1
  98. package/dist/casino/gaming/__tests__/admin-reporting.int.test.d.ts +2 -0
  99. package/dist/casino/gaming/__tests__/admin-reporting.int.test.d.ts.map +1 -0
  100. package/dist/casino/gaming/__tests__/admin-reporting.int.test.js +126 -0
  101. package/dist/casino/gaming/__tests__/admin-reporting.int.test.js.map +1 -0
  102. package/dist/casino/gaming/__tests__/gaming.service.int.test.d.ts +2 -0
  103. package/dist/casino/gaming/__tests__/gaming.service.int.test.d.ts.map +1 -0
  104. package/dist/casino/gaming/__tests__/gaming.service.int.test.js +113 -0
  105. package/dist/casino/gaming/__tests__/gaming.service.int.test.js.map +1 -0
  106. package/dist/casino/gaming/admin-reporting.d.ts +9 -0
  107. package/dist/casino/gaming/admin-reporting.d.ts.map +1 -0
  108. package/dist/casino/gaming/admin-reporting.js +79 -0
  109. package/dist/casino/gaming/admin-reporting.js.map +1 -0
  110. package/dist/casino/gaming/contract/index.d.ts +19 -0
  111. package/dist/casino/gaming/contract/index.d.ts.map +1 -1
  112. package/dist/casino/gaming/contract/index.js +9 -3
  113. package/dist/casino/gaming/contract/index.js.map +1 -1
  114. package/dist/casino/gaming/drizzle/migrations/0001_easy_ben_grimm.sql +4 -0
  115. package/dist/casino/gaming/drizzle/migrations/0002_yummy_lifeguard.sql +4 -0
  116. package/dist/casino/gaming/drizzle/migrations/meta/0001_snapshot.json +188 -0
  117. package/dist/casino/gaming/drizzle/migrations/meta/0002_snapshot.json +237 -0
  118. package/dist/casino/gaming/drizzle/migrations/meta/_journal.json +14 -0
  119. package/dist/casino/gaming/plugin.d.ts +121 -1
  120. package/dist/casino/gaming/plugin.d.ts.map +1 -1
  121. package/dist/casino/gaming/plugin.js +9 -5
  122. package/dist/casino/gaming/plugin.js.map +1 -1
  123. package/dist/casino/gaming/router/index.d.ts +11 -0
  124. package/dist/casino/gaming/router/index.d.ts.map +1 -1
  125. package/dist/casino/gaming/router/index.js +6 -2
  126. package/dist/casino/gaming/router/index.js.map +1 -1
  127. package/dist/casino/gaming/schema/index.d.ts +18 -0
  128. package/dist/casino/gaming/schema/index.d.ts.map +1 -1
  129. package/dist/casino/gaming/schema/index.js +13 -3
  130. package/dist/casino/gaming/schema/index.js.map +1 -1
  131. package/dist/casino/gaming/service/gaming.service.d.ts +19 -12
  132. package/dist/casino/gaming/service/gaming.service.d.ts.map +1 -1
  133. package/dist/casino/gaming/service/gaming.service.js +42 -24
  134. package/dist/casino/gaming/service/gaming.service.js.map +1 -1
  135. package/dist/casino/lobby/__tests__/lobby.cache.int.test.d.ts +2 -0
  136. package/dist/casino/lobby/__tests__/lobby.cache.int.test.d.ts.map +1 -0
  137. package/dist/casino/lobby/__tests__/lobby.cache.int.test.js +56 -0
  138. package/dist/casino/lobby/__tests__/lobby.cache.int.test.js.map +1 -0
  139. package/dist/casino/lobby/plugin.d.ts +119 -1
  140. package/dist/casino/lobby/plugin.d.ts.map +1 -1
  141. package/dist/casino/lobby/plugin.js +3 -3
  142. package/dist/casino/lobby/plugin.js.map +1 -1
  143. package/dist/casino/server.d.ts +1 -0
  144. package/dist/casino/server.d.ts.map +1 -1
  145. package/dist/casino/server.js +1 -0
  146. package/dist/casino/server.js.map +1 -1
  147. package/dist/cms/__tests__/cms.reads.int.test.d.ts +2 -0
  148. package/dist/cms/__tests__/cms.reads.int.test.d.ts.map +1 -0
  149. package/dist/cms/__tests__/cms.reads.int.test.js +66 -0
  150. package/dist/cms/__tests__/cms.reads.int.test.js.map +1 -0
  151. package/dist/cms/__tests__/cms.router.int.test.d.ts +2 -0
  152. package/dist/cms/__tests__/cms.router.int.test.d.ts.map +1 -0
  153. package/dist/cms/__tests__/cms.router.int.test.js +96 -0
  154. package/dist/cms/__tests__/cms.router.int.test.js.map +1 -0
  155. package/dist/cms/__tests__/cms.service.int.test.d.ts +2 -0
  156. package/dist/cms/__tests__/cms.service.int.test.d.ts.map +1 -0
  157. package/dist/cms/__tests__/cms.service.int.test.js +119 -0
  158. package/dist/cms/__tests__/cms.service.int.test.js.map +1 -0
  159. package/dist/cms/plugin.d.ts +119 -1
  160. package/dist/cms/plugin.d.ts.map +1 -1
  161. package/dist/cms/plugin.js +3 -3
  162. package/dist/cms/plugin.js.map +1 -1
  163. package/dist/cms/router/index.d.ts.map +1 -1
  164. package/dist/cms/router/index.js +12 -12
  165. package/dist/cms/router/index.js.map +1 -1
  166. package/dist/cms/service/cms.service.d.ts +7 -7
  167. package/dist/cms/service/cms.service.d.ts.map +1 -1
  168. package/dist/cms/service/cms.service.js +81 -25
  169. package/dist/cms/service/cms.service.js.map +1 -1
  170. package/dist/common/errors/__tests__/errors.mapper.test.d.ts +2 -0
  171. package/dist/common/errors/__tests__/errors.mapper.test.d.ts.map +1 -0
  172. package/dist/common/errors/__tests__/errors.mapper.test.js +59 -0
  173. package/dist/common/errors/__tests__/errors.mapper.test.js.map +1 -0
  174. package/dist/common/errors/errors.classes.js +3 -3
  175. package/dist/common/errors/errors.classes.js.map +1 -1
  176. package/dist/common/errors/errors.mapper.js +1 -1
  177. package/dist/common/errors/errors.mapper.js.map +1 -1
  178. package/dist/compliance/__tests__/assert.test.d.ts +2 -0
  179. package/dist/compliance/__tests__/assert.test.d.ts.map +1 -0
  180. package/dist/compliance/__tests__/assert.test.js +34 -0
  181. package/dist/compliance/__tests__/assert.test.js.map +1 -0
  182. package/dist/compliance/__tests__/compliance.service.int.test.d.ts +2 -0
  183. package/dist/compliance/__tests__/compliance.service.int.test.d.ts.map +1 -0
  184. package/dist/compliance/__tests__/compliance.service.int.test.js +162 -0
  185. package/dist/compliance/__tests__/compliance.service.int.test.js.map +1 -0
  186. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.int.test.d.ts +2 -0
  187. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.int.test.d.ts.map +1 -0
  188. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.int.test.js +82 -0
  189. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.int.test.js.map +1 -0
  190. package/dist/compliance/__tests__/kyc-admin.router.int.test.d.ts +2 -0
  191. package/dist/compliance/__tests__/kyc-admin.router.int.test.d.ts.map +1 -0
  192. package/dist/compliance/__tests__/kyc-admin.router.int.test.js +192 -0
  193. package/dist/compliance/__tests__/kyc-admin.router.int.test.js.map +1 -0
  194. package/dist/compliance/__tests__/kyc-webhook.router.int.test.d.ts +2 -0
  195. package/dist/compliance/__tests__/kyc-webhook.router.int.test.d.ts.map +1 -0
  196. package/dist/compliance/__tests__/kyc-webhook.router.int.test.js +173 -0
  197. package/dist/compliance/__tests__/kyc-webhook.router.int.test.js.map +1 -0
  198. package/dist/compliance/__tests__/kyc.service.int.test.d.ts +2 -0
  199. package/dist/compliance/__tests__/kyc.service.int.test.d.ts.map +1 -0
  200. package/dist/compliance/__tests__/kyc.service.int.test.js +275 -0
  201. package/dist/compliance/__tests__/kyc.service.int.test.js.map +1 -0
  202. package/dist/compliance/__tests__/limits.contract.test.d.ts +2 -0
  203. package/dist/compliance/__tests__/limits.contract.test.d.ts.map +1 -0
  204. package/dist/compliance/__tests__/limits.contract.test.js +43 -0
  205. package/dist/compliance/__tests__/limits.contract.test.js.map +1 -0
  206. package/dist/compliance/__tests__/rg-monitoring.service.int.test.d.ts +2 -0
  207. package/dist/compliance/__tests__/rg-monitoring.service.int.test.d.ts.map +1 -0
  208. package/dist/compliance/__tests__/rg-monitoring.service.int.test.js +271 -0
  209. package/dist/compliance/__tests__/rg-monitoring.service.int.test.js.map +1 -0
  210. package/dist/compliance/__tests__/rg.contract.test.js +32 -14
  211. package/dist/compliance/__tests__/rg.contract.test.js.map +1 -1
  212. package/dist/compliance/__tests__/rg.router.int.test.d.ts +2 -0
  213. package/dist/compliance/__tests__/rg.router.int.test.d.ts.map +1 -0
  214. package/dist/compliance/__tests__/rg.router.int.test.js +158 -0
  215. package/dist/compliance/__tests__/rg.router.int.test.js.map +1 -0
  216. package/dist/compliance/__tests__/rg.service.int.test.d.ts +2 -0
  217. package/dist/compliance/__tests__/rg.service.int.test.d.ts.map +1 -0
  218. package/dist/compliance/__tests__/rg.service.int.test.js +356 -0
  219. package/dist/compliance/__tests__/rg.service.int.test.js.map +1 -0
  220. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.d.ts +18 -5
  221. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.d.ts.map +1 -1
  222. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.js +58 -7
  223. package/dist/compliance/adapters/hmac-kyc-webhook-verifier.js.map +1 -1
  224. package/dist/compliance/contract/index.d.ts +428 -20
  225. package/dist/compliance/contract/index.d.ts.map +1 -1
  226. package/dist/compliance/contract/index.js +63 -4
  227. package/dist/compliance/contract/index.js.map +1 -1
  228. package/dist/compliance/contract/limits.d.ts +9 -2
  229. package/dist/compliance/contract/limits.d.ts.map +1 -1
  230. package/dist/compliance/contract/limits.js +21 -3
  231. package/dist/compliance/contract/limits.js.map +1 -1
  232. package/dist/compliance/contract/rg.d.ts +104 -34
  233. package/dist/compliance/contract/rg.d.ts.map +1 -1
  234. package/dist/compliance/contract/rg.js +37 -11
  235. package/dist/compliance/contract/rg.js.map +1 -1
  236. package/dist/compliance/drizzle/migrations/0001_funny_vance_astro.sql +5 -0
  237. package/dist/compliance/drizzle/migrations/0002_condemned_monster_badoon.sql +3 -0
  238. package/dist/compliance/drizzle/migrations/0003_public_spirit.sql +1 -0
  239. package/dist/compliance/drizzle/migrations/0004_military_silk_fever.sql +2 -0
  240. package/dist/compliance/drizzle/migrations/meta/0001_snapshot.json +660 -0
  241. package/dist/compliance/drizzle/migrations/meta/0002_snapshot.json +673 -0
  242. package/dist/compliance/drizzle/migrations/meta/0003_snapshot.json +679 -0
  243. package/dist/compliance/drizzle/migrations/meta/0004_snapshot.json +679 -0
  244. package/dist/compliance/drizzle/migrations/meta/_journal.json +28 -0
  245. package/dist/compliance/plugin.d.ts +122 -1
  246. package/dist/compliance/plugin.d.ts.map +1 -1
  247. package/dist/compliance/plugin.js +72 -20
  248. package/dist/compliance/plugin.js.map +1 -1
  249. package/dist/compliance/router/index.d.ts +262 -22
  250. package/dist/compliance/router/index.d.ts.map +1 -1
  251. package/dist/compliance/router/index.js +85 -25
  252. package/dist/compliance/router/index.js.map +1 -1
  253. package/dist/compliance/schema/index.d.ts +97 -18
  254. package/dist/compliance/schema/index.d.ts.map +1 -1
  255. package/dist/compliance/schema/index.js +19 -8
  256. package/dist/compliance/schema/index.js.map +1 -1
  257. package/dist/compliance/service/compliance.service.d.ts +39 -26
  258. package/dist/compliance/service/compliance.service.d.ts.map +1 -1
  259. package/dist/compliance/service/compliance.service.js +45 -38
  260. package/dist/compliance/service/compliance.service.js.map +1 -1
  261. package/dist/compliance/service/kyc.service.d.ts +167 -19
  262. package/dist/compliance/service/kyc.service.d.ts.map +1 -1
  263. package/dist/compliance/service/kyc.service.js +300 -55
  264. package/dist/compliance/service/kyc.service.js.map +1 -1
  265. package/dist/compliance/service/re-kyc-trigger.d.ts +4 -4
  266. package/dist/compliance/service/re-kyc-trigger.d.ts.map +1 -1
  267. package/dist/compliance/service/re-kyc-trigger.js +10 -6
  268. package/dist/compliance/service/re-kyc-trigger.js.map +1 -1
  269. package/dist/compliance/service/rg-eval.d.ts.map +1 -1
  270. package/dist/compliance/service/rg-eval.js +4 -2
  271. package/dist/compliance/service/rg-eval.js.map +1 -1
  272. package/dist/compliance/service/rg-monitoring.service.d.ts +7 -6
  273. package/dist/compliance/service/rg-monitoring.service.d.ts.map +1 -1
  274. package/dist/compliance/service/rg-monitoring.service.js +83 -40
  275. package/dist/compliance/service/rg-monitoring.service.js.map +1 -1
  276. package/dist/compliance/service/rg.service.d.ts +40 -7
  277. package/dist/compliance/service/rg.service.d.ts.map +1 -1
  278. package/dist/compliance/service/rg.service.js +163 -51
  279. package/dist/compliance/service/rg.service.js.map +1 -1
  280. package/dist/contracts/__tests__/compose-contract.test.d.ts +2 -0
  281. package/dist/contracts/__tests__/compose-contract.test.d.ts.map +1 -0
  282. package/dist/contracts/__tests__/compose-contract.test.js +27 -0
  283. package/dist/contracts/__tests__/compose-contract.test.js.map +1 -0
  284. package/dist/contracts/adapters/__tests__/rate-limit.test.d.ts +2 -0
  285. package/dist/contracts/adapters/__tests__/rate-limit.test.d.ts.map +1 -0
  286. package/dist/contracts/adapters/__tests__/rate-limit.test.js +13 -0
  287. package/dist/contracts/adapters/__tests__/rate-limit.test.js.map +1 -0
  288. package/dist/contracts/adapters/__tests__/token.test.d.ts +2 -0
  289. package/dist/contracts/adapters/__tests__/token.test.d.ts.map +1 -0
  290. package/dist/contracts/adapters/__tests__/token.test.js +14 -0
  291. package/dist/contracts/adapters/__tests__/token.test.js.map +1 -0
  292. package/dist/contracts/adapters/admin-game-reporting.d.ts +43 -0
  293. package/dist/contracts/adapters/admin-game-reporting.d.ts.map +1 -0
  294. package/dist/contracts/adapters/admin-game-reporting.js +17 -0
  295. package/dist/contracts/adapters/admin-game-reporting.js.map +1 -0
  296. package/dist/contracts/adapters/admin-permission.d.ts +10 -0
  297. package/dist/contracts/adapters/admin-permission.d.ts.map +1 -1
  298. package/dist/contracts/adapters/admin-permission.js +6 -4
  299. package/dist/contracts/adapters/admin-permission.js.map +1 -1
  300. package/dist/contracts/adapters/admin-player-activity.d.ts +51 -0
  301. package/dist/contracts/adapters/admin-player-activity.d.ts.map +1 -0
  302. package/dist/contracts/adapters/admin-player-activity.js +3 -0
  303. package/dist/contracts/adapters/admin-player-activity.js.map +1 -0
  304. package/dist/contracts/adapters/admin-role-assignment-directory.d.ts +12 -0
  305. package/dist/contracts/adapters/admin-role-assignment-directory.d.ts.map +1 -0
  306. package/dist/contracts/adapters/admin-role-assignment-directory.js +3 -0
  307. package/dist/contracts/adapters/admin-role-assignment-directory.js.map +1 -0
  308. package/dist/contracts/adapters/admin-user-directory.d.ts +45 -4
  309. package/dist/contracts/adapters/admin-user-directory.d.ts.map +1 -1
  310. package/dist/contracts/adapters/admin-user-directory.js +8 -0
  311. package/dist/contracts/adapters/admin-user-directory.js.map +1 -1
  312. package/dist/contracts/adapters/admin-wallet-reporting.d.ts +16 -5
  313. package/dist/contracts/adapters/admin-wallet-reporting.d.ts.map +1 -1
  314. package/dist/contracts/adapters/admin-wallet-reporting.js +9 -0
  315. package/dist/contracts/adapters/admin-wallet-reporting.js.map +1 -1
  316. package/dist/contracts/adapters/aggregator.d.ts +12 -0
  317. package/dist/contracts/adapters/aggregator.d.ts.map +1 -1
  318. package/dist/contracts/adapters/aggregator.js +5 -3
  319. package/dist/contracts/adapters/aggregator.js.map +1 -1
  320. package/dist/contracts/adapters/audit.d.ts +30 -4
  321. package/dist/contracts/adapters/audit.d.ts.map +1 -1
  322. package/dist/contracts/adapters/audit.js.map +1 -1
  323. package/dist/contracts/adapters/broker.d.ts +23 -0
  324. package/dist/contracts/adapters/broker.d.ts.map +1 -1
  325. package/dist/contracts/adapters/broker.js +8 -6
  326. package/dist/contracts/adapters/broker.js.map +1 -1
  327. package/dist/contracts/adapters/cache.d.ts +11 -0
  328. package/dist/contracts/adapters/cache.d.ts.map +1 -1
  329. package/dist/contracts/adapters/cache.js +8 -6
  330. package/dist/contracts/adapters/cache.js.map +1 -1
  331. package/dist/contracts/adapters/chat-block-writer.d.ts +18 -0
  332. package/dist/contracts/adapters/chat-block-writer.d.ts.map +1 -0
  333. package/dist/contracts/adapters/chat-block-writer.js +7 -0
  334. package/dist/contracts/adapters/chat-block-writer.js.map +1 -0
  335. package/dist/contracts/adapters/chat-moderation.d.ts +75 -0
  336. package/dist/contracts/adapters/chat-moderation.d.ts.map +1 -0
  337. package/dist/contracts/adapters/chat-moderation.js +3 -0
  338. package/dist/contracts/adapters/chat-moderation.js.map +1 -0
  339. package/dist/contracts/adapters/chat-room-access.d.ts +6 -0
  340. package/dist/contracts/adapters/chat-room-access.d.ts.map +1 -0
  341. package/dist/contracts/adapters/chat-room-access.js +3 -0
  342. package/dist/contracts/adapters/chat-room-access.js.map +1 -0
  343. package/dist/contracts/adapters/chat-system-writer.d.ts +19 -0
  344. package/dist/contracts/adapters/chat-system-writer.d.ts.map +1 -0
  345. package/dist/contracts/adapters/chat-system-writer.js +3 -0
  346. package/dist/contracts/adapters/chat-system-writer.js.map +1 -0
  347. package/dist/contracts/adapters/email-template.d.ts +51 -0
  348. package/dist/contracts/adapters/email-template.d.ts.map +1 -0
  349. package/dist/contracts/adapters/email-template.js +50 -0
  350. package/dist/contracts/adapters/email-template.js.map +1 -0
  351. package/dist/contracts/adapters/email.d.ts +7 -0
  352. package/dist/contracts/adapters/email.d.ts.map +1 -1
  353. package/dist/contracts/adapters/email.js +7 -5
  354. package/dist/contracts/adapters/email.js.map +1 -1
  355. package/dist/contracts/adapters/error-tracking.d.ts +12 -0
  356. package/dist/contracts/adapters/error-tracking.d.ts.map +1 -0
  357. package/dist/contracts/adapters/error-tracking.js +3 -0
  358. package/dist/contracts/adapters/error-tracking.js.map +1 -0
  359. package/dist/contracts/adapters/game.d.ts +4 -0
  360. package/dist/contracts/adapters/game.d.ts.map +1 -1
  361. package/dist/contracts/adapters/game.js +4 -2
  362. package/dist/contracts/adapters/game.js.map +1 -1
  363. package/dist/contracts/adapters/geo-check-commands.d.ts +8 -0
  364. package/dist/contracts/adapters/geo-check-commands.d.ts.map +1 -0
  365. package/dist/contracts/adapters/geo-check-commands.js +3 -0
  366. package/dist/contracts/adapters/geo-check-commands.js.map +1 -0
  367. package/dist/contracts/adapters/geo-ip.d.ts +4 -0
  368. package/dist/contracts/adapters/geo-ip.d.ts.map +1 -1
  369. package/dist/contracts/adapters/geo-ip.js +4 -2
  370. package/dist/contracts/adapters/geo-ip.js.map +1 -1
  371. package/dist/contracts/adapters/gift-commands.d.ts +58 -0
  372. package/dist/contracts/adapters/gift-commands.d.ts.map +1 -0
  373. package/dist/contracts/adapters/gift-commands.js +11 -0
  374. package/dist/contracts/adapters/gift-commands.js.map +1 -0
  375. package/dist/contracts/adapters/identity-reader.d.ts +14 -4
  376. package/dist/contracts/adapters/identity-reader.d.ts.map +1 -1
  377. package/dist/contracts/adapters/identity-reader.js.map +1 -1
  378. package/dist/contracts/adapters/identity.d.ts +15 -0
  379. package/dist/contracts/adapters/identity.d.ts.map +1 -1
  380. package/dist/contracts/adapters/identity.js +5 -2
  381. package/dist/contracts/adapters/identity.js.map +1 -1
  382. package/dist/contracts/adapters/index.d.ts +56 -13
  383. package/dist/contracts/adapters/index.d.ts.map +1 -1
  384. package/dist/contracts/adapters/index.js +31 -11
  385. package/dist/contracts/adapters/index.js.map +1 -1
  386. package/dist/contracts/adapters/job-queue.d.ts +55 -0
  387. package/dist/contracts/adapters/job-queue.d.ts.map +1 -1
  388. package/dist/contracts/adapters/job-queue.js +11 -9
  389. package/dist/contracts/adapters/job-queue.js.map +1 -1
  390. package/dist/contracts/adapters/kyc.d.ts +121 -4
  391. package/dist/contracts/adapters/kyc.d.ts.map +1 -1
  392. package/dist/contracts/adapters/kyc.js +30 -5
  393. package/dist/contracts/adapters/kyc.js.map +1 -1
  394. package/dist/contracts/adapters/login-enforcement.d.ts +8 -0
  395. package/dist/contracts/adapters/login-enforcement.d.ts.map +1 -1
  396. package/dist/contracts/adapters/login-enforcement.js +8 -6
  397. package/dist/contracts/adapters/login-enforcement.js.map +1 -1
  398. package/dist/contracts/adapters/notification.d.ts +7 -0
  399. package/dist/contracts/adapters/notification.d.ts.map +1 -1
  400. package/dist/contracts/adapters/notification.js +7 -5
  401. package/dist/contracts/adapters/notification.js.map +1 -1
  402. package/dist/contracts/adapters/outbox.d.ts +14 -0
  403. package/dist/contracts/adapters/outbox.d.ts.map +1 -1
  404. package/dist/contracts/adapters/outbox.js +14 -12
  405. package/dist/contracts/adapters/outbox.js.map +1 -1
  406. package/dist/contracts/adapters/payment.d.ts +72 -2
  407. package/dist/contracts/adapters/payment.d.ts.map +1 -1
  408. package/dist/contracts/adapters/payment.js +6 -2
  409. package/dist/contracts/adapters/payment.js.map +1 -1
  410. package/dist/contracts/adapters/play-eligibility.d.ts +15 -0
  411. package/dist/contracts/adapters/play-eligibility.d.ts.map +1 -0
  412. package/dist/contracts/adapters/play-eligibility.js +3 -0
  413. package/dist/contracts/adapters/play-eligibility.js.map +1 -0
  414. package/dist/contracts/adapters/player-activity.d.ts +6 -0
  415. package/dist/contracts/adapters/player-activity.d.ts.map +1 -0
  416. package/dist/contracts/adapters/player-activity.js +3 -0
  417. package/dist/contracts/adapters/player-activity.js.map +1 -0
  418. package/dist/contracts/adapters/player-provisioning.d.ts +21 -0
  419. package/dist/contracts/adapters/player-provisioning.d.ts.map +1 -0
  420. package/dist/contracts/adapters/player-provisioning.js +3 -0
  421. package/dist/contracts/adapters/player-provisioning.js.map +1 -0
  422. package/dist/contracts/adapters/player-tags.d.ts +4 -0
  423. package/dist/contracts/adapters/player-tags.d.ts.map +1 -1
  424. package/dist/contracts/adapters/player-tags.js.map +1 -1
  425. package/dist/contracts/adapters/rain-commands.d.ts +27 -0
  426. package/dist/contracts/adapters/rain-commands.d.ts.map +1 -0
  427. package/dist/contracts/adapters/rain-commands.js +12 -0
  428. package/dist/contracts/adapters/rain-commands.js.map +1 -0
  429. package/dist/contracts/adapters/rate-limit.d.ts +40 -3
  430. package/dist/contracts/adapters/rate-limit.d.ts.map +1 -1
  431. package/dist/contracts/adapters/rate-limit.js +28 -6
  432. package/dist/contracts/adapters/rate-limit.js.map +1 -1
  433. package/dist/contracts/adapters/realtime.d.ts +106 -7
  434. package/dist/contracts/adapters/realtime.d.ts.map +1 -1
  435. package/dist/contracts/adapters/realtime.js +26 -10
  436. package/dist/contracts/adapters/realtime.js.map +1 -1
  437. package/dist/contracts/adapters/rng.d.ts +11 -0
  438. package/dist/contracts/adapters/rng.d.ts.map +1 -1
  439. package/dist/contracts/adapters/rng.js +11 -9
  440. package/dist/contracts/adapters/rng.js.map +1 -1
  441. package/dist/contracts/adapters/sms.d.ts +15 -0
  442. package/dist/contracts/adapters/sms.d.ts.map +1 -0
  443. package/dist/contracts/adapters/sms.js +9 -0
  444. package/dist/contracts/adapters/sms.js.map +1 -0
  445. package/dist/contracts/adapters/social-commands.d.ts +12 -0
  446. package/dist/contracts/adapters/social-commands.d.ts.map +1 -0
  447. package/dist/contracts/adapters/social-commands.js +7 -0
  448. package/dist/contracts/adapters/social-commands.js.map +1 -0
  449. package/dist/contracts/adapters/tag-evaluation-commands.d.ts +20 -0
  450. package/dist/contracts/adapters/tag-evaluation-commands.d.ts.map +1 -0
  451. package/dist/contracts/adapters/tag-evaluation-commands.js +13 -0
  452. package/dist/contracts/adapters/tag-evaluation-commands.js.map +1 -0
  453. package/dist/contracts/adapters/token.d.ts +28 -5
  454. package/dist/contracts/adapters/token.d.ts.map +1 -1
  455. package/dist/contracts/adapters/token.js +10 -8
  456. package/dist/contracts/adapters/token.js.map +1 -1
  457. package/dist/contracts/adapters/wallet-commands.d.ts +11 -5
  458. package/dist/contracts/adapters/wallet-commands.d.ts.map +1 -1
  459. package/dist/contracts/adapters/wallet-commands.js.map +1 -1
  460. package/dist/contracts/adapters/wallet-reader.d.ts +11 -3
  461. package/dist/contracts/adapters/wallet-reader.d.ts.map +1 -1
  462. package/dist/contracts/adapters/wallet-reader.js.map +1 -1
  463. package/dist/contracts/kit.d.ts +9 -0
  464. package/dist/contracts/kit.d.ts.map +1 -1
  465. package/dist/contracts/kit.js +1 -0
  466. package/dist/contracts/kit.js.map +1 -1
  467. package/dist/contracts/schemas/__tests__/common-schemas.test.d.ts +2 -0
  468. package/dist/contracts/schemas/__tests__/common-schemas.test.d.ts.map +1 -0
  469. package/dist/contracts/schemas/__tests__/common-schemas.test.js +20 -0
  470. package/dist/contracts/schemas/__tests__/common-schemas.test.js.map +1 -0
  471. package/dist/contracts/schemas/__tests__/events.test.d.ts +2 -0
  472. package/dist/contracts/schemas/__tests__/events.test.d.ts.map +1 -0
  473. package/dist/contracts/schemas/__tests__/events.test.js +51 -0
  474. package/dist/contracts/schemas/__tests__/events.test.js.map +1 -0
  475. package/dist/contracts/schemas/__tests__/igaming-config.test.d.ts +2 -0
  476. package/dist/contracts/schemas/__tests__/igaming-config.test.d.ts.map +1 -0
  477. package/dist/contracts/schemas/__tests__/igaming-config.test.js +38 -0
  478. package/dist/contracts/schemas/__tests__/igaming-config.test.js.map +1 -0
  479. package/dist/contracts/schemas/__tests__/player-schemas.test.d.ts +2 -0
  480. package/dist/contracts/schemas/__tests__/player-schemas.test.d.ts.map +1 -0
  481. package/dist/contracts/schemas/__tests__/player-schemas.test.js +30 -0
  482. package/dist/contracts/schemas/__tests__/player-schemas.test.js.map +1 -0
  483. package/dist/contracts/schemas/__tests__/tag-schemas.test.d.ts +2 -0
  484. package/dist/contracts/schemas/__tests__/tag-schemas.test.d.ts.map +1 -0
  485. package/dist/contracts/schemas/__tests__/tag-schemas.test.js +42 -0
  486. package/dist/contracts/schemas/__tests__/tag-schemas.test.js.map +1 -0
  487. package/dist/contracts/schemas/chat-command-metadata.d.ts +73 -0
  488. package/dist/contracts/schemas/chat-command-metadata.d.ts.map +1 -0
  489. package/dist/contracts/schemas/chat-command-metadata.js +67 -0
  490. package/dist/contracts/schemas/chat-command-metadata.js.map +1 -0
  491. package/dist/contracts/schemas/chat-command.d.ts +213 -0
  492. package/dist/contracts/schemas/chat-command.d.ts.map +1 -0
  493. package/dist/contracts/schemas/chat-command.js +44 -0
  494. package/dist/contracts/schemas/chat-command.js.map +1 -0
  495. package/dist/contracts/schemas/common.d.ts +19 -5
  496. package/dist/contracts/schemas/common.d.ts.map +1 -1
  497. package/dist/contracts/schemas/common.js +26 -4
  498. package/dist/contracts/schemas/common.js.map +1 -1
  499. package/dist/contracts/schemas/compliance.d.ts +1 -1
  500. package/dist/contracts/schemas/events.d.ts +523 -10
  501. package/dist/contracts/schemas/events.d.ts.map +1 -1
  502. package/dist/contracts/schemas/events.js +371 -63
  503. package/dist/contracts/schemas/events.js.map +1 -1
  504. package/dist/contracts/schemas/game.d.ts +9 -0
  505. package/dist/contracts/schemas/game.d.ts.map +1 -0
  506. package/dist/contracts/schemas/game.js +4 -0
  507. package/dist/contracts/schemas/game.js.map +1 -0
  508. package/dist/contracts/schemas/identity.d.ts +64 -2
  509. package/dist/contracts/schemas/identity.d.ts.map +1 -1
  510. package/dist/contracts/schemas/identity.js +51 -3
  511. package/dist/contracts/schemas/identity.js.map +1 -1
  512. package/dist/contracts/schemas/igaming-config.d.ts +25 -1
  513. package/dist/contracts/schemas/igaming-config.d.ts.map +1 -1
  514. package/dist/contracts/schemas/igaming-config.js +2 -1
  515. package/dist/contracts/schemas/igaming-config.js.map +1 -1
  516. package/dist/contracts/schemas/index.d.ts +4 -0
  517. package/dist/contracts/schemas/index.d.ts.map +1 -1
  518. package/dist/contracts/schemas/index.js +4 -0
  519. package/dist/contracts/schemas/index.js.map +1 -1
  520. package/dist/contracts/schemas/platform-config.d.ts +29 -35
  521. package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
  522. package/dist/contracts/schemas/platform-config.js +28 -9
  523. package/dist/contracts/schemas/platform-config.js.map +1 -1
  524. package/dist/contracts/schemas/player.d.ts +63 -5
  525. package/dist/contracts/schemas/player.d.ts.map +1 -1
  526. package/dist/contracts/schemas/player.js +32 -6
  527. package/dist/contracts/schemas/player.js.map +1 -1
  528. package/dist/contracts/schemas/reporting.d.ts +20 -0
  529. package/dist/contracts/schemas/reporting.d.ts.map +1 -0
  530. package/dist/contracts/schemas/reporting.js +13 -0
  531. package/dist/contracts/schemas/reporting.js.map +1 -0
  532. package/dist/contracts/schemas/tag.d.ts +88 -4
  533. package/dist/contracts/schemas/tag.d.ts.map +1 -1
  534. package/dist/contracts/schemas/tag.js +16 -4
  535. package/dist/contracts/schemas/tag.js.map +1 -1
  536. package/dist/contracts/schemas/wallet-tx.d.ts +3 -1
  537. package/dist/contracts/schemas/wallet-tx.d.ts.map +1 -1
  538. package/dist/contracts/schemas/wallet-tx.js +2 -0
  539. package/dist/contracts/schemas/wallet-tx.js.map +1 -1
  540. package/dist/engagement/chat/__tests__/chat.service.int.test.d.ts +2 -0
  541. package/dist/engagement/chat/__tests__/chat.service.int.test.d.ts.map +1 -0
  542. package/dist/engagement/chat/__tests__/chat.service.int.test.js +1430 -0
  543. package/dist/engagement/chat/__tests__/chat.service.int.test.js.map +1 -0
  544. package/dist/engagement/chat/__tests__/global-chat-room.int.test.d.ts +2 -0
  545. package/dist/engagement/chat/__tests__/global-chat-room.int.test.d.ts.map +1 -0
  546. package/dist/engagement/chat/__tests__/global-chat-room.int.test.js +91 -0
  547. package/dist/engagement/chat/__tests__/global-chat-room.int.test.js.map +1 -0
  548. package/dist/engagement/chat/__tests__/moderation.test.js +2 -0
  549. package/dist/engagement/chat/__tests__/moderation.test.js.map +1 -1
  550. package/dist/engagement/chat/contract/constants.d.ts +11 -0
  551. package/dist/engagement/chat/contract/constants.d.ts.map +1 -0
  552. package/dist/engagement/chat/contract/constants.js +11 -0
  553. package/dist/engagement/chat/contract/constants.js.map +1 -0
  554. package/dist/engagement/chat/contract/index.d.ts +1948 -17
  555. package/dist/engagement/chat/contract/index.d.ts.map +1 -1
  556. package/dist/engagement/chat/contract/index.js +407 -11
  557. package/dist/engagement/chat/contract/index.js.map +1 -1
  558. package/dist/engagement/chat/drizzle/migrations/0001_cloudy_groot.sql +32 -0
  559. package/dist/engagement/chat/drizzle/migrations/0002_steep_zodiak.sql +3 -0
  560. package/dist/engagement/chat/drizzle/migrations/0003_stormy_king_bedlam.sql +9 -0
  561. package/dist/engagement/chat/drizzle/migrations/0004_panoramic_robin_chapel.sql +6 -0
  562. package/dist/engagement/chat/drizzle/migrations/0005_tranquil_gwen_stacy.sql +100 -0
  563. package/dist/engagement/chat/drizzle/migrations/0006_tiny_ultron.sql +3 -0
  564. package/dist/engagement/chat/drizzle/migrations/0007_seed_global_chat_room.sql +8 -0
  565. package/dist/engagement/chat/drizzle/migrations/meta/0001_snapshot.json +557 -0
  566. package/dist/engagement/chat/drizzle/migrations/meta/0002_snapshot.json +576 -0
  567. package/dist/engagement/chat/drizzle/migrations/meta/0003_snapshot.json +652 -0
  568. package/dist/engagement/chat/drizzle/migrations/meta/0004_snapshot.json +666 -0
  569. package/dist/engagement/chat/drizzle/migrations/meta/0005_snapshot.json +1422 -0
  570. package/dist/engagement/chat/drizzle/migrations/meta/0006_snapshot.json +1456 -0
  571. package/dist/engagement/chat/drizzle/migrations/meta/0007_snapshot.json +1456 -0
  572. package/dist/engagement/chat/drizzle/migrations/meta/_journal.json +49 -0
  573. package/dist/engagement/chat/index.d.ts +1 -2
  574. package/dist/engagement/chat/index.d.ts.map +1 -1
  575. package/dist/engagement/chat/index.js +1 -2
  576. package/dist/engagement/chat/index.js.map +1 -1
  577. package/dist/engagement/chat/moderation/moderate.d.ts.map +1 -1
  578. package/dist/engagement/chat/moderation/moderate.js +2 -1
  579. package/dist/engagement/chat/moderation/moderate.js.map +1 -1
  580. package/dist/engagement/chat/moderation/profanity.d.ts.map +1 -1
  581. package/dist/engagement/chat/moderation/profanity.js +2 -0
  582. package/dist/engagement/chat/moderation/profanity.js.map +1 -1
  583. package/dist/engagement/chat/plugin.d.ts +120 -1
  584. package/dist/engagement/chat/plugin.d.ts.map +1 -1
  585. package/dist/engagement/chat/plugin.js +34 -5
  586. package/dist/engagement/chat/plugin.js.map +1 -1
  587. package/dist/engagement/chat/router/index.d.ts +1515 -17
  588. package/dist/engagement/chat/router/index.d.ts.map +1 -1
  589. package/dist/engagement/chat/router/index.js +269 -28
  590. package/dist/engagement/chat/router/index.js.map +1 -1
  591. package/dist/engagement/chat/schema/index.d.ts +1508 -0
  592. package/dist/engagement/chat/schema/index.d.ts.map +1 -1
  593. package/dist/engagement/chat/schema/index.js +175 -3
  594. package/dist/engagement/chat/schema/index.js.map +1 -1
  595. package/dist/engagement/chat/service/chat-ban.service.d.ts +26 -0
  596. package/dist/engagement/chat/service/chat-ban.service.d.ts.map +1 -0
  597. package/dist/engagement/chat/service/chat-ban.service.js +139 -0
  598. package/dist/engagement/chat/service/chat-ban.service.js.map +1 -0
  599. package/dist/engagement/chat/service/chat-message-moderation.service.d.ts +14 -0
  600. package/dist/engagement/chat/service/chat-message-moderation.service.d.ts.map +1 -0
  601. package/dist/engagement/chat/service/chat-message-moderation.service.js +48 -0
  602. package/dist/engagement/chat/service/chat-message-moderation.service.js.map +1 -0
  603. package/dist/engagement/chat/service/chat-moderation.service.d.ts +30 -0
  604. package/dist/engagement/chat/service/chat-moderation.service.d.ts.map +1 -0
  605. package/dist/engagement/chat/service/chat-moderation.service.js +40 -0
  606. package/dist/engagement/chat/service/chat-moderation.service.js.map +1 -0
  607. package/dist/engagement/chat/service/chat-mute.service.d.ts +26 -0
  608. package/dist/engagement/chat/service/chat-mute.service.d.ts.map +1 -0
  609. package/dist/engagement/chat/service/chat-mute.service.js +151 -0
  610. package/dist/engagement/chat/service/chat-mute.service.js.map +1 -0
  611. package/dist/engagement/chat/service/chat-room-ban.service.d.ts +29 -0
  612. package/dist/engagement/chat/service/chat-room-ban.service.d.ts.map +1 -0
  613. package/dist/engagement/chat/service/chat-room-ban.service.js +105 -0
  614. package/dist/engagement/chat/service/chat-room-ban.service.js.map +1 -0
  615. package/dist/engagement/chat/service/chat-room-membership.service.d.ts +72 -0
  616. package/dist/engagement/chat/service/chat-room-membership.service.d.ts.map +1 -0
  617. package/dist/engagement/chat/service/chat-room-membership.service.js +176 -0
  618. package/dist/engagement/chat/service/chat-room-membership.service.js.map +1 -0
  619. package/dist/engagement/chat/service/chat-room-mute.service.d.ts +25 -0
  620. package/dist/engagement/chat/service/chat-room-mute.service.d.ts.map +1 -0
  621. package/dist/engagement/chat/service/chat-room-mute.service.js +89 -0
  622. package/dist/engagement/chat/service/chat-room-mute.service.js.map +1 -0
  623. package/dist/engagement/chat/service/chat.service.d.ts +1030 -32
  624. package/dist/engagement/chat/service/chat.service.d.ts.map +1 -1
  625. package/dist/engagement/chat/service/chat.service.js +1071 -76
  626. package/dist/engagement/chat/service/chat.service.js.map +1 -1
  627. package/dist/engagement/chat/service/errors/chat-moderation.errors.d.ts +21 -0
  628. package/dist/engagement/chat/service/errors/chat-moderation.errors.d.ts.map +1 -0
  629. package/dist/engagement/chat/service/errors/chat-moderation.errors.js +31 -0
  630. package/dist/engagement/chat/service/errors/chat-moderation.errors.js.map +1 -0
  631. package/dist/engagement/chat-commands/contract/index.d.ts +361 -0
  632. package/dist/engagement/chat-commands/contract/index.d.ts.map +1 -0
  633. package/dist/engagement/chat-commands/contract/index.js +117 -0
  634. package/dist/engagement/chat-commands/contract/index.js.map +1 -0
  635. package/dist/engagement/chat-commands/drizzle/migrations/0000_daffy_lady_bullseye.sql +24 -0
  636. package/dist/engagement/chat-commands/drizzle/migrations/0001_sturdy_barracuda.sql +1 -0
  637. package/dist/engagement/chat-commands/drizzle/migrations/meta/0000_snapshot.json +164 -0
  638. package/dist/engagement/chat-commands/drizzle/migrations/meta/0001_snapshot.json +83 -0
  639. package/dist/engagement/chat-commands/drizzle/migrations/meta/_journal.json +20 -0
  640. package/dist/engagement/chat-commands/drizzle.config.d.ts +4 -0
  641. package/dist/engagement/chat-commands/drizzle.config.d.ts.map +1 -0
  642. package/dist/engagement/chat-commands/drizzle.config.js +21 -0
  643. package/dist/engagement/chat-commands/drizzle.config.js.map +1 -0
  644. package/dist/engagement/chat-commands/migrate.d.ts +3 -0
  645. package/dist/engagement/chat-commands/migrate.d.ts.map +1 -0
  646. package/dist/engagement/chat-commands/migrate.js +15 -0
  647. package/dist/engagement/chat-commands/migrate.js.map +1 -0
  648. package/dist/engagement/chat-commands/plugin.d.ts +122 -0
  649. package/dist/engagement/chat-commands/plugin.d.ts.map +1 -0
  650. package/dist/engagement/chat-commands/plugin.js +15 -0
  651. package/dist/engagement/chat-commands/plugin.js.map +1 -0
  652. package/dist/engagement/chat-commands/router/index.d.ts +276 -0
  653. package/dist/engagement/chat-commands/router/index.d.ts.map +1 -0
  654. package/dist/engagement/chat-commands/router/index.js +76 -0
  655. package/dist/engagement/chat-commands/router/index.js.map +1 -0
  656. package/dist/engagement/chat-commands/schema/index.d.ts +138 -0
  657. package/dist/engagement/chat-commands/schema/index.d.ts.map +1 -0
  658. package/dist/engagement/chat-commands/schema/index.js +11 -0
  659. package/dist/engagement/chat-commands/schema/index.js.map +1 -0
  660. package/dist/engagement/chat-commands/seed/index.d.ts +3 -0
  661. package/dist/engagement/chat-commands/seed/index.d.ts.map +1 -0
  662. package/dist/engagement/chat-commands/seed/index.js +66 -0
  663. package/dist/engagement/chat-commands/seed/index.js.map +1 -0
  664. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.d.ts +2 -0
  665. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.d.ts.map +1 -0
  666. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js +431 -0
  667. package/dist/engagement/chat-commands/service/__tests__/chat-commands.service.test.js.map +1 -0
  668. package/dist/engagement/chat-commands/service/chat-commands.service.d.ts +73 -0
  669. package/dist/engagement/chat-commands/service/chat-commands.service.d.ts.map +1 -0
  670. package/dist/engagement/chat-commands/service/chat-commands.service.js +258 -0
  671. package/dist/engagement/chat-commands/service/chat-commands.service.js.map +1 -0
  672. package/dist/engagement/contracts.d.ts +3 -0
  673. package/dist/engagement/contracts.d.ts.map +1 -1
  674. package/dist/engagement/contracts.js +3 -0
  675. package/dist/engagement/contracts.js.map +1 -1
  676. package/dist/engagement/index.d.ts +3 -0
  677. package/dist/engagement/index.d.ts.map +1 -1
  678. package/dist/engagement/index.js +3 -0
  679. package/dist/engagement/index.js.map +1 -1
  680. package/dist/engagement/notifications/__tests__/notifications.service.int.test.d.ts +2 -0
  681. package/dist/engagement/notifications/__tests__/notifications.service.int.test.d.ts.map +1 -0
  682. package/dist/engagement/notifications/__tests__/notifications.service.int.test.js +175 -0
  683. package/dist/engagement/notifications/__tests__/notifications.service.int.test.js.map +1 -0
  684. package/dist/engagement/notifications/contract/index.d.ts +36 -2
  685. package/dist/engagement/notifications/contract/index.d.ts.map +1 -1
  686. package/dist/engagement/notifications/contract/index.js +16 -1
  687. package/dist/engagement/notifications/contract/index.js.map +1 -1
  688. package/dist/engagement/notifications/index.d.ts +1 -1
  689. package/dist/engagement/notifications/index.d.ts.map +1 -1
  690. package/dist/engagement/notifications/plugin.d.ts +121 -1
  691. package/dist/engagement/notifications/plugin.d.ts.map +1 -1
  692. package/dist/engagement/notifications/plugin.js +76 -9
  693. package/dist/engagement/notifications/plugin.js.map +1 -1
  694. package/dist/engagement/notifications/router/index.d.ts +7 -1
  695. package/dist/engagement/notifications/router/index.d.ts.map +1 -1
  696. package/dist/engagement/notifications/router/index.js +15 -6
  697. package/dist/engagement/notifications/router/index.js.map +1 -1
  698. package/dist/engagement/notifications/service/notifications.service.d.ts +6 -13
  699. package/dist/engagement/notifications/service/notifications.service.d.ts.map +1 -1
  700. package/dist/engagement/notifications/service/notifications.service.js +6 -14
  701. package/dist/engagement/notifications/service/notifications.service.js.map +1 -1
  702. package/dist/engagement/server.d.ts +3 -0
  703. package/dist/engagement/server.d.ts.map +1 -1
  704. package/dist/engagement/server.js +3 -0
  705. package/dist/engagement/server.js.map +1 -1
  706. package/dist/engagement/social/__tests__/social.plugin.int.test.d.ts +2 -0
  707. package/dist/engagement/social/__tests__/social.plugin.int.test.d.ts.map +1 -0
  708. package/dist/engagement/social/__tests__/social.plugin.int.test.js +100 -0
  709. package/dist/engagement/social/__tests__/social.plugin.int.test.js.map +1 -0
  710. package/dist/engagement/social/__tests__/social.router.int.test.d.ts +2 -0
  711. package/dist/engagement/social/__tests__/social.router.int.test.d.ts.map +1 -0
  712. package/dist/engagement/social/__tests__/social.router.int.test.js +215 -0
  713. package/dist/engagement/social/__tests__/social.router.int.test.js.map +1 -0
  714. package/dist/engagement/social/__tests__/social.service.int.test.d.ts +2 -0
  715. package/dist/engagement/social/__tests__/social.service.int.test.d.ts.map +1 -0
  716. package/dist/engagement/social/__tests__/social.service.int.test.js +810 -0
  717. package/dist/engagement/social/__tests__/social.service.int.test.js.map +1 -0
  718. package/dist/engagement/social/contract/index.d.ts +187 -0
  719. package/dist/engagement/social/contract/index.d.ts.map +1 -0
  720. package/dist/engagement/social/contract/index.js +107 -0
  721. package/dist/engagement/social/contract/index.js.map +1 -0
  722. package/dist/engagement/social/drizzle/migrations/0000_fine_jamie_braddock.sql +24 -0
  723. package/dist/engagement/social/drizzle/migrations/0001_lame_eddie_brock.sql +10 -0
  724. package/dist/engagement/social/drizzle/migrations/0002_foamy_saracen.sql +1 -0
  725. package/dist/engagement/social/drizzle/migrations/0003_fuzzy_shadow_king.sql +4 -0
  726. package/dist/engagement/social/drizzle/migrations/0004_friendship-cancel-constraint.sql +2 -0
  727. package/dist/engagement/social/drizzle/migrations/meta/0000_snapshot.json +232 -0
  728. package/dist/engagement/social/drizzle/migrations/meta/0001_snapshot.json +129 -0
  729. package/dist/engagement/social/drizzle/migrations/meta/0002_snapshot.json +134 -0
  730. package/dist/engagement/social/drizzle/migrations/meta/0003_snapshot.json +145 -0
  731. package/dist/engagement/social/drizzle/migrations/meta/0004_snapshot.json +145 -0
  732. package/dist/engagement/social/drizzle/migrations/meta/_journal.json +41 -0
  733. package/dist/engagement/social/drizzle.config.d.ts +4 -0
  734. package/dist/engagement/social/drizzle.config.d.ts.map +1 -0
  735. package/dist/engagement/social/drizzle.config.js +21 -0
  736. package/dist/engagement/social/drizzle.config.js.map +1 -0
  737. package/dist/engagement/social/index.d.ts +3 -0
  738. package/dist/engagement/social/index.d.ts.map +1 -0
  739. package/dist/engagement/social/index.js +6 -0
  740. package/dist/engagement/social/index.js.map +1 -0
  741. package/dist/engagement/social/migrate.d.ts +5 -0
  742. package/dist/engagement/social/migrate.d.ts.map +1 -0
  743. package/dist/engagement/social/migrate.js +17 -0
  744. package/dist/engagement/social/migrate.js.map +1 -0
  745. package/dist/engagement/social/plugin.d.ts +122 -0
  746. package/dist/engagement/social/plugin.d.ts.map +1 -0
  747. package/dist/engagement/social/plugin.js +17 -0
  748. package/dist/engagement/social/plugin.js.map +1 -0
  749. package/dist/engagement/social/router/index.d.ts +98 -0
  750. package/dist/engagement/social/router/index.d.ts.map +1 -0
  751. package/dist/engagement/social/router/index.js +68 -0
  752. package/dist/engagement/social/router/index.js.map +1 -0
  753. package/dist/engagement/social/schema/index.d.ts +145 -0
  754. package/dist/engagement/social/schema/index.d.ts.map +1 -0
  755. package/dist/engagement/social/schema/index.js +24 -0
  756. package/dist/engagement/social/schema/index.js.map +1 -0
  757. package/dist/engagement/social/service/social.service.d.ts +55 -0
  758. package/dist/engagement/social/service/social.service.d.ts.map +1 -0
  759. package/dist/engagement/social/service/social.service.js +479 -0
  760. package/dist/engagement/social/service/social.service.js.map +1 -0
  761. package/dist/engagement/social-transfers/contract/index.d.ts +85 -0
  762. package/dist/engagement/social-transfers/contract/index.d.ts.map +1 -0
  763. package/dist/engagement/social-transfers/contract/index.js +21 -0
  764. package/dist/engagement/social-transfers/contract/index.js.map +1 -0
  765. package/dist/engagement/social-transfers/drizzle/migrations/0000_clammy_rattler.sql +46 -0
  766. package/dist/engagement/social-transfers/drizzle/migrations/0001_fearless_molecule_man.sql +5 -0
  767. package/dist/engagement/social-transfers/drizzle/migrations/meta/0000_snapshot.json +287 -0
  768. package/dist/engagement/social-transfers/drizzle/migrations/meta/0001_snapshot.json +287 -0
  769. package/dist/engagement/social-transfers/drizzle/migrations/meta/_journal.json +20 -0
  770. package/dist/engagement/social-transfers/drizzle.config.d.ts +4 -0
  771. package/dist/engagement/social-transfers/drizzle.config.d.ts.map +1 -0
  772. package/dist/engagement/social-transfers/drizzle.config.js +21 -0
  773. package/dist/engagement/social-transfers/drizzle.config.js.map +1 -0
  774. package/dist/engagement/social-transfers/index.d.ts +3 -0
  775. package/dist/engagement/social-transfers/index.d.ts.map +1 -0
  776. package/dist/engagement/social-transfers/index.js +6 -0
  777. package/dist/engagement/social-transfers/index.js.map +1 -0
  778. package/dist/engagement/social-transfers/migrate.d.ts +5 -0
  779. package/dist/engagement/social-transfers/migrate.d.ts.map +1 -0
  780. package/dist/engagement/social-transfers/migrate.js +17 -0
  781. package/dist/engagement/social-transfers/migrate.js.map +1 -0
  782. package/dist/engagement/social-transfers/plugin.d.ts +122 -0
  783. package/dist/engagement/social-transfers/plugin.d.ts.map +1 -0
  784. package/dist/engagement/social-transfers/plugin.js +24 -0
  785. package/dist/engagement/social-transfers/plugin.js.map +1 -0
  786. package/dist/engagement/social-transfers/router/index.d.ts +77 -0
  787. package/dist/engagement/social-transfers/router/index.d.ts.map +1 -0
  788. package/dist/engagement/social-transfers/router/index.js +26 -0
  789. package/dist/engagement/social-transfers/router/index.js.map +1 -0
  790. package/dist/engagement/social-transfers/schema/index.d.ts +608 -0
  791. package/dist/engagement/social-transfers/schema/index.d.ts.map +1 -0
  792. package/dist/engagement/social-transfers/schema/index.js +61 -0
  793. package/dist/engagement/social-transfers/schema/index.js.map +1 -0
  794. package/dist/engagement/social-transfers/service/__tests__/rain-split.int.test.d.ts +2 -0
  795. package/dist/engagement/social-transfers/service/__tests__/rain-split.int.test.d.ts.map +1 -0
  796. package/dist/engagement/social-transfers/service/__tests__/rain-split.int.test.js +31 -0
  797. package/dist/engagement/social-transfers/service/__tests__/rain-split.int.test.js.map +1 -0
  798. package/dist/engagement/social-transfers/service/__tests__/social-transfers.service.test.d.ts +2 -0
  799. package/dist/engagement/social-transfers/service/__tests__/social-transfers.service.test.d.ts.map +1 -0
  800. package/dist/engagement/social-transfers/service/__tests__/social-transfers.service.test.js +936 -0
  801. package/dist/engagement/social-transfers/service/__tests__/social-transfers.service.test.js.map +1 -0
  802. package/dist/engagement/social-transfers/service/social-transfers.service.d.ts +81 -0
  803. package/dist/engagement/social-transfers/service/social-transfers.service.d.ts.map +1 -0
  804. package/dist/engagement/social-transfers/service/social-transfers.service.js +807 -0
  805. package/dist/engagement/social-transfers/service/social-transfers.service.js.map +1 -0
  806. package/dist/iam/__tests__/admin-player-activity.int.test.d.ts +2 -0
  807. package/dist/iam/__tests__/admin-player-activity.int.test.d.ts.map +1 -0
  808. package/dist/iam/__tests__/admin-player-activity.int.test.js +119 -0
  809. package/dist/iam/__tests__/admin-player-activity.int.test.js.map +1 -0
  810. package/dist/iam/__tests__/iam.service.int.test.d.ts +2 -0
  811. package/dist/iam/__tests__/iam.service.int.test.d.ts.map +1 -0
  812. package/dist/iam/__tests__/iam.service.int.test.js +573 -0
  813. package/dist/iam/__tests__/iam.service.int.test.js.map +1 -0
  814. package/dist/iam/adapters/admin-player-activity.d.ts +10 -0
  815. package/dist/iam/adapters/admin-player-activity.d.ts.map +1 -0
  816. package/dist/iam/adapters/admin-player-activity.js +106 -0
  817. package/dist/iam/adapters/admin-player-activity.js.map +1 -0
  818. package/dist/iam/adapters/admin-role-assignment-directory.d.ts +8 -0
  819. package/dist/iam/adapters/admin-role-assignment-directory.d.ts.map +1 -0
  820. package/dist/iam/adapters/admin-role-assignment-directory.js +23 -0
  821. package/dist/iam/adapters/admin-role-assignment-directory.js.map +1 -0
  822. package/dist/iam/contract/index.d.ts +58 -0
  823. package/dist/iam/contract/index.d.ts.map +1 -1
  824. package/dist/iam/contract/index.js +30 -4
  825. package/dist/iam/contract/index.js.map +1 -1
  826. package/dist/iam/plugin.d.ts +120 -1
  827. package/dist/iam/plugin.d.ts.map +1 -1
  828. package/dist/iam/plugin.js +13 -7
  829. package/dist/iam/plugin.js.map +1 -1
  830. package/dist/iam/router/index.d.ts +37 -0
  831. package/dist/iam/router/index.d.ts.map +1 -1
  832. package/dist/iam/router/index.js +7 -1
  833. package/dist/iam/router/index.js.map +1 -1
  834. package/dist/iam/seed/data/default-admin-roles.d.ts.map +1 -1
  835. package/dist/iam/seed/data/default-admin-roles.js +3 -0
  836. package/dist/iam/seed/data/default-admin-roles.js.map +1 -1
  837. package/dist/iam/seed/seed-default-roles.d.ts.map +1 -1
  838. package/dist/iam/seed/seed-default-roles.js +2 -1
  839. package/dist/iam/seed/seed-default-roles.js.map +1 -1
  840. package/dist/iam/service/iam.service.d.ts +40 -31
  841. package/dist/iam/service/iam.service.d.ts.map +1 -1
  842. package/dist/iam/service/iam.service.js +166 -43
  843. package/dist/iam/service/iam.service.js.map +1 -1
  844. package/dist/pam/identity/__tests__/admin-user-directory.int.test.d.ts +2 -0
  845. package/dist/pam/identity/__tests__/admin-user-directory.int.test.d.ts.map +1 -0
  846. package/dist/pam/identity/__tests__/admin-user-directory.int.test.js +217 -0
  847. package/dist/pam/identity/__tests__/admin-user-directory.int.test.js.map +1 -0
  848. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.d.ts +2 -0
  849. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.d.ts.map +1 -0
  850. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.js +194 -0
  851. package/dist/pam/identity/__tests__/identity.rate-limit.int.test.js.map +1 -0
  852. package/dist/pam/identity/__tests__/identity.registration-gates.int.test.d.ts +2 -0
  853. package/dist/pam/identity/__tests__/identity.registration-gates.int.test.d.ts.map +1 -0
  854. package/dist/pam/identity/__tests__/identity.registration-gates.int.test.js +94 -0
  855. package/dist/pam/identity/__tests__/identity.registration-gates.int.test.js.map +1 -0
  856. package/dist/pam/identity/__tests__/identity.service.int.test.d.ts +2 -0
  857. package/dist/pam/identity/__tests__/identity.service.int.test.d.ts.map +1 -0
  858. package/dist/pam/identity/__tests__/identity.service.int.test.js +551 -0
  859. package/dist/pam/identity/__tests__/identity.service.int.test.js.map +1 -0
  860. package/dist/pam/identity/__tests__/login-enforcement.service.int.test.d.ts +2 -0
  861. package/dist/pam/identity/__tests__/login-enforcement.service.int.test.d.ts.map +1 -0
  862. package/dist/pam/identity/__tests__/login-enforcement.service.int.test.js +99 -0
  863. package/dist/pam/identity/__tests__/login-enforcement.service.int.test.js.map +1 -0
  864. package/dist/pam/identity/__tests__/phone-login.service.int.test.d.ts +2 -0
  865. package/dist/pam/identity/__tests__/phone-login.service.int.test.d.ts.map +1 -0
  866. package/dist/pam/identity/__tests__/phone-login.service.int.test.js +371 -0
  867. package/dist/pam/identity/__tests__/phone-login.service.int.test.js.map +1 -0
  868. package/dist/pam/identity/__tests__/play-eligibility.test.d.ts +2 -0
  869. package/dist/pam/identity/__tests__/play-eligibility.test.d.ts.map +1 -0
  870. package/dist/pam/identity/__tests__/play-eligibility.test.js +30 -0
  871. package/dist/pam/identity/__tests__/play-eligibility.test.js.map +1 -0
  872. package/dist/pam/identity/__tests__/rg-guard.test.d.ts +2 -0
  873. package/dist/pam/identity/__tests__/rg-guard.test.d.ts.map +1 -0
  874. package/dist/pam/identity/__tests__/rg-guard.test.js +21 -0
  875. package/dist/pam/identity/__tests__/rg-guard.test.js.map +1 -0
  876. package/dist/pam/identity/__tests__/user-commands.int.test.d.ts +2 -0
  877. package/dist/pam/identity/__tests__/user-commands.int.test.d.ts.map +1 -0
  878. package/dist/pam/identity/__tests__/user-commands.int.test.js +39 -0
  879. package/dist/pam/identity/__tests__/user-commands.int.test.js.map +1 -0
  880. package/dist/pam/identity/__tests__/username-backfill.int.test.d.ts +2 -0
  881. package/dist/pam/identity/__tests__/username-backfill.int.test.d.ts.map +1 -0
  882. package/dist/pam/identity/__tests__/username-backfill.int.test.js +103 -0
  883. package/dist/pam/identity/__tests__/username-backfill.int.test.js.map +1 -0
  884. package/dist/pam/identity/adapters/__tests__/default-email-template-renderer.test.d.ts +2 -0
  885. package/dist/pam/identity/adapters/__tests__/default-email-template-renderer.test.d.ts.map +1 -0
  886. package/dist/pam/identity/adapters/__tests__/default-email-template-renderer.test.js +25 -0
  887. package/dist/pam/identity/adapters/__tests__/default-email-template-renderer.test.js.map +1 -0
  888. package/dist/pam/identity/adapters/default-email-template-renderer.d.ts +8 -0
  889. package/dist/pam/identity/adapters/default-email-template-renderer.d.ts.map +1 -0
  890. package/dist/pam/identity/adapters/default-email-template-renderer.js +7 -0
  891. package/dist/pam/identity/adapters/default-email-template-renderer.js.map +1 -0
  892. package/dist/pam/identity/adapters/identity-reader.service.d.ts +8 -4
  893. package/dist/pam/identity/adapters/identity-reader.service.d.ts.map +1 -1
  894. package/dist/pam/identity/adapters/identity-reader.service.js +53 -2
  895. package/dist/pam/identity/adapters/identity-reader.service.js.map +1 -1
  896. package/dist/pam/identity/adapters/mock/mock-sms-adapter.d.ts +8 -0
  897. package/dist/pam/identity/adapters/mock/mock-sms-adapter.d.ts.map +1 -0
  898. package/dist/pam/identity/adapters/mock/mock-sms-adapter.js +7 -0
  899. package/dist/pam/identity/adapters/mock/mock-sms-adapter.js.map +1 -0
  900. package/dist/pam/identity/admin-user-directory.d.ts +36 -8
  901. package/dist/pam/identity/admin-user-directory.d.ts.map +1 -1
  902. package/dist/pam/identity/admin-user-directory.js +103 -41
  903. package/dist/pam/identity/admin-user-directory.js.map +1 -1
  904. package/dist/pam/identity/contract/index.d.ts +93 -12
  905. package/dist/pam/identity/contract/index.d.ts.map +1 -1
  906. package/dist/pam/identity/contract/index.js +36 -6
  907. package/dist/pam/identity/contract/index.js.map +1 -1
  908. package/dist/pam/identity/drizzle/migrations/0001_rainy_peter_quill.sql +18 -0
  909. package/dist/pam/identity/drizzle/migrations/0002_outstanding_patriot.sql +1 -0
  910. package/dist/pam/identity/drizzle/migrations/0003_open_shotgun.sql +1 -0
  911. package/dist/pam/identity/drizzle/migrations/0004_round_giant_girl.sql +1 -0
  912. package/dist/pam/identity/drizzle/migrations/0005_daily_black_tom.sql +1 -0
  913. package/dist/pam/identity/drizzle/migrations/0006_brave_sabra.sql +1 -0
  914. package/dist/pam/identity/drizzle/migrations/0007_fuzzy_barracuda.sql +44 -0
  915. package/dist/pam/identity/drizzle/migrations/meta/0001_snapshot.json +684 -0
  916. package/dist/pam/identity/drizzle/migrations/meta/0002_snapshot.json +690 -0
  917. package/dist/pam/identity/drizzle/migrations/meta/0003_snapshot.json +695 -0
  918. package/dist/pam/identity/drizzle/migrations/meta/0004_snapshot.json +680 -0
  919. package/dist/pam/identity/drizzle/migrations/meta/0005_snapshot.json +695 -0
  920. package/dist/pam/identity/drizzle/migrations/meta/0006_snapshot.json +701 -0
  921. package/dist/pam/identity/drizzle/migrations/meta/0007_snapshot.json +737 -0
  922. package/dist/pam/identity/drizzle/migrations/meta/_journal.json +49 -0
  923. package/dist/pam/identity/plugin.d.ts +119 -1
  924. package/dist/pam/identity/plugin.d.ts.map +1 -1
  925. package/dist/pam/identity/plugin.js +43 -7
  926. package/dist/pam/identity/plugin.js.map +1 -1
  927. package/dist/pam/identity/react/account.d.ts +3 -0
  928. package/dist/pam/identity/react/account.d.ts.map +1 -1
  929. package/dist/pam/identity/react/auth.d.ts +17 -13
  930. package/dist/pam/identity/react/auth.d.ts.map +1 -1
  931. package/dist/pam/identity/router/index.d.ts +84 -13
  932. package/dist/pam/identity/router/index.d.ts.map +1 -1
  933. package/dist/pam/identity/router/index.js +48 -8
  934. package/dist/pam/identity/router/index.js.map +1 -1
  935. package/dist/pam/identity/schema/index.d.ts +246 -0
  936. package/dist/pam/identity/schema/index.d.ts.map +1 -1
  937. package/dist/pam/identity/schema/index.js +32 -2
  938. package/dist/pam/identity/schema/index.js.map +1 -1
  939. package/dist/pam/identity/service/identity.service.d.ts +80 -30
  940. package/dist/pam/identity/service/identity.service.d.ts.map +1 -1
  941. package/dist/pam/identity/service/identity.service.js +621 -105
  942. package/dist/pam/identity/service/identity.service.js.map +1 -1
  943. package/dist/pam/identity/service/lockout-policy.service.d.ts +30 -0
  944. package/dist/pam/identity/service/lockout-policy.service.d.ts.map +1 -0
  945. package/dist/pam/identity/service/lockout-policy.service.js +40 -0
  946. package/dist/pam/identity/service/lockout-policy.service.js.map +1 -0
  947. package/dist/pam/identity/service/login-enforcement.service.d.ts +3 -3
  948. package/dist/pam/identity/service/login-enforcement.service.d.ts.map +1 -1
  949. package/dist/pam/identity/service/login-enforcement.service.js.map +1 -1
  950. package/dist/pam/identity/service/phone-login.service.d.ts +62 -0
  951. package/dist/pam/identity/service/phone-login.service.d.ts.map +1 -0
  952. package/dist/pam/identity/service/phone-login.service.js +401 -0
  953. package/dist/pam/identity/service/phone-login.service.js.map +1 -0
  954. package/dist/pam/identity/service/play-eligibility.service.d.ts +8 -0
  955. package/dist/pam/identity/service/play-eligibility.service.d.ts.map +1 -0
  956. package/dist/pam/identity/service/play-eligibility.service.js +21 -0
  957. package/dist/pam/identity/service/play-eligibility.service.js.map +1 -0
  958. package/dist/pam/identity/service/rg-guard.service.d.ts +5 -0
  959. package/dist/pam/identity/service/rg-guard.service.d.ts.map +1 -0
  960. package/dist/pam/identity/service/rg-guard.service.js +4 -0
  961. package/dist/pam/identity/service/rg-guard.service.js.map +1 -0
  962. package/dist/pam/identity/service/session.service.d.ts +11 -4
  963. package/dist/pam/identity/service/session.service.d.ts.map +1 -1
  964. package/dist/pam/identity/service/session.service.js +29 -12
  965. package/dist/pam/identity/service/session.service.js.map +1 -1
  966. package/dist/pam/identity/service/user-commands.service.d.ts +11 -0
  967. package/dist/pam/identity/service/user-commands.service.d.ts.map +1 -0
  968. package/dist/pam/identity/service/user-commands.service.js +32 -0
  969. package/dist/pam/identity/service/user-commands.service.js.map +1 -0
  970. package/dist/pam/player-management/__tests__/kyc-status-writer.int.test.d.ts +2 -0
  971. package/dist/pam/player-management/__tests__/kyc-status-writer.int.test.d.ts.map +1 -0
  972. package/dist/pam/player-management/__tests__/kyc-status-writer.int.test.js +89 -0
  973. package/dist/pam/player-management/__tests__/kyc-status-writer.int.test.js.map +1 -0
  974. package/dist/pam/player-management/__tests__/player.router.int.test.d.ts +2 -0
  975. package/dist/pam/player-management/__tests__/player.router.int.test.d.ts.map +1 -0
  976. package/dist/pam/player-management/__tests__/player.router.int.test.js +107 -0
  977. package/dist/pam/player-management/__tests__/player.router.int.test.js.map +1 -0
  978. package/dist/pam/player-management/__tests__/player.service.int.test.d.ts +2 -0
  979. package/dist/pam/player-management/__tests__/player.service.int.test.d.ts.map +1 -0
  980. package/dist/pam/player-management/__tests__/player.service.int.test.js +429 -0
  981. package/dist/pam/player-management/__tests__/player.service.int.test.js.map +1 -0
  982. package/dist/pam/player-management/contract/index.d.ts +105 -25
  983. package/dist/pam/player-management/contract/index.d.ts.map +1 -1
  984. package/dist/pam/player-management/contract/index.js +35 -5
  985. package/dist/pam/player-management/contract/index.js.map +1 -1
  986. package/dist/pam/player-management/plugin.d.ts +120 -1
  987. package/dist/pam/player-management/plugin.d.ts.map +1 -1
  988. package/dist/pam/player-management/plugin.js +10 -7
  989. package/dist/pam/player-management/plugin.js.map +1 -1
  990. package/dist/pam/player-management/router/index.d.ts +79 -23
  991. package/dist/pam/player-management/router/index.d.ts.map +1 -1
  992. package/dist/pam/player-management/router/index.js +54 -17
  993. package/dist/pam/player-management/router/index.js.map +1 -1
  994. package/dist/pam/player-management/service/kyc-status-writer.d.ts +3 -2
  995. package/dist/pam/player-management/service/kyc-status-writer.d.ts.map +1 -1
  996. package/dist/pam/player-management/service/kyc-status-writer.js +26 -10
  997. package/dist/pam/player-management/service/kyc-status-writer.js.map +1 -1
  998. package/dist/pam/player-management/service/player.service.d.ts +45 -34
  999. package/dist/pam/player-management/service/player.service.d.ts.map +1 -1
  1000. package/dist/pam/player-management/service/player.service.js +139 -50
  1001. package/dist/pam/player-management/service/player.service.js.map +1 -1
  1002. package/dist/pam/player-note/__tests__/player-note.router.int.test.d.ts +2 -0
  1003. package/dist/pam/player-note/__tests__/player-note.router.int.test.d.ts.map +1 -0
  1004. package/dist/pam/player-note/__tests__/player-note.router.int.test.js +52 -0
  1005. package/dist/pam/player-note/__tests__/player-note.router.int.test.js.map +1 -0
  1006. package/dist/pam/player-note/contract/index.d.ts +14 -0
  1007. package/dist/pam/player-note/contract/index.d.ts.map +1 -1
  1008. package/dist/pam/player-note/contract/index.js +8 -2
  1009. package/dist/pam/player-note/contract/index.js.map +1 -1
  1010. package/dist/pam/player-note/plugin.d.ts +120 -1
  1011. package/dist/pam/player-note/plugin.d.ts.map +1 -1
  1012. package/dist/pam/player-note/plugin.js +6 -4
  1013. package/dist/pam/player-note/plugin.js.map +1 -1
  1014. package/dist/pam/player-note/router/index.d.ts +10 -1
  1015. package/dist/pam/player-note/router/index.d.ts.map +1 -1
  1016. package/dist/pam/player-note/router/index.js +20 -3
  1017. package/dist/pam/player-note/router/index.js.map +1 -1
  1018. package/dist/pam/player-note/schema/index.d.ts +4 -4
  1019. package/dist/pam/player-note/schema/index.js +6 -6
  1020. package/dist/pam/player-note/schema/index.js.map +1 -1
  1021. package/dist/pam/player-note/service/player-note.service.d.ts +13 -3
  1022. package/dist/pam/player-note/service/player-note.service.d.ts.map +1 -1
  1023. package/dist/pam/player-note/service/player-note.service.js +6 -4
  1024. package/dist/pam/player-note/service/player-note.service.js.map +1 -1
  1025. package/dist/pam/profile/__tests__/profile.service.int.test.d.ts +2 -0
  1026. package/dist/pam/profile/__tests__/profile.service.int.test.d.ts.map +1 -0
  1027. package/dist/pam/profile/__tests__/profile.service.int.test.js +88 -0
  1028. package/dist/pam/profile/__tests__/profile.service.int.test.js.map +1 -0
  1029. package/dist/pam/profile/contract/index.d.ts +8 -7
  1030. package/dist/pam/profile/contract/index.d.ts.map +1 -1
  1031. package/dist/pam/profile/drizzle/migrations/0001_powerful_tiger_shark.sql +1 -0
  1032. package/dist/pam/profile/drizzle/migrations/0002_sour_alex_wilder.sql +7 -0
  1033. package/dist/pam/profile/drizzle/migrations/meta/0001_snapshot.json +191 -0
  1034. package/dist/pam/profile/drizzle/migrations/meta/0002_snapshot.json +200 -0
  1035. package/dist/pam/profile/drizzle/migrations/meta/_journal.json +14 -0
  1036. package/dist/pam/profile/migrate.d.ts.map +1 -1
  1037. package/dist/pam/profile/migrate.js +3 -1
  1038. package/dist/pam/profile/migrate.js.map +1 -1
  1039. package/dist/pam/profile/plugin.d.ts +119 -1
  1040. package/dist/pam/profile/plugin.d.ts.map +1 -1
  1041. package/dist/pam/profile/plugin.js +7 -4
  1042. package/dist/pam/profile/plugin.js.map +1 -1
  1043. package/dist/pam/profile/react/profile.d.ts +10 -12
  1044. package/dist/pam/profile/react/profile.d.ts.map +1 -1
  1045. package/dist/pam/profile/react/profile.js.map +1 -1
  1046. package/dist/pam/profile/router/index.d.ts +8 -7
  1047. package/dist/pam/profile/router/index.d.ts.map +1 -1
  1048. package/dist/pam/profile/schema/index.d.ts +88 -20
  1049. package/dist/pam/profile/schema/index.d.ts.map +1 -1
  1050. package/dist/pam/profile/schema/index.js +6 -9
  1051. package/dist/pam/profile/schema/index.js.map +1 -1
  1052. package/dist/pam/profile/service/profile.service.d.ts +24 -10
  1053. package/dist/pam/profile/service/profile.service.d.ts.map +1 -1
  1054. package/dist/pam/profile/service/profile.service.js +28 -17
  1055. package/dist/pam/profile/service/profile.service.js.map +1 -1
  1056. package/dist/pam/shared/__tests__/shared-mappers.test.d.ts +2 -0
  1057. package/dist/pam/shared/__tests__/shared-mappers.test.d.ts.map +1 -0
  1058. package/dist/pam/shared/__tests__/shared-mappers.test.js +55 -0
  1059. package/dist/pam/shared/__tests__/shared-mappers.test.js.map +1 -0
  1060. package/dist/pam/shared/headers-mapper.d.ts.map +1 -1
  1061. package/dist/pam/shared/headers-mapper.js +2 -1
  1062. package/dist/pam/shared/headers-mapper.js.map +1 -1
  1063. package/dist/pam/shared/player-mapper.d.ts +22 -3
  1064. package/dist/pam/shared/player-mapper.d.ts.map +1 -1
  1065. package/dist/pam/shared/player-mapper.js +8 -7
  1066. package/dist/pam/shared/player-mapper.js.map +1 -1
  1067. package/dist/pam/tag/__tests__/get-active-tag-keys.int.test.d.ts +2 -0
  1068. package/dist/pam/tag/__tests__/get-active-tag-keys.int.test.d.ts.map +1 -0
  1069. package/dist/pam/tag/__tests__/get-active-tag-keys.int.test.js +77 -0
  1070. package/dist/pam/tag/__tests__/get-active-tag-keys.int.test.js.map +1 -0
  1071. package/dist/pam/tag/__tests__/tag-evaluation.service.int.test.d.ts +2 -0
  1072. package/dist/pam/tag/__tests__/tag-evaluation.service.int.test.d.ts.map +1 -0
  1073. package/dist/pam/tag/__tests__/tag-evaluation.service.int.test.js +980 -0
  1074. package/dist/pam/tag/__tests__/tag-evaluation.service.int.test.js.map +1 -0
  1075. package/dist/pam/tag/__tests__/tag-mappers.test.js +31 -6
  1076. package/dist/pam/tag/__tests__/tag-mappers.test.js.map +1 -1
  1077. package/dist/pam/tag/__tests__/tag-rule.service.int.test.d.ts +2 -0
  1078. package/dist/pam/tag/__tests__/tag-rule.service.int.test.d.ts.map +1 -0
  1079. package/dist/pam/tag/__tests__/tag-rule.service.int.test.js +145 -0
  1080. package/dist/pam/tag/__tests__/tag-rule.service.int.test.js.map +1 -0
  1081. package/dist/pam/tag/__tests__/tag.router.int.test.d.ts +2 -0
  1082. package/dist/pam/tag/__tests__/tag.router.int.test.d.ts.map +1 -0
  1083. package/dist/pam/tag/__tests__/tag.router.int.test.js +222 -0
  1084. package/dist/pam/tag/__tests__/tag.router.int.test.js.map +1 -0
  1085. package/dist/pam/tag/__tests__/tag.service.int.test.d.ts +2 -0
  1086. package/dist/pam/tag/__tests__/tag.service.int.test.d.ts.map +1 -0
  1087. package/dist/pam/tag/__tests__/tag.service.int.test.js +571 -0
  1088. package/dist/pam/tag/__tests__/tag.service.int.test.js.map +1 -0
  1089. package/dist/pam/tag/contract/index.d.ts +142 -4
  1090. package/dist/pam/tag/contract/index.d.ts.map +1 -1
  1091. package/dist/pam/tag/contract/index.js +12 -2
  1092. package/dist/pam/tag/contract/index.js.map +1 -1
  1093. package/dist/pam/tag/contract/player-tag-assign-metadata.d.ts +37 -0
  1094. package/dist/pam/tag/contract/player-tag-assign-metadata.d.ts.map +1 -0
  1095. package/dist/pam/tag/contract/player-tag-assign-metadata.js +20 -0
  1096. package/dist/pam/tag/contract/player-tag-assign-metadata.js.map +1 -0
  1097. package/dist/pam/tag/drizzle/migrations/0001_neat_iron_monger.sql +2 -0
  1098. package/dist/pam/tag/drizzle/migrations/0002_silent_skaar.sql +4 -0
  1099. package/dist/pam/tag/drizzle/migrations/0003_overconfident_guardian.sql +3 -0
  1100. package/dist/pam/tag/drizzle/migrations/0004_curvy_wither.sql +2 -0
  1101. package/dist/pam/tag/drizzle/migrations/meta/0001_snapshot.json +295 -0
  1102. package/dist/pam/tag/drizzle/migrations/meta/0002_snapshot.json +335 -0
  1103. package/dist/pam/tag/drizzle/migrations/meta/0003_snapshot.json +343 -0
  1104. package/dist/pam/tag/drizzle/migrations/meta/0004_snapshot.json +345 -0
  1105. package/dist/pam/tag/drizzle/migrations/meta/_journal.json +28 -0
  1106. package/dist/pam/tag/migrate.d.ts.map +1 -1
  1107. package/dist/pam/tag/migrate.js +34 -0
  1108. package/dist/pam/tag/migrate.js.map +1 -1
  1109. package/dist/pam/tag/plugin.d.ts +120 -1
  1110. package/dist/pam/tag/plugin.d.ts.map +1 -1
  1111. package/dist/pam/tag/plugin.js +46 -19
  1112. package/dist/pam/tag/plugin.js.map +1 -1
  1113. package/dist/pam/tag/router/index.d.ts +117 -4
  1114. package/dist/pam/tag/router/index.d.ts.map +1 -1
  1115. package/dist/pam/tag/router/index.js +38 -9
  1116. package/dist/pam/tag/router/index.js.map +1 -1
  1117. package/dist/pam/tag/schema/index.d.ts +58 -19
  1118. package/dist/pam/tag/schema/index.d.ts.map +1 -1
  1119. package/dist/pam/tag/schema/index.js +32 -21
  1120. package/dist/pam/tag/schema/index.js.map +1 -1
  1121. package/dist/pam/tag/seed/data/default-tag-rules.d.ts.map +1 -1
  1122. package/dist/pam/tag/seed/data/default-tag-rules.js +48 -6
  1123. package/dist/pam/tag/seed/data/default-tag-rules.js.map +1 -1
  1124. package/dist/pam/tag/seed/data/default-tags.d.ts.map +1 -1
  1125. package/dist/pam/tag/seed/data/default-tags.js +6 -0
  1126. package/dist/pam/tag/seed/data/default-tags.js.map +1 -1
  1127. package/dist/pam/tag/seed/seed-default-tag-rules.d.ts.map +1 -1
  1128. package/dist/pam/tag/seed/seed-default-tag-rules.js +5 -3
  1129. package/dist/pam/tag/seed/seed-default-tag-rules.js.map +1 -1
  1130. package/dist/pam/tag/service/tag-evaluation.service.d.ts +141 -17
  1131. package/dist/pam/tag/service/tag-evaluation.service.d.ts.map +1 -1
  1132. package/dist/pam/tag/service/tag-evaluation.service.js +501 -62
  1133. package/dist/pam/tag/service/tag-evaluation.service.js.map +1 -1
  1134. package/dist/pam/tag/service/tag-mappers.d.ts +8 -2
  1135. package/dist/pam/tag/service/tag-mappers.d.ts.map +1 -1
  1136. package/dist/pam/tag/service/tag-mappers.js +4 -8
  1137. package/dist/pam/tag/service/tag-mappers.js.map +1 -1
  1138. package/dist/pam/tag/service/tag-rule.service.d.ts +34 -4
  1139. package/dist/pam/tag/service/tag-rule.service.d.ts.map +1 -1
  1140. package/dist/pam/tag/service/tag-rule.service.js +17 -17
  1141. package/dist/pam/tag/service/tag-rule.service.js.map +1 -1
  1142. package/dist/pam/tag/service/tag.service.d.ts +188 -11
  1143. package/dist/pam/tag/service/tag.service.d.ts.map +1 -1
  1144. package/dist/pam/tag/service/tag.service.js +302 -40
  1145. package/dist/pam/tag/service/tag.service.js.map +1 -1
  1146. package/dist/react/context/api-client.d.ts.map +1 -1
  1147. package/dist/react/context/api-client.js +14 -7
  1148. package/dist/react/context/api-client.js.map +1 -1
  1149. package/dist/react/context/realtime-client.d.ts +1 -0
  1150. package/dist/react/context/realtime-client.d.ts.map +1 -1
  1151. package/dist/react/context/realtime-client.js.map +1 -1
  1152. package/dist/react/hooks/__tests__/use-event-stream.test.d.ts +2 -0
  1153. package/dist/react/hooks/__tests__/use-event-stream.test.d.ts.map +1 -0
  1154. package/dist/react/hooks/__tests__/use-event-stream.test.js +153 -0
  1155. package/dist/react/hooks/__tests__/use-event-stream.test.js.map +1 -0
  1156. package/dist/react/hooks/use-event-stream.d.ts +3 -3
  1157. package/dist/react/hooks/use-event-stream.d.ts.map +1 -1
  1158. package/dist/react/hooks/use-event-stream.js +63 -28
  1159. package/dist/react/hooks/use-event-stream.js.map +1 -1
  1160. package/dist/react/hooks/use-paginated-list.js +3 -3
  1161. package/dist/react/hooks/use-paginated-list.js.map +1 -1
  1162. package/dist/server/auth/__tests__/admin-guard.int.test.d.ts +2 -0
  1163. package/dist/server/auth/__tests__/admin-guard.int.test.d.ts.map +1 -0
  1164. package/dist/server/auth/__tests__/admin-guard.int.test.js +123 -0
  1165. package/dist/server/auth/__tests__/admin-guard.int.test.js.map +1 -0
  1166. package/dist/server/auth/__tests__/auth.test.d.ts +2 -0
  1167. package/dist/server/auth/__tests__/auth.test.d.ts.map +1 -0
  1168. package/dist/server/auth/__tests__/auth.test.js +96 -0
  1169. package/dist/server/auth/__tests__/auth.test.js.map +1 -0
  1170. package/dist/server/auth/__tests__/permission-levels.test.d.ts +2 -0
  1171. package/dist/server/auth/__tests__/permission-levels.test.d.ts.map +1 -0
  1172. package/dist/server/auth/__tests__/permission-levels.test.js +89 -0
  1173. package/dist/server/auth/__tests__/permission-levels.test.js.map +1 -0
  1174. package/dist/server/auth/__tests__/session-resolver.int.test.d.ts +2 -0
  1175. package/dist/server/auth/__tests__/session-resolver.int.test.d.ts.map +1 -0
  1176. package/dist/server/auth/__tests__/session-resolver.int.test.js +59 -0
  1177. package/dist/server/auth/__tests__/session-resolver.int.test.js.map +1 -0
  1178. package/dist/server/auth/__tests__/sign-session-cookie.test.d.ts +2 -0
  1179. package/dist/server/auth/__tests__/sign-session-cookie.test.d.ts.map +1 -0
  1180. package/dist/server/auth/__tests__/sign-session-cookie.test.js +59 -0
  1181. package/dist/server/auth/__tests__/sign-session-cookie.test.js.map +1 -0
  1182. package/dist/server/auth/admin-guard.d.ts +23 -10
  1183. package/dist/server/auth/admin-guard.d.ts.map +1 -1
  1184. package/dist/server/auth/admin-guard.js +90 -44
  1185. package/dist/server/auth/admin-guard.js.map +1 -1
  1186. package/dist/server/auth/auth.d.ts +27 -0
  1187. package/dist/server/auth/auth.d.ts.map +1 -1
  1188. package/dist/server/auth/auth.js +70 -16
  1189. package/dist/server/auth/auth.js.map +1 -1
  1190. package/dist/server/auth/index.d.ts +2 -0
  1191. package/dist/server/auth/index.d.ts.map +1 -1
  1192. package/dist/server/auth/index.js +1 -0
  1193. package/dist/server/auth/index.js.map +1 -1
  1194. package/dist/server/auth/permission-levels.d.ts.map +1 -1
  1195. package/dist/server/auth/permission-levels.js +12 -6
  1196. package/dist/server/auth/permission-levels.js.map +1 -1
  1197. package/dist/server/auth/permissions.d.ts +60 -0
  1198. package/dist/server/auth/permissions.d.ts.map +1 -1
  1199. package/dist/server/auth/permissions.js +10 -0
  1200. package/dist/server/auth/permissions.js.map +1 -1
  1201. package/dist/server/auth/sign-session-cookie.d.ts +18 -0
  1202. package/dist/server/auth/sign-session-cookie.d.ts.map +1 -0
  1203. package/dist/server/auth/sign-session-cookie.js +15 -0
  1204. package/dist/server/auth/sign-session-cookie.js.map +1 -0
  1205. package/dist/server/db/__tests__/migrate.test.d.ts +2 -0
  1206. package/dist/server/db/__tests__/migrate.test.d.ts.map +1 -0
  1207. package/dist/server/db/__tests__/migrate.test.js +127 -0
  1208. package/dist/server/db/__tests__/migrate.test.js.map +1 -0
  1209. package/dist/server/db/__tests__/query-helpers.test.js +83 -1
  1210. package/dist/server/db/__tests__/query-helpers.test.js.map +1 -1
  1211. package/dist/server/db/drizzle.d.ts.map +1 -1
  1212. package/dist/server/db/drizzle.js +2 -1
  1213. package/dist/server/db/drizzle.js.map +1 -1
  1214. package/dist/server/db/drizzle.service.d.ts.map +1 -1
  1215. package/dist/server/db/drizzle.service.js +10 -1
  1216. package/dist/server/db/drizzle.service.js.map +1 -1
  1217. package/dist/server/db/index.d.ts +1 -1
  1218. package/dist/server/db/index.d.ts.map +1 -1
  1219. package/dist/server/db/index.js +1 -1
  1220. package/dist/server/db/index.js.map +1 -1
  1221. package/dist/server/db/migrate.d.ts +25 -0
  1222. package/dist/server/db/migrate.d.ts.map +1 -1
  1223. package/dist/server/db/migrate.js +75 -13
  1224. package/dist/server/db/migrate.js.map +1 -1
  1225. package/dist/server/db/outbox/__tests__/relay.int.test.d.ts +2 -0
  1226. package/dist/server/db/outbox/__tests__/relay.int.test.d.ts.map +1 -0
  1227. package/dist/server/db/outbox/__tests__/relay.int.test.js +117 -0
  1228. package/dist/server/db/outbox/__tests__/relay.int.test.js.map +1 -0
  1229. package/dist/server/db/outbox/relay.d.ts +15 -0
  1230. package/dist/server/db/outbox/relay.d.ts.map +1 -1
  1231. package/dist/server/db/outbox/relay.js +21 -14
  1232. package/dist/server/db/outbox/relay.js.map +1 -1
  1233. package/dist/server/db/query-helpers.d.ts +3 -0
  1234. package/dist/server/db/query-helpers.d.ts.map +1 -1
  1235. package/dist/server/db/query-helpers.js +40 -1
  1236. package/dist/server/db/query-helpers.js.map +1 -1
  1237. package/dist/server/kernel/__tests__/bullmq-job-queue.int.test.d.ts +2 -0
  1238. package/dist/server/kernel/__tests__/bullmq-job-queue.int.test.d.ts.map +1 -0
  1239. package/dist/server/kernel/__tests__/bullmq-job-queue.int.test.js +240 -0
  1240. package/dist/server/kernel/__tests__/bullmq-job-queue.int.test.js.map +1 -0
  1241. package/dist/server/kernel/__tests__/cache.int.test.d.ts +2 -0
  1242. package/dist/server/kernel/__tests__/cache.int.test.d.ts.map +1 -0
  1243. package/dist/server/kernel/__tests__/cache.int.test.js +52 -0
  1244. package/dist/server/kernel/__tests__/cache.int.test.js.map +1 -0
  1245. package/dist/server/kernel/__tests__/domain-error.test.d.ts +2 -0
  1246. package/dist/server/kernel/__tests__/domain-error.test.d.ts.map +1 -0
  1247. package/dist/server/kernel/__tests__/domain-error.test.js +35 -0
  1248. package/dist/server/kernel/__tests__/domain-error.test.js.map +1 -0
  1249. package/dist/server/kernel/__tests__/error-reporter.test.d.ts +2 -0
  1250. package/dist/server/kernel/__tests__/error-reporter.test.d.ts.map +1 -0
  1251. package/dist/server/kernel/__tests__/error-reporter.test.js +52 -0
  1252. package/dist/server/kernel/__tests__/error-reporter.test.js.map +1 -0
  1253. package/dist/server/kernel/__tests__/event-bus.int.test.d.ts +2 -0
  1254. package/dist/server/kernel/__tests__/event-bus.int.test.d.ts.map +1 -0
  1255. package/dist/server/kernel/__tests__/event-bus.int.test.js +173 -0
  1256. package/dist/server/kernel/__tests__/event-bus.int.test.js.map +1 -0
  1257. package/dist/server/kernel/__tests__/logger.test.d.ts +2 -0
  1258. package/dist/server/kernel/__tests__/logger.test.d.ts.map +1 -0
  1259. package/dist/server/kernel/__tests__/logger.test.js +44 -0
  1260. package/dist/server/kernel/__tests__/logger.test.js.map +1 -0
  1261. package/dist/server/kernel/__tests__/orpc-error-map.test.d.ts +2 -0
  1262. package/dist/server/kernel/__tests__/orpc-error-map.test.d.ts.map +1 -0
  1263. package/dist/server/kernel/__tests__/orpc-error-map.test.js +54 -0
  1264. package/dist/server/kernel/__tests__/orpc-error-map.test.js.map +1 -0
  1265. package/dist/server/kernel/__tests__/platform-config-loader.test.d.ts +2 -0
  1266. package/dist/server/kernel/__tests__/platform-config-loader.test.d.ts.map +1 -0
  1267. package/dist/server/kernel/__tests__/platform-config-loader.test.js +112 -0
  1268. package/dist/server/kernel/__tests__/platform-config-loader.test.js.map +1 -0
  1269. package/dist/server/kernel/__tests__/rate-limiter.int.test.d.ts +2 -0
  1270. package/dist/server/kernel/__tests__/rate-limiter.int.test.d.ts.map +1 -0
  1271. package/dist/server/kernel/__tests__/rate-limiter.int.test.js +41 -0
  1272. package/dist/server/kernel/__tests__/rate-limiter.int.test.js.map +1 -0
  1273. package/dist/server/kernel/__tests__/realtime-transport.test.js +24 -4
  1274. package/dist/server/kernel/__tests__/realtime-transport.test.js.map +1 -1
  1275. package/dist/server/kernel/__tests__/redis-cache.int.test.d.ts +2 -0
  1276. package/dist/server/kernel/__tests__/redis-cache.int.test.d.ts.map +1 -0
  1277. package/dist/server/kernel/__tests__/redis-cache.int.test.js +49 -0
  1278. package/dist/server/kernel/__tests__/redis-cache.int.test.js.map +1 -0
  1279. package/dist/server/kernel/__tests__/redis-rate-limiter.int.test.d.ts +2 -0
  1280. package/dist/server/kernel/__tests__/redis-rate-limiter.int.test.d.ts.map +1 -0
  1281. package/dist/server/kernel/__tests__/redis-rate-limiter.int.test.js +61 -0
  1282. package/dist/server/kernel/__tests__/redis-rate-limiter.int.test.js.map +1 -0
  1283. package/dist/server/kernel/__tests__/redis-streams-broker.int.test.d.ts +2 -0
  1284. package/dist/server/kernel/__tests__/redis-streams-broker.int.test.d.ts.map +1 -0
  1285. package/dist/server/kernel/__tests__/redis-streams-broker.int.test.js +172 -0
  1286. package/dist/server/kernel/__tests__/redis-streams-broker.int.test.js.map +1 -0
  1287. package/dist/server/kernel/__tests__/request-context.test.d.ts +2 -0
  1288. package/dist/server/kernel/__tests__/request-context.test.d.ts.map +1 -0
  1289. package/dist/server/kernel/__tests__/request-context.test.js +64 -0
  1290. package/dist/server/kernel/__tests__/request-context.test.js.map +1 -0
  1291. package/dist/server/kernel/__tests__/router-utils.test.d.ts +2 -0
  1292. package/dist/server/kernel/__tests__/router-utils.test.d.ts.map +1 -0
  1293. package/dist/server/kernel/__tests__/router-utils.test.js +87 -0
  1294. package/dist/server/kernel/__tests__/router-utils.test.js.map +1 -0
  1295. package/dist/server/kernel/bullmq-job-queue.d.ts +12 -0
  1296. package/dist/server/kernel/bullmq-job-queue.d.ts.map +1 -1
  1297. package/dist/server/kernel/bullmq-job-queue.js +45 -7
  1298. package/dist/server/kernel/bullmq-job-queue.js.map +1 -1
  1299. package/dist/server/kernel/cache.d.ts +0 -12
  1300. package/dist/server/kernel/cache.d.ts.map +1 -1
  1301. package/dist/server/kernel/cache.js +6 -54
  1302. package/dist/server/kernel/cache.js.map +1 -1
  1303. package/dist/server/kernel/container.d.ts +17 -6
  1304. package/dist/server/kernel/container.d.ts.map +1 -1
  1305. package/dist/server/kernel/container.js +15 -1
  1306. package/dist/server/kernel/container.js.map +1 -1
  1307. package/dist/server/kernel/error-reporter.d.ts +5 -0
  1308. package/dist/server/kernel/error-reporter.d.ts.map +1 -0
  1309. package/dist/server/kernel/error-reporter.js +20 -0
  1310. package/dist/server/kernel/error-reporter.js.map +1 -0
  1311. package/dist/server/kernel/event-bus.d.ts +2 -9
  1312. package/dist/server/kernel/event-bus.d.ts.map +1 -1
  1313. package/dist/server/kernel/event-bus.js +11 -26
  1314. package/dist/server/kernel/event-bus.js.map +1 -1
  1315. package/dist/server/kernel/event-stream.d.ts.map +1 -1
  1316. package/dist/server/kernel/event-stream.js +2 -1
  1317. package/dist/server/kernel/event-stream.js.map +1 -1
  1318. package/dist/server/kernel/index.d.ts +9 -7
  1319. package/dist/server/kernel/index.d.ts.map +1 -1
  1320. package/dist/server/kernel/index.js +7 -6
  1321. package/dist/server/kernel/index.js.map +1 -1
  1322. package/dist/server/kernel/logger.d.ts +7 -0
  1323. package/dist/server/kernel/logger.d.ts.map +1 -1
  1324. package/dist/server/kernel/logger.js +36 -2
  1325. package/dist/server/kernel/logger.js.map +1 -1
  1326. package/dist/server/kernel/orpc-error-map.d.ts.map +1 -1
  1327. package/dist/server/kernel/orpc-error-map.js +4 -1
  1328. package/dist/server/kernel/orpc-error-map.js.map +1 -1
  1329. package/dist/server/kernel/ownership.d.ts.map +1 -1
  1330. package/dist/server/kernel/ownership.js +2 -1
  1331. package/dist/server/kernel/ownership.js.map +1 -1
  1332. package/dist/server/kernel/platform-config-loader.d.ts.map +1 -1
  1333. package/dist/server/kernel/platform-config-loader.js +34 -16
  1334. package/dist/server/kernel/platform-config-loader.js.map +1 -1
  1335. package/dist/server/kernel/rate-limiter.d.ts +2 -10
  1336. package/dist/server/kernel/rate-limiter.d.ts.map +1 -1
  1337. package/dist/server/kernel/rate-limiter.js +4 -35
  1338. package/dist/server/kernel/rate-limiter.js.map +1 -1
  1339. package/dist/server/kernel/realtime-authorizer.d.ts +2 -4
  1340. package/dist/server/kernel/realtime-authorizer.d.ts.map +1 -1
  1341. package/dist/server/kernel/realtime-authorizer.js +3 -2
  1342. package/dist/server/kernel/realtime-authorizer.js.map +1 -1
  1343. package/dist/server/kernel/realtime-transport.d.ts +7 -2
  1344. package/dist/server/kernel/realtime-transport.d.ts.map +1 -1
  1345. package/dist/server/kernel/realtime-transport.js +63 -22
  1346. package/dist/server/kernel/realtime-transport.js.map +1 -1
  1347. package/dist/server/kernel/redis-cache.d.ts +3 -0
  1348. package/dist/server/kernel/redis-cache.d.ts.map +1 -1
  1349. package/dist/server/kernel/redis-cache.js +20 -5
  1350. package/dist/server/kernel/redis-cache.js.map +1 -1
  1351. package/dist/server/kernel/redis-client.d.ts.map +1 -1
  1352. package/dist/server/kernel/redis-client.js +5 -1
  1353. package/dist/server/kernel/redis-client.js.map +1 -1
  1354. package/dist/server/kernel/redis-rate-limiter.d.ts +12 -0
  1355. package/dist/server/kernel/redis-rate-limiter.d.ts.map +1 -1
  1356. package/dist/server/kernel/redis-rate-limiter.js +24 -1
  1357. package/dist/server/kernel/redis-rate-limiter.js.map +1 -1
  1358. package/dist/server/kernel/redis-streams-broker.d.ts +65 -0
  1359. package/dist/server/kernel/redis-streams-broker.d.ts.map +1 -0
  1360. package/dist/server/kernel/redis-streams-broker.js +208 -0
  1361. package/dist/server/kernel/redis-streams-broker.js.map +1 -0
  1362. package/dist/server/kernel/request-context.d.ts +4 -0
  1363. package/dist/server/kernel/request-context.d.ts.map +1 -1
  1364. package/dist/server/kernel/request-context.js +4 -0
  1365. package/dist/server/kernel/request-context.js.map +1 -1
  1366. package/dist/server/kernel/router-utils.d.ts +5 -0
  1367. package/dist/server/kernel/router-utils.d.ts.map +1 -1
  1368. package/dist/server/kernel/router-utils.js +28 -2
  1369. package/dist/server/kernel/router-utils.js.map +1 -1
  1370. package/dist/server/kernel/serialize-row.d.ts.map +1 -1
  1371. package/dist/server/kernel/serialize-row.js +4 -2
  1372. package/dist/server/kernel/serialize-row.js.map +1 -1
  1373. package/dist/server/plugin-host/__tests__/core-plugins.test.d.ts +2 -0
  1374. package/dist/server/plugin-host/__tests__/core-plugins.test.d.ts.map +1 -0
  1375. package/dist/server/plugin-host/__tests__/core-plugins.test.js +27 -0
  1376. package/dist/server/plugin-host/__tests__/core-plugins.test.js.map +1 -0
  1377. package/dist/server/plugin-host/__tests__/load-plugins.test.d.ts +2 -0
  1378. package/dist/server/plugin-host/__tests__/load-plugins.test.d.ts.map +1 -0
  1379. package/dist/server/plugin-host/__tests__/load-plugins.test.js +31 -0
  1380. package/dist/server/plugin-host/__tests__/load-plugins.test.js.map +1 -0
  1381. package/dist/server/plugin-host/__tests__/module-registry.test.js.map +1 -1
  1382. package/dist/server/plugin-host/__tests__/required-ports.test.js +1 -0
  1383. package/dist/server/plugin-host/__tests__/required-ports.test.js.map +1 -1
  1384. package/dist/server/plugin-host/__tests__/typed-plugin.test.d.ts +2 -0
  1385. package/dist/server/plugin-host/__tests__/typed-plugin.test.d.ts.map +1 -0
  1386. package/dist/server/plugin-host/__tests__/typed-plugin.test.js +82 -0
  1387. package/dist/server/plugin-host/__tests__/typed-plugin.test.js.map +1 -0
  1388. package/dist/server/plugin-host/core-plugins.d.ts +16 -0
  1389. package/dist/server/plugin-host/core-plugins.d.ts.map +1 -0
  1390. package/dist/server/plugin-host/core-plugins.js +40 -0
  1391. package/dist/server/plugin-host/core-plugins.js.map +1 -0
  1392. package/dist/server/plugin-host/define-plugin.d.ts +24 -24
  1393. package/dist/server/plugin-host/define-plugin.d.ts.map +1 -1
  1394. package/dist/server/plugin-host/define-plugin.js +1 -3
  1395. package/dist/server/plugin-host/define-plugin.js.map +1 -1
  1396. package/dist/server/plugin-host/index.d.ts +3 -3
  1397. package/dist/server/plugin-host/index.d.ts.map +1 -1
  1398. package/dist/server/plugin-host/index.js +2 -2
  1399. package/dist/server/plugin-host/index.js.map +1 -1
  1400. package/dist/server/plugin-host/load-extensions.d.ts +2 -2
  1401. package/dist/server/plugin-host/load-extensions.js +4 -3
  1402. package/dist/server/plugin-host/load-extensions.js.map +1 -1
  1403. package/dist/server/plugin-host/load-plugins.d.ts +7 -3
  1404. package/dist/server/plugin-host/load-plugins.d.ts.map +1 -1
  1405. package/dist/server/plugin-host/load-plugins.js +14 -4
  1406. package/dist/server/plugin-host/load-plugins.js.map +1 -1
  1407. package/dist/server/plugin-host/module-registry.d.ts +9 -14
  1408. package/dist/server/plugin-host/module-registry.d.ts.map +1 -1
  1409. package/dist/server/plugin-host/module-registry.js +2 -9
  1410. package/dist/server/plugin-host/module-registry.js.map +1 -1
  1411. package/dist/server/plugin-host/service-manifest.d.ts.map +1 -1
  1412. package/dist/server/plugin-host/service-manifest.js +4 -2
  1413. package/dist/server/plugin-host/service-manifest.js.map +1 -1
  1414. package/dist/server/runtime/__tests__/create-app.test.d.ts +2 -0
  1415. package/dist/server/runtime/__tests__/create-app.test.d.ts.map +1 -0
  1416. package/dist/server/runtime/__tests__/create-app.test.js +73 -0
  1417. package/dist/server/runtime/__tests__/create-app.test.js.map +1 -0
  1418. package/dist/server/runtime/assert-durable-seams.d.ts +19 -0
  1419. package/dist/server/runtime/assert-durable-seams.d.ts.map +1 -0
  1420. package/dist/server/runtime/assert-durable-seams.js +32 -0
  1421. package/dist/server/runtime/assert-durable-seams.js.map +1 -0
  1422. package/dist/server/runtime/core-token-catalog.d.ts +119 -0
  1423. package/dist/server/runtime/core-token-catalog.d.ts.map +1 -0
  1424. package/dist/server/runtime/core-token-catalog.js +62 -0
  1425. package/dist/server/runtime/core-token-catalog.js.map +1 -0
  1426. package/dist/server/runtime/create-app.d.ts +20 -14
  1427. package/dist/server/runtime/create-app.d.ts.map +1 -1
  1428. package/dist/server/runtime/create-app.js +128 -65
  1429. package/dist/server/runtime/create-app.js.map +1 -1
  1430. package/dist/server/runtime/index.d.ts +2 -3
  1431. package/dist/server/runtime/index.d.ts.map +1 -1
  1432. package/dist/server/runtime/index.js +0 -2
  1433. package/dist/server/runtime/index.js.map +1 -1
  1434. package/dist/testing/index.d.ts +5 -0
  1435. package/dist/testing/index.d.ts.map +1 -0
  1436. package/dist/testing/index.js +5 -0
  1437. package/dist/testing/index.js.map +1 -0
  1438. package/dist/testing/mock.d.ts +33 -15
  1439. package/dist/testing/mock.d.ts.map +1 -1
  1440. package/dist/testing/mock.js +86 -39
  1441. package/dist/testing/mock.js.map +1 -1
  1442. package/dist/testing/real-infra.d.ts +47 -0
  1443. package/dist/testing/real-infra.d.ts.map +1 -0
  1444. package/dist/testing/real-infra.js +122 -0
  1445. package/dist/testing/real-infra.js.map +1 -0
  1446. package/dist/testing/realtime-transport-conformance.d.ts +35 -0
  1447. package/dist/testing/realtime-transport-conformance.d.ts.map +1 -0
  1448. package/dist/testing/realtime-transport-conformance.js +81 -0
  1449. package/dist/testing/realtime-transport-conformance.js.map +1 -0
  1450. package/dist/testing/seed-player.d.ts +88 -0
  1451. package/dist/testing/seed-player.d.ts.map +1 -0
  1452. package/dist/testing/seed-player.js +43 -0
  1453. package/dist/testing/seed-player.js.map +1 -0
  1454. package/dist/wallet/__tests__/admin-reporting.int.test.d.ts +2 -0
  1455. package/dist/wallet/__tests__/admin-reporting.int.test.d.ts.map +1 -0
  1456. package/dist/wallet/__tests__/admin-reporting.int.test.js +236 -0
  1457. package/dist/wallet/__tests__/admin-reporting.int.test.js.map +1 -0
  1458. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.d.ts +2 -0
  1459. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.d.ts.map +1 -0
  1460. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.js +25 -0
  1461. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.js.map +1 -0
  1462. package/dist/wallet/__tests__/rail-for.test.d.ts +2 -0
  1463. package/dist/wallet/__tests__/rail-for.test.d.ts.map +1 -0
  1464. package/dist/wallet/__tests__/rail-for.test.js +29 -0
  1465. package/dist/wallet/__tests__/rail-for.test.js.map +1 -0
  1466. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.d.ts +2 -0
  1467. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.d.ts.map +1 -0
  1468. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.js +124 -0
  1469. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.js.map +1 -0
  1470. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.d.ts +2 -0
  1471. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.d.ts.map +1 -0
  1472. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.js +192 -0
  1473. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.js.map +1 -0
  1474. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.d.ts +2 -0
  1475. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.d.ts.map +1 -0
  1476. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.js +772 -0
  1477. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.js.map +1 -0
  1478. package/dist/wallet/__tests__/wallet-commands.service.int.test.d.ts +2 -0
  1479. package/dist/wallet/__tests__/wallet-commands.service.int.test.d.ts.map +1 -0
  1480. package/dist/wallet/__tests__/wallet-commands.service.int.test.js +193 -0
  1481. package/dist/wallet/__tests__/wallet-commands.service.int.test.js.map +1 -0
  1482. package/dist/wallet/__tests__/wallet-currency-code.test.d.ts +2 -0
  1483. package/dist/wallet/__tests__/wallet-currency-code.test.d.ts.map +1 -0
  1484. package/dist/wallet/__tests__/wallet-currency-code.test.js +14 -0
  1485. package/dist/wallet/__tests__/wallet-currency-code.test.js.map +1 -0
  1486. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.d.ts +2 -0
  1487. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.d.ts.map +1 -0
  1488. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.js +103 -0
  1489. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.js.map +1 -0
  1490. package/dist/wallet/__tests__/wallet-webhook.router.int.test.d.ts +2 -0
  1491. package/dist/wallet/__tests__/wallet-webhook.router.int.test.d.ts.map +1 -0
  1492. package/dist/wallet/__tests__/wallet-webhook.router.int.test.js +166 -0
  1493. package/dist/wallet/__tests__/wallet-webhook.router.int.test.js.map +1 -0
  1494. package/dist/wallet/__tests__/wallet.rate-limit.int.test.d.ts +2 -0
  1495. package/dist/wallet/__tests__/wallet.rate-limit.int.test.d.ts.map +1 -0
  1496. package/dist/wallet/__tests__/wallet.rate-limit.int.test.js +92 -0
  1497. package/dist/wallet/__tests__/wallet.rate-limit.int.test.js.map +1 -0
  1498. package/dist/wallet/__tests__/wallet.router.int.test.d.ts +2 -0
  1499. package/dist/wallet/__tests__/wallet.router.int.test.d.ts.map +1 -0
  1500. package/dist/wallet/__tests__/wallet.router.int.test.js +73 -0
  1501. package/dist/wallet/__tests__/wallet.router.int.test.js.map +1 -0
  1502. package/dist/wallet/__tests__/wallet.service.int.test.d.ts +2 -0
  1503. package/dist/wallet/__tests__/wallet.service.int.test.d.ts.map +1 -0
  1504. package/dist/wallet/__tests__/wallet.service.int.test.js +923 -0
  1505. package/dist/wallet/__tests__/wallet.service.int.test.js.map +1 -0
  1506. package/dist/wallet/adapters/hmac-payment-webhook-verifier.d.ts +7 -0
  1507. package/dist/wallet/adapters/hmac-payment-webhook-verifier.d.ts.map +1 -0
  1508. package/dist/wallet/adapters/hmac-payment-webhook-verifier.js +30 -0
  1509. package/dist/wallet/adapters/hmac-payment-webhook-verifier.js.map +1 -0
  1510. package/dist/wallet/adapters/mock/mock-payment-adapter.d.ts +2 -2
  1511. package/dist/wallet/adapters/wallet-reader.service.d.ts +2 -1
  1512. package/dist/wallet/adapters/wallet-reader.service.d.ts.map +1 -1
  1513. package/dist/wallet/adapters/wallet-reader.service.js +19 -2
  1514. package/dist/wallet/adapters/wallet-reader.service.js.map +1 -1
  1515. package/dist/wallet/admin-reporting.d.ts +7 -7
  1516. package/dist/wallet/admin-reporting.d.ts.map +1 -1
  1517. package/dist/wallet/admin-reporting.js +19 -11
  1518. package/dist/wallet/admin-reporting.js.map +1 -1
  1519. package/dist/wallet/contract/index.d.ts +305 -26
  1520. package/dist/wallet/contract/index.d.ts.map +1 -1
  1521. package/dist/wallet/contract/index.js +119 -18
  1522. package/dist/wallet/contract/index.js.map +1 -1
  1523. package/dist/wallet/drizzle/migrations/0001_redundant_micromacro.sql +4 -0
  1524. package/dist/wallet/drizzle/migrations/0002_aromatic_archangel.sql +20 -0
  1525. package/dist/wallet/drizzle/migrations/0003_certain_ogun.sql +2 -0
  1526. package/dist/wallet/drizzle/migrations/0004_reflective_shriek.sql +2 -0
  1527. package/dist/wallet/drizzle/migrations/0005_gigantic_dust.sql +10 -0
  1528. package/dist/wallet/drizzle/migrations/0006_lush_morg.sql +1 -0
  1529. package/dist/wallet/drizzle/migrations/0007_bouncy_swordsman.sql +17 -0
  1530. package/dist/wallet/drizzle/migrations/0008_gorgeous_colonel_america.sql +1 -0
  1531. package/dist/wallet/drizzle/migrations/0009_smooth_sue_storm.sql +17 -0
  1532. package/dist/wallet/drizzle/migrations/meta/0001_snapshot.json +397 -0
  1533. package/dist/wallet/drizzle/migrations/meta/0002_snapshot.json +513 -0
  1534. package/dist/wallet/drizzle/migrations/meta/0003_snapshot.json +567 -0
  1535. package/dist/wallet/drizzle/migrations/meta/0004_snapshot.json +631 -0
  1536. package/dist/wallet/drizzle/migrations/meta/0006_snapshot.json +638 -0
  1537. package/dist/wallet/drizzle/migrations/meta/0007_snapshot.json +723 -0
  1538. package/dist/wallet/drizzle/migrations/meta/0008_snapshot.json +716 -0
  1539. package/dist/wallet/drizzle/migrations/meta/0009_snapshot.json +895 -0
  1540. package/dist/wallet/drizzle/migrations/meta/_journal.json +63 -0
  1541. package/dist/wallet/index.d.ts.map +1 -1
  1542. package/dist/wallet/index.js +0 -2
  1543. package/dist/wallet/index.js.map +1 -1
  1544. package/dist/wallet/migrate.d.ts +0 -1
  1545. package/dist/wallet/migrate.d.ts.map +1 -1
  1546. package/dist/wallet/migrate.js +0 -4
  1547. package/dist/wallet/migrate.js.map +1 -1
  1548. package/dist/wallet/plugin.d.ts +120 -1
  1549. package/dist/wallet/plugin.d.ts.map +1 -1
  1550. package/dist/wallet/plugin.js +23 -9
  1551. package/dist/wallet/plugin.js.map +1 -1
  1552. package/dist/wallet/router/index.d.ts +165 -16
  1553. package/dist/wallet/router/index.d.ts.map +1 -1
  1554. package/dist/wallet/router/index.js +75 -21
  1555. package/dist/wallet/router/index.js.map +1 -1
  1556. package/dist/wallet/schema/index.d.ts +542 -9
  1557. package/dist/wallet/schema/index.d.ts.map +1 -1
  1558. package/dist/wallet/schema/index.js +76 -5
  1559. package/dist/wallet/schema/index.js.map +1 -1
  1560. package/dist/wallet/seed/index.d.ts +2 -0
  1561. package/dist/wallet/seed/index.d.ts.map +1 -0
  1562. package/dist/wallet/seed/index.js +2 -0
  1563. package/dist/wallet/seed/index.js.map +1 -0
  1564. package/dist/wallet/seed/seed-auto-withdrawal-config.d.ts +11 -0
  1565. package/dist/wallet/seed/seed-auto-withdrawal-config.d.ts.map +1 -0
  1566. package/dist/wallet/seed/seed-auto-withdrawal-config.js +16 -0
  1567. package/dist/wallet/seed/seed-auto-withdrawal-config.js.map +1 -0
  1568. package/dist/wallet/service/wallet-commands.service.d.ts +7 -2
  1569. package/dist/wallet/service/wallet-commands.service.d.ts.map +1 -1
  1570. package/dist/wallet/service/wallet-commands.service.js +45 -32
  1571. package/dist/wallet/service/wallet-commands.service.js.map +1 -1
  1572. package/dist/wallet/service/wallet.service.d.ts +363 -28
  1573. package/dist/wallet/service/wallet.service.d.ts.map +1 -1
  1574. package/dist/wallet/service/wallet.service.js +591 -140
  1575. package/dist/wallet/service/wallet.service.js.map +1 -1
  1576. package/generators/src/config.ts +548 -0
  1577. package/generators/src/templates/adapter.hbs +19 -0
  1578. package/generators/src/templates/contract.hbs +19 -0
  1579. package/generators/src/templates/job-worker.hbs +34 -0
  1580. package/generators/src/templates/module/drizzle.config.hbs +22 -0
  1581. package/generators/src/templates/module/index.hbs +5 -0
  1582. package/generators/src/templates/module/migrate.hbs +17 -0
  1583. package/generators/src/templates/module/plugin.hbs +19 -0
  1584. package/generators/src/templates/module/router.hbs +19 -0
  1585. package/generators/src/templates/module/schema.hbs +14 -0
  1586. package/generators/src/templates/module/service.hbs +26 -0
  1587. package/generators/src/templates/plugin.hbs +20 -0
  1588. package/oxlint/oxlintrc.json +19 -3
  1589. package/package.json +128 -16
  1590. package/dist/admin-console/__tests__/backoffice.service.test.d.ts +0 -2
  1591. package/dist/admin-console/__tests__/backoffice.service.test.d.ts.map +0 -1
  1592. package/dist/admin-console/__tests__/backoffice.service.test.js +0 -156
  1593. package/dist/admin-console/__tests__/backoffice.service.test.js.map +0 -1
  1594. package/dist/audit/__tests__/audit.service.test.d.ts +0 -2
  1595. package/dist/audit/__tests__/audit.service.test.d.ts.map +0 -1
  1596. package/dist/audit/__tests__/audit.service.test.js +0 -415
  1597. package/dist/audit/__tests__/audit.service.test.js.map +0 -1
  1598. package/dist/casino/gaming/__tests__/gaming.service.test.d.ts +0 -2
  1599. package/dist/casino/gaming/__tests__/gaming.service.test.d.ts.map +0 -1
  1600. package/dist/casino/gaming/__tests__/gaming.service.test.js +0 -55
  1601. package/dist/casino/gaming/__tests__/gaming.service.test.js.map +0 -1
  1602. package/dist/casino/lobby/__tests__/lobby.cache.test.d.ts +0 -2
  1603. package/dist/casino/lobby/__tests__/lobby.cache.test.d.ts.map +0 -1
  1604. package/dist/casino/lobby/__tests__/lobby.cache.test.js +0 -47
  1605. package/dist/casino/lobby/__tests__/lobby.cache.test.js.map +0 -1
  1606. package/dist/casino/lobby/__tests__/lobby.service.test.d.ts +0 -2
  1607. package/dist/casino/lobby/__tests__/lobby.service.test.d.ts.map +0 -1
  1608. package/dist/casino/lobby/__tests__/lobby.service.test.js +0 -11
  1609. package/dist/casino/lobby/__tests__/lobby.service.test.js.map +0 -1
  1610. package/dist/cms/__tests__/cms.cache.test.d.ts +0 -2
  1611. package/dist/cms/__tests__/cms.cache.test.d.ts.map +0 -1
  1612. package/dist/cms/__tests__/cms.cache.test.js +0 -87
  1613. package/dist/cms/__tests__/cms.cache.test.js.map +0 -1
  1614. package/dist/cms/__tests__/cms.service.test.d.ts +0 -2
  1615. package/dist/cms/__tests__/cms.service.test.d.ts.map +0 -1
  1616. package/dist/cms/__tests__/cms.service.test.js +0 -17
  1617. package/dist/cms/__tests__/cms.service.test.js.map +0 -1
  1618. package/dist/compliance/__tests__/compliance.service.test.d.ts +0 -2
  1619. package/dist/compliance/__tests__/compliance.service.test.d.ts.map +0 -1
  1620. package/dist/compliance/__tests__/compliance.service.test.js +0 -95
  1621. package/dist/compliance/__tests__/compliance.service.test.js.map +0 -1
  1622. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.d.ts +0 -2
  1623. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.d.ts.map +0 -1
  1624. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.js +0 -21
  1625. package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.js.map +0 -1
  1626. package/dist/compliance/__tests__/kyc.service.test.d.ts +0 -2
  1627. package/dist/compliance/__tests__/kyc.service.test.d.ts.map +0 -1
  1628. package/dist/compliance/__tests__/kyc.service.test.js +0 -152
  1629. package/dist/compliance/__tests__/kyc.service.test.js.map +0 -1
  1630. package/dist/compliance/__tests__/rg-monitoring.service.test.d.ts +0 -2
  1631. package/dist/compliance/__tests__/rg-monitoring.service.test.d.ts.map +0 -1
  1632. package/dist/compliance/__tests__/rg-monitoring.service.test.js +0 -99
  1633. package/dist/compliance/__tests__/rg-monitoring.service.test.js.map +0 -1
  1634. package/dist/compliance/__tests__/rg.router.test.d.ts +0 -2
  1635. package/dist/compliance/__tests__/rg.router.test.d.ts.map +0 -1
  1636. package/dist/compliance/__tests__/rg.router.test.js +0 -65
  1637. package/dist/compliance/__tests__/rg.router.test.js.map +0 -1
  1638. package/dist/compliance/__tests__/rg.service.test.d.ts +0 -2
  1639. package/dist/compliance/__tests__/rg.service.test.d.ts.map +0 -1
  1640. package/dist/compliance/__tests__/rg.service.test.js +0 -206
  1641. package/dist/compliance/__tests__/rg.service.test.js.map +0 -1
  1642. package/dist/contracts/schemas/__tests__/identity-schemas.test.d.ts +0 -2
  1643. package/dist/contracts/schemas/__tests__/identity-schemas.test.d.ts.map +0 -1
  1644. package/dist/contracts/schemas/__tests__/identity-schemas.test.js +0 -38
  1645. package/dist/contracts/schemas/__tests__/identity-schemas.test.js.map +0 -1
  1646. package/dist/engagement/chat/__tests__/chat.service.test.d.ts +0 -2
  1647. package/dist/engagement/chat/__tests__/chat.service.test.d.ts.map +0 -1
  1648. package/dist/engagement/chat/__tests__/chat.service.test.js +0 -170
  1649. package/dist/engagement/chat/__tests__/chat.service.test.js.map +0 -1
  1650. package/dist/engagement/chat/react/use-chat-stream.d.ts +0 -27
  1651. package/dist/engagement/chat/react/use-chat-stream.d.ts.map +0 -1
  1652. package/dist/engagement/chat/react/use-chat-stream.js +0 -52
  1653. package/dist/engagement/chat/react/use-chat-stream.js.map +0 -1
  1654. package/dist/engagement/notifications/__tests__/notifications.service.test.d.ts +0 -2
  1655. package/dist/engagement/notifications/__tests__/notifications.service.test.d.ts.map +0 -1
  1656. package/dist/engagement/notifications/__tests__/notifications.service.test.js +0 -83
  1657. package/dist/engagement/notifications/__tests__/notifications.service.test.js.map +0 -1
  1658. package/dist/engagement/react.d.ts +0 -2
  1659. package/dist/engagement/react.d.ts.map +0 -1
  1660. package/dist/engagement/react.js +0 -3
  1661. package/dist/engagement/react.js.map +0 -1
  1662. package/dist/iam/__tests__/iam.service.test.d.ts +0 -2
  1663. package/dist/iam/__tests__/iam.service.test.d.ts.map +0 -1
  1664. package/dist/iam/__tests__/iam.service.test.js +0 -739
  1665. package/dist/iam/__tests__/iam.service.test.js.map +0 -1
  1666. package/dist/pam/identity/__tests__/admin-user-directory.test.d.ts +0 -2
  1667. package/dist/pam/identity/__tests__/admin-user-directory.test.d.ts.map +0 -1
  1668. package/dist/pam/identity/__tests__/admin-user-directory.test.js +0 -93
  1669. package/dist/pam/identity/__tests__/admin-user-directory.test.js.map +0 -1
  1670. package/dist/pam/identity/__tests__/identity.rate-limit.test.d.ts +0 -2
  1671. package/dist/pam/identity/__tests__/identity.rate-limit.test.d.ts.map +0 -1
  1672. package/dist/pam/identity/__tests__/identity.rate-limit.test.js +0 -127
  1673. package/dist/pam/identity/__tests__/identity.rate-limit.test.js.map +0 -1
  1674. package/dist/pam/identity/__tests__/identity.service.test.d.ts +0 -2
  1675. package/dist/pam/identity/__tests__/identity.service.test.d.ts.map +0 -1
  1676. package/dist/pam/identity/__tests__/identity.service.test.js +0 -292
  1677. package/dist/pam/identity/__tests__/identity.service.test.js.map +0 -1
  1678. package/dist/pam/identity/__tests__/login-enforcement.service.test.d.ts +0 -2
  1679. package/dist/pam/identity/__tests__/login-enforcement.service.test.d.ts.map +0 -1
  1680. package/dist/pam/identity/__tests__/login-enforcement.service.test.js +0 -41
  1681. package/dist/pam/identity/__tests__/login-enforcement.service.test.js.map +0 -1
  1682. package/dist/pam/player-management/__tests__/kyc-status-writer.test.d.ts +0 -2
  1683. package/dist/pam/player-management/__tests__/kyc-status-writer.test.d.ts.map +0 -1
  1684. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js +0 -37
  1685. package/dist/pam/player-management/__tests__/kyc-status-writer.test.js.map +0 -1
  1686. package/dist/pam/player-management/__tests__/player.router.test.d.ts +0 -2
  1687. package/dist/pam/player-management/__tests__/player.router.test.d.ts.map +0 -1
  1688. package/dist/pam/player-management/__tests__/player.router.test.js +0 -57
  1689. package/dist/pam/player-management/__tests__/player.router.test.js.map +0 -1
  1690. package/dist/pam/player-management/__tests__/player.service.test.d.ts +0 -2
  1691. package/dist/pam/player-management/__tests__/player.service.test.d.ts.map +0 -1
  1692. package/dist/pam/player-management/__tests__/player.service.test.js +0 -143
  1693. package/dist/pam/player-management/__tests__/player.service.test.js.map +0 -1
  1694. package/dist/pam/profile/__tests__/profile.service.test.d.ts +0 -2
  1695. package/dist/pam/profile/__tests__/profile.service.test.d.ts.map +0 -1
  1696. package/dist/pam/profile/__tests__/profile.service.test.js +0 -47
  1697. package/dist/pam/profile/__tests__/profile.service.test.js.map +0 -1
  1698. package/dist/pam/tag/__tests__/get-active-tag-keys.test.d.ts +0 -2
  1699. package/dist/pam/tag/__tests__/get-active-tag-keys.test.d.ts.map +0 -1
  1700. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js +0 -37
  1701. package/dist/pam/tag/__tests__/get-active-tag-keys.test.js.map +0 -1
  1702. package/dist/pam/tag/__tests__/tag-evaluation.service.test.d.ts +0 -2
  1703. package/dist/pam/tag/__tests__/tag-evaluation.service.test.d.ts.map +0 -1
  1704. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js +0 -268
  1705. package/dist/pam/tag/__tests__/tag-evaluation.service.test.js.map +0 -1
  1706. package/dist/pam/tag/__tests__/tag-rule.service.test.d.ts +0 -2
  1707. package/dist/pam/tag/__tests__/tag-rule.service.test.d.ts.map +0 -1
  1708. package/dist/pam/tag/__tests__/tag-rule.service.test.js +0 -149
  1709. package/dist/pam/tag/__tests__/tag-rule.service.test.js.map +0 -1
  1710. package/dist/pam/tag/__tests__/tag.service.test.d.ts +0 -2
  1711. package/dist/pam/tag/__tests__/tag.service.test.d.ts.map +0 -1
  1712. package/dist/pam/tag/__tests__/tag.service.test.js +0 -262
  1713. package/dist/pam/tag/__tests__/tag.service.test.js.map +0 -1
  1714. package/dist/server/auth/__tests__/admin-guard.test.d.ts +0 -2
  1715. package/dist/server/auth/__tests__/admin-guard.test.d.ts.map +0 -1
  1716. package/dist/server/auth/__tests__/admin-guard.test.js +0 -133
  1717. package/dist/server/auth/__tests__/admin-guard.test.js.map +0 -1
  1718. package/dist/server/auth/__tests__/session-resolver.test.d.ts +0 -2
  1719. package/dist/server/auth/__tests__/session-resolver.test.d.ts.map +0 -1
  1720. package/dist/server/auth/__tests__/session-resolver.test.js +0 -27
  1721. package/dist/server/auth/__tests__/session-resolver.test.js.map +0 -1
  1722. package/dist/server/db/outbox/__tests__/relay.test.d.ts +0 -2
  1723. package/dist/server/db/outbox/__tests__/relay.test.d.ts.map +0 -1
  1724. package/dist/server/db/outbox/__tests__/relay.test.js +0 -122
  1725. package/dist/server/db/outbox/__tests__/relay.test.js.map +0 -1
  1726. package/dist/server/kernel/__tests__/bullmq-job-queue.test.d.ts +0 -2
  1727. package/dist/server/kernel/__tests__/bullmq-job-queue.test.d.ts.map +0 -1
  1728. package/dist/server/kernel/__tests__/bullmq-job-queue.test.js +0 -190
  1729. package/dist/server/kernel/__tests__/bullmq-job-queue.test.js.map +0 -1
  1730. package/dist/server/kernel/__tests__/cache.test.d.ts +0 -2
  1731. package/dist/server/kernel/__tests__/cache.test.d.ts.map +0 -1
  1732. package/dist/server/kernel/__tests__/cache.test.js +0 -84
  1733. package/dist/server/kernel/__tests__/cache.test.js.map +0 -1
  1734. package/dist/server/kernel/__tests__/event-bus.test.d.ts +0 -2
  1735. package/dist/server/kernel/__tests__/event-bus.test.d.ts.map +0 -1
  1736. package/dist/server/kernel/__tests__/event-bus.test.js +0 -113
  1737. package/dist/server/kernel/__tests__/event-bus.test.js.map +0 -1
  1738. package/dist/server/kernel/__tests__/job-queue.test.d.ts +0 -2
  1739. package/dist/server/kernel/__tests__/job-queue.test.d.ts.map +0 -1
  1740. package/dist/server/kernel/__tests__/job-queue.test.js +0 -132
  1741. package/dist/server/kernel/__tests__/job-queue.test.js.map +0 -1
  1742. package/dist/server/kernel/__tests__/rate-limiter.test.d.ts +0 -2
  1743. package/dist/server/kernel/__tests__/rate-limiter.test.d.ts.map +0 -1
  1744. package/dist/server/kernel/__tests__/rate-limiter.test.js +0 -69
  1745. package/dist/server/kernel/__tests__/rate-limiter.test.js.map +0 -1
  1746. package/dist/server/kernel/__tests__/realtime-authorizer.test.d.ts +0 -2
  1747. package/dist/server/kernel/__tests__/realtime-authorizer.test.d.ts.map +0 -1
  1748. package/dist/server/kernel/__tests__/realtime-authorizer.test.js +0 -19
  1749. package/dist/server/kernel/__tests__/realtime-authorizer.test.js.map +0 -1
  1750. package/dist/server/kernel/__tests__/redis-cache.test.d.ts +0 -2
  1751. package/dist/server/kernel/__tests__/redis-cache.test.d.ts.map +0 -1
  1752. package/dist/server/kernel/__tests__/redis-cache.test.js +0 -48
  1753. package/dist/server/kernel/__tests__/redis-cache.test.js.map +0 -1
  1754. package/dist/server/kernel/__tests__/redis-rate-limiter.test.d.ts +0 -2
  1755. package/dist/server/kernel/__tests__/redis-rate-limiter.test.d.ts.map +0 -1
  1756. package/dist/server/kernel/__tests__/redis-rate-limiter.test.js +0 -56
  1757. package/dist/server/kernel/__tests__/redis-rate-limiter.test.js.map +0 -1
  1758. package/dist/server/kernel/job-queue.d.ts +0 -28
  1759. package/dist/server/kernel/job-queue.d.ts.map +0 -1
  1760. package/dist/server/kernel/job-queue.js +0 -177
  1761. package/dist/server/kernel/job-queue.js.map +0 -1
  1762. package/dist/server/runtime/openapi.d.ts +0 -15
  1763. package/dist/server/runtime/openapi.d.ts.map +0 -1
  1764. package/dist/server/runtime/openapi.js +0 -26
  1765. package/dist/server/runtime/openapi.js.map +0 -1
  1766. package/dist/wallet/__tests__/admin-reporting.test.d.ts +0 -2
  1767. package/dist/wallet/__tests__/admin-reporting.test.d.ts.map +0 -1
  1768. package/dist/wallet/__tests__/admin-reporting.test.js +0 -124
  1769. package/dist/wallet/__tests__/admin-reporting.test.js.map +0 -1
  1770. package/dist/wallet/__tests__/wallet-auto-rule.router.test.d.ts +0 -2
  1771. package/dist/wallet/__tests__/wallet-auto-rule.router.test.d.ts.map +0 -1
  1772. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js +0 -98
  1773. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js.map +0 -1
  1774. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.d.ts +0 -2
  1775. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.d.ts.map +0 -1
  1776. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js +0 -408
  1777. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js.map +0 -1
  1778. package/dist/wallet/__tests__/wallet-commands.service.test.d.ts +0 -2
  1779. package/dist/wallet/__tests__/wallet-commands.service.test.d.ts.map +0 -1
  1780. package/dist/wallet/__tests__/wallet-commands.service.test.js +0 -159
  1781. package/dist/wallet/__tests__/wallet-commands.service.test.js.map +0 -1
  1782. package/dist/wallet/__tests__/wallet-kyc-gate.test.d.ts +0 -2
  1783. package/dist/wallet/__tests__/wallet-kyc-gate.test.d.ts.map +0 -1
  1784. package/dist/wallet/__tests__/wallet-kyc-gate.test.js +0 -61
  1785. package/dist/wallet/__tests__/wallet-kyc-gate.test.js.map +0 -1
  1786. package/dist/wallet/__tests__/wallet.rate-limit.test.d.ts +0 -2
  1787. package/dist/wallet/__tests__/wallet.rate-limit.test.d.ts.map +0 -1
  1788. package/dist/wallet/__tests__/wallet.rate-limit.test.js +0 -34
  1789. package/dist/wallet/__tests__/wallet.rate-limit.test.js.map +0 -1
  1790. package/dist/wallet/__tests__/wallet.router.test.d.ts +0 -2
  1791. package/dist/wallet/__tests__/wallet.router.test.d.ts.map +0 -1
  1792. package/dist/wallet/__tests__/wallet.router.test.js +0 -43
  1793. package/dist/wallet/__tests__/wallet.router.test.js.map +0 -1
  1794. package/dist/wallet/__tests__/wallet.service.test.d.ts +0 -2
  1795. package/dist/wallet/__tests__/wallet.service.test.d.ts.map +0 -1
  1796. package/dist/wallet/__tests__/wallet.service.test.js +0 -698
  1797. package/dist/wallet/__tests__/wallet.service.test.js.map +0 -1
  1798. package/turbo-generators/src/config.ts +0 -466
  1799. package/turbo-generators/src/templates/adapter.hbs +0 -19
  1800. package/turbo-generators/src/templates/contract.hbs +0 -18
  1801. package/turbo-generators/src/templates/job-worker.hbs +0 -34
  1802. package/turbo-generators/src/templates/module/agents.hbs +0 -67
  1803. package/turbo-generators/src/templates/module/drizzle.config.hbs +0 -22
  1804. package/turbo-generators/src/templates/module/index.hbs +0 -5
  1805. package/turbo-generators/src/templates/module/migrate.hbs +0 -15
  1806. package/turbo-generators/src/templates/module/package.json.hbs +0 -62
  1807. package/turbo-generators/src/templates/module/plugin.hbs +0 -20
  1808. package/turbo-generators/src/templates/module/router.hbs +0 -19
  1809. package/turbo-generators/src/templates/module/schema.hbs +0 -21
  1810. package/turbo-generators/src/templates/module/service.hbs +0 -26
  1811. package/turbo-generators/src/templates/module/tsconfig.json.hbs +0 -8
  1812. package/turbo-generators/src/templates/plugin.hbs +0 -20
  1813. /package/{turbo-generators → generators}/src/templates/adr.hbs +0 -0
  1814. /package/{turbo-generators → generators}/src/templates/config.hbs +0 -0
@@ -1,26 +1,68 @@
1
- import { makeNotFoundError, makeConflictError, createDomainError, findOneOrThrow, pageToOffset, withAdvisoryXactLock, assertRateLimit, createLogger, } from '@openora/core/server';
2
- import { eq, desc, sql, and, gte, lte, count, inArray } from 'drizzle-orm';
1
+ import { makeNotFoundError, makeConflictError, createDomainError, findOneOrThrow, pageToOffset, withAdvisoryXactLock, assertRateLimit, createLogger, moneyToNumber, moneyEquals, } from '@openora/core/server';
2
+ import { normalizeKycStatus, } from '@openora/core/contracts';
3
+ import { eq, asc, desc, sql, and, gte, lte, count, inArray, isNull, or } from 'drizzle-orm';
3
4
  import { createHash } from 'node:crypto';
4
- import { wallet, walletTransaction, autoWithdrawalRule, } from '../schema/index.js';
5
+ import { wallet, walletBalance, walletTransaction, autoWithdrawalRule, walletAutoWithdrawalConfig, walletDepositAddress, } from '../schema/index.js';
5
6
  const logger = createLogger('wallet');
6
7
  export const WalletNotFoundError = makeNotFoundError('Wallet');
7
8
  export const WithdrawalNotFoundError = makeNotFoundError('Withdrawal');
9
+ export const AutoWithdrawalConfigNotFoundError = makeNotFoundError('AutoWithdrawalConfig');
8
10
  export const InsufficientBalanceError = createDomainError('InsufficientBalanceError', (available, requested) => `Insufficient balance: available ${available}, requested ${requested}`);
9
11
  export const WithdrawalNotPendingError = makeConflictError('WithdrawalNotPendingError', 'Withdrawal is not pending and cannot be reviewed');
10
12
  export const KycRequiredError = makeConflictError('KycRequiredError', 'KYC verification required before withdrawal');
11
13
  export const IdempotencyKeyReuseError = makeConflictError('IdempotencyKeyReuseError', 'Idempotency key was already used with a different amount');
12
- // Statuses that satisfy the withdrawal KYC gate.
13
- const KYC_PASS_STATUSES = new Set(['verified', 'manually_overridden']);
14
+ export const DepositAddressUnsupportedError = makeConflictError('DepositAddressUnsupportedError', 'The bound payment adapter does not support address-based deposits');
15
+ export const DestinationAddressRequiredError = makeConflictError('DestinationAddressRequiredError', 'A destination address is required for a crypto-rail withdrawal');
16
+ const KYC_PASS_STATUSES = new Set(['approved', 'manually_overridden']);
14
17
  export const CurrencyMismatchError = createDomainError('CurrencyMismatchError', (requested, walletCurrency) => `Currency mismatch: requested ${requested}, wallet holds ${walletCurrency}`);
18
+ export const AmbiguousDepositAddressError = createDomainError('AmbiguousDepositAddressError', (address, network) => `Deposit address ${address} on ${network ?? 'an unknown network'} is issued to more than one user`);
15
19
  // Crypto currencies settle on the crypto rail (Fireblocks); everything else on the
16
20
  // fiat rail (a PSP). The concrete provider is recorded per transaction, not here.
17
- const CRYPTO_CURRENCIES = new Set(['BTC', 'ETH', 'USDT']);
21
+ // Overridable per-operator via `platformConfig.wallet.cryptoCurrencies` - see `railFor`.
22
+ const DEFAULT_CRYPTO_CURRENCIES = new Set(['BTC', 'ETH', 'USDT', 'USDC']);
23
+ // Mirrors the `wallet.currency` column default: what a player without a wallet row
24
+ // reads as their active currency before one is created on first deposit.
25
+ const DEFAULT_WALLET_CURRENCY = 'USD';
18
26
  // Per-user throttle on money mutations - guards a runaway/misbehaving client, not
19
27
  // fraud (idempotency + the ledger guard cover correctness). An overlay rebinds
20
28
  // RATE_LIMITER to change the backend, not this policy.
21
29
  const WALLET_MUTATION_RATE_LIMIT = { limit: 30, windowMs: 60 * 1000 };
22
- export function railFor(currency) {
23
- return CRYPTO_CURRENCIES.has(currency.toUpperCase()) ? 'crypto' : 'fiat';
30
+ export function railFor(currency, cryptoCurrencies) {
31
+ const set = cryptoCurrencies
32
+ ? new Set(cryptoCurrencies.map((c) => c.toUpperCase()))
33
+ : DEFAULT_CRYPTO_CURRENCIES;
34
+ return set.has(currency.toUpperCase()) ? 'crypto' : 'fiat';
35
+ }
36
+ // Currency checks elsewhere are case-insensitive, so `usd` reaches here for a `USD`
37
+ // wallet. Every read and write of wallet_balance funnels through these three helpers,
38
+ // so normalizing the key here is enough to keep one row per wallet+currency.
39
+ const balanceKey = (currency) => currency.toUpperCase();
40
+ export function creditWalletBalance(txn, walletId, currency, amount) {
41
+ return txn
42
+ .insert(walletBalance)
43
+ .values({ walletId, currency: balanceKey(currency), amount })
44
+ .onConflictDoUpdate({
45
+ target: [walletBalance.walletId, walletBalance.currency],
46
+ set: {
47
+ amount: sql `${walletBalance.amount} + ${amount}::numeric`,
48
+ updatedAt: new Date(),
49
+ },
50
+ })
51
+ .returning({ amount: walletBalance.amount });
52
+ }
53
+ export function debitWalletBalance(txn, walletId, currency, amount) {
54
+ return txn
55
+ .update(walletBalance)
56
+ .set({ amount: sql `${walletBalance.amount} - ${amount}::numeric` })
57
+ .where(and(eq(walletBalance.walletId, walletId), eq(walletBalance.currency, balanceKey(currency)), gte(walletBalance.amount, amount)))
58
+ .returning({ amount: walletBalance.amount });
59
+ }
60
+ export async function readWalletBalance(txn, walletId, currency) {
61
+ const [row] = await txn
62
+ .select({ amount: walletBalance.amount })
63
+ .from(walletBalance)
64
+ .where(and(eq(walletBalance.walletId, walletId), eq(walletBalance.currency, balanceKey(currency))));
65
+ return row?.amount ?? '0';
24
66
  }
25
67
  // Namespace the key per operation so the same raw key on a deposit then a withdraw can't
26
68
  // collide on the (walletId, idempotencyKey) unique index. The column is a uuid, so a string
@@ -39,72 +81,144 @@ function namespacedIdempotencyKey(namespace, rawKey) {
39
81
  }
40
82
  // ponytail: a flat, currency-agnostic threshold - a starter heuristic for the review
41
83
  // queue, not a compliance risk engine. Revisit with a real risk service if/when one exists.
42
- const LARGE_WITHDRAWAL_THRESHOLD = 5000;
84
+ // moneyToNumber is the sanctioned JS conversion point for this heuristic comparison only.
85
+ const LARGE_WITHDRAWAL_THRESHOLD = '5000';
43
86
  // ponytail: >=3 withdrawals in a 24h window flags velocity; a flat count, not a per-tier rule.
44
87
  const HIGH_FREQUENCY_WINDOW_MS = 24 * 60 * 60 * 1000;
45
88
  const HIGH_FREQUENCY_MIN_COUNT = 3;
46
89
  const DAILY_CAP_WINDOW_MS = 24 * 60 * 60 * 1000;
47
90
  // Also the marker the cumulative-cap query reads back to identify auto-approved payouts - keep write and read in lockstep.
48
91
  const AUTO_APPROVED_REASON = 'auto-approved';
92
+ function toDepositAddressResult(row) {
93
+ return {
94
+ address: row.address,
95
+ currency: row.currency,
96
+ ...(row.network === null ? {} : { network: row.network }),
97
+ ...(row.tag === null ? {} : { tag: row.tag }),
98
+ };
99
+ }
49
100
  function toAutoWithdrawalRuleDto(row) {
50
101
  return {
51
102
  id: row.id,
52
103
  userId: row.userId,
53
- threshold: Number(row.threshold),
104
+ threshold: row.threshold,
54
105
  reason: row.reason,
55
106
  createdBy: row.createdBy,
56
107
  createdAt: row.createdAt.toISOString(),
57
108
  updatedAt: row.updatedAt.toISOString(),
58
109
  };
59
110
  }
111
+ function toAutoWithdrawalConfigDto(row) {
112
+ return {
113
+ id: row.id,
114
+ fiatThreshold: row.fiatThreshold,
115
+ cryptoThreshold: row.cryptoThreshold,
116
+ excludeRiskFlags: row.excludeRiskFlags,
117
+ updatedBy: row.updatedBy,
118
+ updatedAt: row.updatedAt.toISOString(),
119
+ createdAt: row.createdAt.toISOString(),
120
+ };
121
+ }
60
122
  // The concrete settlement provider recorded per transaction: the crypto rail settles
61
123
  // through Fireblocks, the fiat rail through a PSP.
62
124
  function providerNameFor(rail) {
63
125
  return rail === 'crypto' ? 'fireblocks' : 'psp';
64
126
  }
127
+ /**
128
+ * Owns all wallet balance mutations and the withdrawal review/auto-approval
129
+ * pipeline. Every balance change is a transactional, idempotent-keyed ledger
130
+ * write (never a bare balance update) - `amount` is always a decimal string,
131
+ * mutated via SQL numeric arithmetic, never a JS float. Domain events emit only
132
+ * AFTER the owning transaction commits, and only for the non-replay branch of
133
+ * an idempotent call.
134
+ */
65
135
  export class WalletService {
66
136
  drizzle;
67
137
  events;
68
138
  payment;
139
+ identityReader;
69
140
  directory;
70
141
  platformConfig;
71
142
  limiter;
72
143
  riskTags;
144
+ tagEvaluationCommands;
73
145
  audit;
74
- constructor({ drizzle, events, payment, directory, platformConfig, limiter, riskTags, audit, }) {
146
+ constructor({ drizzle, events, payment, directory, identityReader, platformConfig, limiter, riskTags, tagEvaluationCommands, audit, }) {
75
147
  this.drizzle = drizzle;
76
148
  this.events = events;
77
149
  this.payment = payment;
78
150
  this.directory = directory;
151
+ this.identityReader = identityReader;
79
152
  this.platformConfig = platformConfig;
80
153
  this.limiter = limiter;
81
154
  this.riskTags = riskTags;
155
+ this.tagEvaluationCommands = tagEvaluationCommands;
82
156
  this.audit = audit;
83
157
  }
158
+ resolveRail(currency) {
159
+ return railFor(currency, this.platformConfig?.wallet?.cryptoCurrencies);
160
+ }
84
161
  rateLimit(userId) {
85
162
  return this.limiter
86
163
  ? assertRateLimit(this.limiter, `wallet-mutation:${userId}`, WALLET_MUTATION_RATE_LIMIT)
87
164
  : Promise.resolve();
88
165
  }
89
- /** Fail-closed KYC gate: when enabled, a withdrawal needs a passing status (verified|manually_overridden). */
90
166
  async assertKycForWithdrawal(userId) {
91
- if (!this.platformConfig?.kyc?.gateWithdrawals)
167
+ if (!this.platformConfig?.kyc?.gateWithdrawals) {
92
168
  return;
169
+ }
93
170
  const status = await this.autoApprovalKycStatus(userId);
94
- if (!status || !KYC_PASS_STATUSES.has(status)) {
171
+ if (!status || !KYC_PASS_STATUSES.has(normalizeKycStatus(status))) {
95
172
  throw new KycRequiredError();
96
173
  }
97
174
  }
98
175
  async getBalance(userId) {
99
176
  const [record] = await this.drizzle.db.select().from(wallet).where(eq(wallet.userId, userId));
100
177
  if (!record) {
101
- return { balance: 0, currency: 'USD' };
178
+ return { balance: '0', currency: DEFAULT_WALLET_CURRENCY };
102
179
  }
103
180
  return {
104
- balance: Number(record.balance),
181
+ balance: await readWalletBalance(this.drizzle.db, record.id, record.currency),
105
182
  currency: record.currency,
106
183
  };
107
184
  }
185
+ async getBalances(userId) {
186
+ const [record] = await this.drizzle.db.select().from(wallet).where(eq(wallet.userId, userId));
187
+ if (!record) {
188
+ return { activeCurrency: DEFAULT_WALLET_CURRENCY, balances: [] };
189
+ }
190
+ const rows = await this.drizzle.db
191
+ .select({ currency: walletBalance.currency, balance: walletBalance.amount })
192
+ .from(walletBalance)
193
+ .where(eq(walletBalance.walletId, record.id))
194
+ .orderBy(walletBalance.currency);
195
+ return { activeCurrency: record.currency, balances: rows };
196
+ }
197
+ // TODO: validate `currency` against a canonical supported-currency list once one
198
+ // exists - `platformConfig.wallet.cryptoCurrencies` classifies rails, it is not an
199
+ // allowlist, so today any non-empty string is accepted and persisted.
200
+ async setActiveCurrency(userId, currency) {
201
+ const updated = await this.drizzle.db
202
+ .update(wallet)
203
+ .set({ currency })
204
+ .where(eq(wallet.userId, userId))
205
+ .returning({ currency: wallet.currency });
206
+ const record = updated[0];
207
+ if (!record) {
208
+ throw new WalletNotFoundError(userId);
209
+ }
210
+ return { activeCurrency: record.currency };
211
+ }
212
+ /**
213
+ * `idempotencyKey` (when supplied) makes a retried deposit a no-op: a replay
214
+ * returns the original committed result WITHOUT calling the PSP again or
215
+ * crediting the balance twice, and rejects if the same key is reused with a
216
+ * different amount/currency (`IdempotencyKeyReuseError`). A GENUINE
217
+ * concurrent race (two first-attempts, same key, landing at once) can both
218
+ * reach the PSP, but the ledger insert's unique-index conflict still
219
+ * guarantees only one balance credit - the loser's write becomes a replay
220
+ * read of the winner's row.
221
+ */
108
222
  async deposit({ userId, amount, currency, provider, idempotencyKey, }) {
109
223
  await this.rateLimit(userId);
110
224
  // Short-circuit a replay BEFORE the PSP call - the common retry case (client
@@ -114,10 +228,17 @@ export class WalletService {
114
228
  let preResolvedWallet;
115
229
  if (idempotencyKey) {
116
230
  const found = await this.findDepositReplay({ userId, idempotencyKey, amount, currency });
117
- if (found.replay)
231
+ if (found.replay) {
118
232
  return found.replay;
233
+ }
119
234
  preResolvedWallet = found.walletRecord;
120
235
  }
236
+ else {
237
+ [preResolvedWallet] = await this.drizzle.db
238
+ .select()
239
+ .from(wallet)
240
+ .where(eq(wallet.userId, userId));
241
+ }
121
242
  const psp = await this.payment.processDeposit(amount, currency, { userId, provider });
122
243
  const { transactionId, replayed } = await this.drizzle.db.transaction(async (txn) => {
123
244
  let walletRecord = preResolvedWallet;
@@ -125,10 +246,7 @@ export class WalletService {
125
246
  [walletRecord] = await txn.select().from(wallet).where(eq(wallet.userId, userId));
126
247
  }
127
248
  if (!walletRecord) {
128
- [walletRecord] = await txn
129
- .insert(wallet)
130
- .values({ userId, balance: '0', currency })
131
- .returning();
249
+ walletRecord = findOneOrThrow(await txn.insert(wallet).values({ userId, currency }).returning(), new WalletNotFoundError(userId));
132
250
  }
133
251
  const { row, replayed } = await this.insertIdempotentTransaction(txn, {
134
252
  namespace: DEPOSIT_IDEMPOTENCY_NAMESPACE,
@@ -139,24 +257,27 @@ export class WalletService {
139
257
  values: {
140
258
  walletId: walletRecord.id,
141
259
  type: 'deposit',
142
- amount: amount.toString(),
260
+ amount,
143
261
  currency,
144
262
  status: 'completed',
145
- rail: railFor(currency),
263
+ rail: this.resolveRail(currency),
146
264
  providerName: provider,
147
265
  providerRefId: psp.externalId,
148
266
  },
149
267
  });
150
268
  if (!replayed) {
151
- await txn
152
- .update(wallet)
153
- .set({ balance: sql `${wallet.balance} + ${amount}` })
154
- .where(eq(wallet.id, walletRecord.id));
269
+ await creditWalletBalance(txn, walletRecord.id, currency, amount);
155
270
  }
156
271
  return { transactionId: row.id, replayed };
157
272
  });
158
273
  if (!replayed) {
159
- this.events.emit('wallet.deposit.completed', { userId, amount, currency, transactionId });
274
+ this.events.emit('wallet.deposit.completed', {
275
+ userId,
276
+ playerId: await this.identityReader.getPlayerIdByUserIdSafe(userId),
277
+ amount,
278
+ currency,
279
+ transactionId,
280
+ });
160
281
  }
161
282
  return { transactionId, status: 'completed' };
162
283
  }
@@ -167,16 +288,21 @@ export class WalletService {
167
288
  .select()
168
289
  .from(wallet)
169
290
  .where(eq(wallet.userId, userId));
170
- if (!walletRecord)
291
+ if (!walletRecord) {
171
292
  return { walletRecord: undefined, replay: undefined };
293
+ }
172
294
  const existing = await this.findByIdempotencyKey(this.drizzle.db, walletRecord.id, namespacedIdempotencyKey(DEPOSIT_IDEMPOTENCY_NAMESPACE, idempotencyKey));
173
- if (!existing)
295
+ if (!existing) {
174
296
  return { walletRecord, replay: undefined };
297
+ }
175
298
  this.assertReplayMatches(existing, amount, currency);
176
299
  return { walletRecord, replay: { transactionId: existing.id, status: existing.status } };
177
300
  }
301
+ // Replay comparison only (not a ledger write). moneyEquals avoids a false mismatch between
302
+ // an unnormalized caller string (eg "10") and the DB's fixed-scale value ("10.00") while
303
+ // staying exact - a float compare would let two amounts differing past the 15th digit pass.
178
304
  assertReplayMatches(existing, amount, currency) {
179
- if (Number(existing.amount) !== amount ||
305
+ if (!moneyEquals(existing.amount, amount) ||
180
306
  existing.currency.toUpperCase() !== currency.toUpperCase()) {
181
307
  throw new IdempotencyKeyReuseError();
182
308
  }
@@ -194,8 +320,9 @@ export class WalletService {
194
320
  const [row] = idempotencyKey
195
321
  ? await insertQuery.onConflictDoNothing().returning()
196
322
  : await insertQuery.returning();
197
- if (row)
323
+ if (row) {
198
324
  return { row, replayed: false };
325
+ }
199
326
  // Only the keyed (onConflictDoNothing) branch above can return an empty `returning()`
200
327
  // - the plain-insert branch always yields exactly one row.
201
328
  if (!idempotencyKey) {
@@ -208,17 +335,25 @@ export class WalletService {
208
335
  this.assertReplayMatches(winner, amount, currency);
209
336
  return { row: winner, replayed: true };
210
337
  }
211
- /** Creates a PENDING withdrawal and HOLDS the funds (balance debited at request time). Funds are returned on reject/PSP-failure. */
212
- async withdraw({ userId, amount, currency, idempotencyKey, }) {
338
+ /**
339
+ * Creates a PENDING withdrawal and HOLDS the funds immediately (balance
340
+ * debited at request time, not on approval) - funds are returned on
341
+ * reject/PSP-failure. The debit is a conditional `UPDATE ... WHERE balance
342
+ * >= amount`, atomic with the row lock (`FOR UPDATE`) taken on the wallet,
343
+ * so two concurrent withdrawals can't both pass a balance check and
344
+ * double-spend. `idempotencyKey` replay semantics mirror `deposit()`. May
345
+ * return an already-`completed`/`processing` result if the request
346
+ * qualifies for (and passes) auto-approval - see `maybeAutoApprove`.
347
+ */
348
+ async withdraw({ userId, amount, currency, idempotencyKey, destinationAddress, ip, userAgent, }) {
213
349
  await this.rateLimit(userId);
214
350
  await this.assertKycForWithdrawal(userId);
351
+ if (this.resolveRail(currency) === 'crypto' && !destinationAddress) {
352
+ throw new DestinationAddressRequiredError();
353
+ }
215
354
  const { transactionId, status, replayed, walletId, rail } = await this.drizzle.db.transaction(async (txn) => {
216
355
  // FOR UPDATE serializes concurrent withdrawals against a double-debit TOCTOU under READ COMMITTED.
217
356
  const current = findOneOrThrow(await txn.select().from(wallet).where(eq(wallet.userId, userId)).for('update'), new WalletNotFoundError(userId));
218
- // Single-currency wallet: reject a mismatch rather than coerce it onto the wrong rail.
219
- if (currency.toUpperCase() !== current.currency.toUpperCase()) {
220
- throw new CurrencyMismatchError(currency, current.currency);
221
- }
222
357
  // Replay of an already-committed key: return the original untouched. The new-key race is caught by the insert below.
223
358
  if (idempotencyKey) {
224
359
  const existing = await this.findByIdempotencyKey(txn, current.id, namespacedIdempotencyKey(WITHDRAW_IDEMPOTENCY_NAMESPACE, idempotencyKey));
@@ -229,7 +364,7 @@ export class WalletService {
229
364
  status: existing.status,
230
365
  replayed: true,
231
366
  walletId: current.id,
232
- rail: railFor(currency),
367
+ rail: this.resolveRail(currency),
233
368
  };
234
369
  }
235
370
  }
@@ -242,10 +377,11 @@ export class WalletService {
242
377
  values: {
243
378
  walletId: current.id,
244
379
  type: 'withdrawal',
245
- amount: amount.toString(),
380
+ amount,
246
381
  currency,
247
382
  status: 'pending',
248
- rail: railFor(currency),
383
+ rail: this.resolveRail(currency),
384
+ destinationAddress: destinationAddress ?? null,
249
385
  },
250
386
  });
251
387
  if (replayed) {
@@ -254,29 +390,37 @@ export class WalletService {
254
390
  status: row.status,
255
391
  replayed,
256
392
  walletId: current.id,
257
- rail: railFor(currency),
393
+ rail: this.resolveRail(currency),
258
394
  };
259
395
  }
260
396
  // Guarded conditional debit: the WHERE makes balance>=amount atomic with the write; 0 rows back rolls back the whole tx.
261
- const debited = await txn
262
- .update(wallet)
263
- .set({ balance: sql `${wallet.balance} - ${amount}` })
264
- .where(and(eq(wallet.id, current.id), gte(wallet.balance, amount.toString())))
265
- .returning({ id: wallet.id });
397
+ const debited = await debitWalletBalance(txn, current.id, currency, amount);
266
398
  if (debited.length !== 1) {
267
- throw new InsufficientBalanceError(Number(current.balance), amount);
399
+ throw new InsufficientBalanceError(await readWalletBalance(txn, current.id, currency), amount);
400
+ }
401
+ if (this.tagEvaluationCommands) {
402
+ await this.tagEvaluationCommands.evaluateWithdrawalRequested(txn, { userId, amount });
268
403
  }
269
404
  return {
270
405
  transactionId: row.id,
271
406
  status: row.status,
272
407
  replayed,
273
408
  walletId: current.id,
274
- rail: railFor(currency),
409
+ rail: this.resolveRail(currency),
275
410
  };
276
411
  });
277
- if (replayed)
412
+ if (replayed) {
278
413
  return { transactionId, status };
279
- this.events.emit('wallet.withdrawal.requested', { userId, amount, currency, transactionId });
414
+ }
415
+ this.events.emit('wallet.withdrawal.requested', {
416
+ userId,
417
+ playerId: await this.identityReader.getPlayerIdByUserIdSafe(userId),
418
+ amount,
419
+ currency,
420
+ transactionId,
421
+ ip: ip ?? null,
422
+ userAgent: userAgent ?? null,
423
+ });
280
424
  // Fail-closed post-step: decides who approves (system vs manual queue), never throws out of withdraw() - failure leaves the row pending.
281
425
  const auto = await this.maybeAutoApprove({
282
426
  userId,
@@ -292,17 +436,20 @@ export class WalletService {
292
436
  const db = this.drizzle.db;
293
437
  const { page, limit } = filters;
294
438
  const conditions = [eq(walletTransaction.type, 'withdrawal')];
295
- if (filters.status)
439
+ if (filters.status) {
296
440
  conditions.push(eq(walletTransaction.status, filters.status));
297
- if (filters.currency)
441
+ }
442
+ if (filters.currency) {
298
443
  conditions.push(eq(walletTransaction.currency, filters.currency));
299
- if (filters.rail)
444
+ }
445
+ if (filters.rail) {
300
446
  conditions.push(eq(walletTransaction.rail, filters.rail));
447
+ }
301
448
  if (filters.minAmount !== undefined) {
302
- conditions.push(gte(walletTransaction.amount, filters.minAmount.toString()));
449
+ conditions.push(gte(walletTransaction.amount, filters.minAmount));
303
450
  }
304
451
  if (filters.maxAmount !== undefined) {
305
- conditions.push(lte(walletTransaction.amount, filters.maxAmount.toString()));
452
+ conditions.push(lte(walletTransaction.amount, filters.maxAmount));
306
453
  }
307
454
  if (filters.dateFrom) {
308
455
  conditions.push(gte(walletTransaction.createdAt, new Date(filters.dateFrom)));
@@ -312,19 +459,40 @@ export class WalletService {
312
459
  }
313
460
  // Bounded queue: fetch all SQL-matching rows, then enrich + kycStatus-filter + paginate in memory,
314
461
  // else DB-side pagination makes `total` wrong once kycStatus prunes.
462
+ const wdSortBy = filters.sortBy ?? 'createdAt';
463
+ const wdDir = (filters.sortOrder ?? 'desc') === 'asc' ? asc : desc;
464
+ const WD_SORT_COLS = {
465
+ createdAt: walletTransaction.createdAt,
466
+ amount: walletTransaction.amount,
467
+ status: walletTransaction.status,
468
+ currency: walletTransaction.currency,
469
+ rail: walletTransaction.rail,
470
+ reviewedAt: walletTransaction.reviewedAt,
471
+ };
315
472
  const rows = await db
316
473
  .select({ tx: walletTransaction, userId: wallet.userId })
317
474
  .from(walletTransaction)
318
475
  .innerJoin(wallet, eq(wallet.id, walletTransaction.walletId))
319
476
  .where(and(...conditions))
320
- .orderBy(desc(walletTransaction.createdAt));
477
+ .orderBy(wdDir(WD_SORT_COLS[wdSortBy]), desc(walletTransaction.id));
321
478
  const userIds = [...new Set(rows.map((r) => r.userId))];
322
479
  const summaries = this.directory ? await this.directory.lookupPlayers(userIds) : [];
323
480
  const byUserId = new Map(summaries.map((s) => [s.userId, s]));
324
- const matching = filters.kycStatus
325
- ? rows.filter((r) => byUserId.get(r.userId)?.kycStatus === filters.kycStatus)
481
+ // Normalize both sides before comparing: the ADMIN_USER_DIRECTORY port's return type
482
+ // still permits the deprecated `verified` value (it aliases `approved`), and this
483
+ // module cannot assume every bound implementation already normalized it at its own
484
+ // read boundary - a raw `===` here would silently hide every legacy-verified player
485
+ // from the queue the moment an admin filters by the canonical `approved`.
486
+ const kycStatusFilter = filters.kycStatus ? normalizeKycStatus(filters.kycStatus) : undefined;
487
+ const matching = kycStatusFilter
488
+ ? rows.filter((r) => {
489
+ const kycStatus = byUserId.get(r.userId)?.kycStatus;
490
+ return kycStatus !== undefined && kycStatus !== null
491
+ ? normalizeKycStatus(kycStatus) === kycStatusFilter
492
+ : false;
493
+ })
326
494
  : rows;
327
- const start = (page - 1) * limit;
495
+ const start = pageToOffset(page, limit);
328
496
  const pageRows = matching.slice(start, start + limit);
329
497
  // One batched velocity query for the page (no N+1); shares the window + threshold + query the auto-approval evaluator uses.
330
498
  const pageWalletIds = [...new Set(pageRows.map((r) => r.tx.walletId))];
@@ -332,21 +500,26 @@ export class WalletService {
332
500
  const items = pageRows.map((r) => {
333
501
  const summary = byUserId.get(r.userId);
334
502
  const riskTags = [];
335
- if (Number(r.tx.amount) >= LARGE_WITHDRAWAL_THRESHOLD)
503
+ if (moneyToNumber(r.tx.amount) >= moneyToNumber(LARGE_WITHDRAWAL_THRESHOLD)) {
336
504
  riskTags.push('large_amount');
337
- if (frequentWalletIds.has(r.tx.walletId))
505
+ }
506
+ if (frequentWalletIds.has(r.tx.walletId)) {
338
507
  riskTags.push('high_frequency');
508
+ }
339
509
  return {
340
510
  transactionId: r.tx.id,
341
511
  userId: r.userId,
512
+ playerId: summary?.playerId ?? null,
342
513
  username: summary?.username ?? '',
343
- amount: Number(r.tx.amount),
514
+ amount: r.tx.amount,
344
515
  currency: r.tx.currency,
345
516
  rail: r.tx.rail ?? null,
346
517
  status: r.tx.status,
347
518
  kycStatus: summary?.kycStatus ?? null,
348
519
  riskTags,
349
520
  requestedAt: r.tx.createdAt.toISOString(),
521
+ destinationAddress: r.tx.destinationAddress,
522
+ txHash: r.tx.txHash,
350
523
  };
351
524
  });
352
525
  return { items, total: matching.length, page, limit };
@@ -356,11 +529,11 @@ export class WalletService {
356
529
  * or Failed + refund on PSP error. Robust PSP idempotency-key/reconciliation for a
357
530
  * lost-response is deferred - same scope boundary the deposit path declares.
358
531
  */
359
- async approveWithdrawal(adminId, withdrawalId) {
532
+ async approveWithdrawal(adminId, withdrawalId, meta) {
360
533
  // Two-phase: commit the `processing` flip first (FOR UPDATE lock), then call the PSP OUTSIDE
361
534
  // the tx (a failure refunds in a second tx). Never inline the PSP call inside the hold transaction.
362
535
  const tx = await this.drizzle.db.transaction((txn) => this.flipToProcessing({ txn, withdrawalId, adminId }));
363
- return this.settleApproved(tx, adminId);
536
+ return this.settleApproved(tx, adminId, meta);
364
537
  }
365
538
  // Phase one: the pending -> processing flip under a FOR UPDATE lock. Extracted so the auto path can run it
366
539
  // inside its advisory-locked cap-check transaction, committing the marker atomically. Never call the PSP here.
@@ -374,7 +547,7 @@ export class WalletService {
374
547
  if (current.status !== 'pending' || current.type !== 'withdrawal') {
375
548
  throw new WithdrawalNotPendingError();
376
549
  }
377
- const [updated] = await txn
550
+ return findOneOrThrow(await txn
378
551
  .update(walletTransaction)
379
552
  .set({
380
553
  status: 'processing',
@@ -383,14 +556,13 @@ export class WalletService {
383
556
  ...(reviewReason !== undefined ? { reviewReason } : {}),
384
557
  })
385
558
  .where(eq(walletTransaction.id, withdrawalId))
386
- .returning();
387
- return updated;
559
+ .returning(), new WithdrawalNotFoundError(withdrawalId));
388
560
  }
389
561
  // Phase two: settle a `processing` withdrawal via the PSP (Completed on success, Failed + refund on error).
390
562
  // Runs OUTSIDE the hold/flip transaction so the external PSP call never holds a DB lock.
391
- async settleApproved(tx, adminId) {
563
+ async settleApproved(tx, adminId, meta) {
392
564
  const userId = await this.userIdForWallet(tx.walletId);
393
- const amount = Number(tx.amount);
565
+ const amount = tx.amount;
394
566
  // approved/failed are admin-attributed events (schema requires a uuid adminId); the system auto path
395
567
  // skips them - its trail is the AUDIT_WRITER entry plus the shared `completed` event below.
396
568
  if (adminId) {
@@ -400,6 +572,8 @@ export class WalletService {
400
572
  currency: tx.currency,
401
573
  transactionId: tx.id,
402
574
  adminId,
575
+ ip: meta?.ip ?? null,
576
+ userAgent: meta?.userAgent ?? null,
403
577
  });
404
578
  }
405
579
  let result;
@@ -409,31 +583,25 @@ export class WalletService {
409
583
  userId,
410
584
  rail: tx.rail,
411
585
  adminId,
586
+ destinationAddress: tx.destinationAddress,
412
587
  });
413
588
  }
414
589
  catch (err) {
415
590
  // Payout did not happen - mark failed and return the held funds in one transaction.
416
- await this.drizzle.db.transaction(async (txn) => {
417
- await txn
418
- .update(walletTransaction)
419
- .set({ status: 'failed' })
420
- .where(eq(walletTransaction.id, tx.id));
421
- await txn
422
- .update(wallet)
423
- .set({ balance: sql `${wallet.balance} + ${amount}` })
424
- .where(eq(wallet.id, tx.walletId));
425
- });
426
- if (adminId) {
427
- this.events.emit('wallet.withdrawal.failed', {
428
- userId,
429
- amount,
430
- currency: tx.currency,
431
- transactionId: tx.id,
432
- adminId,
433
- });
434
- }
591
+ await this.finalizeFailedWithdrawal({ tx, adminId, userId, amount });
435
592
  throw err;
436
593
  }
594
+ if (result.status === 'failed') {
595
+ await this.finalizeFailedWithdrawal({ tx, adminId, userId, amount });
596
+ return { transactionId: tx.id, status: 'failed' };
597
+ }
598
+ if (result.status !== 'completed') {
599
+ await this.drizzle.db
600
+ .update(walletTransaction)
601
+ .set({ providerName: providerNameFor(tx.rail), providerRefId: result.externalId })
602
+ .where(eq(walletTransaction.id, tx.id));
603
+ return { transactionId: tx.id, status: 'processing' };
604
+ }
437
605
  await this.drizzle.db
438
606
  .update(walletTransaction)
439
607
  .set({
@@ -444,32 +612,94 @@ export class WalletService {
444
612
  .where(eq(walletTransaction.id, tx.id));
445
613
  this.events.emit('wallet.withdrawal.completed', {
446
614
  userId,
615
+ playerId: await this.identityReader.getPlayerIdByUserIdSafe(userId),
447
616
  amount,
448
617
  currency: tx.currency,
449
618
  transactionId: tx.id,
450
619
  });
451
620
  return { transactionId: tx.id, status: 'completed' };
452
621
  }
622
+ async finalizeFailedWithdrawal({ tx, adminId, userId, amount, }) {
623
+ const transitioned = await this.drizzle.db.transaction(async (txn) => {
624
+ const updated = await txn
625
+ .update(walletTransaction)
626
+ .set({ status: 'failed' })
627
+ .where(and(eq(walletTransaction.id, tx.id), eq(walletTransaction.status, 'processing')))
628
+ .returning({ id: walletTransaction.id });
629
+ if (updated.length === 0) {
630
+ return false;
631
+ }
632
+ await creditWalletBalance(txn, tx.walletId, tx.currency, amount);
633
+ return true;
634
+ });
635
+ if (transitioned && adminId) {
636
+ this.events.emit('wallet.withdrawal.failed', {
637
+ userId,
638
+ amount,
639
+ currency: tx.currency,
640
+ transactionId: tx.id,
641
+ adminId,
642
+ });
643
+ }
644
+ }
645
+ async reconcileWithdrawalStatus(event) {
646
+ const { externalId, status, txHash } = event;
647
+ const [tx] = await this.drizzle.db
648
+ .select()
649
+ .from(walletTransaction)
650
+ .where(eq(walletTransaction.providerRefId, externalId));
651
+ if (!tx || tx.type !== 'withdrawal') {
652
+ logger.warn({ externalId }, 'payment webhook: no matching withdrawal for providerRefId');
653
+ return;
654
+ }
655
+ if (tx.status !== 'processing') {
656
+ return;
657
+ }
658
+ const userId = await this.userIdForWallet(tx.walletId);
659
+ if (status === 'completed') {
660
+ const updated = await this.drizzle.db
661
+ .update(walletTransaction)
662
+ .set({ status: 'completed', txHash: txHash ?? tx.txHash })
663
+ .where(and(eq(walletTransaction.id, tx.id), eq(walletTransaction.status, 'processing')))
664
+ .returning({ id: walletTransaction.id });
665
+ if (updated.length === 0) {
666
+ return;
667
+ }
668
+ this.events.emit('wallet.withdrawal.completed', {
669
+ userId,
670
+ playerId: await this.identityReader.getPlayerIdByUserIdSafe(userId),
671
+ amount: tx.amount,
672
+ currency: tx.currency,
673
+ transactionId: tx.id,
674
+ });
675
+ return;
676
+ }
677
+ if (status === 'failed') {
678
+ await this.finalizeFailedWithdrawal({ tx, adminId: null, userId, amount: tx.amount });
679
+ }
680
+ }
453
681
  // Evaluates the auto-approval gates and settles the payout if all pass; returns undefined to
454
682
  // leave the row pending for the manual queue. NEVER throws: any error fails closed to manual.
455
683
  async maybeAutoApprove(args) {
456
- // Cheap gates first (auto-approval off, or crypto - never auto-approved): skip opening a tx/lock.
457
- if (!this.platformConfig?.autoWithdrawal?.enabled || args.rail !== 'fiat')
684
+ if (!this.platformConfig?.autoWithdrawal?.enabled) {
458
685
  return undefined;
686
+ }
459
687
  try {
460
688
  const cfg = this.platformConfig.autoWithdrawal;
461
689
  // Threshold/KYC/risk/velocity gates run outside any lock; only the cap check below needs serializing.
462
690
  const gates = await this.evaluateAutoApproval(args);
463
- if (!gates)
691
+ if (!gates) {
464
692
  return undefined;
693
+ }
465
694
  // Serialize the cap-check-and-flip per user with an advisory lock: without it two concurrent
466
695
  // withdrawals read the same daily-cap usage and both auto-approve, bypassing the cap. The cap read
467
696
  // and the flip that writes the marker commit together, so a blocked caller re-reads current usage.
468
697
  // PSP settlement runs AFTER, outside the lock.
469
698
  const decided = await this.drizzle.db.transaction((txn) => withAdvisoryXactLock(txn, args.userId, async () => {
470
699
  const caps = await this.autoApprovalCaps({ walletId: args.walletId, amount: args.amount, cfg }, txn);
471
- if (caps.exceeded)
700
+ if (caps.exceeded) {
472
701
  return null;
702
+ }
473
703
  const tx = await this.flipToProcessing({
474
704
  txn,
475
705
  withdrawalId: args.transactionId,
@@ -478,8 +708,9 @@ export class WalletService {
478
708
  });
479
709
  return { tx, caps };
480
710
  }));
481
- if (!decided)
711
+ if (!decided) {
482
712
  return undefined;
713
+ }
483
714
  const decision = {
484
715
  ...gates,
485
716
  dailyCapAmount: cfg.dailyCapAmount ?? null,
@@ -494,7 +725,12 @@ export class WalletService {
494
725
  action: 'wallet.withdrawal.auto_approved',
495
726
  resourceType: 'wallet_transaction',
496
727
  resourceId: args.transactionId,
497
- after: { userId: args.userId, amount: args.amount, currency: args.currency, ...decision },
728
+ after: {
729
+ userId: args.userId,
730
+ amount: args.amount,
731
+ currency: args.currency,
732
+ ...decision,
733
+ },
498
734
  });
499
735
  }
500
736
  catch (err) {
@@ -518,69 +754,153 @@ export class WalletService {
518
754
  // route to manual. The daily-cap check is NOT here - it runs under the advisory lock (see maybeAutoApprove).
519
755
  async evaluateAutoApproval({ userId, amount, walletId, rail, }) {
520
756
  const cfg = this.platformConfig?.autoWithdrawal;
521
- if (!cfg?.enabled)
757
+ if (!cfg?.enabled) {
522
758
  return null;
523
- // Hard stop: crypto is irreversible and AML-sensitive - never auto-approved.
524
- if (rail !== 'fiat')
525
- return null;
526
- const threshold = await this.resolveAutoThreshold(userId);
527
- if (!threshold || threshold.value <= 0)
759
+ }
760
+ const threshold = await this.resolveAutoThreshold(userId, rail);
761
+ if (!threshold || moneyToNumber(threshold.value) <= 0) {
528
762
  return null;
529
- if (amount > threshold.value)
763
+ }
764
+ if (moneyToNumber(amount) > moneyToNumber(threshold.value)) {
530
765
  return null;
766
+ }
531
767
  // Independent of kyc.gateWithdrawals: auto-approval always demands a passing status; anything else fails closed.
532
768
  const kycStatus = await this.autoApprovalKycStatus(userId);
533
- if (!kycStatus || !KYC_PASS_STATUSES.has(kycStatus))
769
+ if (!kycStatus || !KYC_PASS_STATUSES.has(normalizeKycStatus(kycStatus))) {
534
770
  return null;
535
- const riskTags = await this.autoApprovalRiskTags(userId, cfg.excludeRiskFlags);
771
+ }
772
+ const effectiveExcludeTags = threshold.config.excludeRiskFlags;
773
+ const riskTags = await this.autoApprovalRiskTags(userId, effectiveExcludeTags);
536
774
  // null = exclusions configured but the lookup port is unavailable => fail closed.
537
- if (riskTags === null)
775
+ if (riskTags === null) {
538
776
  return null;
539
- if (riskTags.some((t) => cfg.excludeRiskFlags.includes(t)))
777
+ }
778
+ if (riskTags.some((t) => effectiveExcludeTags.includes(t))) {
540
779
  return null;
780
+ }
541
781
  const heuristics = await this.autoApprovalHeuristics({ walletId, amount });
542
- if (heuristics.largeAmount || heuristics.highFrequency)
782
+ if (heuristics.largeAmount || heuristics.highFrequency) {
543
783
  return null;
784
+ }
544
785
  return {
545
786
  threshold: threshold.value,
546
787
  thresholdSource: threshold.source,
547
788
  kycStatus,
548
789
  riskTagsEvaluated: riskTags,
790
+ effectiveExcludeTags,
549
791
  };
550
792
  }
551
- // Per-player rule wins over the global fiat threshold; null when neither is set.
552
- async resolveAutoThreshold(userId) {
793
+ async resolveAutoThreshold(userId, rail) {
794
+ // Always read the global singleton first, even when a per-player override may end up
795
+ // winning below - an unseeded install (missing row) must fail closed for EVERY player,
796
+ // not just those without an override. getAutoWithdrawalConfig() throws when absent.
797
+ const config = await this.getAutoWithdrawalConfig();
553
798
  const [rule] = await this.drizzle.db
554
799
  .select()
555
800
  .from(autoWithdrawalRule)
556
801
  .where(eq(autoWithdrawalRule.userId, userId));
557
- if (rule)
558
- return { value: Number(rule.threshold), source: 'per-player' };
559
- const global = this.platformConfig?.autoWithdrawal?.fiatThreshold;
560
- if (global !== undefined)
561
- return { value: global, source: 'global' };
562
- return null;
802
+ if (rule) {
803
+ return { value: rule.threshold, source: 'per-player', config };
804
+ }
805
+ const global = rail === 'crypto' ? config.cryptoThreshold : config.fiatThreshold;
806
+ return { value: global, source: 'global', config };
807
+ }
808
+ // The row always exists in a properly-seeded install (seeded once) - a
809
+ // missing row is an unexpected failure mode on the READ path, not a normal
810
+ // "unconfigured" state, so this throws rather than silently defaulting.
811
+ // maybeAutoApprove's outer try/catch handles that thrown error the same as any
812
+ // other unexpected error: fail closed to pending.
813
+ async getAutoWithdrawalConfig() {
814
+ const config = await this.getAutoWithdrawalConfigOrNull();
815
+ if (!config) {
816
+ throw new AutoWithdrawalConfigNotFoundError('global');
817
+ }
818
+ return config;
819
+ }
820
+ // Non-throwing variant for callers that need to tell "missing" from "found"
821
+ // without a try/catch (eg the router's audit `before` read).
822
+ async getAutoWithdrawalConfigOrNull() {
823
+ const [row] = await this.drizzle.db
824
+ .select()
825
+ .from(walletAutoWithdrawalConfig)
826
+ .where(eq(walletAutoWithdrawalConfig.singletonKey, 'global'));
827
+ return row ? toAutoWithdrawalConfigDto(row) : null;
828
+ }
829
+ // Upsert, not a plain UPDATE: the WRITE path lets a Super Admin self-heal a
830
+ // missing singleton row (eg an install that skipped the seed step) through the
831
+ // existing route with zero new surface. The READ path (getAutoWithdrawalConfig,
832
+ // resolveAutoThreshold) still throws on a missing row and stays fail-closed -
833
+ // a withdrawal must never silently create config.
834
+ //
835
+ // Update + audit write run in one transaction: an audit-write failure must roll back
836
+ // the threshold change too, or the config could change with no audit trail.
837
+ async setAutoWithdrawalConfig(adminId, { fiatThreshold, cryptoThreshold, excludeRiskFlags, }, meta) {
838
+ return this.drizzle.db.transaction(async (txn) => {
839
+ const [before] = await txn
840
+ .select()
841
+ .from(walletAutoWithdrawalConfig)
842
+ .where(eq(walletAutoWithdrawalConfig.singletonKey, 'global'));
843
+ const rows = await txn
844
+ .insert(walletAutoWithdrawalConfig)
845
+ .values({
846
+ singletonKey: 'global',
847
+ fiatThreshold,
848
+ cryptoThreshold,
849
+ excludeRiskFlags,
850
+ updatedBy: adminId,
851
+ })
852
+ .onConflictDoUpdate({
853
+ target: walletAutoWithdrawalConfig.singletonKey,
854
+ set: { fiatThreshold, cryptoThreshold, excludeRiskFlags, updatedBy: adminId },
855
+ })
856
+ .returning();
857
+ const config = toAutoWithdrawalConfigDto(findOneOrThrow(rows, new AutoWithdrawalConfigNotFoundError('global')));
858
+ await this.audit.recordInTransaction(txn, {
859
+ actorId: adminId,
860
+ actorType: 'admin',
861
+ action: 'wallet.auto_withdrawal_config.set',
862
+ resourceType: 'auto_withdrawal_config',
863
+ resourceId: config.id,
864
+ before: before
865
+ ? {
866
+ fiatThreshold: before.fiatThreshold,
867
+ cryptoThreshold: before.cryptoThreshold,
868
+ excludeRiskFlags: before.excludeRiskFlags,
869
+ }
870
+ : null,
871
+ after: {
872
+ fiatThreshold: config.fiatThreshold,
873
+ cryptoThreshold: config.cryptoThreshold,
874
+ excludeRiskFlags: config.excludeRiskFlags,
875
+ },
876
+ ...meta,
877
+ });
878
+ return config;
879
+ });
563
880
  }
564
881
  async autoApprovalKycStatus(userId) {
565
882
  // No directory bound => cannot verify KYC => fail closed.
566
- if (!this.directory)
883
+ if (!this.directory) {
567
884
  return null;
885
+ }
568
886
  const [summary] = await this.directory.lookupPlayers([userId]);
569
887
  return summary?.kycStatus ?? null;
570
888
  }
571
889
  // Active tag keys; [] when no exclusions configured or none carried; null when configured but the port is unbound (fail closed).
572
890
  async autoApprovalRiskTags(userId, excludeRiskFlags) {
573
- if (excludeRiskFlags.length === 0)
891
+ if (excludeRiskFlags.length === 0) {
574
892
  return [];
575
- if (!this.riskTags)
893
+ }
894
+ if (!this.riskTags) {
576
895
  return null;
896
+ }
577
897
  const byUser = await this.riskTags.getActiveTagKeys([userId]);
578
898
  return byUser.get(userId) ?? [];
579
899
  }
580
900
  async autoApprovalHeuristics({ walletId, amount, }) {
581
901
  const frequent = await this.frequentWithdrawalWalletIds(this.drizzle.db, [walletId]);
582
902
  return {
583
- largeAmount: amount >= LARGE_WITHDRAWAL_THRESHOLD,
903
+ largeAmount: moneyToNumber(amount) >= moneyToNumber(LARGE_WITHDRAWAL_THRESHOLD),
584
904
  highFrequency: frequent.has(walletId),
585
905
  };
586
906
  }
@@ -588,8 +908,9 @@ export class WalletService {
588
908
  // Single source of the velocity check, shared by the review queue tag and the auto-approval heuristic.
589
909
  async frequentWithdrawalWalletIds(db, walletIds) {
590
910
  const frequent = new Set();
591
- if (walletIds.length === 0)
911
+ if (walletIds.length === 0) {
592
912
  return frequent;
913
+ }
593
914
  const since = new Date(Date.now() - HIGH_FREQUENCY_WINDOW_MS);
594
915
  const counts = await db
595
916
  .select({ walletId: walletTransaction.walletId, n: count() })
@@ -597,8 +918,9 @@ export class WalletService {
597
918
  .where(and(eq(walletTransaction.type, 'withdrawal'), gte(walletTransaction.createdAt, since), inArray(walletTransaction.walletId, walletIds)))
598
919
  .groupBy(walletTransaction.walletId);
599
920
  for (const row of counts) {
600
- if (Number(row.n) >= HIGH_FREQUENCY_MIN_COUNT)
921
+ if (Number(row.n) >= HIGH_FREQUENCY_MIN_COUNT) {
601
922
  frequent.add(row.walletId);
923
+ }
602
924
  }
603
925
  return frequent;
604
926
  }
@@ -607,24 +929,30 @@ export class WalletService {
607
929
  async autoApprovalCaps({ walletId, amount, cfg, }, db) {
608
930
  const since = new Date(Date.now() - DAILY_CAP_WINDOW_MS);
609
931
  const [row] = await db
610
- .select({ total: sql `coalesce(sum(${walletTransaction.amount}), 0)`, n: count() })
932
+ .select({
933
+ total: sql `coalesce(sum(${walletTransaction.amount}), 0)`,
934
+ n: count(),
935
+ })
611
936
  .from(walletTransaction)
612
937
  .where(and(eq(walletTransaction.walletId, walletId), eq(walletTransaction.type, 'withdrawal'), eq(walletTransaction.reviewReason, AUTO_APPROVED_REASON), gte(walletTransaction.createdAt, since)));
613
- const amountUsed = Number(row?.total ?? 0);
938
+ const amountUsed = row?.total ?? '0';
614
939
  const countUsed = Number(row?.n ?? 0);
615
- const amountExceeded = cfg.dailyCapAmount !== undefined && amountUsed + amount > cfg.dailyCapAmount;
940
+ // Cap comparison is a review-queue decision, not a ledger write - moneyToNumber is the
941
+ // documented single conversion point (see the helper's own doc comment).
942
+ const amountExceeded = cfg.dailyCapAmount !== undefined &&
943
+ moneyToNumber(amountUsed) + moneyToNumber(amount) > moneyToNumber(cfg.dailyCapAmount);
616
944
  const countExceeded = cfg.dailyCapCount !== undefined && countUsed + 1 > cfg.dailyCapCount;
617
945
  return { exceeded: amountExceeded || countExceeded, amountUsed, countUsed };
618
946
  }
619
947
  async setAutoWithdrawalRule({ userId, threshold, reason, createdBy, }) {
620
- const [row] = await this.drizzle.db
948
+ const row = findOneOrThrow(await this.drizzle.db
621
949
  .insert(autoWithdrawalRule)
622
- .values({ userId, threshold: threshold.toString(), reason, createdBy })
950
+ .values({ userId, threshold, reason, createdBy })
623
951
  .onConflictDoUpdate({
624
952
  target: autoWithdrawalRule.userId,
625
- set: { threshold: threshold.toString(), reason, createdBy },
953
+ set: { threshold, reason, createdBy },
626
954
  })
627
- .returning();
955
+ .returning(), new WalletNotFoundError(userId));
628
956
  return toAutoWithdrawalRuleDto(row);
629
957
  }
630
958
  async getAutoWithdrawalRule(userId) {
@@ -641,7 +969,7 @@ export class WalletService {
641
969
  .returning({ id: autoWithdrawalRule.id });
642
970
  return deleted.length > 0;
643
971
  }
644
- async rejectWithdrawal(adminId, withdrawalId, reason) {
972
+ async rejectWithdrawal(adminId, withdrawalId, reason, meta) {
645
973
  const reviewedAt = new Date();
646
974
  const tx = await this.drizzle.db.transaction(async (txn) => {
647
975
  const current = findOneOrThrow(await txn
@@ -652,40 +980,51 @@ export class WalletService {
652
980
  if (current.status !== 'pending' || current.type !== 'withdrawal') {
653
981
  throw new WithdrawalNotPendingError();
654
982
  }
655
- const [updated] = await txn
983
+ const updated = findOneOrThrow(await txn
656
984
  .update(walletTransaction)
657
985
  .set({ status: 'rejected', reviewedBy: adminId, reviewedAt, reviewReason: reason })
658
986
  .where(eq(walletTransaction.id, withdrawalId))
659
- .returning();
660
- await txn
661
- .update(wallet)
662
- .set({ balance: sql `${wallet.balance} + ${updated.amount}` })
663
- .where(eq(wallet.id, updated.walletId));
987
+ .returning(), new WithdrawalNotFoundError(withdrawalId));
988
+ await creditWalletBalance(txn, updated.walletId, updated.currency, updated.amount);
664
989
  return updated;
665
990
  });
666
991
  const userId = await this.userIdForWallet(tx.walletId);
667
992
  this.events.emit('wallet.withdrawal.rejected', {
668
993
  userId,
669
- amount: Number(tx.amount),
994
+ amount: tx.amount,
670
995
  currency: tx.currency,
671
996
  transactionId: tx.id,
672
997
  adminId,
673
998
  reason,
999
+ ip: meta?.ip ?? null,
1000
+ userAgent: meta?.userAgent ?? null,
674
1001
  });
675
1002
  return { transactionId: tx.id, status: 'rejected' };
676
1003
  }
677
- async getTransactions(userId, page, limit) {
1004
+ async getTransactions({ userId, page, limit, sortBy, sortOrder, }) {
678
1005
  const db = this.drizzle.db;
679
1006
  const [walletRecord] = await db.select().from(wallet).where(eq(wallet.userId, userId));
680
- if (!walletRecord)
1007
+ if (!walletRecord) {
681
1008
  return { items: [], total: 0, page, limit };
1009
+ }
1010
+ const dir = (sortOrder ?? 'desc') === 'asc' ? asc : desc;
1011
+ const TX_SORT_COLS = {
1012
+ createdAt: walletTransaction.createdAt,
1013
+ amount: walletTransaction.amount,
1014
+ type: walletTransaction.type,
1015
+ status: walletTransaction.status,
1016
+ currency: walletTransaction.currency,
1017
+ rail: walletTransaction.rail,
1018
+ reviewedAt: walletTransaction.reviewedAt,
1019
+ };
1020
+ const col = TX_SORT_COLS[sortBy ?? 'createdAt'];
682
1021
  const where = eq(walletTransaction.walletId, walletRecord.id);
683
1022
  const [txs, [{ n }]] = await Promise.all([
684
1023
  db
685
1024
  .select()
686
1025
  .from(walletTransaction)
687
1026
  .where(where)
688
- .orderBy(desc(walletTransaction.createdAt))
1027
+ .orderBy(dir(col), desc(walletTransaction.id))
689
1028
  .limit(limit)
690
1029
  .offset(pageToOffset(page, limit)),
691
1030
  db.select({ n: count() }).from(walletTransaction).where(where),
@@ -694,7 +1033,7 @@ export class WalletService {
694
1033
  items: txs.map((tx) => ({
695
1034
  id: tx.id,
696
1035
  type: tx.type,
697
- amount: Number(tx.amount),
1036
+ amount: tx.amount,
698
1037
  currency: tx.currency,
699
1038
  status: tx.status,
700
1039
  createdAt: tx.createdAt.toISOString(),
@@ -704,6 +1043,96 @@ export class WalletService {
704
1043
  limit,
705
1044
  };
706
1045
  }
1046
+ async getOrCreateDepositAddress(userId, currency, network) {
1047
+ const existing = await this.findDepositAddress(userId, currency, network);
1048
+ if (existing) {
1049
+ return toDepositAddressResult(existing);
1050
+ }
1051
+ if (!this.payment.issueDepositAddress) {
1052
+ throw new DepositAddressUnsupportedError();
1053
+ }
1054
+ const issued = await this.payment.issueDepositAddress(userId, currency, network);
1055
+ const [row] = await this.drizzle.db
1056
+ .insert(walletDepositAddress)
1057
+ .values({
1058
+ userId,
1059
+ currency,
1060
+ network: network ?? null,
1061
+ address: issued.address,
1062
+ tag: issued.tag ?? null,
1063
+ providerName: providerNameFor(this.resolveRail(currency)),
1064
+ })
1065
+ .onConflictDoNothing()
1066
+ .returning();
1067
+ if (row) {
1068
+ return toDepositAddressResult(row);
1069
+ }
1070
+ const winner = await this.findDepositAddress(userId, currency, network);
1071
+ if (!winner) {
1072
+ throw new Error(`wallet deposit address: idempotency conflict but no row found (userId=${userId}, currency=${currency}, network=${network ?? 'none'})`);
1073
+ }
1074
+ return toDepositAddressResult(winner);
1075
+ }
1076
+ async creditDepositByAddress(event) {
1077
+ const depositAddress = await this.findDepositAddressByAddress(event);
1078
+ if (!depositAddress) {
1079
+ logger.warn({ address: event.address, network: event.network, tag: event.tag }, 'payment webhook: no wallet_deposit_address for inbound deposit');
1080
+ return;
1081
+ }
1082
+ if (event.network === undefined &&
1083
+ event.currency.toUpperCase() !== depositAddress.currency.toUpperCase()) {
1084
+ throw new CurrencyMismatchError(event.currency, depositAddress.currency);
1085
+ }
1086
+ const { transactionId, replayed } = await this.drizzle.db.transaction(async (txn) => {
1087
+ let [walletRecord] = await txn
1088
+ .select()
1089
+ .from(wallet)
1090
+ .where(eq(wallet.userId, depositAddress.userId));
1091
+ if (!walletRecord) {
1092
+ walletRecord = findOneOrThrow(await txn
1093
+ .insert(wallet)
1094
+ .values({ userId: depositAddress.userId, currency: event.currency })
1095
+ .returning(), new WalletNotFoundError(depositAddress.userId));
1096
+ }
1097
+ const [inserted] = await txn
1098
+ .insert(walletTransaction)
1099
+ .values({
1100
+ walletId: walletRecord.id,
1101
+ type: 'deposit',
1102
+ amount: event.amount,
1103
+ currency: event.currency,
1104
+ status: 'completed',
1105
+ rail: this.resolveRail(event.currency),
1106
+ providerName: depositAddress.providerName,
1107
+ providerRefId: event.externalId,
1108
+ destinationAddress: event.address,
1109
+ txHash: event.txHash,
1110
+ })
1111
+ .onConflictDoNothing()
1112
+ .returning();
1113
+ if (inserted) {
1114
+ await creditWalletBalance(txn, walletRecord.id, event.currency, event.amount);
1115
+ return { transactionId: inserted.id, replayed: false };
1116
+ }
1117
+ const [winner] = await txn
1118
+ .select()
1119
+ .from(walletTransaction)
1120
+ .where(eq(walletTransaction.providerRefId, event.externalId));
1121
+ if (!winner) {
1122
+ throw new Error(`payment webhook: idempotency conflict but no row found (externalId=${event.externalId})`);
1123
+ }
1124
+ return { transactionId: winner.id, replayed: true };
1125
+ });
1126
+ if (!replayed) {
1127
+ this.events.emit('wallet.deposit.completed', {
1128
+ userId: depositAddress.userId,
1129
+ playerId: await this.identityReader.getPlayerIdByUserIdSafe(depositAddress.userId),
1130
+ amount: event.amount,
1131
+ currency: event.currency,
1132
+ transactionId,
1133
+ });
1134
+ }
1135
+ }
707
1136
  async userIdForWallet(walletId) {
708
1137
  const record = findOneOrThrow(await this.drizzle.db
709
1138
  .select({ userId: wallet.userId })
@@ -718,5 +1147,27 @@ export class WalletService {
718
1147
  .where(and(eq(walletTransaction.walletId, walletId), eq(walletTransaction.idempotencyKey, idempotencyKey)));
719
1148
  return existing;
720
1149
  }
1150
+ async findDepositAddress(userId, currency, network) {
1151
+ const [row] = await this.drizzle.db
1152
+ .select()
1153
+ .from(walletDepositAddress)
1154
+ .where(and(eq(walletDepositAddress.userId, userId), eq(walletDepositAddress.currency, currency), network === undefined
1155
+ ? isNull(walletDepositAddress.network)
1156
+ : eq(walletDepositAddress.network, network)));
1157
+ return row;
1158
+ }
1159
+ async findDepositAddressByAddress({ address, network, tag, }) {
1160
+ const rows = await this.drizzle.db
1161
+ .select()
1162
+ .from(walletDepositAddress)
1163
+ .where(and(eq(walletDepositAddress.address, address), tag === undefined ? isNull(walletDepositAddress.tag) : eq(walletDepositAddress.tag, tag), network === undefined
1164
+ ? undefined
1165
+ : or(eq(walletDepositAddress.network, network), isNull(walletDepositAddress.network))));
1166
+ const owners = new Set(rows.map((row) => row.userId));
1167
+ if (owners.size > 1) {
1168
+ throw new AmbiguousDepositAddressError(address, network);
1169
+ }
1170
+ return rows.find((row) => row.network === network) ?? rows[0];
1171
+ }
721
1172
  }
722
1173
  //# sourceMappingURL=wallet.service.js.map