@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.
Files changed (74) hide show
  1. package/README.md +1 -3
  2. package/dist/auth/jwt-auth-service.d.ts.map +1 -1
  3. package/dist/auth/jwt-auth-service.js +23 -3
  4. package/dist/auth/jwt-unsafe-auth-service.d.ts.map +1 -1
  5. package/dist/auth/jwt-unsafe-auth-service.js +7 -1
  6. package/dist/config/Config.d.ts +145 -0
  7. package/dist/config/Config.d.ts.map +1 -1
  8. package/dist/config/Config.js +18 -2
  9. package/dist/config/Config.test.js +4 -1
  10. package/dist/config/ConfigUtils.d.ts.map +1 -1
  11. package/dist/config/ConfigUtils.js +41 -2
  12. package/dist/dapp-api/controller.d.ts.map +1 -1
  13. package/dist/dapp-api/controller.js +7 -14
  14. package/dist/dapp-api/rpc-gen/typings.d.ts +32 -5
  15. package/dist/dapp-api/rpc-gen/typings.d.ts.map +1 -1
  16. package/dist/env.d.ts +19 -0
  17. package/dist/env.d.ts.map +1 -0
  18. package/dist/env.js +16 -0
  19. package/dist/example-config.d.ts +3 -1
  20. package/dist/example-config.d.ts.map +1 -1
  21. package/dist/example-config.js +3 -3
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -2
  24. package/dist/init.d.ts.map +1 -1
  25. package/dist/init.js +8 -18
  26. package/dist/ledger/party-allocation-service.d.ts.map +1 -1
  27. package/dist/ledger/party-allocation-service.js +3 -0
  28. package/dist/ledger/transaction-service.d.ts +22 -0
  29. package/dist/ledger/transaction-service.d.ts.map +1 -0
  30. package/dist/ledger/transaction-service.js +296 -0
  31. package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.d.ts.map +1 -1
  32. package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.js +1 -0
  33. package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.d.ts.map +1 -1
  34. package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.js +1 -0
  35. package/dist/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.d.ts.map +1 -1
  36. package/dist/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.js +1 -0
  37. package/dist/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.d.ts.map +1 -1
  38. package/dist/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.js +1 -0
  39. package/dist/ledger/wallet-allocation/wallet-allocation-service.d.ts +2 -2
  40. package/dist/ledger/wallet-allocation/wallet-allocation-service.d.ts.map +1 -1
  41. package/dist/ledger/wallet-allocation/wallet-allocation-service.js +10 -4
  42. package/dist/ledger/wallet-allocation/wallet-allocation-service.test.js +13 -12
  43. package/dist/ledger/wallet-sync-service.d.ts +4 -1
  44. package/dist/ledger/wallet-sync-service.d.ts.map +1 -1
  45. package/dist/ledger/wallet-sync-service.js +97 -18
  46. package/dist/ledger/wallet-sync-service.test.js +79 -0
  47. package/dist/user-api/controller.d.ts.map +1 -1
  48. package/dist/user-api/controller.js +79 -168
  49. package/dist/user-api/rpc-gen/typings.d.ts +41 -6
  50. package/dist/user-api/rpc-gen/typings.d.ts.map +1 -1
  51. package/dist/web/frontend/404/index.html +2 -2
  52. package/dist/web/frontend/approve/index.html +5 -4
  53. package/dist/web/frontend/assets/{404-C-OWOQ3D.js → 404-CwWne4gl.js} +2 -2
  54. package/dist/web/frontend/assets/approve-sXtkk0nx.js +20 -0
  55. package/dist/web/frontend/assets/{callback-Bev8B02C.js → callback-5r0xYoAY.js} +1 -1
  56. package/dist/web/frontend/assets/index-BY0dSIJ0.js +1698 -0
  57. package/dist/web/frontend/assets/index-C4_-rNJw.js +1 -0
  58. package/dist/web/frontend/assets/login-DwOvzCWW.js +7 -0
  59. package/dist/web/frontend/assets/settings-lXZlQ6-V.js +37 -0
  60. package/dist/web/frontend/assets/{state-BZtCpgb6.js → state-Zh2baU_h.js} +1 -1
  61. package/dist/web/frontend/assets/{transactions-n26INLpW.js → transactions-gLP4M5t0.js} +2 -2
  62. package/dist/web/frontend/assets/{utils-DqekxUsS.js → utils-CI12TM_E.js} +1 -1
  63. package/dist/web/frontend/assets/{wallets-dk9ilN4k.js → wallets-Cmwexted.js} +2 -2
  64. package/dist/web/frontend/callback/index.html +2 -2
  65. package/dist/web/frontend/index.html +1 -1
  66. package/dist/web/frontend/login/index.html +4 -3
  67. package/dist/web/frontend/settings/index.html +3 -3
  68. package/dist/web/frontend/transactions/index.html +4 -4
  69. package/dist/web/frontend/wallets/index.html +4 -4
  70. package/package.json +21 -20
  71. package/dist/web/frontend/assets/approve-CPkaFbuR.js +0 -17
  72. package/dist/web/frontend/assets/index-CZYV-CqB.js +0 -1679
  73. package/dist/web/frontend/assets/login-D2fXBXBX.js +0 -7
  74. 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 { configSchema } from './config/Config.js';
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(configSchema), null, 2));
29
+ console.log(JSON.stringify(z.toJSONSchema(rawConfigSchema), null, 2));
28
30
  process.exit(0);
