@openora/core 0.4.1-canary.11 → 0.4.1-canary.13
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/compliance/__tests__/hmac-kyc-webhook-verifier.test.js +9 -5
- package/dist/compliance/__tests__/hmac-kyc-webhook-verifier.test.js.map +1 -1
- package/dist/compliance/__tests__/kyc.service.test.js +23 -0
- package/dist/compliance/__tests__/kyc.service.test.js.map +1 -1
- package/dist/compliance/adapters/hmac-kyc-webhook-verifier.d.ts +3 -3
- package/dist/compliance/adapters/hmac-kyc-webhook-verifier.d.ts.map +1 -1
- package/dist/compliance/adapters/hmac-kyc-webhook-verifier.js +12 -3
- package/dist/compliance/adapters/hmac-kyc-webhook-verifier.js.map +1 -1
- package/dist/compliance/contract/index.d.ts +32 -0
- package/dist/compliance/contract/index.d.ts.map +1 -1
- package/dist/compliance/contract/index.js +5 -2
- package/dist/compliance/contract/index.js.map +1 -1
- package/dist/compliance/router/index.d.ts +1 -0
- package/dist/compliance/router/index.d.ts.map +1 -1
- package/dist/compliance/router/index.js +1 -9
- package/dist/compliance/router/index.js.map +1 -1
- package/dist/compliance/service/kyc.service.d.ts +7 -6
- package/dist/compliance/service/kyc.service.d.ts.map +1 -1
- package/dist/compliance/service/kyc.service.js +1 -1
- package/dist/compliance/service/kyc.service.js.map +1 -1
- package/dist/contracts/adapters/index.d.ts +2 -2
- package/dist/contracts/adapters/index.d.ts.map +1 -1
- package/dist/contracts/adapters/index.js +1 -1
- package/dist/contracts/adapters/index.js.map +1 -1
- package/dist/contracts/adapters/kyc.d.ts +33 -1
- package/dist/contracts/adapters/kyc.d.ts.map +1 -1
- package/dist/contracts/adapters/kyc.js +7 -5
- package/dist/contracts/adapters/kyc.js.map +1 -1
- package/dist/contracts/adapters/payment.d.ts +57 -0
- package/dist/contracts/adapters/payment.d.ts.map +1 -1
- package/dist/contracts/adapters/payment.js +4 -2
- package/dist/contracts/adapters/payment.js.map +1 -1
- package/dist/contracts/schemas/__tests__/common-schemas.test.d.ts +2 -0
- package/dist/contracts/schemas/__tests__/common-schemas.test.d.ts.map +1 -0
- package/dist/contracts/schemas/__tests__/common-schemas.test.js +17 -0
- package/dist/contracts/schemas/__tests__/common-schemas.test.js.map +1 -0
- package/dist/contracts/schemas/common.js +1 -1
- package/dist/contracts/schemas/platform-config.d.ts +3 -0
- package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
- package/dist/contracts/schemas/platform-config.js +2 -1
- package/dist/contracts/schemas/platform-config.js.map +1 -1
- package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.d.ts +2 -0
- package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.d.ts.map +1 -0
- package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.js +25 -0
- package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.js.map +1 -0
- package/dist/wallet/__tests__/wallet-auto-rule.router.test.js +8 -6
- package/dist/wallet/__tests__/wallet-auto-rule.router.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js +102 -4
- package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet-webhook.router.test.d.ts +2 -0
- package/dist/wallet/__tests__/wallet-webhook.router.test.d.ts.map +1 -0
- package/dist/wallet/__tests__/wallet-webhook.router.test.js +78 -0
- package/dist/wallet/__tests__/wallet-webhook.router.test.js.map +1 -0
- package/dist/wallet/__tests__/wallet.router.test.js +4 -2
- package/dist/wallet/__tests__/wallet.router.test.js.map +1 -1
- package/dist/wallet/__tests__/wallet.service.test.js +248 -3
- package/dist/wallet/__tests__/wallet.service.test.js.map +1 -1
- package/dist/wallet/adapters/hmac-payment-webhook-verifier.d.ts +7 -0
- package/dist/wallet/adapters/hmac-payment-webhook-verifier.d.ts.map +1 -0
- package/dist/wallet/adapters/hmac-payment-webhook-verifier.js +30 -0
- package/dist/wallet/adapters/hmac-payment-webhook-verifier.js.map +1 -0
- package/dist/wallet/contract/index.d.ts +28 -0
- package/dist/wallet/contract/index.d.ts.map +1 -1
- package/dist/wallet/contract/index.js +28 -7
- package/dist/wallet/contract/index.js.map +1 -1
- package/dist/wallet/drizzle/migrations/0002_aromatic_archangel.sql +20 -0
- package/dist/wallet/drizzle/migrations/meta/0002_snapshot.json +513 -0
- package/dist/wallet/drizzle/migrations/meta/_journal.json +7 -0
- package/dist/wallet/plugin.d.ts.map +1 -1
- package/dist/wallet/plugin.js +12 -2
- package/dist/wallet/plugin.js.map +1 -1
- package/dist/wallet/router/index.d.ts +16 -2
- package/dist/wallet/router/index.d.ts.map +1 -1
- package/dist/wallet/router/index.js +24 -4
- package/dist/wallet/router/index.js.map +1 -1
- package/dist/wallet/schema/index.d.ts +144 -0
- package/dist/wallet/schema/index.d.ts.map +1 -1
- package/dist/wallet/schema/index.js +20 -4
- package/dist/wallet/schema/index.js.map +1 -1
- package/dist/wallet/service/wallet.service.d.ts +20 -2
- package/dist/wallet/service/wallet.service.d.ts.map +1 -1
- package/dist/wallet/service/wallet.service.js +196 -31
- package/dist/wallet/service/wallet.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { implement } from '@orpc/server';
|
|
1
|
+
import { implement, ORPCError } from '@orpc/server';
|
|
2
2
|
import { getUserId, mapErrors } from '@openora/core/server';
|
|
3
3
|
import { walletContract } from '../contract/index.js';
|
|
4
|
-
import { WalletNotFoundError, WithdrawalNotFoundError, WithdrawalNotPendingError, InsufficientBalanceError, CurrencyMismatchError, KycRequiredError, IdempotencyKeyReuseError, } from '../service/wallet.service.js';
|
|
5
|
-
export function createWalletRouter(wallet, adminGuard, audit) {
|
|
4
|
+
import { WalletNotFoundError, WithdrawalNotFoundError, WithdrawalNotPendingError, InsufficientBalanceError, CurrencyMismatchError, KycRequiredError, IdempotencyKeyReuseError, DepositAddressUnsupportedError, DestinationAddressRequiredError, } from '../service/wallet.service.js';
|
|
5
|
+
export function createWalletRouter(wallet, adminGuard, audit, paymentAdapter, webhookVerifier) {
|
|
6
6
|
const os = implement(walletContract).$context();
|
|
7
7
|
return os.router({
|
|
8
8
|
getBalance: os.getBalance.handler(({ context }) => wallet.getBalance(getUserId(context))),
|
|
@@ -16,12 +16,13 @@ export function createWalletRouter(wallet, adminGuard, audit) {
|
|
|
16
16
|
withdraw: os.withdraw.handler(({ input, context }) => mapErrors({
|
|
17
17
|
NOT_FOUND: WalletNotFoundError,
|
|
18
18
|
BAD_REQUEST: [InsufficientBalanceError, CurrencyMismatchError],
|
|
19
|
-
CONFLICT: [KycRequiredError, IdempotencyKeyReuseError],
|
|
19
|
+
CONFLICT: [KycRequiredError, IdempotencyKeyReuseError, DestinationAddressRequiredError],
|
|
20
20
|
}, () => wallet.withdraw({
|
|
21
21
|
userId: getUserId(context),
|
|
22
22
|
amount: input.amount,
|
|
23
23
|
currency: input.currency,
|
|
24
24
|
idempotencyKey: input.idempotencyKey,
|
|
25
|
+
destinationAddress: input.destinationAddress,
|
|
25
26
|
}))),
|
|
26
27
|
listTransactions: os.listTransactions.handler(({ context, input }) => wallet.getTransactions(getUserId(context), input.page, input.limit)),
|
|
27
28
|
listPlayerTransactions: os.listPlayerTransactions.handler(async ({ input, context }) => {
|
|
@@ -85,6 +86,25 @@ export function createWalletRouter(wallet, adminGuard, audit) {
|
|
|
85
86
|
return deleted;
|
|
86
87
|
}),
|
|
87
88
|
},
|
|
89
|
+
deposits: {
|
|
90
|
+
getAddress: os.deposits.getAddress.handler(({ input, context }) => mapErrors({ CONFLICT: DepositAddressUnsupportedError }, () => wallet.getOrCreateDepositAddress(getUserId(context), input.currency))),
|
|
91
|
+
},
|
|
92
|
+
webhook: os.webhook.handler(async ({ context }) => {
|
|
93
|
+
const rawBody = context.rawBody;
|
|
94
|
+
if (rawBody === undefined || !webhookVerifier.verify(rawBody, context.request.headers)) {
|
|
95
|
+
throw new ORPCError('UNAUTHORIZED', { message: 'Invalid payment webhook signature' });
|
|
96
|
+
}
|
|
97
|
+
const event = paymentAdapter.parseWebhook?.(rawBody, context.request.headers);
|
|
98
|
+
if (event) {
|
|
99
|
+
if (event.kind === 'deposit') {
|
|
100
|
+
await wallet.creditDepositByAddress(event);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
await wallet.reconcileWithdrawalStatus(event);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return { ok: true };
|
|
107
|
+
}),
|
|
88
108
|
});
|
|
89
109
|
}
|
|
90
110
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet/router/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -305,6 +305,40 @@ export declare const walletTransaction: import("drizzle-orm/pg-core").PgTableWit
|
|
|
305
305
|
identity: undefined;
|
|
306
306
|
generated: undefined;
|
|
307
307
|
}, {}, {}>;
|
|
308
|
+
destinationAddress: import("drizzle-orm/pg-core").PgColumn<{
|
|
309
|
+
name: "destinationAddress";
|
|
310
|
+
tableName: "wallet_transaction";
|
|
311
|
+
dataType: "string";
|
|
312
|
+
columnType: "PgText";
|
|
313
|
+
data: string;
|
|
314
|
+
driverParam: string;
|
|
315
|
+
notNull: false;
|
|
316
|
+
hasDefault: false;
|
|
317
|
+
isPrimaryKey: false;
|
|
318
|
+
isAutoincrement: false;
|
|
319
|
+
hasRuntimeDefault: false;
|
|
320
|
+
enumValues: [string, ...string[]];
|
|
321
|
+
baseColumn: never;
|
|
322
|
+
identity: undefined;
|
|
323
|
+
generated: undefined;
|
|
324
|
+
}, {}, {}>;
|
|
325
|
+
txHash: import("drizzle-orm/pg-core").PgColumn<{
|
|
326
|
+
name: "txHash";
|
|
327
|
+
tableName: "wallet_transaction";
|
|
328
|
+
dataType: "string";
|
|
329
|
+
columnType: "PgText";
|
|
330
|
+
data: string;
|
|
331
|
+
driverParam: string;
|
|
332
|
+
notNull: false;
|
|
333
|
+
hasDefault: false;
|
|
334
|
+
isPrimaryKey: false;
|
|
335
|
+
isAutoincrement: false;
|
|
336
|
+
hasRuntimeDefault: false;
|
|
337
|
+
enumValues: [string, ...string[]];
|
|
338
|
+
baseColumn: never;
|
|
339
|
+
identity: undefined;
|
|
340
|
+
generated: undefined;
|
|
341
|
+
}, {}, {}>;
|
|
308
342
|
metadata: import("drizzle-orm/pg-core").PgColumn<{
|
|
309
343
|
name: "metadata";
|
|
310
344
|
tableName: "wallet_transaction";
|
|
@@ -485,7 +519,117 @@ export declare const autoWithdrawalRule: import("drizzle-orm/pg-core").PgTableWi
|
|
|
485
519
|
};
|
|
486
520
|
dialect: "pg";
|
|
487
521
|
}>;
|
|
522
|
+
export declare const walletDepositAddress: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
523
|
+
name: "wallet_deposit_address";
|
|
524
|
+
schema: undefined;
|
|
525
|
+
columns: {
|
|
526
|
+
id: import("drizzle-orm/pg-core").PgColumn<{
|
|
527
|
+
name: "id";
|
|
528
|
+
tableName: "wallet_deposit_address";
|
|
529
|
+
dataType: "string";
|
|
530
|
+
columnType: "PgUUID";
|
|
531
|
+
data: string;
|
|
532
|
+
driverParam: string;
|
|
533
|
+
notNull: true;
|
|
534
|
+
hasDefault: true;
|
|
535
|
+
isPrimaryKey: true;
|
|
536
|
+
isAutoincrement: false;
|
|
537
|
+
hasRuntimeDefault: false;
|
|
538
|
+
enumValues: undefined;
|
|
539
|
+
baseColumn: never;
|
|
540
|
+
identity: undefined;
|
|
541
|
+
generated: undefined;
|
|
542
|
+
}, {}, {}>;
|
|
543
|
+
userId: import("drizzle-orm/pg-core").PgColumn<{
|
|
544
|
+
name: "userId";
|
|
545
|
+
tableName: "wallet_deposit_address";
|
|
546
|
+
dataType: "string";
|
|
547
|
+
columnType: "PgUUID";
|
|
548
|
+
data: string;
|
|
549
|
+
driverParam: string;
|
|
550
|
+
notNull: true;
|
|
551
|
+
hasDefault: false;
|
|
552
|
+
isPrimaryKey: false;
|
|
553
|
+
isAutoincrement: false;
|
|
554
|
+
hasRuntimeDefault: false;
|
|
555
|
+
enumValues: undefined;
|
|
556
|
+
baseColumn: never;
|
|
557
|
+
identity: undefined;
|
|
558
|
+
generated: undefined;
|
|
559
|
+
}, {}, {}>;
|
|
560
|
+
currency: import("drizzle-orm/pg-core").PgColumn<{
|
|
561
|
+
name: "currency";
|
|
562
|
+
tableName: "wallet_deposit_address";
|
|
563
|
+
dataType: "string";
|
|
564
|
+
columnType: "PgText";
|
|
565
|
+
data: string;
|
|
566
|
+
driverParam: string;
|
|
567
|
+
notNull: true;
|
|
568
|
+
hasDefault: false;
|
|
569
|
+
isPrimaryKey: false;
|
|
570
|
+
isAutoincrement: false;
|
|
571
|
+
hasRuntimeDefault: false;
|
|
572
|
+
enumValues: [string, ...string[]];
|
|
573
|
+
baseColumn: never;
|
|
574
|
+
identity: undefined;
|
|
575
|
+
generated: undefined;
|
|
576
|
+
}, {}, {}>;
|
|
577
|
+
address: import("drizzle-orm/pg-core").PgColumn<{
|
|
578
|
+
name: "address";
|
|
579
|
+
tableName: "wallet_deposit_address";
|
|
580
|
+
dataType: "string";
|
|
581
|
+
columnType: "PgText";
|
|
582
|
+
data: string;
|
|
583
|
+
driverParam: string;
|
|
584
|
+
notNull: true;
|
|
585
|
+
hasDefault: false;
|
|
586
|
+
isPrimaryKey: false;
|
|
587
|
+
isAutoincrement: false;
|
|
588
|
+
hasRuntimeDefault: false;
|
|
589
|
+
enumValues: [string, ...string[]];
|
|
590
|
+
baseColumn: never;
|
|
591
|
+
identity: undefined;
|
|
592
|
+
generated: undefined;
|
|
593
|
+
}, {}, {}>;
|
|
594
|
+
providerName: import("drizzle-orm/pg-core").PgColumn<{
|
|
595
|
+
name: "providerName";
|
|
596
|
+
tableName: "wallet_deposit_address";
|
|
597
|
+
dataType: "string";
|
|
598
|
+
columnType: "PgText";
|
|
599
|
+
data: string;
|
|
600
|
+
driverParam: string;
|
|
601
|
+
notNull: true;
|
|
602
|
+
hasDefault: false;
|
|
603
|
+
isPrimaryKey: false;
|
|
604
|
+
isAutoincrement: false;
|
|
605
|
+
hasRuntimeDefault: false;
|
|
606
|
+
enumValues: [string, ...string[]];
|
|
607
|
+
baseColumn: never;
|
|
608
|
+
identity: undefined;
|
|
609
|
+
generated: undefined;
|
|
610
|
+
}, {}, {}>;
|
|
611
|
+
createdAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
612
|
+
name: "createdAt";
|
|
613
|
+
tableName: "wallet_deposit_address";
|
|
614
|
+
dataType: "date";
|
|
615
|
+
columnType: "PgTimestamp";
|
|
616
|
+
data: Date;
|
|
617
|
+
driverParam: string;
|
|
618
|
+
notNull: true;
|
|
619
|
+
hasDefault: true;
|
|
620
|
+
isPrimaryKey: false;
|
|
621
|
+
isAutoincrement: false;
|
|
622
|
+
hasRuntimeDefault: false;
|
|
623
|
+
enumValues: undefined;
|
|
624
|
+
baseColumn: never;
|
|
625
|
+
identity: undefined;
|
|
626
|
+
generated: undefined;
|
|
627
|
+
}, {}, {}>;
|
|
628
|
+
};
|
|
629
|
+
dialect: "pg";
|
|
630
|
+
}>;
|
|
488
631
|
export type Wallet = typeof wallet.$inferSelect;
|
|
489
632
|
export type WalletTransaction = typeof walletTransaction.$inferSelect;
|
|
490
633
|
export type AutoWithdrawalRule = typeof autoWithdrawalRule.$inferSelect;
|
|
634
|
+
export type WalletDepositAddress = typeof walletDepositAddress.$inferSelect;
|
|
491
635
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wallet/schema/index.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,yBAAyB,uGAGrC,CAAC;AAEF,eAAO,MAAM,2BAA2B,4HAGvC,CAAC;AAEF,eAAO,MAAM,cAAc,0DAAsC,CAAC;AAElE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQjB,CAAC;AAEH,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wallet/schema/index.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,yBAAyB,uGAGrC,CAAC;AAEF,eAAO,MAAM,2BAA2B,4HAGvC,CAAC;AAEF,eAAO,MAAM,cAAc,0DAAsC,CAAC;AAElE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQjB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkD7B,CAAC;AAGF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAchC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,YAAY,CAAC;AAChD,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,YAAY,CAAC;AACxE,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,YAAY,CAAC"}
|
|
@@ -9,7 +9,7 @@ export const walletRailEnum = pgEnum('wallet_rail', WALLET_RAILS);
|
|
|
9
9
|
export const wallet = pgTable('wallet', {
|
|
10
10
|
id: uuid().primaryKey().defaultRandom(),
|
|
11
11
|
userId: uuid().notNull().unique('wallet_user_id_unique'),
|
|
12
|
-
balance: decimal({ precision: 18, scale:
|
|
12
|
+
balance: decimal({ precision: 18, scale: 8 }).notNull().default('0'),
|
|
13
13
|
currency: text().notNull().default('USD'),
|
|
14
14
|
updatedAt: timestamp({ withTimezone: true })
|
|
15
15
|
.notNull()
|
|
@@ -21,7 +21,7 @@ export const walletTransaction = pgTable('wallet_transaction', {
|
|
|
21
21
|
.notNull()
|
|
22
22
|
.references(() => wallet.id),
|
|
23
23
|
type: walletTransactionTypeEnum().notNull(),
|
|
24
|
-
amount: decimal({ precision: 18, scale:
|
|
24
|
+
amount: decimal({ precision: 18, scale: 8 }).notNull(),
|
|
25
25
|
currency: text().notNull(),
|
|
26
26
|
status: walletTransactionStatusEnum()
|
|
27
27
|
.$type()
|
|
@@ -38,6 +38,8 @@ export const walletTransaction = pgTable('wallet_transaction', {
|
|
|
38
38
|
// reconciliation rather than buried in free-form JSON.
|
|
39
39
|
providerName: text(),
|
|
40
40
|
providerRefId: text(),
|
|
41
|
+
destinationAddress: text(),
|
|
42
|
+
txHash: text(),
|
|
41
43
|
// Reserved escape hatch for genuinely free-form, non-queryable extras. Provider
|
|
42
44
|
// identity now lives in the typed columns above, not here.
|
|
43
45
|
metadata: text(),
|
|
@@ -52,7 +54,10 @@ export const walletTransaction = pgTable('wallet_transaction', {
|
|
|
52
54
|
index('wallet_transaction_status_idx').on(t.status),
|
|
53
55
|
index('wallet_transaction_rail_idx').on(t.rail),
|
|
54
56
|
index('wallet_transaction_currency_idx').on(t.currency),
|
|
55
|
-
index('
|
|
57
|
+
index('wallet_transaction_tx_hash_idx').on(t.txHash),
|
|
58
|
+
uniqueIndex('wallet_transaction_provider_ref_id_idx')
|
|
59
|
+
.on(t.providerRefId)
|
|
60
|
+
.where(sql `${t.providerRefId} IS NOT NULL`),
|
|
56
61
|
uniqueIndex('wallet_transaction_wallet_id_idempotency_key_idx')
|
|
57
62
|
.on(t.walletId, t.idempotencyKey)
|
|
58
63
|
.where(sql `${t.idempotencyKey} IS NOT NULL`),
|
|
@@ -61,7 +66,7 @@ export const walletTransaction = pgTable('wallet_transaction', {
|
|
|
61
66
|
export const autoWithdrawalRule = pgTable('auto_withdrawal_rule', {
|
|
62
67
|
id: uuid().primaryKey().defaultRandom(),
|
|
63
68
|
userId: uuid().notNull().unique('auto_withdrawal_rule_user_id_unique'),
|
|
64
|
-
threshold: decimal({ precision: 18, scale:
|
|
69
|
+
threshold: decimal({ precision: 18, scale: 8 }).notNull(),
|
|
65
70
|
reason: text().notNull(),
|
|
66
71
|
createdBy: uuid().notNull(),
|
|
67
72
|
createdAt: timestamp({ withTimezone: true }).notNull().defaultNow(),
|
|
@@ -69,4 +74,15 @@ export const autoWithdrawalRule = pgTable('auto_withdrawal_rule', {
|
|
|
69
74
|
.notNull()
|
|
70
75
|
.$onUpdateFn(() => new Date()),
|
|
71
76
|
});
|
|
77
|
+
export const walletDepositAddress = pgTable('wallet_deposit_address', {
|
|
78
|
+
id: uuid().primaryKey().defaultRandom(),
|
|
79
|
+
userId: uuid().notNull(),
|
|
80
|
+
currency: text().notNull(),
|
|
81
|
+
address: text().notNull(),
|
|
82
|
+
providerName: text().notNull(),
|
|
83
|
+
createdAt: timestamp({ withTimezone: true }).notNull().defaultNow(),
|
|
84
|
+
}, (t) => [
|
|
85
|
+
uniqueIndex('wallet_deposit_address_user_id_currency_idx').on(t.userId, t.currency),
|
|
86
|
+
index('wallet_deposit_address_address_idx').on(t.address),
|
|
87
|
+
]);
|
|
72
88
|
//# 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":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,SAAS,EACT,MAAM,EACN,KAAK,EACL,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,2BAA2B,EAC3B,wBAAwB,GAGzB,MAAM,yBAAyB,CAAC;AAEjC,mFAAmF;AACnF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAC7C,yBAAyB,EACzB,wBAAwB,CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAC/C,2BAA2B,EAC3B,2BAA2B,CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AAElE,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE;IACtC,EAAE,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE;IACvC,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC;IACxD,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACpE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SACzC,OAAO,EAAE;SACT,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CACtC,oBAAoB,EACpB;IACE,EAAE,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE;IACvC,QAAQ,EAAE,IAAI,EAAE;SACb,OAAO,EAAE;SACT,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9B,IAAI,EAAE,yBAAyB,EAAE,CAAC,OAAO,EAAE;IAC3C,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;IACtD,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE;IAC1B,MAAM,EAAE,2BAA2B,EAAE;SAClC,KAAK,EAA2B;SAChC,OAAO,EAAE;SACT,OAAO,CAAC,SAAS,CAAC;IACrB,IAAI,EAAE,cAAc,EAAE,CAAC,KAAK,EAAc;IAC1C,8EAA8E;IAC9E,2BAA2B;IAC3B,UAAU,EAAE,IAAI,EAAE;IAClB,UAAU,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC7C,YAAY,EAAE,IAAI,EAAE;IACpB,gFAAgF;IAChF,0EAA0E;IAC1E,uDAAuD;IACvD,YAAY,EAAE,IAAI,EAAE;IACpB,aAAa,EAAE,IAAI,EAAE;IACrB,kBAAkB,EAAE,IAAI,EAAE;IAC1B,MAAM,EAAE,IAAI,EAAE;IACd,gFAAgF;IAChF,2DAA2D;IAC3D,QAAQ,EAAE,IAAI,EAAE;IAChB,oFAAoF;IACpF,2EAA2E;IAC3E,cAAc,EAAE,IAAI,EAAE;IACtB,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CACpE,EACD,CAAC,CAAC,EAAE,EAAE,CAAC;IACL,KAAK,CAAC,kCAAkC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACxD,KAAK,CAAC,mCAAmC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,KAAK,CAAC,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,KAAK,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,KAAK,CAAC,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,KAAK,CAAC,iCAAiC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvD,KAAK,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IACpD,WAAW,CAAC,wCAAwC,CAAC;SAClD,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;SACnB,KAAK,CAAC,GAAG,CAAA,GAAG,CAAC,CAAC,aAAa,cAAc,CAAC;IAC7C,WAAW,CAAC,kDAAkD,CAAC;SAC5D,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc,CAAC;SAChC,KAAK,CAAC,GAAG,CAAA,GAAG,CAAC,CAAC,cAAc,cAAc,CAAC;CAC/C,CACF,CAAC;AAEF,oGAAoG;AACpG,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,EAAE;IAChE,EAAE,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE;IACvC,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,qCAAqC,CAAC;IACtE,SAAS,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;IACzD,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE;IACxB,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE;IAC3B,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACnE,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SACzC,OAAO,EAAE;SACT,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CACzC,wBAAwB,EACxB;IACE,EAAE,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,aAAa,EAAE;IACvC,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE;IACxB,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE;IAC1B,OAAO,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE;IACzB,YAAY,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE;IAC9B,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CACpE,EACD,CAAC,CAAC,EAAE,EAAE,CAAC;IACL,WAAW,CAAC,6CAA6C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;IACnF,KAAK,CAAC,oCAAoC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;CAC1D,CACF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type EventBus, DrizzleService } from '@openora/core/server';
|
|
2
|
-
import { type PaymentAdapter, type AdminUserDirectory, type PlatformConfig, type RateLimiterAdapter, type WalletRail, type PlayerTags, type AuditWritePort, type User } from '@openora/core/contracts';
|
|
2
|
+
import { type PaymentAdapter, type PaymentWebhookEvent, type AdminUserDirectory, type PlatformConfig, type RateLimiterAdapter, type WalletRail, type PlayerTags, type AuditWritePort, type User } from '@openora/core/contracts';
|
|
3
3
|
import { type WalletTransaction } from '../schema/index.js';
|
|
4
4
|
import type { TransactionResult, WithdrawalQueueFilter, AutoWithdrawalRule } from '../contract/index.js';
|
|
5
5
|
export declare const WalletNotFoundError: new (id: string) => Error;
|
|
@@ -8,6 +8,8 @@ export declare const InsufficientBalanceError: new (available: string, requested
|
|
|
8
8
|
export declare const WithdrawalNotPendingError: new () => Error;
|
|
9
9
|
export declare const KycRequiredError: new () => Error;
|
|
10
10
|
export declare const IdempotencyKeyReuseError: new () => Error;
|
|
11
|
+
export declare const DepositAddressUnsupportedError: new () => Error;
|
|
12
|
+
export declare const DestinationAddressRequiredError: new () => Error;
|
|
11
13
|
export declare const CurrencyMismatchError: new (requested: unknown, walletCurrency: unknown) => Error;
|
|
12
14
|
export declare function railFor(currency: string): WalletRail;
|
|
13
15
|
export type WalletServiceDeps = {
|
|
@@ -75,11 +77,12 @@ export declare class WalletService {
|
|
|
75
77
|
* return an already-`completed`/`processing` result if the request
|
|
76
78
|
* qualifies for (and passes) auto-approval - see `maybeAutoApprove`.
|
|
77
79
|
*/
|
|
78
|
-
withdraw({ userId, amount, currency, idempotencyKey, }: {
|
|
80
|
+
withdraw({ userId, amount, currency, idempotencyKey, destinationAddress, }: {
|
|
79
81
|
userId: User['id'];
|
|
80
82
|
amount: string;
|
|
81
83
|
currency: string;
|
|
82
84
|
idempotencyKey?: string;
|
|
85
|
+
destinationAddress?: string;
|
|
83
86
|
}): Promise<TransactionResult>;
|
|
84
87
|
listWithdrawals(filters: WithdrawalQueueFilter): Promise<{
|
|
85
88
|
items: {
|
|
@@ -93,6 +96,8 @@ export declare class WalletService {
|
|
|
93
96
|
kycStatus: "pending" | "not_started" | "verified" | "rejected" | "resubmission_requested" | "manually_overridden" | null;
|
|
94
97
|
riskTags: string[];
|
|
95
98
|
requestedAt: string;
|
|
99
|
+
destinationAddress: string | null;
|
|
100
|
+
txHash: string | null;
|
|
96
101
|
}[];
|
|
97
102
|
total: number;
|
|
98
103
|
page: number;
|
|
@@ -106,6 +111,10 @@ export declare class WalletService {
|
|
|
106
111
|
approveWithdrawal(adminId: User['id'], withdrawalId: WalletTransaction['id']): Promise<TransactionResult>;
|
|
107
112
|
private flipToProcessing;
|
|
108
113
|
private settleApproved;
|
|
114
|
+
private finalizeFailedWithdrawal;
|
|
115
|
+
reconcileWithdrawalStatus(event: Extract<PaymentWebhookEvent, {
|
|
116
|
+
kind: 'withdrawal';
|
|
117
|
+
}>): Promise<void>;
|
|
109
118
|
private maybeAutoApprove;
|
|
110
119
|
private evaluateAutoApproval;
|
|
111
120
|
private resolveAutoThreshold;
|
|
@@ -136,7 +145,16 @@ export declare class WalletService {
|
|
|
136
145
|
page: number;
|
|
137
146
|
limit: number;
|
|
138
147
|
}>;
|
|
148
|
+
getOrCreateDepositAddress(userId: User['id'], currency: string): Promise<{
|
|
149
|
+
address: string;
|
|
150
|
+
currency: string;
|
|
151
|
+
}>;
|
|
152
|
+
creditDepositByAddress(event: Extract<PaymentWebhookEvent, {
|
|
153
|
+
kind: 'deposit';
|
|
154
|
+
}>): Promise<void>;
|
|
139
155
|
private userIdForWallet;
|
|
140
156
|
private findByIdempotencyKey;
|
|
157
|
+
private findDepositAddress;
|
|
158
|
+
private findDepositAddressByAddress;
|
|
141
159
|
}
|
|
142
160
|
//# sourceMappingURL=wallet.service.d.ts.map
|
|
@@ -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,EAMb,cAAc,EAOf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAEnB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,cAAc,EAEnB,KAAK,IAAI,EACV,MAAM,yBAAyB,CAAC;AAGjC,OAAO,
|
|
1
|
+
{"version":3,"file":"wallet.service.d.ts","sourceRoot":"","sources":["../../../src/wallet/service/wallet.service.ts"],"names":[],"mappings":"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"}
|