@openora/core 0.4.1-canary.92 → 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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/admin-console/contract/index.d.ts +12 -0
- package/dist/admin-console/contract/index.d.ts.map +1 -1
- package/dist/admin-console/plugin.d.ts +18 -1
- package/dist/admin-console/plugin.d.ts.map +1 -1
- package/dist/admin-console/router/index.d.ts +6 -0
- package/dist/admin-console/router/index.d.ts.map +1 -1
- package/dist/analytics/plugin.d.ts +18 -1
- package/dist/analytics/plugin.d.ts.map +1 -1
- package/dist/audit/plugin.d.ts +18 -1
- package/dist/audit/plugin.d.ts.map +1 -1
- package/dist/casino/gaming/plugin.d.ts +18 -1
- package/dist/casino/gaming/plugin.d.ts.map +1 -1
- package/dist/casino/lobby/plugin.d.ts +18 -1
- package/dist/casino/lobby/plugin.d.ts.map +1 -1
- package/dist/cms/plugin.d.ts +18 -1
- package/dist/cms/plugin.d.ts.map +1 -1
- package/dist/compliance/plugin.d.ts +18 -1
- package/dist/compliance/plugin.d.ts.map +1 -1
- package/dist/contracts/adapters/audit.d.ts +1 -1
- package/dist/contracts/adapters/audit.d.ts.map +1 -1
- package/dist/contracts/adapters/audit.js.map +1 -1
- package/dist/contracts/adapters/index.d.ts +4 -2
- package/dist/contracts/adapters/index.d.ts.map +1 -1
- package/dist/contracts/adapters/index.js +2 -1
- package/dist/contracts/adapters/index.js.map +1 -1
- package/dist/contracts/adapters/payment.d.ts +99 -0
- package/dist/contracts/adapters/payment.d.ts.map +1 -1
- package/dist/contracts/adapters/payment.js +6 -0
- package/dist/contracts/adapters/payment.js.map +1 -1
- package/dist/contracts/adapters/rate-limit.d.ts +1 -0
- package/dist/contracts/adapters/rate-limit.d.ts.map +1 -1
- package/dist/contracts/adapters/rate-limit.js +1 -0
- package/dist/contracts/adapters/rate-limit.js.map +1 -1
- package/dist/contracts/adapters/wallet-asset-catalog.d.ts +34 -0
- package/dist/contracts/adapters/wallet-asset-catalog.d.ts.map +1 -0
- package/dist/contracts/adapters/wallet-asset-catalog.js +3 -0
- package/dist/contracts/adapters/wallet-asset-catalog.js.map +1 -0
- package/dist/contracts/schemas/__tests__/common-schemas.test.js +2 -1
- package/dist/contracts/schemas/__tests__/common-schemas.test.js.map +1 -1
- package/dist/contracts/schemas/common.d.ts.map +1 -1
- package/dist/contracts/schemas/common.js +7 -4
- package/dist/contracts/schemas/common.js.map +1 -1
- package/dist/contracts/schemas/events.d.ts +15 -0
- package/dist/contracts/schemas/events.d.ts.map +1 -1
- package/dist/contracts/schemas/events.js +16 -2
- package/dist/contracts/schemas/events.js.map +1 -1
- package/dist/contracts/schemas/platform-config.d.ts +45 -0
- package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
- package/dist/contracts/schemas/platform-config.js +47 -0
- package/dist/contracts/schemas/platform-config.js.map +1 -1
- package/dist/contracts/schemas/wallet-tx.d.ts +38 -1
- package/dist/contracts/schemas/wallet-tx.d.ts.map +1 -1
- package/dist/contracts/schemas/wallet-tx.js +32 -3
- package/dist/contracts/schemas/wallet-tx.js.map +1 -1
- package/dist/engagement/chat/plugin.d.ts +18 -1
- package/dist/engagement/chat/plugin.d.ts.map +1 -1
- package/dist/engagement/chat-commands/plugin.d.ts +18 -1
- package/dist/engagement/chat-commands/plugin.d.ts.map +1 -1
- package/dist/engagement/notifications/plugin.d.ts +18 -1
- package/dist/engagement/notifications/plugin.d.ts.map +1 -1
- package/dist/engagement/social/plugin.d.ts +18 -1
- package/dist/engagement/social/plugin.d.ts.map +1 -1
- package/dist/engagement/social-transfers/plugin.d.ts +18 -1
- package/dist/engagement/social-transfers/plugin.d.ts.map +1 -1
- package/dist/iam/plugin.d.ts +18 -1
- package/dist/iam/plugin.d.ts.map +1 -1
- package/dist/iam/service/iam.service.d.ts +1 -1
- package/dist/pam/identity/plugin.d.ts +18 -1
- package/dist/pam/identity/plugin.d.ts.map +1 -1
- package/dist/pam/player-management/plugin.d.ts +18 -1
- package/dist/pam/player-management/plugin.d.ts.map +1 -1
- package/dist/pam/player-note/plugin.d.ts +18 -1
- package/dist/pam/player-note/plugin.d.ts.map +1 -1
- package/dist/pam/profile/plugin.d.ts +18 -1
- package/dist/pam/profile/plugin.d.ts.map +1 -1
- package/dist/pam/tag/plugin.d.ts +18 -1
- package/dist/pam/tag/plugin.d.ts.map +1 -1
- package/dist/server/auth/permissions.d.ts +36 -0
- package/dist/server/auth/permissions.d.ts.map +1 -1
- package/dist/server/auth/permissions.js +6 -0
- package/dist/server/auth/permissions.js.map +1 -1
- package/dist/server/db/__tests__/query-helpers.test.js +38 -1
- package/dist/server/db/__tests__/query-helpers.test.js.map +1 -1
- package/dist/server/db/index.d.ts +1 -1
- package/dist/server/db/index.d.ts.map +1 -1
- package/dist/server/db/index.js +1 -1
- package/dist/server/db/index.js.map +1 -1
- package/dist/server/db/query-helpers.d.ts +4 -0
- package/dist/server/db/query-helpers.d.ts.map +1 -1
- package/dist/server/db/query-helpers.js +31 -0
- package/dist/server/db/query-helpers.js.map +1 -1
- package/dist/server/runtime/core-token-catalog.d.ts +18 -1
- package/dist/server/runtime/core-token-catalog.d.ts.map +1 -1
- package/dist/server/runtime/core-token-catalog.js +3 -1
- package/dist/server/runtime/core-token-catalog.js.map +1 -1
- package/dist/testing/mock.d.ts +12 -1
- package/dist/testing/mock.d.ts.map +1 -1
- package/dist/testing/mock.js +16 -0
- package/dist/testing/mock.js.map +1 -1
- package/dist/wallet/__tests__/settlement-network.test.d.ts +2 -0
- package/dist/wallet/__tests__/settlement-network.test.d.ts.map +1 -0
- package/dist/wallet/__tests__/settlement-network.test.js +54 -0
- package/dist/wallet/__tests__/settlement-network.test.js.map +1 -0
- package/dist/wallet/__tests__/wallet-asset.router.int.test.d.ts +2 -0
- package/dist/wallet/__tests__/wallet-asset.router.int.test.d.ts.map +1 -0
- package/dist/wallet/__tests__/wallet-asset.router.int.test.js +234 -0
- package/dist/wallet/__tests__/wallet-asset.router.int.test.js.map +1 -0
- package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.js +5 -3
- package/dist/wallet/__tests__/wallet-auto-rule.router.int.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.js +4 -2
- package/dist/wallet/__tests__/wallet-auto-withdrawal-config.router.int.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.js +6 -3
- package/dist/wallet/__tests__/wallet-auto-withdrawal.int.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet-custody-stubs.router.test.d.ts +2 -0
- package/dist/wallet/__tests__/wallet-custody-stubs.router.test.d.ts.map +1 -0
- package/dist/wallet/__tests__/wallet-custody-stubs.router.test.js +80 -0
- package/dist/wallet/__tests__/wallet-custody-stubs.router.test.js.map +1 -0
- package/dist/wallet/__tests__/wallet-kyc-gate.int.test.js +2 -1
- package/dist/wallet/__tests__/wallet-kyc-gate.int.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet-webhook.router.int.test.js +119 -4
- package/dist/wallet/__tests__/wallet-webhook.router.int.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet.rate-limit.int.test.js +2 -1
- package/dist/wallet/__tests__/wallet.rate-limit.int.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet.router.int.test.js +23 -3
- package/dist/wallet/__tests__/wallet.router.int.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet.service.int.test.js +265 -12
- package/dist/wallet/__tests__/wallet.service.int.test.js.map +1 -1
- package/dist/wallet/adapters/wallet-asset-catalog.service.d.ts +14 -0
- package/dist/wallet/adapters/wallet-asset-catalog.service.d.ts.map +1 -0
- package/dist/wallet/adapters/wallet-asset-catalog.service.js +37 -0
- package/dist/wallet/adapters/wallet-asset-catalog.service.js.map +1 -0
- package/dist/wallet/admin-reporting.d.ts +2 -2
- package/dist/wallet/contract/index.d.ts +428 -4
- package/dist/wallet/contract/index.d.ts.map +1 -1
- package/dist/wallet/contract/index.js +203 -5
- package/dist/wallet/contract/index.js.map +1 -1
- package/dist/wallet/drizzle/migrations/0010_worthless_quasimodo.sql +84 -0
- package/dist/wallet/drizzle/migrations/meta/0010_snapshot.json +1565 -0
- package/dist/wallet/drizzle/migrations/meta/_journal.json +7 -0
- package/dist/wallet/plugin.d.ts +18 -1
- package/dist/wallet/plugin.d.ts.map +1 -1
- package/dist/wallet/plugin.js +19 -2
- package/dist/wallet/plugin.js.map +1 -1
- package/dist/wallet/router/index.d.ts +235 -3
- package/dist/wallet/router/index.d.ts.map +1 -1
- package/dist/wallet/router/index.js +117 -20
- package/dist/wallet/router/index.js.map +1 -1
- package/dist/wallet/schema/index.d.ts +984 -3
- package/dist/wallet/schema/index.d.ts.map +1 -1
- package/dist/wallet/schema/index.js +141 -2
- package/dist/wallet/schema/index.js.map +1 -1
- package/dist/wallet/service/wallet.service.d.ts +70 -6
- package/dist/wallet/service/wallet.service.d.ts.map +1 -1
- package/dist/wallet/service/wallet.service.js +379 -16
- package/dist/wallet/service/wallet.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wallet/schema/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wallet/schema/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { sql } from 'drizzle-orm';
|
|
2
|
-
import { pgTable, uuid, text, decimal, timestamp, pgEnum, index, uniqueIndex, } from 'drizzle-orm/pg-core';
|
|
3
|
-
import { WALLET_RAILS, WALLET_TRANSACTION_STATUSES, WALLET_TRANSACTION_TYPES, MONEY_PRECISION, MONEY_SCALE, } from '@openora/core/contracts';
|
|
2
|
+
import { pgTable, uuid, text, decimal, timestamp, pgEnum, index, uniqueIndex, boolean, jsonb, } from 'drizzle-orm/pg-core';
|
|
3
|
+
import { WALLET_RAILS, WALLET_TRANSACTION_STATUSES, WALLET_TRANSACTION_TYPES, WALLET_CUSTODY_SWEEP_STATUSES, WALLET_JOB_RUN_STATUSES, WALLET_RECONCILIATION_FINDING_KINDS, WALLET_RECONCILIATION_FINDING_STATUSES, MONEY_PRECISION, MONEY_SCALE, } from '@openora/core/contracts';
|
|
4
4
|
// Enum values derive from the canonical tuples so the DB enum can never drift from
|
|
5
5
|
// the contract. Editing the value set is a one-place change in wallet-tx.ts.
|
|
6
6
|
export const walletTransactionTypeEnum = pgEnum('wallet_transaction_type', WALLET_TRANSACTION_TYPES);
|
|
@@ -35,6 +35,10 @@ export const walletTransaction = pgTable('wallet_transaction', {
|
|
|
35
35
|
type: walletTransactionTypeEnum().notNull(),
|
|
36
36
|
amount: decimal({ precision: MONEY_PRECISION, scale: MONEY_SCALE }).notNull(),
|
|
37
37
|
currency: text().notNull(),
|
|
38
|
+
// The chain this moved on. A currency does not identify one, so reconciliation and
|
|
39
|
+
// reporting are per (currency, network). Null on a fiat rail and on any internal
|
|
40
|
+
// transaction type (bet/win/bonus) that never touches a chain.
|
|
41
|
+
network: text(),
|
|
38
42
|
status: walletTransactionStatusEnum()
|
|
39
43
|
.$type()
|
|
40
44
|
.notNull()
|
|
@@ -66,6 +70,7 @@ export const walletTransaction = pgTable('wallet_transaction', {
|
|
|
66
70
|
index('wallet_transaction_status_idx').on(t.status),
|
|
67
71
|
index('wallet_transaction_rail_idx').on(t.rail),
|
|
68
72
|
index('wallet_transaction_currency_idx').on(t.currency),
|
|
73
|
+
index('wallet_transaction_currency_network_idx').on(t.currency, t.network),
|
|
69
74
|
index('wallet_transaction_tx_hash_idx').on(t.txHash),
|
|
70
75
|
index('wallet_transaction_status_type_created_at_idx').on(t.status, t.type, t.createdAt),
|
|
71
76
|
index('wallet_transaction_wallet_id_type_status_idx').on(t.walletId, t.type, t.status),
|
|
@@ -140,4 +145,138 @@ export const walletAutoWithdrawalConfig = pgTable('wallet_auto_withdrawal_config
|
|
|
140
145
|
.$onUpdateFn(() => new Date()),
|
|
141
146
|
createdAt: timestamp({ withTimezone: true }).notNull().defaultNow(),
|
|
142
147
|
});
|
|
148
|
+
// Chain-level behaviour (how the vendor hands out addresses) is deliberately NOT here -
|
|
149
|
+
// that belongs to the bound payment adapter, which owns its own vendor vocabulary.
|
|
150
|
+
export const walletAsset = pgTable('wallet_asset', {
|
|
151
|
+
id: uuid().primaryKey().defaultRandom(),
|
|
152
|
+
currency: text().notNull(),
|
|
153
|
+
network: text().notNull(),
|
|
154
|
+
providerAssetId: text().notNull(),
|
|
155
|
+
minDeposit: decimal({ precision: MONEY_PRECISION, scale: MONEY_SCALE }).notNull(),
|
|
156
|
+
minWithdrawal: decimal({ precision: MONEY_PRECISION, scale: MONEY_SCALE }).notNull(),
|
|
157
|
+
withdrawalFee: decimal({ precision: MONEY_PRECISION, scale: MONEY_SCALE }).notNull(),
|
|
158
|
+
// Independent: an asset can take deposits before it can pay out.
|
|
159
|
+
depositEnabled: boolean().notNull().default(true),
|
|
160
|
+
withdrawalEnabled: boolean().notNull().default(true),
|
|
161
|
+
// Which bound payment vendor settles this (currency, network) pair. Core treats
|
|
162
|
+
// this as an opaque operator-chosen key, never a vendor's product name - null
|
|
163
|
+
// means the default single binding (the only adapter bound to PAYMENT_ADAPTER).
|
|
164
|
+
providerName: text(),
|
|
165
|
+
// The maximum network fee tolerated when sweeping this asset from a per-player
|
|
166
|
+
// custody container into the pool. Null means no ceiling. Per-asset, not global:
|
|
167
|
+
// fee units differ per chain, so one global number cannot compare a fee
|
|
168
|
+
// denominated in one chain's native coin against another's.
|
|
169
|
+
sweepFeeCeiling: decimal({ precision: MONEY_PRECISION, scale: MONEY_SCALE }),
|
|
170
|
+
// Below this pooled balance, the sweep fee ceiling is ignored - running the pool
|
|
171
|
+
// dry to save a fee costs more than the fee. Null means never override the ceiling.
|
|
172
|
+
poolLiquidityFloor: decimal({ precision: MONEY_PRECISION, scale: MONEY_SCALE }),
|
|
173
|
+
createdAt: timestamp({ withTimezone: true }).notNull().defaultNow(),
|
|
174
|
+
updatedAt: timestamp({ withTimezone: true })
|
|
175
|
+
.notNull()
|
|
176
|
+
.defaultNow()
|
|
177
|
+
.$onUpdateFn(() => new Date()),
|
|
178
|
+
}, (t) => [uniqueIndex('wallet_asset_currency_network_idx').on(t.currency, t.network)]);
|
|
179
|
+
export const walletCustodySweepStatusEnum = pgEnum('wallet_custody_sweep_status', WALLET_CUSTODY_SWEEP_STATUSES);
|
|
180
|
+
// An internal transfer of vendor-side funds between containers (per-player custody ->
|
|
181
|
+
// pooled account). Must NEVER touch a player balance - the player was already credited
|
|
182
|
+
// at deposit time, so this table only tracks the vendor-side movement.
|
|
183
|
+
export const walletCustodySweep = pgTable('wallet_custody_sweep', {
|
|
184
|
+
id: uuid().primaryKey().defaultRandom(),
|
|
185
|
+
// Cross-module (identity), bare uuid - whose custody container this swept.
|
|
186
|
+
userId: uuid().notNull(),
|
|
187
|
+
providerName: text().notNull(),
|
|
188
|
+
currency: text().notNull(),
|
|
189
|
+
network: text().notNull(),
|
|
190
|
+
amount: decimal({ precision: MONEY_PRECISION, scale: MONEY_SCALE }).notNull(),
|
|
191
|
+
estimatedFee: decimal({ precision: MONEY_PRECISION, scale: MONEY_SCALE }).notNull(),
|
|
192
|
+
externalId: text(),
|
|
193
|
+
// Opaque vendor-side id of the pool the funds landed in. Player funds must stay
|
|
194
|
+
// separate from operator funds, and a regulator asks which account received them -
|
|
195
|
+
// without this the ledger can evidence that a sweep happened but not where it went.
|
|
196
|
+
poolRef: text(),
|
|
197
|
+
txHash: text(),
|
|
198
|
+
// `unknown`: a thrown sweepToPool cannot distinguish "vendor never saw it" from
|
|
199
|
+
// "vendor accepted it and the response was lost". The row moves to `unknown` and
|
|
200
|
+
// KEEPS holding the in-flight guard below - releasing it would risk a double
|
|
201
|
+
// transfer of real funds.
|
|
202
|
+
status: walletCustodySweepStatusEnum()
|
|
203
|
+
.$type()
|
|
204
|
+
.notNull()
|
|
205
|
+
.default('pending'),
|
|
206
|
+
runId: uuid(),
|
|
207
|
+
createdAt: timestamp({ withTimezone: true }).notNull().defaultNow(),
|
|
208
|
+
updatedAt: timestamp({ withTimezone: true })
|
|
209
|
+
.notNull()
|
|
210
|
+
.defaultNow()
|
|
211
|
+
.$onUpdateFn(() => new Date()),
|
|
212
|
+
}, (t) => [
|
|
213
|
+
// The durable in-flight guard: at most one pending/processing/unknown sweep per
|
|
214
|
+
// (user, currency, network) at a time.
|
|
215
|
+
uniqueIndex('wallet_custody_sweep_user_id_currency_network_idx')
|
|
216
|
+
.on(t.userId, t.currency, t.network)
|
|
217
|
+
.where(sql `status IN ('pending','processing','unknown')`),
|
|
218
|
+
uniqueIndex('wallet_custody_sweep_external_id_idx')
|
|
219
|
+
.on(t.externalId)
|
|
220
|
+
.where(sql `${t.externalId} IS NOT NULL`),
|
|
221
|
+
index('wallet_custody_sweep_status_created_at_idx').on(t.status, t.createdAt),
|
|
222
|
+
index('wallet_custody_sweep_provider_name_created_at_idx').on(t.providerName, t.createdAt),
|
|
223
|
+
]);
|
|
224
|
+
export const walletJobRunStatusEnum = pgEnum('wallet_job_run_status', WALLET_JOB_RUN_STATUSES);
|
|
225
|
+
// Claim-based concurrency guard plus run history for the wallet cron jobs (sweep,
|
|
226
|
+
// reconciliation). Claiming a run IS the insert; a unique-index conflict means another
|
|
227
|
+
// cycle already owns it. Not a session-level advisory lock: a lock held by a pooled
|
|
228
|
+
// connection that gets returned to the pool is a deadlock waiting to happen. A partial
|
|
229
|
+
// unique index is the same guarantee, enforced by the database, with no connection
|
|
230
|
+
// affinity.
|
|
231
|
+
export const walletJobRun = pgTable('wallet_job_run', {
|
|
232
|
+
id: uuid().primaryKey().defaultRandom(),
|
|
233
|
+
jobName: text().notNull(),
|
|
234
|
+
runId: uuid().notNull(),
|
|
235
|
+
startedAt: timestamp({ withTimezone: true }).notNull().defaultNow(),
|
|
236
|
+
finishedAt: timestamp({ withTimezone: true }),
|
|
237
|
+
status: walletJobRunStatusEnum().$type().notNull().default('running'),
|
|
238
|
+
summary: jsonb().$type(),
|
|
239
|
+
createdAt: timestamp({ withTimezone: true }).notNull().defaultNow(),
|
|
240
|
+
}, (t) => [
|
|
241
|
+
// At most one live run per job.
|
|
242
|
+
uniqueIndex('wallet_job_run_job_name_idx')
|
|
243
|
+
.on(t.jobName)
|
|
244
|
+
.where(sql `${t.finishedAt} IS NULL`),
|
|
245
|
+
index('wallet_job_run_job_name_started_at_idx').on(t.jobName, t.startedAt),
|
|
246
|
+
]);
|
|
247
|
+
export const walletReconciliationFindingKindEnum = pgEnum('wallet_reconciliation_finding_kind', WALLET_RECONCILIATION_FINDING_KINDS);
|
|
248
|
+
export const walletReconciliationFindingStatusEnum = pgEnum('wallet_reconciliation_finding_status', WALLET_RECONCILIATION_FINDING_STATUSES);
|
|
249
|
+
// A finding is a report, never a credit instruction - nothing automated may credit a
|
|
250
|
+
// player or move funds off the back of a row in this table.
|
|
251
|
+
export const walletReconciliationFinding = pgTable('wallet_reconciliation_finding', {
|
|
252
|
+
id: uuid().primaryKey().defaultRandom(),
|
|
253
|
+
runId: uuid().notNull(),
|
|
254
|
+
providerName: text().notNull(),
|
|
255
|
+
kind: walletReconciliationFindingKindEnum().$type().notNull(),
|
|
256
|
+
currency: text(),
|
|
257
|
+
network: text(),
|
|
258
|
+
amount: decimal({ precision: MONEY_PRECISION, scale: MONEY_SCALE }),
|
|
259
|
+
address: text(),
|
|
260
|
+
tag: text(),
|
|
261
|
+
txHash: text(),
|
|
262
|
+
externalId: text(),
|
|
263
|
+
transactionId: uuid(),
|
|
264
|
+
detail: text(),
|
|
265
|
+
status: walletReconciliationFindingStatusEnum()
|
|
266
|
+
.$type()
|
|
267
|
+
.notNull()
|
|
268
|
+
.default('open'),
|
|
269
|
+
// Cross-module (identity admin user), bare uuid.
|
|
270
|
+
resolvedBy: uuid(),
|
|
271
|
+
resolvedAt: timestamp({ withTimezone: true }),
|
|
272
|
+
resolutionNote: text(),
|
|
273
|
+
createdAt: timestamp({ withTimezone: true }).notNull().defaultNow(),
|
|
274
|
+
}, (t) => [
|
|
275
|
+
// Re-running reconciliation over an overlapping window must not duplicate findings.
|
|
276
|
+
uniqueIndex('wallet_reconciliation_finding_kind_external_id_idx')
|
|
277
|
+
.on(t.kind, t.externalId)
|
|
278
|
+
.where(sql `${t.externalId} IS NOT NULL`),
|
|
279
|
+
index('wallet_reconciliation_finding_status_created_at_idx').on(t.status, t.createdAt),
|
|
280
|
+
index('wallet_reconciliation_finding_run_id_idx').on(t.runId),
|
|
281
|
+
]);
|
|
143
282
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet/schema/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet/schema/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,53 @@
|
|
|
1
1
|
import { type EventBus, type DrizzleDb, DrizzleService } from '@openora/core/server';
|
|
2
|
-
import { type PaymentAdapter, type PaymentWebhookEvent, type AdminUserDirectory, type PlatformConfig, type RateLimiterAdapter, type RateLimitKey, type WalletRail, type PlayerTags, type AuditWritePort, type TagEvaluationCommands, type TagKey, type User, type IdentityReader, type ClientMeta, type PaginationOptions } from '@openora/core/contracts';
|
|
2
|
+
import { type PaymentAdapter, type PaymentProviderRegistry, type PaymentWebhookEvent, type AdminUserDirectory, type PlatformConfig, type RateLimiterAdapter, type RateLimitKey, type WalletRail, type PlayerTags, type AuditWritePort, type TagEvaluationCommands, type TagKey, type User, type IdentityReader, type ClientMeta, type PaginationOptions } from '@openora/core/contracts';
|
|
3
3
|
import { type Wallet, type WalletTransaction } from '../schema/index.js';
|
|
4
|
-
import type { TransactionResult, WithdrawalQueueFilter, AutoWithdrawalRule, WalletAutoWithdrawalConfig, WalletTransactionSortBy } from '../contract/index.js';
|
|
4
|
+
import type { TransactionResult, WithdrawalQueueFilter, AutoWithdrawalRule, WalletAutoWithdrawalConfig, WalletTransactionSortBy, WalletAsset, PublicWalletAsset, CreateWalletAssetInput, UpdateWalletAssetInput, ManualAdjustmentDirection } from '../contract/index.js';
|
|
5
5
|
export declare const WalletNotFoundError: new (id: string) => Error;
|
|
6
6
|
export declare const WithdrawalNotFoundError: new (id: string) => Error;
|
|
7
7
|
export declare const AutoWithdrawalConfigNotFoundError: new (id: string) => Error;
|
|
8
|
+
export declare const PlayerNotFoundError: new (id: string) => Error;
|
|
8
9
|
export declare const InsufficientBalanceError: new (available: string, requested: string) => Error;
|
|
9
10
|
export declare const WithdrawalNotPendingError: new () => Error;
|
|
10
11
|
export declare const KycRequiredError: new () => Error;
|
|
11
12
|
export declare const IdempotencyKeyReuseError: new () => Error;
|
|
12
13
|
export declare const DepositAddressUnsupportedError: new () => Error;
|
|
13
14
|
export declare const DestinationAddressRequiredError: new () => Error;
|
|
15
|
+
export declare const WalletAssetNotFoundError: new (id: string) => Error;
|
|
16
|
+
export declare const WalletAssetAlreadyExistsError: new () => Error;
|
|
17
|
+
export declare const WalletAssetUnsupportedError: new () => Error;
|
|
18
|
+
export declare const WalletAssetInUseError: new () => Error;
|
|
19
|
+
export declare const WalletAssetUnknownProviderError: new () => Error;
|
|
20
|
+
export declare const WalletAssetHasInFlightTransactionsError: new () => Error;
|
|
21
|
+
export declare const AmbiguousNetworkError: new (currency: unknown, networks: unknown) => Error;
|
|
22
|
+
export declare const UnsupportedNetworkError: new (currency: unknown, network: unknown) => Error;
|
|
23
|
+
export declare const WithdrawalDisabledError: new (currency: unknown) => Error;
|
|
24
|
+
export declare const BelowMinimumWithdrawalError: new (amount: unknown, minimum: unknown, currency: unknown, network: unknown) => Error;
|
|
14
25
|
export declare const CurrencyMismatchError: new (requested: unknown, walletCurrency: unknown) => Error;
|
|
15
26
|
export declare const AmbiguousDepositAddressError: new (address: unknown, network: unknown) => Error;
|
|
27
|
+
/** The catalog fields a payout decision needs - a structural subset of a wallet_asset row. */
|
|
28
|
+
type WithdrawalAsset = {
|
|
29
|
+
network: string;
|
|
30
|
+
minWithdrawal: string;
|
|
31
|
+
withdrawalEnabled: boolean;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Pins the chain a payout settles on. With one payable network the choice is implied; with
|
|
35
|
+
* several an explicit network is mandatory, because picking one silently would send a
|
|
36
|
+
* player's USDT over a chain their receiving wallet may not support.
|
|
37
|
+
*
|
|
38
|
+
* `assets` is every catalog row for the currency, enabled or not, so the two empty cases
|
|
39
|
+
* stay distinguishable: no rows at all means the operator never configured this currency
|
|
40
|
+
* (a fiat PSP), and the caller's choice passes through unchecked; rows that are all
|
|
41
|
+
* withdrawal-disabled is a deliberate operator decision and fails closed.
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveWithdrawalNetwork(assets: readonly WithdrawalAsset[], currency: string, network?: string): string | null;
|
|
44
|
+
/**
|
|
45
|
+
* Rejects a payout worth less than the operator's per-network floor. The floor is per chain,
|
|
46
|
+
* not per currency: moving USDT costs cents on BEP20 and dollars on ERC20, so one
|
|
47
|
+
* currency-wide minimum is either too high for the cheap chain or below the fee on the
|
|
48
|
+
* expensive one.
|
|
49
|
+
*/
|
|
50
|
+
export declare function assertAboveMinimumWithdrawal(assets: readonly WithdrawalAsset[], amount: string, currency: string, network: string | null): void;
|
|
16
51
|
export declare function railFor(currency: string, cryptoCurrencies?: readonly string[]): WalletRail;
|
|
17
52
|
export declare function creditWalletBalance(txn: DrizzleDb, walletId: Wallet['id'], currency: string, amount: string): Omit<import("drizzle-orm/pg-core").PgInsertBase<import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
18
53
|
name: "wallet_balance";
|
|
@@ -283,6 +318,7 @@ export type WalletServiceDeps = {
|
|
|
283
318
|
drizzle: DrizzleService;
|
|
284
319
|
events: EventBus;
|
|
285
320
|
payment: PaymentAdapter;
|
|
321
|
+
paymentProviders: PaymentProviderRegistry;
|
|
286
322
|
identityReader: IdentityReader;
|
|
287
323
|
directory?: AdminUserDirectory;
|
|
288
324
|
platformConfig?: PlatformConfig;
|
|
@@ -303,6 +339,7 @@ export declare class WalletService {
|
|
|
303
339
|
private readonly drizzle;
|
|
304
340
|
private readonly events;
|
|
305
341
|
private readonly payment;
|
|
342
|
+
private readonly paymentProviders;
|
|
306
343
|
private readonly identityReader;
|
|
307
344
|
private readonly directory?;
|
|
308
345
|
private readonly platformConfig?;
|
|
@@ -310,8 +347,10 @@ export declare class WalletService {
|
|
|
310
347
|
private readonly riskTags?;
|
|
311
348
|
private readonly tagEvaluationCommands?;
|
|
312
349
|
private readonly audit;
|
|
313
|
-
constructor({ drizzle, events, payment, directory, identityReader, platformConfig, limiter, riskTags, tagEvaluationCommands, audit, }: WalletServiceDeps);
|
|
350
|
+
constructor({ drizzle, events, payment, paymentProviders, directory, identityReader, platformConfig, limiter, riskTags, tagEvaluationCommands, audit, }: WalletServiceDeps);
|
|
351
|
+
private assetsForCurrency;
|
|
314
352
|
private resolveRail;
|
|
353
|
+
private providerNameFor;
|
|
315
354
|
private rateLimit;
|
|
316
355
|
private assertKycForWithdrawal;
|
|
317
356
|
getBalance(userId: User['id']): Promise<{
|
|
@@ -345,8 +384,18 @@ export declare class WalletService {
|
|
|
345
384
|
provider?: string;
|
|
346
385
|
idempotencyKey?: string;
|
|
347
386
|
}): Promise<TransactionResult>;
|
|
387
|
+
manualAdjust({ adminId, userId, direction, amount, currency, reason, idempotencyKey, ip, userAgent, }: {
|
|
388
|
+
adminId: User['id'];
|
|
389
|
+
userId: User['id'];
|
|
390
|
+
direction: ManualAdjustmentDirection;
|
|
391
|
+
amount: string;
|
|
392
|
+
currency: string;
|
|
393
|
+
reason: string;
|
|
394
|
+
idempotencyKey: string;
|
|
395
|
+
} & ClientMeta): Promise<TransactionResult>;
|
|
348
396
|
private findDepositReplay;
|
|
349
397
|
private assertReplayMatches;
|
|
398
|
+
private assertManualAdjustmentReplayMatches;
|
|
350
399
|
private insertIdempotentTransaction;
|
|
351
400
|
/**
|
|
352
401
|
* Creates a PENDING withdrawal and HOLDS the funds immediately (balance
|
|
@@ -358,10 +407,11 @@ export declare class WalletService {
|
|
|
358
407
|
* return an already-`completed`/`processing` result if the request
|
|
359
408
|
* qualifies for (and passes) auto-approval - see `maybeAutoApprove`.
|
|
360
409
|
*/
|
|
361
|
-
withdraw({ userId, amount, currency, idempotencyKey, destinationAddress, ip, userAgent, }: {
|
|
410
|
+
withdraw({ userId, amount, currency, network, idempotencyKey, destinationAddress, ip, userAgent, }: {
|
|
362
411
|
userId: User['id'];
|
|
363
412
|
amount: string;
|
|
364
413
|
currency: string;
|
|
414
|
+
network?: string;
|
|
365
415
|
idempotencyKey?: string;
|
|
366
416
|
destinationAddress?: string;
|
|
367
417
|
} & ClientMeta): Promise<TransactionResult>;
|
|
@@ -373,6 +423,7 @@ export declare class WalletService {
|
|
|
373
423
|
username: string;
|
|
374
424
|
amount: string;
|
|
375
425
|
currency: string;
|
|
426
|
+
network: string | null;
|
|
376
427
|
rail: "crypto" | "fiat" | null;
|
|
377
428
|
status: "pending" | "rejected" | "processing" | "completed" | "failed" | "on_hold" | "cancelled";
|
|
378
429
|
kycStatus: "pending" | "not_started" | "approved" | "verified" | "rejected" | "resubmission_requested" | "manually_overridden" | null;
|
|
@@ -407,6 +458,14 @@ export declare class WalletService {
|
|
|
407
458
|
cryptoThreshold: string;
|
|
408
459
|
excludeRiskFlags: TagKey[];
|
|
409
460
|
}, meta?: ClientMeta): Promise<WalletAutoWithdrawalConfig>;
|
|
461
|
+
listWalletAssets(): Promise<WalletAsset[]>;
|
|
462
|
+
listEnabledWalletAssets(): Promise<PublicWalletAsset[]>;
|
|
463
|
+
getWalletAsset(currency: string, network: string): Promise<WalletAsset | null>;
|
|
464
|
+
private assertAdapterSupports;
|
|
465
|
+
private assertProviderNameValid;
|
|
466
|
+
createWalletAsset(adminId: User['id'], input: CreateWalletAssetInput, meta?: ClientMeta): Promise<WalletAsset>;
|
|
467
|
+
updateWalletAsset(adminId: User['id'], { currency, network, ...changes }: UpdateWalletAssetInput, meta?: ClientMeta): Promise<WalletAsset>;
|
|
468
|
+
deleteWalletAsset(adminId: User['id'], currency: string, network: string, meta?: ClientMeta): Promise<boolean>;
|
|
410
469
|
private autoApprovalKycStatus;
|
|
411
470
|
private autoApprovalRiskTags;
|
|
412
471
|
private autoApprovalHeuristics;
|
|
@@ -421,16 +480,21 @@ export declare class WalletService {
|
|
|
421
480
|
getAutoWithdrawalRule(userId: User['id']): Promise<AutoWithdrawalRule | null>;
|
|
422
481
|
deleteAutoWithdrawalRule(userId: User['id']): Promise<boolean>;
|
|
423
482
|
rejectWithdrawal(adminId: User['id'], withdrawalId: WalletTransaction['id'], reason: string, meta?: ClientMeta): Promise<TransactionResult>;
|
|
424
|
-
getTransactions({ userId, page, limit, sortBy, sortOrder, }: PaginationOptions<{
|
|
483
|
+
getTransactions({ userId, page, limit, sortBy, sortOrder, includeInternal, }: PaginationOptions<{
|
|
425
484
|
userId: User['id'];
|
|
485
|
+
includeInternal?: boolean;
|
|
426
486
|
}, WalletTransactionSortBy>): Promise<{
|
|
427
487
|
items: {
|
|
428
488
|
id: string;
|
|
429
|
-
type: "deposit" | "loss" | "withdrawal" | "bet" | "win" | "bonus" | "tip" | "gift" | "rain";
|
|
489
|
+
type: "deposit" | "loss" | "withdrawal" | "bet" | "win" | "bonus" | "tip" | "gift" | "rain" | "manual_credit" | "manual_debit";
|
|
430
490
|
amount: string;
|
|
431
491
|
currency: string;
|
|
492
|
+
network: string | null;
|
|
432
493
|
status: "pending" | "rejected" | "processing" | "completed" | "failed" | "on_hold" | "cancelled";
|
|
433
494
|
createdAt: string;
|
|
495
|
+
reviewedBy: string | null;
|
|
496
|
+
reviewedAt: string | null;
|
|
497
|
+
reviewReason: string | null;
|
|
434
498
|
}[];
|
|
435
499
|
total: number;
|
|
436
500
|
page: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.service.d.ts","sourceRoot":"","sources":["../../../src/wallet/service/wallet.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"wallet.service.d.ts","sourceRoot":"","sources":["../../../src/wallet/service/wallet.service.ts"],"names":[],"mappings":"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"}
|