29
31
  }
30
32
  if (opts.configExample) {
@@ -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,iBA0IhE"}
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, readFileSync } from 'fs';
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
- // Provide apiKey from User API in Fireblocks
141
- const apiPath = path.resolve(process.cwd(), 'fireblocks_api.key');
142
- const secretPath = path.resolve(process.cwd(), 'fireblocks_secret.key');
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 keys files are missing');
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: blockdaemonApiUrl,
168
- apiKey: blockdaemonApiKey,
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;YAgCrB,qBAAqB;CAsCtC"}
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
+ }
@@ -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;IAuGZ,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA8D7E"}
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"}
@@ -55,6 +55,7 @@ export class BlockdaemonWalletAllocator {
55
55
  publicKey: key.publicKey,
56
56
  externalTxId: txId,
57
57
  topologyTransactions: topologyTransactions.join(', '),
58
+ rights: [],
58
59
  };
59
60
  let wallet;
60
61
  if (status === 'signed') {
@@ -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;IA4FZ,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkE7E"}
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"}
@@ -45,6 +45,7 @@ export class FireblocksWalletAllocator {
45
45
  publicKey: key.publicKey,
46
46
  externalTxId: txId,
47
47
  topologyTransactions: topologyTransactions.join(', '),
48
+ rights: [],
48
49
  };
49
50
  let wallet;
50
51
  if (status === 'signed') {
@@ -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;IAgDZ,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiC7E"}
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"}
@@ -48,6 +48,7 @@ export class KernelWalletAllocator {
48
48
  publicKey: key.publicKey,
49
49
  externalTxId: '',
50
50
  topologyTransactions: '',
51
+ rights: [],
51
52
  };
52
53
  await this.store.addWallet(wallet);
53
54
  return wallet;
@@ -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;IAmBZ,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAY7E"}
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"}
@@ -21,6 +21,7 @@ export class ParticipantWalletAllocator {
21
21
  publicKey: party.namespace,
22
22
  externalTxId: '',
23
23
  topologyTransactions: '',
24
+ rights: [],
24
25
  };
25
26
  await this.store.addWallet(wallet);
26
27
  return wallet;
@@ -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;IA4CL,aAAa,CACtB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,eAAe,GACnC,OAAO,CAAC,IAAI,CAAC;CAuCnB"}
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
- return this.blockdaemonAllocator.createWallet(userId, partyHint, primary);
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
- return this.blockdaemonAllocator.allocateParty(userId, existingWallet);
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
  }