@canton-network/wallet-gateway-remote 0.21.0 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/dist/auth/jwt-auth-service.d.ts.map +1 -1
- package/dist/auth/jwt-auth-service.js +23 -3
- package/dist/auth/jwt-unsafe-auth-service.d.ts.map +1 -1
- package/dist/auth/jwt-unsafe-auth-service.js +7 -1
- package/dist/config/Config.d.ts +145 -0
- package/dist/config/Config.d.ts.map +1 -1
- package/dist/config/Config.js +18 -2
- package/dist/config/Config.test.js +4 -1
- package/dist/config/ConfigUtils.d.ts.map +1 -1
- package/dist/config/ConfigUtils.js +41 -2
- package/dist/dapp-api/controller.d.ts.map +1 -1
- package/dist/dapp-api/controller.js +7 -14
- package/dist/dapp-api/rpc-gen/typings.d.ts +32 -5
- package/dist/dapp-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/env.d.ts +19 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +16 -0
- package/dist/example-config.d.ts +3 -1
- package/dist/example-config.d.ts.map +1 -1
- package/dist/example-config.js +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +8 -18
- package/dist/ledger/party-allocation-service.d.ts.map +1 -1
- package/dist/ledger/party-allocation-service.js +3 -0
- package/dist/ledger/transaction-service.d.ts +22 -0
- package/dist/ledger/transaction-service.d.ts.map +1 -0
- package/dist/ledger/transaction-service.js +296 -0
- package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.d.ts.map +1 -1
- package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.js +1 -0
- package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.d.ts.map +1 -1
- package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.js +1 -0
- package/dist/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.d.ts.map +1 -1
- package/dist/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.js +1 -0
- package/dist/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.d.ts.map +1 -1
- package/dist/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.js +1 -0
- package/dist/ledger/wallet-allocation/wallet-allocation-service.d.ts +2 -2
- package/dist/ledger/wallet-allocation/wallet-allocation-service.d.ts.map +1 -1
- package/dist/ledger/wallet-allocation/wallet-allocation-service.js +10 -4
- package/dist/ledger/wallet-allocation/wallet-allocation-service.test.js +13 -12
- package/dist/ledger/wallet-sync-service.d.ts +4 -1
- package/dist/ledger/wallet-sync-service.d.ts.map +1 -1
- package/dist/ledger/wallet-sync-service.js +97 -18
- package/dist/ledger/wallet-sync-service.test.js +79 -0
- package/dist/user-api/controller.d.ts.map +1 -1
- package/dist/user-api/controller.js +79 -168
- package/dist/user-api/rpc-gen/typings.d.ts +41 -6
- package/dist/user-api/rpc-gen/typings.d.ts.map +1 -1
- package/dist/web/frontend/404/index.html +2 -2
- package/dist/web/frontend/approve/index.html +5 -4
- package/dist/web/frontend/assets/{404-C-OWOQ3D.js → 404-CwWne4gl.js} +2 -2
- package/dist/web/frontend/assets/approve-sXtkk0nx.js +20 -0
- package/dist/web/frontend/assets/{callback-Bev8B02C.js → callback-5r0xYoAY.js} +1 -1
- package/dist/web/frontend/assets/index-BY0dSIJ0.js +1698 -0
- package/dist/web/frontend/assets/index-C4_-rNJw.js +1 -0
- package/dist/web/frontend/assets/login-DwOvzCWW.js +7 -0
- package/dist/web/frontend/assets/settings-lXZlQ6-V.js +37 -0
- package/dist/web/frontend/assets/{state-BZtCpgb6.js → state-Zh2baU_h.js} +1 -1
- package/dist/web/frontend/assets/{transactions-n26INLpW.js → transactions-gLP4M5t0.js} +2 -2
- package/dist/web/frontend/assets/{utils-DqekxUsS.js → utils-CI12TM_E.js} +1 -1
- package/dist/web/frontend/assets/{wallets-dk9ilN4k.js → wallets-Cmwexted.js} +2 -2
- package/dist/web/frontend/callback/index.html +2 -2
- package/dist/web/frontend/index.html +1 -1
- package/dist/web/frontend/login/index.html +4 -3
- package/dist/web/frontend/settings/index.html +3 -3
- package/dist/web/frontend/transactions/index.html +4 -4
- package/dist/web/frontend/wallets/index.html +4 -4
- package/package.json +21 -20
- package/dist/web/frontend/assets/approve-CPkaFbuR.js +0 -17
- package/dist/web/frontend/assets/index-CZYV-CqB.js +0 -1679
- package/dist/web/frontend/assets/login-D2fXBXBX.js +0 -7
- package/dist/web/frontend/assets/settings-laHcyEOv.js +0 -37
package/dist/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import dotenv from 'dotenv';
|
|
5
|
+
dotenv.config({ quiet: true, path: ['.env', '.env.local'] });
|
|
4
6
|
import { Option, Command } from '@commander-js/extra-typings';
|
|
5
7
|
import { initialize } from './init.js';
|
|
6
8
|
import { createCLI } from '@canton-network/core-wallet-store-sql';
|
|
@@ -8,7 +10,7 @@ import { createCLI as createSigningCLI } from '@canton-network/core-signing-stor
|
|
|
8
10
|
import { ConfigUtils } from './config/ConfigUtils.js';
|
|
9
11
|
import pino from 'pino';
|
|
10
12
|
import z from 'zod';
|
|
11
|
-
import {
|
|
13
|
+
import { rawConfigSchema } from './config/Config.js';
|
|
12
14
|
import exampleConfig from './example-config.js';
|
|
13
15
|
import { GATEWAY_VERSION } from './version.js';
|
|
14
16
|
const program = new Command()
|
|
@@ -24,7 +26,7 @@ const program = new Command()
|
|
|
24
26
|
.default('pretty'))
|
|
25
27
|
.action((opts) => {
|
|
26
28
|
if (opts.configSchema) {
|
|
27
|
-
console.log(JSON.stringify(z.toJSONSchema(
|
|
29
|
+
console.log(JSON.stringify(z.toJSONSchema(rawConfigSchema), null, 2));
|
|
28
30
|
process.exit(0);
|
|
29
31
|
}
|
|
30
32
|
if (opts.configExample) {
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAqB7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAyIvC,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAqB7B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAyIvC,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAiIhE"}
|
package/dist/init.js
CHANGED
|
@@ -16,12 +16,12 @@ import express from 'express';
|
|
|
16
16
|
import { jwtAuth } from './middleware/jwtAuth.js';
|
|
17
17
|
import { rateLimiter } from './middleware/rateLimit.js';
|
|
18
18
|
import { deriveUrls } from './config/ConfigUtils.js';
|
|
19
|
-
import { existsSync
|
|
20
|
-
import path from 'path';
|
|
19
|
+
import { existsSync } from 'fs';
|
|
21
20
|
import { GATEWAY_VERSION } from './version.js';
|
|
22
21
|
import { sessionHandler } from './middleware/sessionHandler.js';
|
|
23
22
|
import { NotificationService } from './notification/NotificationService.js';
|
|
24
23
|
import { sql } from 'kysely';
|
|
24
|
+
import { Env } from './env.js';
|
|
25
25
|
let isReady = false;
|
|
26
26
|
async function initializeDatabase(config, logger) {
|
|
27
27
|
logger.info('Checking for database migrations...');
|
|
@@ -137,25 +137,15 @@ export async function initialize(opts, logger) {
|
|
|
137
137
|
const store = await initializeDatabase(config, logger);
|
|
138
138
|
const signingStore = await initializeSigningDatabase(config, logger);
|
|
139
139
|
const authService = jwtAuthService(store, logger);
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
let apiKey;
|
|
144
|
-
let apiSecret;
|
|
145
|
-
if (existsSync(apiPath) && existsSync(secretPath)) {
|
|
146
|
-
apiKey = readFileSync(apiPath, 'utf8');
|
|
147
|
-
apiSecret = readFileSync(secretPath, 'utf8');
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
140
|
+
let apiKey = Env.FIREBLOCKS_API_KEY();
|
|
141
|
+
let apiSecret = Env.FIREBLOCKS_SECRET();
|
|
142
|
+
if (!apiKey || !apiSecret) {
|
|
150
143
|
apiKey = 'missing';
|
|
151
144
|
apiSecret = 'missing';
|
|
152
|
-
logger.warn('Fireblocks
|
|
145
|
+
logger.warn('Fireblocks key files are missing');
|
|
153
146
|
}
|
|
154
147
|
const keyInfo = { apiKey, apiSecret };
|
|
155
148
|
const userApiKeys = new Map([['user', keyInfo]]);
|
|
156
|
-
const blockdaemonApiUrl = process.env.BLOCKDAEMON_API_URL ||
|
|
157
|
-
'http://localhost:5080/api/cwp/canton';
|
|
158
|
-
const blockdaemonApiKey = process.env.BLOCKDAEMON_API_KEY || '';
|
|
159
149
|
const drivers = {
|
|
160
150
|
[SigningProvider.PARTICIPANT]: new ParticipantSigningDriver(),
|
|
161
151
|
[SigningProvider.WALLET_KERNEL]: new InternalSigningDriver(signingStore),
|
|
@@ -164,8 +154,8 @@ export async function initialize(opts, logger) {
|
|
|
164
154
|
userApiKeys,
|
|
165
155
|
}),
|
|
166
156
|
[SigningProvider.BLOCKDAEMON]: new BlockdaemonSigningProvider({
|
|
167
|
-
baseUrl:
|
|
168
|
-
apiKey:
|
|
157
|
+
baseUrl: Env.BLOCKDAEMON_API_URL('http://localhost:5080/api/cwp/canton'),
|
|
158
|
+
apiKey: Env.BLOCKDAEMON_API_KEY(''),
|
|
169
159
|
}),
|
|
170
160
|
};
|
|
171
161
|
const allowedPaths = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"party-allocation-service.d.ts","sourceRoot":"","sources":["../../src/ledger/party-allocation-service.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,2BAA2B,EAE9B,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,MAAM,MAAM,cAAc,GAAG;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpD;;GAEG;AACH,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAoB;gBAE9B,EACR,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,MAAM,GACT,EAAE;QACC,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,mBAAmB,EAAE,mBAAmB,CAAA;QACxC,aAAa,EAAE,MAAM,CAAA;QACrB,MAAM,EAAE,MAAM,CAAA;KACjB;IAUD;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAE1E;;;;;;OAMG;IACG,aAAa,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,WAAW,GAC7B,OAAO,CAAC,cAAc,CAAC;IAoB1B;;;OAGG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAenD;;;;;OAKG;IACH,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsB5D;;;;OAIG;IACG,4BAA4B,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,CAAC;IAevC;;;;;;OAMG;IACG,+BAA+B,CACjC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;YAgCJ,qBAAqB;
|
|
1
|
+
{"version":3,"file":"party-allocation-service.d.ts","sourceRoot":"","sources":["../../src/ledger/party-allocation-service.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,2BAA2B,EAE9B,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,MAAM,MAAM,cAAc,GAAG;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpD;;GAEG;AACH,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAoB;gBAE9B,EACR,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,MAAM,GACT,EAAE;QACC,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,mBAAmB,EAAE,mBAAmB,CAAA;QACxC,aAAa,EAAE,MAAM,CAAA;QACrB,MAAM,EAAE,MAAM,CAAA;KACjB;IAUD;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAE1E;;;;;;OAMG;IACG,aAAa,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,WAAW,GAC7B,OAAO,CAAC,cAAc,CAAC;IAoB1B;;;OAGG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAenD;;;;;OAKG;IACH,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsB5D;;;;OAIG;IACG,4BAA4B,CAC9B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,CAAC;IAevC;;;;;;OAMG;IACG,+BAA+B,CACjC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;YAgCJ,qBAAqB;YAoCrB,qBAAqB;CAsCtC"}
|
|
@@ -95,6 +95,9 @@ export class PartyAllocationService {
|
|
|
95
95
|
const res = await this.ledgerClient.postWithRetry('/v2/parties', {
|
|
96
96
|
partyIdHint: hint,
|
|
97
97
|
identityProviderId: '',
|
|
98
|
+
synchronizerId: this.synchronizerId ??
|
|
99
|
+
(await this.ledgerClient.getSynchronizerId()),
|
|
100
|
+
userId,
|
|
98
101
|
});
|
|
99
102
|
if (!res.partyDetails?.party) {
|
|
100
103
|
throw new Error('Failed to allocate party');
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Logger } from 'pino';
|
|
2
|
+
import { LedgerClient } from '@canton-network/core-ledger-client';
|
|
3
|
+
import { Store, Transaction, Wallet, Network } from '@canton-network/core-wallet-store';
|
|
4
|
+
import type { SignResult } from '../user-api/rpc-gen/typings.js';
|
|
5
|
+
import { SigningDriverInterface, SigningProvider } from '@canton-network/core-signing-lib';
|
|
6
|
+
import { ExecuteParams, ExecuteResult, SignParams, SignResultSigned } from '../user-api/rpc-gen/typings.js';
|
|
7
|
+
import { UserId } from '../dapp-api/rpc-gen/typings.js';
|
|
8
|
+
import { Notifier } from '../notification/NotificationService.js';
|
|
9
|
+
export declare class TransactionService {
|
|
10
|
+
private store;
|
|
11
|
+
private logger;
|
|
12
|
+
private signingDrivers;
|
|
13
|
+
private notifier;
|
|
14
|
+
constructor(store: Store, logger: Logger, signingDrivers: Partial<Record<SigningProvider, SigningDriverInterface>> | undefined, notifier: Notifier);
|
|
15
|
+
signWithParticipant(wallet: Wallet): SignResultSigned;
|
|
16
|
+
signWithWalletKernel(userId: UserId, wallet: Wallet, signParams: SignParams): Promise<SignResultSigned>;
|
|
17
|
+
signWithBlockdaemon(userId: UserId, wallet: Wallet, signParams: SignParams): Promise<SignResult>;
|
|
18
|
+
signWithFireblocks(userId: UserId, wallet: Wallet, signParams: SignParams): Promise<SignResult>;
|
|
19
|
+
executeWithParticipant(userId: UserId, executeParams: ExecuteParams, transaction: Transaction, ledgerClient: LedgerClient, network: Network): Promise<ExecuteResult>;
|
|
20
|
+
executeWithExternal(userId: UserId, executeParams: ExecuteParams, transaction: Transaction, ledgerClient: LedgerClient): Promise<ExecuteResult>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=transaction-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-service.d.ts","sourceRoot":"","sources":["../../src/ledger/transaction-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AACjE,OAAO,EACH,KAAK,EACL,WAAW,EACX,MAAM,EACN,OAAO,EACV,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAGH,sBAAsB,EACtB,eAAe,EAElB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACH,aAAa,EACb,aAAa,EACb,UAAU,EACV,gBAAgB,EACnB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAA;AAYjE,qBAAa,kBAAkB;IAEvB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,QAAQ;gBALR,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,OAAO,CAC3B,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAClD,YAAK,EACE,QAAQ,EAAE,QAAQ;IAGvB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB;IAS/C,oBAAoB,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAoDf,mBAAmB,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,GACvB,OAAO,CAAC,UAAU,CAAC;IAgGT,kBAAkB,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,GACvB,OAAO,CAAC,UAAU,CAAC;IAoGT,sBAAsB,CAC/B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,OAAO,GACjB,OAAO,CAAC,aAAa,CAAC;IAqCZ,mBAAmB,CAC5B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,GAC3B,OAAO,CAAC,aAAa,CAAC;CAmD5B"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { SigningProvider, } from '@canton-network/core-signing-lib';
|
|
4
|
+
import { ledgerPrepareParams } from '../utils.js';
|
|
5
|
+
function handleSigningError(result) {
|
|
6
|
+
if ('error' in result) {
|
|
7
|
+
throw new Error(`Error from signing driver: ${result.error_description}`);
|
|
8
|
+
}
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
export class TransactionService {
|
|
12
|
+
constructor(store, logger, signingDrivers = {}, notifier) {
|
|
13
|
+
this.store = store;
|
|
14
|
+
this.logger = logger;
|
|
15
|
+
this.signingDrivers = signingDrivers;
|
|
16
|
+
this.notifier = notifier;
|
|
17
|
+
}
|
|
18
|
+
signWithParticipant(wallet) {
|
|
19
|
+
return {
|
|
20
|
+
status: 'signed',
|
|
21
|
+
signature: 'none',
|
|
22
|
+
signedBy: wallet.namespace,
|
|
23
|
+
partyId: wallet.partyId,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
async signWithWalletKernel(userId, wallet, signParams) {
|
|
27
|
+
const signingProvider = this.signingDrivers[SigningProvider.WALLET_KERNEL];
|
|
28
|
+
if (!signingProvider) {
|
|
29
|
+
throw new Error('Wallet Kernel signing driver not available');
|
|
30
|
+
}
|
|
31
|
+
const driver = signingProvider.controller(userId);
|
|
32
|
+
const { preparedTransaction, preparedTransactionHash, commandId } = signParams;
|
|
33
|
+
const { signature } = await driver
|
|
34
|
+
.signTransaction({
|
|
35
|
+
tx: preparedTransaction,
|
|
36
|
+
txHash: preparedTransactionHash,
|
|
37
|
+
keyIdentifier: {
|
|
38
|
+
publicKey: wallet.publicKey,
|
|
39
|
+
},
|
|
40
|
+
})
|
|
41
|
+
.then(handleSigningError);
|
|
42
|
+
if (!signature) {
|
|
43
|
+
throw new Error('Failed to sign transaction: ' + JSON.stringify(signature));
|
|
44
|
+
}
|
|
45
|
+
const existingTx = await this.store.getTransaction(commandId);
|
|
46
|
+
const now = new Date();
|
|
47
|
+
const signedTx = {
|
|
48
|
+
commandId,
|
|
49
|
+
status: 'signed',
|
|
50
|
+
preparedTransaction,
|
|
51
|
+
preparedTransactionHash,
|
|
52
|
+
origin: existingTx?.origin ?? null,
|
|
53
|
+
...(existingTx?.createdAt && {
|
|
54
|
+
createdAt: existingTx.createdAt,
|
|
55
|
+
}),
|
|
56
|
+
signedAt: now,
|
|
57
|
+
};
|
|
58
|
+
this.store.setTransaction(signedTx);
|
|
59
|
+
this.notifier.emit('txChanged', signedTx);
|
|
60
|
+
return {
|
|
61
|
+
status: 'signed',
|
|
62
|
+
signature,
|
|
63
|
+
signedBy: wallet.namespace,
|
|
64
|
+
partyId: wallet.partyId,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async signWithBlockdaemon(userId, wallet, signParams) {
|
|
68
|
+
const signingProvider = this.signingDrivers[SigningProvider.BLOCKDAEMON];
|
|
69
|
+
if (!signingProvider) {
|
|
70
|
+
throw new Error('Blockdaemon signing driver not available');
|
|
71
|
+
}
|
|
72
|
+
const driver = signingProvider.controller(userId);
|
|
73
|
+
const { preparedTransaction, preparedTransactionHash, commandId } = signParams;
|
|
74
|
+
let signingResult;
|
|
75
|
+
const existingTx = await this.store.getTransaction(commandId);
|
|
76
|
+
if (existingTx && existingTx.externalTxId) {
|
|
77
|
+
signingResult = await driver
|
|
78
|
+
.getTransaction({
|
|
79
|
+
userId,
|
|
80
|
+
txId: existingTx.externalTxId,
|
|
81
|
+
})
|
|
82
|
+
.then(handleSigningError);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
const internalTxId = crypto
|
|
86
|
+
.randomUUID()
|
|
87
|
+
.replace(/-/g, '')
|
|
88
|
+
.substring(0, 16);
|
|
89
|
+
signingResult = await driver
|
|
90
|
+
.signTransaction({
|
|
91
|
+
tx: preparedTransaction,
|
|
92
|
+
txHash: preparedTransactionHash,
|
|
93
|
+
keyIdentifier: {
|
|
94
|
+
publicKey: wallet.publicKey,
|
|
95
|
+
},
|
|
96
|
+
internalTxId,
|
|
97
|
+
})
|
|
98
|
+
.then(handleSigningError);
|
|
99
|
+
}
|
|
100
|
+
const now = new Date();
|
|
101
|
+
if (signingResult.status === 'signed') {
|
|
102
|
+
if (!signingResult.signature) {
|
|
103
|
+
throw new Error('No signature returned from signing driver');
|
|
104
|
+
}
|
|
105
|
+
const signedTx = {
|
|
106
|
+
commandId,
|
|
107
|
+
status: signingResult.status,
|
|
108
|
+
preparedTransaction,
|
|
109
|
+
preparedTransactionHash,
|
|
110
|
+
origin: existingTx?.origin ?? null,
|
|
111
|
+
...(existingTx?.createdAt && {
|
|
112
|
+
createdAt: existingTx.createdAt,
|
|
113
|
+
}),
|
|
114
|
+
signedAt: now,
|
|
115
|
+
externalTxId: signingResult.txId,
|
|
116
|
+
};
|
|
117
|
+
this.store.setTransaction(signedTx);
|
|
118
|
+
this.notifier.emit('txChanged', signedTx);
|
|
119
|
+
return {
|
|
120
|
+
status: signingResult.status,
|
|
121
|
+
signature: signingResult.signature,
|
|
122
|
+
signedBy: wallet.namespace,
|
|
123
|
+
partyId: wallet.partyId,
|
|
124
|
+
externalTxId: signingResult.txId,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const status = signingResult.status === 'pending' ? 'pending' : 'failed';
|
|
129
|
+
const pendingTx = {
|
|
130
|
+
commandId,
|
|
131
|
+
status,
|
|
132
|
+
preparedTransaction,
|
|
133
|
+
preparedTransactionHash,
|
|
134
|
+
externalTxId: signingResult.txId,
|
|
135
|
+
origin: existingTx?.origin ?? null,
|
|
136
|
+
...(existingTx?.createdAt && {
|
|
137
|
+
createdAt: existingTx.createdAt,
|
|
138
|
+
}),
|
|
139
|
+
};
|
|
140
|
+
this.store.setTransaction(pendingTx);
|
|
141
|
+
this.notifier.emit('txChanged', pendingTx);
|
|
142
|
+
return {
|
|
143
|
+
status: signingResult.status,
|
|
144
|
+
externalTxId: signingResult.txId,
|
|
145
|
+
partyId: wallet.partyId,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async signWithFireblocks(userId, wallet, signParams) {
|
|
150
|
+
const signingProvider = this.signingDrivers[SigningProvider.FIREBLOCKS];
|
|
151
|
+
if (!signingProvider) {
|
|
152
|
+
throw new Error('Fireblocks signing driver not available');
|
|
153
|
+
}
|
|
154
|
+
const driver = signingProvider.controller(userId);
|
|
155
|
+
const { preparedTransaction, preparedTransactionHash, commandId } = signParams;
|
|
156
|
+
let signingResult;
|
|
157
|
+
const existingTx = await this.store.getTransaction(commandId);
|
|
158
|
+
if (existingTx && existingTx.externalTxId) {
|
|
159
|
+
signingResult = await driver
|
|
160
|
+
.getTransaction({
|
|
161
|
+
userId,
|
|
162
|
+
txId: existingTx.externalTxId,
|
|
163
|
+
})
|
|
164
|
+
.then(handleSigningError);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
signingResult = await driver
|
|
168
|
+
.signTransaction({
|
|
169
|
+
userId,
|
|
170
|
+
tx: preparedTransaction,
|
|
171
|
+
txHash: Buffer.from(preparedTransactionHash, 'base64').toString('hex'),
|
|
172
|
+
keyIdentifier: {
|
|
173
|
+
publicKey: wallet.publicKey,
|
|
174
|
+
},
|
|
175
|
+
})
|
|
176
|
+
.then(handleSigningError);
|
|
177
|
+
}
|
|
178
|
+
const now = new Date();
|
|
179
|
+
if (signingResult.status === 'signed') {
|
|
180
|
+
if (!signingResult.signature) {
|
|
181
|
+
throw new Error('No signature returned from signing driver');
|
|
182
|
+
}
|
|
183
|
+
const signedTx = {
|
|
184
|
+
commandId,
|
|
185
|
+
status: signingResult.status,
|
|
186
|
+
preparedTransaction,
|
|
187
|
+
preparedTransactionHash,
|
|
188
|
+
origin: existingTx?.origin ?? null,
|
|
189
|
+
...(existingTx?.createdAt && {
|
|
190
|
+
createdAt: existingTx.createdAt,
|
|
191
|
+
}),
|
|
192
|
+
signedAt: now,
|
|
193
|
+
externalTxId: signingResult.txId,
|
|
194
|
+
};
|
|
195
|
+
this.store.setTransaction(signedTx);
|
|
196
|
+
this.notifier.emit('txChanged', signedTx);
|
|
197
|
+
// return signature in format that is already usable in execute
|
|
198
|
+
const decodedSignature = Buffer.from(signingResult.signature, 'hex').toString('base64');
|
|
199
|
+
return {
|
|
200
|
+
status: signingResult.status,
|
|
201
|
+
signature: decodedSignature,
|
|
202
|
+
signedBy: wallet.namespace,
|
|
203
|
+
partyId: wallet.partyId,
|
|
204
|
+
externalTxId: signingResult.txId,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
const status = signingResult.status === 'pending' ? 'pending' : 'failed';
|
|
209
|
+
const pendingTx = {
|
|
210
|
+
commandId,
|
|
211
|
+
status,
|
|
212
|
+
preparedTransaction,
|
|
213
|
+
preparedTransactionHash,
|
|
214
|
+
externalTxId: signingResult.txId,
|
|
215
|
+
origin: existingTx?.origin ?? null,
|
|
216
|
+
...(existingTx?.createdAt && {
|
|
217
|
+
createdAt: existingTx.createdAt,
|
|
218
|
+
}),
|
|
219
|
+
};
|
|
220
|
+
this.store.setTransaction(pendingTx);
|
|
221
|
+
this.notifier.emit('txChanged', pendingTx);
|
|
222
|
+
return {
|
|
223
|
+
status: signingResult.status,
|
|
224
|
+
externalTxId: signingResult.txId,
|
|
225
|
+
partyId: wallet.partyId,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
async executeWithParticipant(userId, executeParams, transaction, ledgerClient, network) {
|
|
230
|
+
const { commandId, partyId } = executeParams;
|
|
231
|
+
const synchronizerId = network.synchronizerId ?? (await ledgerClient.getSynchronizerId());
|
|
232
|
+
const prep = ledgerPrepareParams(userId, partyId, synchronizerId, transaction.payload);
|
|
233
|
+
const res = await ledgerClient.postWithRetry('/v2/commands/submit-and-wait', prep);
|
|
234
|
+
const executedTx = {
|
|
235
|
+
commandId,
|
|
236
|
+
status: 'executed',
|
|
237
|
+
preparedTransaction: transaction.preparedTransaction,
|
|
238
|
+
preparedTransactionHash: transaction.preparedTransactionHash,
|
|
239
|
+
payload: res,
|
|
240
|
+
origin: transaction.origin ?? null,
|
|
241
|
+
...(transaction.createdAt && {
|
|
242
|
+
createdAt: transaction.createdAt,
|
|
243
|
+
}),
|
|
244
|
+
...(transaction.signedAt && {
|
|
245
|
+
signedAt: transaction.signedAt,
|
|
246
|
+
}),
|
|
247
|
+
};
|
|
248
|
+
this.store.setTransaction(executedTx);
|
|
249
|
+
this.notifier.emit('txChanged', executedTx);
|
|
250
|
+
return res;
|
|
251
|
+
}
|
|
252
|
+
async executeWithExternal(userId, executeParams, transaction, ledgerClient) {
|
|
253
|
+
const { commandId, partyId, signature, signedBy } = executeParams;
|
|
254
|
+
const result = await ledgerClient.postWithRetry('/v2/interactive-submission/execute', {
|
|
255
|
+
userId,
|
|
256
|
+
preparedTransaction: transaction.preparedTransaction,
|
|
257
|
+
hashingSchemeVersion: 'HASHING_SCHEME_VERSION_V2',
|
|
258
|
+
submissionId: commandId,
|
|
259
|
+
deduplicationPeriod: {
|
|
260
|
+
Empty: {},
|
|
261
|
+
},
|
|
262
|
+
partySignatures: {
|
|
263
|
+
signatures: [
|
|
264
|
+
{
|
|
265
|
+
party: partyId,
|
|
266
|
+
signatures: [
|
|
267
|
+
{
|
|
268
|
+
signature,
|
|
269
|
+
signedBy,
|
|
270
|
+
format: 'SIGNATURE_FORMAT_CONCAT',
|
|
271
|
+
signingAlgorithmSpec: 'SIGNING_ALGORITHM_SPEC_ED25519',
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
},
|
|
275
|
+
],
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
const executedTx = {
|
|
279
|
+
commandId,
|
|
280
|
+
status: 'executed',
|
|
281
|
+
preparedTransaction: transaction.preparedTransaction,
|
|
282
|
+
preparedTransactionHash: transaction.preparedTransactionHash,
|
|
283
|
+
payload: result,
|
|
284
|
+
origin: transaction.origin ?? null,
|
|
285
|
+
...(transaction.createdAt && {
|
|
286
|
+
createdAt: transaction.createdAt,
|
|
287
|
+
}),
|
|
288
|
+
...(transaction.signedAt && {
|
|
289
|
+
signedAt: transaction.signedAt,
|
|
290
|
+
}),
|
|
291
|
+
};
|
|
292
|
+
this.store.setTransaction(executedTx);
|
|
293
|
+
this.notifier.emit('txChanged', executedTx);
|
|
294
|
+
return result;
|
|
295
|
+
}
|
|
296
|
+
}
|
package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockdaemon-wallet-allocator.d.ts","sourceRoot":"","sources":["../../../../src/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAgB,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAC/E,OAAO,EAEH,sBAAsB,EAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAYtE,qBAAa,0BAA2B,YAAW,eAAe;IAE1D,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;gBAHb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB,EACtC,aAAa,EAAE,sBAAsB;IAG3C,YAAY,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"blockdaemon-wallet-allocator.d.ts","sourceRoot":"","sources":["../../../../src/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAgB,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAC/E,OAAO,EAEH,sBAAsB,EAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAYtE,qBAAa,0BAA2B,YAAW,eAAe;IAE1D,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;gBAHb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB,EACtC,aAAa,EAAE,sBAAsB;IAG3C,YAAY,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,CAAC;IAwGZ,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA8D7E"}
|
package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fireblocks-wallet-allocator.d.ts","sourceRoot":"","sources":["../../../../src/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAgB,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAC/E,OAAO,EAEH,sBAAsB,EAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAYtE,qBAAa,yBAA0B,YAAW,eAAe;IAEzD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;gBAHb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB,EACtC,aAAa,EAAE,sBAAsB;IAG3C,YAAY,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"fireblocks-wallet-allocator.d.ts","sourceRoot":"","sources":["../../../../src/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAgB,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAC/E,OAAO,EAEH,sBAAsB,EAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAYtE,qBAAa,yBAA0B,YAAW,eAAe;IAEzD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;gBAHb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB,EACtC,aAAa,EAAE,sBAAsB;IAG3C,YAAY,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,CAAC;IA6FZ,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkE7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel-wallet-allocator.d.ts","sourceRoot":"","sources":["../../../../src/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAgB,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAC/E,OAAO,EAEH,sBAAsB,EAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAUtE,qBAAa,qBAAsB,YAAW,eAAe;IAErD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;gBAHb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB,EACtC,aAAa,EAAE,sBAAsB;IAG3C,YAAY,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"kernel-wallet-allocator.d.ts","sourceRoot":"","sources":["../../../../src/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAgB,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAC/E,OAAO,EAEH,sBAAsB,EAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAUtE,qBAAa,qBAAsB,YAAW,eAAe;IAErD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;gBAHb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB,EACtC,aAAa,EAAE,sBAAsB;IAG3C,YAAY,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,CAAC;IAiDZ,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiC7E"}
|
package/dist/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"participant-wallet-allocator.d.ts","sourceRoot":"","sources":["../../../../src/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE,qBAAa,0BAA2B,YAAW,eAAe;IAE1D,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;gBAFd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB;IAG5C,YAAY,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"participant-wallet-allocator.d.ts","sourceRoot":"","sources":["../../../../src/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE,qBAAa,0BAA2B,YAAW,eAAe;IAE1D,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,cAAc;gBAFd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB;IAG5C,YAAY,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,OAAe,GACzB,OAAO,CAAC,MAAM,CAAC;IAoBZ,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAY7E"}
|
|
@@ -14,7 +14,7 @@ export declare class WalletAllocationService {
|
|
|
14
14
|
private readonly fireblocksAllocator?;
|
|
15
15
|
private readonly blockdaemonAllocator?;
|
|
16
16
|
constructor(store: Store, logger: Logger, partyAllocator: PartyAllocationService, signingDrivers?: Partial<Record<SigningProvider, SigningDriverInterface>>);
|
|
17
|
-
createWallet(userId: UserId, partyHint: PartyHint, primary: Primary, signingProviderId: SigningProvider): Promise<Wallet>;
|
|
18
|
-
allocateParty(userId: UserId, existingWallet: Wallet, signingProviderId: SigningProvider): Promise<void>;
|
|
17
|
+
createWallet(userId: UserId, email: string | undefined, partyHint: PartyHint, primary: Primary, signingProviderId: SigningProvider): Promise<Wallet>;
|
|
18
|
+
allocateParty(userId: UserId, email: string | undefined, existingWallet: Wallet, signingProviderId: SigningProvider): Promise<void>;
|
|
19
19
|
}
|
|
20
20
|
//# sourceMappingURL=wallet-allocation-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-allocation-service.d.ts","sourceRoot":"","sources":["../../../src/ledger/wallet-allocation/wallet-allocation-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EACH,sBAAsB,EACtB,eAAe,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAMtE,MAAM,WAAW,eAAe;IAC5B,YAAY,CACR,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,GACjB,OAAO,CAAC,MAAM,CAAC,CAAA;IAClB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACvE;AAED,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA4B;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAA2B;IAChE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAA4B;gBAG9D,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB,EACtC,cAAc,GAAE,OAAO,CACnB,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAC7C;IAuCG,YAAY,CACrB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,eAAe,GACnC,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet-allocation-service.d.ts","sourceRoot":"","sources":["../../../src/ledger/wallet-allocation/wallet-allocation-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EACH,sBAAsB,EACtB,eAAe,EAClB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAMtE,MAAM,WAAW,eAAe;IAC5B,YAAY,CACR,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,GACjB,OAAO,CAAC,MAAM,CAAC,CAAA;IAClB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACvE;AAED,qBAAa,uBAAuB;IAChC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA4B;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAA2B;IAChE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAA4B;gBAG9D,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,sBAAsB,EACtC,cAAc,GAAE,OAAO,CACnB,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAC7C;IAuCG,YAAY,CACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,eAAe,GACnC,OAAO,CAAC,MAAM,CAAC;IAiDL,aAAa,CACtB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,eAAe,GACnC,OAAO,CAAC,IAAI,CAAC;CA4CnB"}
|
|
@@ -21,7 +21,7 @@ export class WalletAllocationService {
|
|
|
21
21
|
this.blockdaemonAllocator = new BlockdaemonWalletAllocator(store, logger, partyAllocator, blockdaemonDriver);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
async createWallet(userId, partyHint, primary, signingProviderId) {
|
|
24
|
+
async createWallet(userId, email, partyHint, primary, signingProviderId) {
|
|
25
25
|
switch (signingProviderId) {
|
|
26
26
|
case SigningProvider.PARTICIPANT:
|
|
27
27
|
return this.participantAllocator.createWallet(userId, partyHint, primary);
|
|
@@ -39,12 +39,15 @@ export class WalletAllocationService {
|
|
|
39
39
|
if (!this.blockdaemonAllocator) {
|
|
40
40
|
throw new Error('Blockdaemon signing driver not available');
|
|
41
41
|
}
|
|
42
|
-
|
|
42
|
+
if (!email) {
|
|
43
|
+
throw new Error('Email is required for Blockdaemon wallet allocation');
|
|
44
|
+
}
|
|
45
|
+
return this.blockdaemonAllocator.createWallet(email, partyHint, primary);
|
|
43
46
|
default:
|
|
44
47
|
throw new Error(`Unsupported signing provider: ${signingProviderId}`);
|
|
45
48
|
}
|
|
46
49
|
}
|
|
47
|
-
async allocateParty(userId, existingWallet, signingProviderId) {
|
|
50
|
+
async allocateParty(userId, email, existingWallet, signingProviderId) {
|
|
48
51
|
switch (signingProviderId) {
|
|
49
52
|
case SigningProvider.PARTICIPANT:
|
|
50
53
|
return this.participantAllocator.allocateParty(userId, existingWallet);
|
|
@@ -62,7 +65,10 @@ export class WalletAllocationService {
|
|
|
62
65
|
if (!this.blockdaemonAllocator) {
|
|
63
66
|
throw new Error('Blockdaemon signing driver not available');
|
|
64
67
|
}
|
|
65
|
-
|
|
68
|
+
if (!email) {
|
|
69
|
+
throw new Error('Email is required for Blockdaemon wallet allocation');
|
|
70
|
+
}
|
|
71
|
+
return this.blockdaemonAllocator.allocateParty(email, existingWallet);
|
|
66
72
|
default:
|
|
67
73
|
throw new Error(`Unsupported signing provider: ${signingProviderId}`);
|
|
68
74
|
}
|