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

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 (157) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/admin-console/contract/index.d.ts +12 -0
  3. package/dist/admin-console/contract/index.d.ts.map +1 -1
  4. package/dist/admin-console/plugin.d.ts +18 -1
  5. package/dist/admin-console/plugin.d.ts.map +1 -1
  6. package/dist/admin-console/router/index.d.ts +6 -0
  7. package/dist/admin-console/router/index.d.ts.map +1 -1
  8. package/dist/analytics/plugin.d.ts +18 -1
  9. package/dist/analytics/plugin.d.ts.map +1 -1
  10. package/dist/audit/plugin.d.ts +18 -1
  11. package/dist/audit/plugin.d.ts.map +1 -1
  12. package/dist/casino/gaming/plugin.d.ts +18 -1
  13. package/dist/casino/gaming/plugin.d.ts.map +1 -1
  14. package/dist/casino/lobby/plugin.d.ts +18 -1
  15. package/dist/casino/lobby/plugin.d.ts.map +1 -1
  16. package/dist/cms/plugin.d.ts +18 -1
  17. package/dist/cms/plugin.d.ts.map +1 -1
  18. package/dist/compliance/plugin.d.ts +18 -1
  19. package/dist/compliance/plugin.d.ts.map +1 -1
  20. package/dist/contracts/adapters/audit.d.ts +1 -1
  21. package/dist/contracts/adapters/audit.d.ts.map +1 -1
  22. package/dist/contracts/adapters/audit.js.map +1 -1
  23. package/dist/contracts/adapters/index.d.ts +4 -2
  24. package/dist/contracts/adapters/index.d.ts.map +1 -1
  25. package/dist/contracts/adapters/index.js +2 -1
  26. package/dist/contracts/adapters/index.js.map +1 -1
  27. package/dist/contracts/adapters/payment.d.ts +99 -0
  28. package/dist/contracts/adapters/payment.d.ts.map +1 -1
  29. package/dist/contracts/adapters/payment.js +6 -0
  30. package/dist/contracts/adapters/payment.js.map +1 -1
  31. package/dist/contracts/adapters/rate-limit.d.ts +1 -0
  32. package/dist/contracts/adapters/rate-limit.d.ts.map +1 -1
  33. package/dist/contracts/adapters/rate-limit.js +1 -0
  34. package/dist/contracts/adapters/rate-limit.js.map +1 -1
  35. package/dist/contracts/adapters/wallet-asset-catalog.d.ts +34 -0
  36. package/dist/contracts/adapters/wallet-asset-catalog.d.ts.map +1 -0
  37. package/dist/contracts/adapters/wallet-asset-catalog.js +3 -0
  38. package/dist/contracts/adapters/wallet-asset-catalog.js.map +1 -0
  39. package/dist/contracts/schemas/__tests__/common-schemas.test.js +2 -1
  40. package/dist/contracts/schemas/__tests__/common-schemas.test.js.map +1 -1
  41. package/dist/contracts/schemas/common.d.ts.map +1 -1
  42. package/dist/contracts/schemas/common.js +7 -4
  43. package/dist/contracts/schemas/common.js.map +1 -1
  44. package/dist/contracts/schemas/events.d.ts +15 -0
  45. package/dist/contracts/schemas/events.d.ts.map +1 -1
  46. package/dist/contracts/schemas/events.js +16 -2
  47. package/dist/contracts/schemas/events.js.map +1 -1
  48. package/dist/contracts/schemas/platform-config.d.ts +45 -0
  49. package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
  50. package/dist/contracts/schemas/platform-config.js +47 -0
  51. package/dist/contracts/schemas/platform-config.js.map +1 -1
  52. package/dist/contracts/schemas/wallet-tx.d.ts +38 -1
  53. package/dist/contracts/schemas/wallet-tx.d.ts.map +1 -1
  54. package/dist/contracts/schemas/wallet-tx.js +32 -3
  55. package/dist/contracts/schemas/wallet-tx.js.map +1 -1
  56. package/dist/engagement/chat/plugin.d.ts +18 -1
  57. package/dist/engagement/chat/plugin.d.ts.map +1 -1
  58. package/dist/engagement/chat-commands/plugin.d.ts +18 -1
  59. package/dist/engagement/chat-commands/plugin.d.ts.map +1 -1
  60. package/dist/engagement/notifications/plugin.d.ts +18 -1
  61. package/dist/engagement/notifications/plugin.d.ts.map +1 -1
  62. package/dist/engagement/social/plugin.d.ts +18 -1
  63. package/dist/engagement/social/plugin.d.ts.map +1 -1
  64. package/dist/engagement/social-transfers/plugin.d.ts +18 -1
  65. package/dist/engagement/social-transfers/plugin.d.ts.map +1 -1
  66. package/dist/iam/plugin.d.ts +18 -1
  67. package/dist/iam/plugin.d.ts.map +1 -1
  68. package/dist/iam/service/iam.service.d.ts +1 -1
  69. package/dist/pam/identity/plugin.d.ts +18 -1
  70. package/dist/pam/identity/plugin.d.ts.map +1 -1
  71. package/dist/pam/player-management/plugin.d.ts +18 -1
  72. package/dist/pam/player-management/plugin.d.ts.map +1 -1
  73. package/dist/pam/player-note/plugin.d.ts +18 -1
  74. package/dist/pam/player-note/plugin.d.ts.map +1 -1
  75. package/dist/pam/profile/plugin.d.ts +18 -1
  76. package/dist/pam/profile/plugin.d.ts.map +1 -1
  77. package/dist/pam/tag/plugin.d.ts +18 -1
  78. package/dist/pam/tag/plugin.d.ts.map +1 -1
  79. package/dist/server/auth/permissions.d.ts +36 -0
  80. package/dist/server/auth/permissions.d.ts.map +1 -1
  81. package/dist/server/auth/permissions.js +6 -0
  82. package/dist/server/auth/permissions.js.map +1 -1
  83. package/dist/server/db/__tests__/query-helpers.test.js +38 -1
  84. package/dist/server/db/__tests__/query-helpers.test.js.map +1 -1
  85. package/dist/server/db/index.d.ts +1 -1
  86. package/dist/server/db/index.d.ts.map +1 -1
  87. package/dist/server/db/index.js +1 -1
  88. package/dist/server/db/index.js.map +1 -1
  89. package/dist/server/db/query-helpers.d.ts +4 -0
  90. package/dist/server/db/query-helpers.d.ts.map +1 -1
  91. package/dist/server/db/query-helpers.js +31 -0
  92. package/dist/server/db/query-helpers.js.map +1 -1
  93. package/dist/server/runtime/core-token-catalog.d.ts +18 -1
  94. package/dist/server/runtime/core-token-catalog.d.ts.map +1 -1
  95. package/dist/server/runtime/core-token-catalog.js +3 -1
  96. package/dist/server/runtime/core-token-catalog.js.map +1 -1
  97. package/dist/testing/mock.d.ts +12 -1
  98. package/dist/testing/mock.d.ts.map +1 -1
  99. package/dist/testing/mock.js +16 -0
  100. package/dist/testing/mock.js.map +1 -1
  101. package/dist/wallet/__tests__/settlement-network.test.d.ts +2 -0
  102. package/dist/wallet/__tests__/settlement-network.test.d.ts.map +1 -0
  103. package/dist/wallet/__tests__/settlement-network.test.js +54 -0
  104. package/dist/wallet/__tests__/settlement-network.test.js.map +1 -0
  105. package/dist/wallet/__tests__/wallet-asset.router.int.test.d.ts +2 -0
  106. package/dist/wallet/__tests__/wallet-asset.router.int.test.d.ts.map +1 -0
  107. package/dist/wallet/__tests__/wallet-asset.router.int.test.js +234 -0
  108. package/dist/wallet/__tests__/wallet-asset.router.int.test.js.map +1 -0
  109. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.js +5 -3
  110. package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.js.map +1 -1
  111. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.js +4 -2
  112. package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.js.map +1 -1
  113. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.js +6 -3
  114. package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.js.map +1 -1
  115. package/dist/wallet/__tests__/wallet-custody-stubs.router.test.d.ts +2 -0
  116. package/dist/wallet/__tests__/wallet-custody-stubs.router.test.d.ts.map +1 -0
  117. package/dist/wallet/__tests__/wallet-custody-stubs.router.test.js +80 -0
  118. package/dist/wallet/__tests__/wallet-custody-stubs.router.test.js.map +1 -0
  119. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.js +2 -1
  120. package/dist/wallet/__tests__/wallet-kyc-gate.int.test.js.map +1 -1
  121. package/dist/wallet/__tests__/wallet-webhook.router.int.test.js +119 -4
  122. package/dist/wallet/__tests__/wallet-webhook.router.int.test.js.map +1 -1
  123. package/dist/wallet/__tests__/wallet.rate-limit.int.test.js +2 -1
  124. package/dist/wallet/__tests__/wallet.rate-limit.int.test.js.map +1 -1
  125. package/dist/wallet/__tests__/wallet.router.int.test.js +23 -3
  126. package/dist/wallet/__tests__/wallet.router.int.test.js.map +1 -1
  127. package/dist/wallet/__tests__/wallet.service.int.test.js +265 -12
  128. package/dist/wallet/__tests__/wallet.service.int.test.js.map +1 -1
  129. package/dist/wallet/adapters/wallet-asset-catalog.service.d.ts +14 -0
  130. package/dist/wallet/adapters/wallet-asset-catalog.service.d.ts.map +1 -0
  131. package/dist/wallet/adapters/wallet-asset-catalog.service.js +37 -0
  132. package/dist/wallet/adapters/wallet-asset-catalog.service.js.map +1 -0
  133. package/dist/wallet/admin-reporting.d.ts +2 -2
  134. package/dist/wallet/contract/index.d.ts +428 -4
  135. package/dist/wallet/contract/index.d.ts.map +1 -1
  136. package/dist/wallet/contract/index.js +203 -5
  137. package/dist/wallet/contract/index.js.map +1 -1
  138. package/dist/wallet/drizzle/migrations/0010_worthless_quasimodo.sql +84 -0
  139. package/dist/wallet/drizzle/migrations/meta/0010_snapshot.json +1565 -0
  140. package/dist/wallet/drizzle/migrations/meta/_journal.json +7 -0
  141. package/dist/wallet/plugin.d.ts +18 -1
  142. package/dist/wallet/plugin.d.ts.map +1 -1
  143. package/dist/wallet/plugin.js +19 -2
  144. package/dist/wallet/plugin.js.map +1 -1
  145. package/dist/wallet/router/index.d.ts +235 -3
  146. package/dist/wallet/router/index.d.ts.map +1 -1
  147. package/dist/wallet/router/index.js +117 -20
  148. package/dist/wallet/router/index.js.map +1 -1
  149. package/dist/wallet/schema/index.d.ts +984 -3
  150. package/dist/wallet/schema/index.d.ts.map +1 -1
  151. package/dist/wallet/schema/index.js +141 -2
  152. package/dist/wallet/schema/index.js.map +1 -1
  153. package/dist/wallet/service/wallet.service.d.ts +70 -6
  154. package/dist/wallet/service/wallet.service.d.ts.map +1 -1
  155. package/dist/wallet/service/wallet.service.js +379 -16
  156. package/dist/wallet/service/wallet.service.js.map +1 -1
  157. package/package.json +1 -1
@@ -62,6 +62,7 @@ declare const _default: {
62
62
  NOTIFICATION_DELIVERY_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").NotificationDeliveryAdapter>;
63
63
  OUTBOX: import("@openora/core/contracts").Token<import("@openora/core/contracts").OutboxWriter>;
64
64
  PAYMENT_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentAdapter>;
65
+ PAYMENT_PROVIDERS: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentProviderRegistry>;
65
66
  PAYMENT_WEBHOOK_VERIFIER: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentWebhookVerifier>;
66
67
  PLATFORM_CONFIG: import("@openora/core/contracts").Token<{
67
68
  features: Record<string, boolean>;
@@ -92,6 +93,21 @@ declare const _default: {
92
93
  } | undefined;
93
94
  wallet?: {
94
95
  cryptoCurrencies?: string[] | undefined;
96
+ sweep?: {
97
+ cron: string;
98
+ feeMultiple: string;
99
+ batchSize: number;
100
+ concurrency: number;
101
+ unknownAfterMinutes: number;
102
+ staleRunAfterMinutes: number;
103
+ } | undefined;
104
+ reconciliation?: {
105
+ cron: string;
106
+ lookbackHours: number;
107
+ stuckAfterMinutes: number;
108
+ staleRunAfterMinutes: number;
109
+ alertThreshold: number;
110
+ } | undefined;
95
111
  } | undefined;
96
112
  registration?: {
97
113
  termsVersion: string;
@@ -104,7 +120,7 @@ declare const _default: {
104
120
  PLAYER_TAGS: import("@openora/core/contracts").Token<import("@openora/core/contracts").PlayerTags>;
105
121
  PLAY_ELIGIBILITY: import("@openora/core/contracts").Token<import("@openora/core/contracts").PlayEligibilityPort>;
106
122
  RAIN_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").RainCommands>;
107
- RATE_LIMITER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RateLimiterAdapter<`register:${string}` | `login:${string}` | `enable2fa:${string}` | `verify2fa:${string}` | `disable2fa:${string}` | `pwreset-req:${string}` | `pwreset-verify:${string}` | `pwreset:${string}` | `change-password:${string}` | `email-verify:${string}` | `verify-email:${string}` | `wallet-mutation:${string}` | `chat-room-join:${string}` | `chat-send:${string}` | `report-access-denied:${string}`>>;
123
+ RATE_LIMITER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RateLimiterAdapter<`register:${string}` | `login:${string}` | `enable2fa:${string}` | `verify2fa:${string}` | `disable2fa:${string}` | `pwreset-req:${string}` | `pwreset-verify:${string}` | `pwreset:${string}` | `change-password:${string}` | `email-verify:${string}` | `verify-email:${string}` | `wallet-mutation:${string}` | `wallet-webhook:${string}` | `chat-room-join:${string}` | `chat-send:${string}` | `report-access-denied:${string}`>>;
108
124
  REALTIME_CLIENT_AUTHORIZER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RealtimeClientAuthorizer>;
109
125
  REALTIME_TRANSPORT: import("@openora/core/contracts").Token<import("@openora/core/contracts").RealtimeTransport>;
110
126
  RNG_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RngAdapter>;
@@ -114,6 +130,7 @@ declare const _default: {
114
130
  SMS_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").SmsAdapter>;
115
131
  SOCIAL_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").SocialCommands>;
116
132
  TAG_EVALUATION_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").TagEvaluationCommands>;
133
+ WALLET_ASSET_CATALOG: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletAssetCatalog, string>;
117
134
  WALLET_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletCommands>;
118
135
  WALLET_READER: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletReader, string>;
119
136
  }>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/pam/player-note/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wBAY8C"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/pam/player-note/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wBAY8C"}
@@ -61,6 +61,7 @@ declare const _default: {
61
61
  NOTIFICATION_DELIVERY_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").NotificationDeliveryAdapter>;
62
62
  OUTBOX: import("@openora/core/contracts").Token<import("@openora/core/contracts").OutboxWriter>;
63
63
  PAYMENT_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentAdapter>;
64
+ PAYMENT_PROVIDERS: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentProviderRegistry>;
64
65
  PAYMENT_WEBHOOK_VERIFIER: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentWebhookVerifier>;
65
66
  PLATFORM_CONFIG: import("@openora/core/contracts").Token<{
66
67
  features: Record<string, boolean>;
@@ -91,6 +92,21 @@ declare const _default: {
91
92
  } | undefined;
92
93
  wallet?: {
93
94
  cryptoCurrencies?: string[] | undefined;
95
+ sweep?: {
96
+ cron: string;
97
+ feeMultiple: string;
98
+ batchSize: number;
99
+ concurrency: number;
100
+ unknownAfterMinutes: number;
101
+ staleRunAfterMinutes: number;
102
+ } | undefined;
103
+ reconciliation?: {
104
+ cron: string;
105
+ lookbackHours: number;
106
+ stuckAfterMinutes: number;
107
+ staleRunAfterMinutes: number;
108
+ alertThreshold: number;
109
+ } | undefined;
94
110
  } | undefined;
95
111
  registration?: {
96
112
  termsVersion: string;
@@ -103,7 +119,7 @@ declare const _default: {
103
119
  PLAYER_TAGS: import("@openora/core/contracts").Token<import("@openora/core/contracts").PlayerTags>;
104
120
  PLAY_ELIGIBILITY: import("@openora/core/contracts").Token<import("@openora/core/contracts").PlayEligibilityPort>;
105
121
  RAIN_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").RainCommands>;
106
- RATE_LIMITER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RateLimiterAdapter<`register:${string}` | `login:${string}` | `enable2fa:${string}` | `verify2fa:${string}` | `disable2fa:${string}` | `pwreset-req:${string}` | `pwreset-verify:${string}` | `pwreset:${string}` | `change-password:${string}` | `email-verify:${string}` | `verify-email:${string}` | `wallet-mutation:${string}` | `chat-room-join:${string}` | `chat-send:${string}` | `report-access-denied:${string}`>>;
122
+ RATE_LIMITER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RateLimiterAdapter<`register:${string}` | `login:${string}` | `enable2fa:${string}` | `verify2fa:${string}` | `disable2fa:${string}` | `pwreset-req:${string}` | `pwreset-verify:${string}` | `pwreset:${string}` | `change-password:${string}` | `email-verify:${string}` | `verify-email:${string}` | `wallet-mutation:${string}` | `wallet-webhook:${string}` | `chat-room-join:${string}` | `chat-send:${string}` | `report-access-denied:${string}`>>;
107
123
  REALTIME_CLIENT_AUTHORIZER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RealtimeClientAuthorizer>;
108
124
  REALTIME_TRANSPORT: import("@openora/core/contracts").Token<import("@openora/core/contracts").RealtimeTransport>;
109
125
  RNG_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RngAdapter>;
@@ -113,6 +129,7 @@ declare const _default: {
113
129
  SMS_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").SmsAdapter>;
114
130
  SOCIAL_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").SocialCommands>;
115
131
  TAG_EVALUATION_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").TagEvaluationCommands>;
132
+ WALLET_ASSET_CATALOG: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletAssetCatalog, string>;
116
133
  WALLET_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletCommands>;
117
134
  WALLET_READER: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletReader, string>;
118
135
  }>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/pam/profile/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,wBAM8C"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/pam/profile/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,wBAM8C"}
@@ -62,6 +62,7 @@ declare const _default: {
62
62
  NOTIFICATION_DELIVERY_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").NotificationDeliveryAdapter>;
63
63
  OUTBOX: import("@openora/core/contracts").Token<import("@openora/core/contracts").OutboxWriter>;
64
64
  PAYMENT_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentAdapter>;
65
+ PAYMENT_PROVIDERS: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentProviderRegistry>;
65
66
  PAYMENT_WEBHOOK_VERIFIER: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentWebhookVerifier>;
66
67
  PLATFORM_CONFIG: import("@openora/core/contracts").Token<{
67
68
  features: Record<string, boolean>;
@@ -92,6 +93,21 @@ declare const _default: {
92
93
  } | undefined;
93
94
  wallet?: {
94
95
  cryptoCurrencies?: string[] | undefined;
96
+ sweep?: {
97
+ cron: string;
98
+ feeMultiple: string;
99
+ batchSize: number;
100
+ concurrency: number;
101
+ unknownAfterMinutes: number;
102
+ staleRunAfterMinutes: number;
103
+ } | undefined;
104
+ reconciliation?: {
105
+ cron: string;
106
+ lookbackHours: number;
107
+ stuckAfterMinutes: number;
108
+ staleRunAfterMinutes: number;
109
+ alertThreshold: number;
110
+ } | undefined;
95
111
  } | undefined;
96
112
  registration?: {
97
113
  termsVersion: string;
@@ -104,7 +120,7 @@ declare const _default: {
104
120
  PLAYER_TAGS: import("@openora/core/contracts").Token<import("@openora/core/contracts").PlayerTags>;
105
121
  PLAY_ELIGIBILITY: import("@openora/core/contracts").Token<import("@openora/core/contracts").PlayEligibilityPort>;
106
122
  RAIN_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").RainCommands>;
107
- RATE_LIMITER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RateLimiterAdapter<`register:${string}` | `login:${string}` | `enable2fa:${string}` | `verify2fa:${string}` | `disable2fa:${string}` | `pwreset-req:${string}` | `pwreset-verify:${string}` | `pwreset:${string}` | `change-password:${string}` | `email-verify:${string}` | `verify-email:${string}` | `wallet-mutation:${string}` | `chat-room-join:${string}` | `chat-send:${string}` | `report-access-denied:${string}`>>;
123
+ RATE_LIMITER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RateLimiterAdapter<`register:${string}` | `login:${string}` | `enable2fa:${string}` | `verify2fa:${string}` | `disable2fa:${string}` | `pwreset-req:${string}` | `pwreset-verify:${string}` | `pwreset:${string}` | `change-password:${string}` | `email-verify:${string}` | `verify-email:${string}` | `wallet-mutation:${string}` | `wallet-webhook:${string}` | `chat-room-join:${string}` | `chat-send:${string}` | `report-access-denied:${string}`>>;
108
124
  REALTIME_CLIENT_AUTHORIZER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RealtimeClientAuthorizer>;
109
125
  REALTIME_TRANSPORT: import("@openora/core/contracts").Token<import("@openora/core/contracts").RealtimeTransport>;
110
126
  RNG_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RngAdapter>;
@@ -114,6 +130,7 @@ declare const _default: {
114
130
  SMS_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").SmsAdapter>;
115
131
  SOCIAL_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").SocialCommands>;
116
132
  TAG_EVALUATION_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").TagEvaluationCommands>;
133
+ WALLET_ASSET_CATALOG: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletAssetCatalog, string>;
117
134
  WALLET_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletCommands>;
118
135
  WALLET_READER: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletReader, string>;
119
136
  }>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/pam/tag/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,wBAiF8C"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/pam/tag/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,wBAiF8C"}
@@ -19,6 +19,9 @@ export declare const statement: {
19
19
  readonly tag: readonly ["view", "create", "delete"];
20
20
  readonly 'chat-room': readonly ["view", "create", "update", "delete"];
21
21
  readonly 'auto-withdrawal-config': readonly ["view", "update"];
22
+ readonly 'wallet-asset': readonly ["view", "create", "update", "delete"];
23
+ readonly 'wallet-custody': readonly ["view", "run"];
24
+ readonly 'wallet-reconciliation': readonly ["view", "resolve", "run"];
22
25
  readonly 'chat-command': readonly ["view", "update"];
23
26
  readonly 'chat-moderation': readonly ["view", "moderate"];
24
27
  };
@@ -44,6 +47,9 @@ export declare const ac: {
44
47
  readonly tag: readonly ["view", "create", "delete"];
45
48
  readonly 'chat-room': readonly ["view", "create", "update", "delete"];
46
49
  readonly 'auto-withdrawal-config': readonly ["view", "update"];
50
+ readonly 'wallet-asset': readonly ["view", "create", "update", "delete"];
51
+ readonly 'wallet-custody': readonly ["view", "run"];
52
+ readonly 'wallet-reconciliation': readonly ["view", "resolve", "run"];
47
53
  readonly 'chat-command': readonly ["view", "update"];
48
54
  readonly 'chat-moderation': readonly ["view", "moderate"];
49
55
  }, TRoleStatements>): import("better-auth/plugins/access").Role<import("better-auth/plugins/access").ExactRoleStatements<TRoleStatements>, {
@@ -67,6 +73,9 @@ export declare const ac: {
67
73
  readonly tag: readonly ["view", "create", "delete"];
68
74
  readonly 'chat-room': readonly ["view", "create", "update", "delete"];
69
75
  readonly 'auto-withdrawal-config': readonly ["view", "update"];
76
+ readonly 'wallet-asset': readonly ["view", "create", "update", "delete"];
77
+ readonly 'wallet-custody': readonly ["view", "run"];
78
+ readonly 'wallet-reconciliation': readonly ["view", "resolve", "run"];
70
79
  readonly 'chat-command': readonly ["view", "update"];
71
80
  readonly 'chat-moderation': readonly ["view", "moderate"];
72
81
  }>;
@@ -91,6 +100,9 @@ export declare const ac: {
91
100
  readonly tag: readonly ["view", "create", "delete"];
92
101
  readonly 'chat-room': readonly ["view", "create", "update", "delete"];
93
102
  readonly 'auto-withdrawal-config': readonly ["view", "update"];
103
+ readonly 'wallet-asset': readonly ["view", "create", "update", "delete"];
104
+ readonly 'wallet-custody': readonly ["view", "run"];
105
+ readonly 'wallet-reconciliation': readonly ["view", "resolve", "run"];
94
106
  readonly 'chat-command': readonly ["view", "update"];
95
107
  readonly 'chat-moderation': readonly ["view", "moderate"];
96
108
  };
@@ -116,6 +128,9 @@ export declare const adminRole: import("better-auth/plugins/access").Role<import
116
128
  readonly tag: ["view", "create", "delete"];
117
129
  readonly 'chat-room': ["view", "create", "update", "delete"];
118
130
  readonly 'auto-withdrawal-config': ["view", "update"];
131
+ readonly 'wallet-asset': ["view", "create", "update", "delete"];
132
+ readonly 'wallet-custody': ["view", "run"];
133
+ readonly 'wallet-reconciliation': ["view", "resolve", "run"];
119
134
  readonly 'chat-command': ["view", "update"];
120
135
  readonly 'chat-moderation': ["view", "moderate"];
121
136
  }>, {
@@ -139,6 +154,9 @@ export declare const adminRole: import("better-auth/plugins/access").Role<import
139
154
  readonly tag: readonly ["view", "create", "delete"];
140
155
  readonly 'chat-room': readonly ["view", "create", "update", "delete"];
141
156
  readonly 'auto-withdrawal-config': readonly ["view", "update"];
157
+ readonly 'wallet-asset': readonly ["view", "create", "update", "delete"];
158
+ readonly 'wallet-custody': readonly ["view", "run"];
159
+ readonly 'wallet-reconciliation': readonly ["view", "resolve", "run"];
142
160
  readonly 'chat-command': readonly ["view", "update"];
143
161
  readonly 'chat-moderation': readonly ["view", "moderate"];
144
162
  }>;
@@ -169,6 +187,9 @@ export declare const supportRole: import("better-auth/plugins/access").Role<impo
169
187
  readonly tag: readonly ["view", "create", "delete"];
170
188
  readonly 'chat-room': readonly ["view", "create", "update", "delete"];
171
189
  readonly 'auto-withdrawal-config': readonly ["view", "update"];
190
+ readonly 'wallet-asset': readonly ["view", "create", "update", "delete"];
191
+ readonly 'wallet-custody': readonly ["view", "run"];
192
+ readonly 'wallet-reconciliation': readonly ["view", "resolve", "run"];
172
193
  readonly 'chat-command': readonly ["view", "update"];
173
194
  readonly 'chat-moderation': readonly ["view", "moderate"];
174
195
  }>;
@@ -196,6 +217,9 @@ export declare const contentManagerRole: import("better-auth/plugins/access").Ro
196
217
  readonly tag: readonly ["view", "create", "delete"];
197
218
  readonly 'chat-room': readonly ["view", "create", "update", "delete"];
198
219
  readonly 'auto-withdrawal-config': readonly ["view", "update"];
220
+ readonly 'wallet-asset': readonly ["view", "create", "update", "delete"];
221
+ readonly 'wallet-custody': readonly ["view", "run"];
222
+ readonly 'wallet-reconciliation': readonly ["view", "resolve", "run"];
199
223
  readonly 'chat-command': readonly ["view", "update"];
200
224
  readonly 'chat-moderation': readonly ["view", "moderate"];
201
225
  }>;
@@ -221,6 +245,9 @@ export declare const roles: {
221
245
  readonly tag: ["view", "create", "delete"];
222
246
  readonly 'chat-room': ["view", "create", "update", "delete"];
223
247
  readonly 'auto-withdrawal-config': ["view", "update"];
248
+ readonly 'wallet-asset': ["view", "create", "update", "delete"];
249
+ readonly 'wallet-custody': ["view", "run"];
250
+ readonly 'wallet-reconciliation': ["view", "resolve", "run"];
224
251
  readonly 'chat-command': ["view", "update"];
225
252
  readonly 'chat-moderation': ["view", "moderate"];
226
253
  }>, {
@@ -244,6 +271,9 @@ export declare const roles: {
244
271
  readonly tag: readonly ["view", "create", "delete"];
245
272
  readonly 'chat-room': readonly ["view", "create", "update", "delete"];
246
273
  readonly 'auto-withdrawal-config': readonly ["view", "update"];
274
+ readonly 'wallet-asset': readonly ["view", "create", "update", "delete"];
275
+ readonly 'wallet-custody': readonly ["view", "run"];
276
+ readonly 'wallet-reconciliation': readonly ["view", "resolve", "run"];
247
277
  readonly 'chat-command': readonly ["view", "update"];
248
278
  readonly 'chat-moderation': readonly ["view", "moderate"];
249
279
  }>;
@@ -274,6 +304,9 @@ export declare const roles: {
274
304
  readonly tag: readonly ["view", "create", "delete"];
275
305
  readonly 'chat-room': readonly ["view", "create", "update", "delete"];
276
306
  readonly 'auto-withdrawal-config': readonly ["view", "update"];
307
+ readonly 'wallet-asset': readonly ["view", "create", "update", "delete"];
308
+ readonly 'wallet-custody': readonly ["view", "run"];
309
+ readonly 'wallet-reconciliation': readonly ["view", "resolve", "run"];
277
310
  readonly 'chat-command': readonly ["view", "update"];
278
311
  readonly 'chat-moderation': readonly ["view", "moderate"];
279
312
  }>;
@@ -301,6 +334,9 @@ export declare const roles: {
301
334
  readonly tag: readonly ["view", "create", "delete"];
302
335
  readonly 'chat-room': readonly ["view", "create", "update", "delete"];
303
336
  readonly 'auto-withdrawal-config': readonly ["view", "update"];
337
+ readonly 'wallet-asset': readonly ["view", "create", "update", "delete"];
338
+ readonly 'wallet-custody': readonly ["view", "run"];
339
+ readonly 'wallet-reconciliation': readonly ["view", "resolve", "run"];
304
340
  readonly 'chat-command': readonly ["view", "update"];
305
341
  readonly 'chat-moderation': readonly ["view", "moderate"];
306
342
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/server/auth/permissions.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;CAuBZ,CAAC;AAEX,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiC,CAAC;AAEjD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBpB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMtB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIR,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,KAAK,CAAC;AAC1C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,SAAS,CAAC;AAClD,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/server/auth/permissions.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BZ,CAAC;AAEX,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiC,CAAC;AAEjD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BpB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMtB,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG7B,CAAC;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIR,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,KAAK,CAAC;AAC1C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,SAAS,CAAC;AAClD,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -20,6 +20,9 @@ export const statement = {
20
20
  tag: ['view', 'create', 'delete'],
21
21
  'chat-room': ['view', 'create', 'update', 'delete'],
22
22
  'auto-withdrawal-config': ['view', 'update'],
23
+ 'wallet-asset': ['view', 'create', 'update', 'delete'],
24
+ 'wallet-custody': ['view', 'run'],
25
+ 'wallet-reconciliation': ['view', 'resolve', 'run'],
23
26
  'chat-command': ['view', 'update'],
24
27
  'chat-moderation': ['view', 'moderate'],
25
28
  };
@@ -45,6 +48,9 @@ export const adminRole = ac.newRole({
45
48
  tag: ['view', 'create', 'delete'],
46
49
  'chat-room': ['view', 'create', 'update', 'delete'],
47
50
  'auto-withdrawal-config': ['view', 'update'],
51
+ 'wallet-asset': ['view', 'create', 'update', 'delete'],
52
+ 'wallet-custody': ['view', 'run'],
53
+ 'wallet-reconciliation': ['view', 'resolve', 'run'],
48
54
  'chat-command': ['view', 'update'],
49
55
  'chat-moderation': ['view', 'moderate'],
50
56
  });
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/server/auth/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/server/auth/permissions.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from 'vitest';
2
- import { findOneOrThrow, pageToOffset, moneyToNumber, moneyEquals, mapConcurrent, } from '../query-helpers.js';
2
+ import { findOneOrThrow, pageToOffset, moneyToNumber, moneyEquals, moneyCompare, moneyScaleBy, mapConcurrent, } from '../query-helpers.js';
3
3
  describe('findOneOrThrow', () => {
4
4
  it('returns the first row when present', () => {
5
5
  expect(findOneOrThrow([{ id: '1' }, { id: '2' }], new Error('nope'))).toEqual({ id: '1' });
@@ -47,6 +47,43 @@ describe('moneyEquals', () => {
47
47
  expect(moneyToNumber('1.000000000000000001')).toBe(moneyToNumber('1.000000000000000002'));
48
48
  });
49
49
  });
50
+ describe('moneyCompare', () => {
51
+ it('orders two amounts written at different scales', () => {
52
+ expect(moneyCompare('9.00', '10.00')).toBe(-1);
53
+ expect(moneyCompare('10.00', '9.00')).toBe(1);
54
+ expect(moneyCompare('10', '10.00')).toBe(0);
55
+ });
56
+ it('separates two amounts that differ by one wei, where moneyToNumber cannot', () => {
57
+ expect(moneyCompare('1.000000000000000001', '1.000000000000000002')).toBe(-1);
58
+ expect(moneyCompare('1.000000000000000002', '1.000000000000000001')).toBe(1);
59
+ expect(moneyToNumber('1.000000000000000001')).toBe(moneyToNumber('1.000000000000000002'));
60
+ });
61
+ it('orders correctly at the margin where a float compare gives the wrong answer', () => {
62
+ // moneyToNumber demonstrably breaks here: both round to the same float, so a
63
+ // float-based compare reports them equal (or reverses order) instead of a<b.
64
+ const a = '123456789012345678.000000000000000001';
65
+ const b = '123456789012345678.000000000000000002';
66
+ expect(moneyCompare(a, b)).toBe(-1);
67
+ expect(moneyToNumber(a)).toBe(moneyToNumber(b));
68
+ });
69
+ });
70
+ describe('moneyScaleBy', () => {
71
+ it('multiplies exactly', () => {
72
+ expect(moneyScaleBy('10', '5')).toBe('50.000000000000000000');
73
+ expect(moneyScaleBy('0.1', '3')).toBe('0.300000000000000000');
74
+ });
75
+ it('scales a whole amount by a fee multiple', () => {
76
+ expect(moneyScaleBy('2.50', '5')).toBe('12.500000000000000000');
77
+ });
78
+ it('is exact where a float multiplication would drift', () => {
79
+ // 0.1 * 3 famously drifts to 0.30000000000000004 in JS float arithmetic.
80
+ expect(0.1 * 3).not.toBe(0.3);
81
+ expect(moneyScaleBy('0.1', '3')).toBe('0.300000000000000000');
82
+ });
83
+ it('truncates past MONEY_SCALE rather than rounding up', () => {
84
+ expect(moneyScaleBy('1.000000000000000001', '0.5')).toBe('0.500000000000000000');
85
+ });
86
+ });
50
87
  describe('mapConcurrent', () => {
51
88
  const identity = async (n) => n * 2;
52
89
  it('returns results in input order, not completion order', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"query-helpers.test.js","sourceRoot":"","sources":["../../../../src/server/db/__tests__/query-helpers.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-helpers.test.js","sourceRoot":"","sources":["../../../../src/server/db/__tests__/query-helpers.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export { DrizzleService, DRIZZLE } from './drizzle.service.js';
2
2
  export { createDrizzleDb, type DrizzleDb, type DrizzleTx } from './drizzle.js';
3
- export { findOneOrThrow, pageToOffset, withAdvisoryXactLock, moneyToNumber, moneyEquals, mapConcurrent, } from './query-helpers.js';
3
+ export { findOneOrThrow, pageToOffset, withAdvisoryXactLock, moneyToNumber, moneyEquals, moneyCompare, moneyScaleBy, moneyAdd, moneySubtract, mapConcurrent, } from './query-helpers.js';
4
4
  export { eventOutbox, type EventOutboxRow } from './outbox/schema.js';
5
5
  export { DrizzleOutboxWriter } from './outbox/writer.js';
6
6
  export { OutboxRelay, type OutboxRelayOptions } from './outbox/relay.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EACL,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIzE,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EACL,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIzE,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export { DrizzleService, DRIZZLE } from './drizzle.service.js';
2
2
  export { createDrizzleDb } from './drizzle.js';
3
- export { findOneOrThrow, pageToOffset, withAdvisoryXactLock, moneyToNumber, moneyEquals, mapConcurrent, } from './query-helpers.js';
3
+ export { findOneOrThrow, pageToOffset, withAdvisoryXactLock, moneyToNumber, moneyEquals, moneyCompare, moneyScaleBy, moneyAdd, moneySubtract, mapConcurrent, } from './query-helpers.js';
4
4
  // Transactional outbox - writer binds atomically with the state change; relay publishes to MESSAGE_BROKER. See ADR-0016.
5
5
  export { eventOutbox } from './outbox/schema.js';
6
6
  export { DrizzleOutboxWriter } from './outbox/writer.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAkC,MAAM,cAAc,CAAC;AAC/E,OAAO,EACL,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,yHAAyH;AACzH,OAAO,EAAE,WAAW,EAAuB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAA2B,MAAM,mBAAmB,CAAC;AAEzE,8FAA8F;AAC9F,sGAAsG;AACtG,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAkC,MAAM,cAAc,CAAC;AAC/E,OAAO,EACL,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,yHAAyH;AACzH,OAAO,EAAE,WAAW,EAAuB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAA2B,MAAM,mBAAmB,CAAC;AAEzE,8FAA8F;AAC9F,sGAAsG;AACtG,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC"}
@@ -3,6 +3,10 @@ export declare function findOneOrThrow<T>(rows: T[], error: Error): T;
3
3
  export declare function pageToOffset(page: number, limit: number): number;
4
4
  export declare function moneyToNumber(amount: string): number;
5
5
  export declare function moneyEquals(a: string, b: string): boolean;
6
+ export declare function moneyCompare(a: string, b: string): -1 | 0 | 1;
7
+ export declare function moneyScaleBy(amount: string, factor: string): string;
8
+ export declare function moneyAdd(a: string, b: string): string;
9
+ export declare function moneySubtract(a: string, b: string): string;
6
10
  export declare function mapConcurrent<T, R>(items: readonly T[], concurrency: number, fn: (item: T, index: number) => Promise<R>): Promise<R[]>;
7
11
  export declare function withAdvisoryXactLock<T>(txn: DrizzleTx, key: string, fn: () => Promise<T>): Promise<T>;
8
12
  //# sourceMappingURL=query-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-helpers.d.ts","sourceRoot":"","sources":["../../../src/server/db/query-helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAM5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAEvD;AAMD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAMD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEzD;AAYD,wBAAsB,aAAa,CAAC,CAAC,EAAE,CAAC,EACtC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GACzC,OAAO,CAAC,CAAC,EAAE,CAAC,CAad;AAID,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAGZ"}
1
+ {"version":3,"file":"query-helpers.d.ts","sourceRoot":"","sources":["../../../src/server/db/query-helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,CAM5D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAEvD;AAMD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAMD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEzD;AAkBD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAG7D;AAKD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGnE;AAMD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAOD,wBAAsB,aAAa,CAAC,CAAC,EAAE,CAAC,EACtC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GACzC,OAAO,CAAC,CAAC,EAAE,CAAC,CAad;AAID,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAGZ"}
@@ -28,6 +28,37 @@ function toMinorUnits(amount) {
28
28
  const [whole, fraction = ''] = amount.split('.');
29
29
  return BigInt(whole + fraction.padEnd(MONEY_SCALE, '0').slice(0, MONEY_SCALE));
30
30
  }
31
+ function fromMinorUnits(units) {
32
+ const digits = units.toString().padStart(MONEY_SCALE + 1, '0');
33
+ const whole = digits.slice(0, -MONEY_SCALE);
34
+ const fraction = digits.slice(-MONEY_SCALE);
35
+ return `${whole}.${fraction}`;
36
+ }
37
+ // Exact three-way compare for two decimal-string money amounts. Never route this through
38
+ // moneyToNumber for the same reason moneyEquals doesn't: a float carries ~15 significant
39
+ // digits, so at MONEY_SCALE (18) two genuinely different amounts can compare equal, or
40
+ // worse, order backwards.
41
+ export function moneyCompare(a, b) {
42
+ const diff = toMinorUnits(a) - toMinorUnits(b);
43
+ return diff < 0n ? -1 : diff > 0n ? 1 : 0;
44
+ }
45
+ // Exact decimal multiplication of two money amounts (`amount * factor`), via the same
46
+ // bigint minor-units path as moneyEquals/moneyCompare - never JS float. Both operands are
47
+ // non-negative decimal strings; the result is truncated (not rounded) to MONEY_SCALE.
48
+ export function moneyScaleBy(amount, factor) {
49
+ const product = (toMinorUnits(amount) * toMinorUnits(factor)) / 10n ** BigInt(MONEY_SCALE);
50
+ return fromMinorUnits(product);
51
+ }
52
+ // Exact decimal addition and subtraction over the same bigint minor-units path. Used to
53
+ // derive one side of a balance change from the other: reading the balance separately and
54
+ // then updating it leaves a window for a concurrent writer, and an append-only audit row
55
+ // that records the wrong `before` cannot be corrected afterwards.
56
+ export function moneyAdd(a, b) {
57
+ return fromMinorUnits(toMinorUnits(a) + toMinorUnits(b));
58
+ }
59
+ export function moneySubtract(a, b) {
60
+ return fromMinorUnits(toMinorUnits(a) - toMinorUnits(b));
61
+ }
31
62
  // Run `fn` over `items` with at most `concurrency` promises in flight, results in input
32
63
  // order. Use this instead of `Promise.all(items.map(fn))` whenever `items` comes from a
33
64
  // query (unbounded) and `fn` touches the DB: an uncapped fan-out opens one pool connection
@@ -1 +1 @@
1
- {"version":3,"file":"query-helpers.js","sourceRoot":"","sources":["../../../src/server/db/query-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,MAAM,UAAU,cAAc,CAAI,IAAS,EAAE,KAAY;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACtD,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED,oFAAoF;AACpF,uFAAuF;AACvF,qFAAqF;AACrF,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,6FAA6F;AAC7F,wFAAwF;AACxF,sFAAsF;AACtF,sFAAsF;AACtF,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS;IAC9C,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,wFAAwF;AACxF,wFAAwF;AACxF,2FAA2F;AAC3F,4FAA4F;AAC5F,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAmB,EACnB,WAAmB,EACnB,EAA0C;IAE1C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC;YACrB,MAAM,IAAI,CAAC,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0FAA0F;AAC1F,wHAAwH;AACxH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAc,EACd,GAAW,EACX,EAAoB;IAEpB,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAA,yCAAyC,GAAG,IAAI,CAAC,CAAC;IACvE,OAAO,EAAE,EAAE,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"query-helpers.js","sourceRoot":"","sources":["../../../src/server/db/query-helpers.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,7 @@ declare const coreTokenCatalog: {
59
59
  NOTIFICATION_DELIVERY_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").NotificationDeliveryAdapter>;
60
60
  OUTBOX: import("@openora/core/contracts").Token<import("@openora/core/contracts").OutboxWriter>;
61
61
  PAYMENT_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentAdapter>;
62
+ PAYMENT_PROVIDERS: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentProviderRegistry>;
62
63
  PAYMENT_WEBHOOK_VERIFIER: import("@openora/core/contracts").Token<import("@openora/core/contracts").PaymentWebhookVerifier>;
63
64
  PLATFORM_CONFIG: import("@openora/core/contracts").Token<{
64
65
  features: Record<string, boolean>;
@@ -89,6 +90,21 @@ declare const coreTokenCatalog: {
89
90
  } | undefined;
90
91
  wallet?: {
91
92
  cryptoCurrencies?: string[] | undefined;
93
+ sweep?: {
94
+ cron: string;
95
+ feeMultiple: string;
96
+ batchSize: number;
97
+ concurrency: number;
98
+ unknownAfterMinutes: number;
99
+ staleRunAfterMinutes: number;
100
+ } | undefined;
101
+ reconciliation?: {
102
+ cron: string;
103
+ lookbackHours: number;
104
+ stuckAfterMinutes: number;
105
+ staleRunAfterMinutes: number;
106
+ alertThreshold: number;
107
+ } | undefined;
92
108
  } | undefined;
93
109
  registration?: {
94
110
  termsVersion: string;
@@ -101,7 +117,7 @@ declare const coreTokenCatalog: {
101
117
  PLAYER_TAGS: import("@openora/core/contracts").Token<import("@openora/core/contracts").PlayerTags>;
102
118
  PLAY_ELIGIBILITY: import("@openora/core/contracts").Token<import("@openora/core/contracts").PlayEligibilityPort>;
103
119
  RAIN_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").RainCommands>;
104
- RATE_LIMITER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RateLimiterAdapter<`register:${string}` | `login:${string}` | `enable2fa:${string}` | `verify2fa:${string}` | `disable2fa:${string}` | `pwreset-req:${string}` | `pwreset-verify:${string}` | `pwreset:${string}` | `change-password:${string}` | `email-verify:${string}` | `verify-email:${string}` | `wallet-mutation:${string}` | `chat-room-join:${string}` | `chat-send:${string}` | `report-access-denied:${string}`>>;
120
+ RATE_LIMITER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RateLimiterAdapter<`register:${string}` | `login:${string}` | `enable2fa:${string}` | `verify2fa:${string}` | `disable2fa:${string}` | `pwreset-req:${string}` | `pwreset-verify:${string}` | `pwreset:${string}` | `change-password:${string}` | `email-verify:${string}` | `verify-email:${string}` | `wallet-mutation:${string}` | `wallet-webhook:${string}` | `chat-room-join:${string}` | `chat-send:${string}` | `report-access-denied:${string}`>>;
105
121
  REALTIME_CLIENT_AUTHORIZER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RealtimeClientAuthorizer>;
106
122
  REALTIME_TRANSPORT: import("@openora/core/contracts").Token<import("@openora/core/contracts").RealtimeTransport>;
107
123
  RNG_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").RngAdapter>;
@@ -111,6 +127,7 @@ declare const coreTokenCatalog: {
111
127
  SMS_ADAPTER: import("@openora/core/contracts").Token<import("@openora/core/contracts").SmsAdapter>;
112
128
  SOCIAL_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").SocialCommands>;
113
129
  TAG_EVALUATION_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").TagEvaluationCommands>;
130
+ WALLET_ASSET_CATALOG: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletAssetCatalog, string>;
114
131
  WALLET_COMMANDS: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletCommands>;
115
132
  WALLET_READER: import("@openora/core/contracts").Token<import("@openora/core/contracts").WalletReader, string>;
116
133
  };
@@ -1 +1 @@
1
- {"version":3,"file":"core-token-catalog.d.ts","sourceRoot":"","sources":["../../../src/server/runtime/core-token-catalog.ts"],"names":[],"mappings":"AA0DA,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDE,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC"}
1
+ {"version":3,"file":"core-token-catalog.d.ts","sourceRoot":"","sources":["../../../src/server/runtime/core-token-catalog.ts"],"names":[],"mappings":"AA4DA,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DE,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ADMIN_GAME_REPORTING, ADMIN_PERMISSION_RESOLVER, ADMIN_PLAYER_ACTIVITY, ADMIN_ROLE_ASSIGNMENT_DIRECTORY, ADMIN_USER_DIRECTORY, ADMIN_WALLET_REPORTING, AUDIT_WRITER, CACHE, CHAT_BLOCK_WRITER, CHAT_MODERATION, CHAT_REALTIME_CLIENT_AUTHORIZER, CHAT_REALTIME_TRANSPORT, CHAT_ROOM_ACCESS, CHAT_SYSTEM_WRITER, EMAIL_TEMPLATE_RENDERER, ERROR_TRACKING, GAME_ADAPTER, GEO_CHECK_COMMANDS, GEO_IP_ADAPTER, GIFT_COMMANDS, IDENTITY_OPTIONS, IDENTITY_READER, IGAMING_CONFIG, JOB_QUEUE, KYC_ADAPTER, KYC_STATUS_WRITER, KYC_WEBHOOK_VERIFIER, LOGIN_ENFORCEMENT, MESSAGE_BROKER, NOTIFICATION_DELIVERY_ADAPTER, OUTBOX, PAYMENT_ADAPTER, PAYMENT_WEBHOOK_VERIFIER, PLATFORM_CONFIG, PLAYER_ACTIVITY_TRACKER, PLAYER_PROVISIONING, PLAYER_TAGS, PLAY_ELIGIBILITY, RAIN_COMMANDS, RATE_LIMITER, REALTIME_CLIENT_AUTHORIZER, REALTIME_TRANSPORT, RNG_ADAPTER, SEND_EMAIL, SESSION_COMMANDS, USER_COMMANDS, SMS_ADAPTER, SOCIAL_COMMANDS, TAG_EVALUATION_COMMANDS, WALLET_COMMANDS, WALLET_READER, } from '@openora/core/contracts';
1
+ import { ADMIN_GAME_REPORTING, ADMIN_PERMISSION_RESOLVER, ADMIN_PLAYER_ACTIVITY, ADMIN_ROLE_ASSIGNMENT_DIRECTORY, ADMIN_USER_DIRECTORY, ADMIN_WALLET_REPORTING, AUDIT_WRITER, CACHE, CHAT_BLOCK_WRITER, CHAT_MODERATION, CHAT_REALTIME_CLIENT_AUTHORIZER, CHAT_REALTIME_TRANSPORT, CHAT_ROOM_ACCESS, CHAT_SYSTEM_WRITER, EMAIL_TEMPLATE_RENDERER, ERROR_TRACKING, GAME_ADAPTER, GEO_CHECK_COMMANDS, GEO_IP_ADAPTER, GIFT_COMMANDS, IDENTITY_OPTIONS, IDENTITY_READER, IGAMING_CONFIG, JOB_QUEUE, KYC_ADAPTER, KYC_STATUS_WRITER, KYC_WEBHOOK_VERIFIER, LOGIN_ENFORCEMENT, MESSAGE_BROKER, NOTIFICATION_DELIVERY_ADAPTER, OUTBOX, PAYMENT_ADAPTER, PAYMENT_PROVIDERS, PAYMENT_WEBHOOK_VERIFIER, PLATFORM_CONFIG, PLAYER_ACTIVITY_TRACKER, PLAYER_PROVISIONING, PLAYER_TAGS, PLAY_ELIGIBILITY, RAIN_COMMANDS, RATE_LIMITER, REALTIME_CLIENT_AUTHORIZER, REALTIME_TRANSPORT, RNG_ADAPTER, SEND_EMAIL, SESSION_COMMANDS, USER_COMMANDS, SMS_ADAPTER, SOCIAL_COMMANDS, TAG_EVALUATION_COMMANDS, WALLET_ASSET_CATALOG, WALLET_COMMANDS, WALLET_READER, } from '@openora/core/contracts';
2
2
  import { ADMIN_GUARD, AUTH_SESSION } from '../auth/index.js';
3
3
  import { DRIZZLE } from '../db/index.js';
4
4
  import { EVENT_BUS } from '../kernel/index.js';
@@ -39,6 +39,7 @@ const coreTokenCatalog = {
39
39
  NOTIFICATION_DELIVERY_ADAPTER,
40
40
  OUTBOX,
41
41
  PAYMENT_ADAPTER,
42
+ PAYMENT_PROVIDERS,
42
43
  PAYMENT_WEBHOOK_VERIFIER,
43
44
  PLATFORM_CONFIG,
44
45
  PLAYER_ACTIVITY_TRACKER,
@@ -56,6 +57,7 @@ const coreTokenCatalog = {
56
57
  SMS_ADAPTER,
57
58
  SOCIAL_COMMANDS,
58
59
  TAG_EVALUATION_COMMANDS,
60
+ WALLET_ASSET_CATALOG,
59
61
  WALLET_COMMANDS,
60
62
  WALLET_READER,
61
63
  };