@canton-network/wallet-gateway-remote 0.20.0 → 0.22.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 (84) hide show
  1. package/README.md +1 -3
  2. package/dist/config/Config.d.ts +145 -0
  3. package/dist/config/Config.d.ts.map +1 -1
  4. package/dist/config/Config.js +18 -2
  5. package/dist/config/Config.test.js +3 -0
  6. package/dist/config/ConfigUtils.d.ts.map +1 -1
  7. package/dist/config/ConfigUtils.js +41 -2
  8. package/dist/dapp-api/controller.d.ts.map +1 -1
  9. package/dist/dapp-api/controller.js +7 -14
  10. package/dist/dapp-api/rpc-gen/typings.d.ts +1 -1
  11. package/dist/dapp-api/rpc-gen/typings.d.ts.map +1 -1
  12. package/dist/env.d.ts +19 -0
  13. package/dist/env.d.ts.map +1 -0
  14. package/dist/env.js +16 -0
  15. package/dist/example-config.d.ts +3 -1
  16. package/dist/example-config.d.ts.map +1 -1
  17. package/dist/example-config.js +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +4 -2
  20. package/dist/init.d.ts.map +1 -1
  21. package/dist/init.js +8 -18
  22. package/dist/ledger/party-allocation-service.d.ts +1 -2
  23. package/dist/ledger/party-allocation-service.d.ts.map +1 -1
  24. package/dist/ledger/party-allocation-service.js +5 -4
  25. package/dist/ledger/party-allocation-service.test.js +7 -4
  26. package/dist/ledger/transaction-service.d.ts +22 -0
  27. package/dist/ledger/transaction-service.d.ts.map +1 -0
  28. package/dist/ledger/transaction-service.js +296 -0
  29. package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.d.ts +17 -0
  30. package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.d.ts.map +1 -0
  31. package/dist/ledger/wallet-allocation/signing-providers/blockdaemon-wallet-allocator.js +146 -0
  32. package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.d.ts +17 -0
  33. package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.d.ts.map +1 -0
  34. package/dist/ledger/wallet-allocation/signing-providers/fireblocks-wallet-allocator.js +140 -0
  35. package/dist/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.d.ts +17 -0
  36. package/dist/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.d.ts.map +1 -0
  37. package/dist/ledger/wallet-allocation/signing-providers/kernel-wallet-allocator.js +79 -0
  38. package/dist/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.d.ts +15 -0
  39. package/dist/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.d.ts.map +1 -0
  40. package/dist/ledger/wallet-allocation/signing-providers/participant-wallet-allocator.js +37 -0
  41. package/dist/ledger/wallet-allocation/wallet-allocation-service.d.ts +20 -0
  42. package/dist/ledger/wallet-allocation/wallet-allocation-service.d.ts.map +1 -0
  43. package/dist/ledger/wallet-allocation/wallet-allocation-service.js +70 -0
  44. package/dist/ledger/wallet-allocation/wallet-allocation-service.test.d.ts +2 -0
  45. package/dist/ledger/wallet-allocation/wallet-allocation-service.test.d.ts.map +1 -0
  46. package/dist/ledger/wallet-allocation/wallet-allocation-service.test.js +301 -0
  47. package/dist/ledger/wallet-sync-service.d.ts +7 -12
  48. package/dist/ledger/wallet-sync-service.d.ts.map +1 -1
  49. package/dist/ledger/wallet-sync-service.js +128 -100
  50. package/dist/ledger/wallet-sync-service.test.js +194 -46
  51. package/dist/user-api/controller.d.ts +1 -0
  52. package/dist/user-api/controller.d.ts.map +1 -1
  53. package/dist/user-api/controller.js +77 -406
  54. package/dist/user-api/rpc-gen/index.d.ts +3 -0
  55. package/dist/user-api/rpc-gen/index.d.ts.map +1 -1
  56. package/dist/user-api/rpc-gen/index.js +1 -0
  57. package/dist/user-api/rpc-gen/typings.d.ts +61 -40
  58. package/dist/user-api/rpc-gen/typings.d.ts.map +1 -1
  59. package/dist/web/frontend/404/index.html +2 -2
  60. package/dist/web/frontend/approve/index.html +4 -3
  61. package/dist/web/frontend/assets/404-DzH9sSlT.js +8 -0
  62. package/dist/web/frontend/assets/approve-Duv1K5LE.js +17 -0
  63. package/dist/web/frontend/assets/callback-D_VLeaX-.js +1 -0
  64. package/dist/web/frontend/assets/index-Bj5VTWmh.js +1686 -0
  65. package/dist/web/frontend/assets/login-B-jF6DLr.js +7 -0
  66. package/dist/web/frontend/assets/{settings-Br8FgNOa.js → settings-DZpeOwSh.js} +2 -2
  67. package/dist/web/frontend/assets/{state-1o1CuDWy.js → state-PjJJ3Anb.js} +1 -1
  68. package/dist/web/frontend/assets/transactions-DGdh8VAO.js +28 -0
  69. package/dist/web/frontend/assets/utils-D5kQDwtZ.js +1 -0
  70. package/dist/web/frontend/assets/wallets-CjjRt-cQ.js +62 -0
  71. package/dist/web/frontend/callback/index.html +2 -2
  72. package/dist/web/frontend/index.html +1 -1
  73. package/dist/web/frontend/login/index.html +3 -3
  74. package/dist/web/frontend/settings/index.html +3 -3
  75. package/dist/web/frontend/transactions/index.html +4 -3
  76. package/dist/web/frontend/wallets/index.html +4 -3
  77. package/package.json +20 -19
  78. package/dist/web/frontend/assets/404-CKmKuu6H.js +0 -8
  79. package/dist/web/frontend/assets/approve-MzXNo4XO.js +0 -17
  80. package/dist/web/frontend/assets/callback-CcXLRr7Q.js +0 -1
  81. package/dist/web/frontend/assets/index-BnEARqU4.js +0 -1679
  82. package/dist/web/frontend/assets/login-Btlo0Zla.js +0 -7
  83. package/dist/web/frontend/assets/transactions-Cnu9eUFe.js +0 -28
  84. package/dist/web/frontend/assets/wallets-Dj5yeBJd.js +0 -63
package/README.md CHANGED
@@ -48,9 +48,7 @@ The JSON-RPC API specs from `api-specs/` are generated into strongly-typed metho
48
48
 
49
49
  1. Complete steps 1–3 from the instructions at https://github.com/hyperledger-labs/splice-wallet-kernel/tree/main/core/signing-fireblocks
50
50
 
51
- 2. Place the `fireblocks_secret.key` file at the path `/splice-wallet-kernel/wallet-gateway/remote`
52
-
53
- 3. Create a file named `fireblocks_api.key` at the path `/splice-wallet-kernel/wallet-gateway/remote` and insert your Fireblocks API key into it (get it from `API User (ID)` column in fireblocks api users table). Make sure file doesn't end with new line character.
51
+ 2. set the environment variable `FIREBLOCKS_API_KEY` (get it from `API User (ID)` column in fireblocks api users table).
54
52
 
55
53
  ## Postgres connection
56
54
 
@@ -15,6 +15,150 @@ export declare const serverConfigSchema: z.ZodObject<{
15
15
  requestRateLimit: z.ZodDefault<z.ZodNumber>;
16
16
  admin: z.ZodOptional<z.ZodString>;
17
17
  }, z.core.$strip>;
18
+ export declare const rawConfigSchema: z.ZodObject<{
19
+ kernel: z.ZodObject<{
20
+ id: z.ZodString;
21
+ publicUrl: z.ZodOptional<z.ZodString>;
22
+ clientType: z.ZodUnion<readonly [z.ZodLiteral<"browser">, z.ZodLiteral<"desktop">, z.ZodLiteral<"mobile">, z.ZodLiteral<"remote">]>;
23
+ }, z.core.$strip>;
24
+ server: z.ZodPipe<z.ZodTransform<{}, unknown>, z.ZodObject<{
25
+ port: z.ZodDefault<z.ZodNumber>;
26
+ dappPath: z.ZodDefault<z.ZodString>;
27
+ userPath: z.ZodDefault<z.ZodString>;
28
+ allowedOrigins: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodArray<z.ZodString>]>>;
29
+ host: z.ZodOptional<z.ZodString>;
30
+ tls: z.ZodOptional<z.ZodBoolean>;
31
+ requestSizeLimit: z.ZodDefault<z.ZodString>;
32
+ requestRateLimit: z.ZodDefault<z.ZodNumber>;
33
+ admin: z.ZodOptional<z.ZodString>;
34
+ }, z.core.$strip>>;
35
+ store: z.ZodObject<{
36
+ connection: z.ZodDiscriminatedUnion<[z.ZodObject<{
37
+ type: z.ZodLiteral<"memory">;
38
+ }, z.core.$strip>, z.ZodObject<{
39
+ type: z.ZodLiteral<"sqlite">;
40
+ database: z.ZodString;
41
+ }, z.core.$strip>, z.ZodObject<{
42
+ type: z.ZodLiteral<"postgres">;
43
+ host: z.ZodString;
44
+ port: z.ZodNumber;
45
+ user: z.ZodString;
46
+ password: z.ZodString;
47
+ database: z.ZodString;
48
+ }, z.core.$strip>], "type">;
49
+ }, z.core.$strip>;
50
+ signingStore: z.ZodObject<{
51
+ connection: z.ZodDiscriminatedUnion<[z.ZodObject<{
52
+ type: z.ZodLiteral<"memory">;
53
+ }, z.core.$strip>, z.ZodObject<{
54
+ type: z.ZodLiteral<"sqlite">;
55
+ database: z.ZodString;
56
+ }, z.core.$strip>, z.ZodObject<{
57
+ type: z.ZodLiteral<"postgres">;
58
+ host: z.ZodString;
59
+ port: z.ZodNumber;
60
+ user: z.ZodString;
61
+ password: z.ZodString;
62
+ database: z.ZodString;
63
+ }, z.core.$strip>], "type">;
64
+ }, z.core.$strip>;
65
+ bootstrap: z.ZodObject<{
66
+ idps: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
67
+ id: z.ZodString;
68
+ type: z.ZodLiteral<"self_signed">;
69
+ issuer: z.ZodString;
70
+ }, z.core.$strip>, z.ZodObject<{
71
+ id: z.ZodString;
72
+ type: z.ZodLiteral<"oauth">;
73
+ issuer: z.ZodString;
74
+ configUrl: z.ZodString;
75
+ }, z.core.$strip>], "type">>;
76
+ networks: z.ZodArray<z.ZodObject<{
77
+ id: z.ZodString;
78
+ name: z.ZodString;
79
+ description: z.ZodString;
80
+ synchronizerId: z.ZodOptional<z.ZodString>;
81
+ identityProviderId: z.ZodString;
82
+ ledgerApi: z.ZodObject<{
83
+ baseUrl: z.ZodString;
84
+ }, z.core.$strip>;
85
+ auth: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
86
+ method: z.ZodLiteral<"authorization_code">;
87
+ audience: z.ZodString;
88
+ scope: z.ZodString;
89
+ clientId: z.ZodString;
90
+ }, z.core.$strip>, z.ZodObject<{
91
+ method: z.ZodLiteral<"client_credentials">;
92
+ audience: z.ZodString;
93
+ scope: z.ZodString;
94
+ clientId: z.ZodString;
95
+ clientSecret: z.ZodString;
96
+ }, z.core.$strip>, z.ZodObject<{
97
+ method: z.ZodLiteral<"self_signed">;
98
+ issuer: z.ZodString;
99
+ audience: z.ZodString;
100
+ scope: z.ZodString;
101
+ clientId: z.ZodString;
102
+ clientSecret: z.ZodString;
103
+ }, z.core.$strip>], "method">, z.ZodDiscriminatedUnion<[z.ZodObject<{
104
+ method: z.ZodLiteral<"authorization_code">;
105
+ audience: z.ZodString;
106
+ scope: z.ZodString;
107
+ clientId: z.ZodString;
108
+ }, z.core.$strip>, z.ZodObject<{
109
+ method: z.ZodLiteral<"client_credentials">;
110
+ audience: z.ZodString;
111
+ scope: z.ZodString;
112
+ clientId: z.ZodString;
113
+ clientSecretEnv: z.ZodString;
114
+ }, z.core.$strip>, z.ZodObject<{
115
+ method: z.ZodLiteral<"self_signed">;
116
+ issuer: z.ZodString;
117
+ audience: z.ZodString;
118
+ scope: z.ZodString;
119
+ clientId: z.ZodString;
120
+ clientSecretEnv: z.ZodString;
121
+ }, z.core.$strip>], "method">]>;
122
+ adminAuth: z.ZodOptional<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
123
+ method: z.ZodLiteral<"authorization_code">;
124
+ audience: z.ZodString;
125
+ scope: z.ZodString;
126
+ clientId: z.ZodString;
127
+ }, z.core.$strip>, z.ZodObject<{
128
+ method: z.ZodLiteral<"client_credentials">;
129
+ audience: z.ZodString;
130
+ scope: z.ZodString;
131
+ clientId: z.ZodString;
132
+ clientSecret: z.ZodString;
133
+ }, z.core.$strip>, z.ZodObject<{
134
+ method: z.ZodLiteral<"self_signed">;
135
+ issuer: z.ZodString;
136
+ audience: z.ZodString;
137
+ scope: z.ZodString;
138
+ clientId: z.ZodString;
139
+ clientSecret: z.ZodString;
140
+ }, z.core.$strip>], "method">, z.ZodDiscriminatedUnion<[z.ZodObject<{
141
+ method: z.ZodLiteral<"authorization_code">;
142
+ audience: z.ZodString;
143
+ scope: z.ZodString;
144
+ clientId: z.ZodString;
145
+ }, z.core.$strip>, z.ZodObject<{
146
+ method: z.ZodLiteral<"client_credentials">;
147
+ audience: z.ZodString;
148
+ scope: z.ZodString;
149
+ clientId: z.ZodString;
150
+ clientSecretEnv: z.ZodString;
151
+ }, z.core.$strip>, z.ZodObject<{
152
+ method: z.ZodLiteral<"self_signed">;
153
+ issuer: z.ZodString;
154
+ audience: z.ZodString;
155
+ scope: z.ZodString;
156
+ clientId: z.ZodString;
157
+ clientSecretEnv: z.ZodString;
158
+ }, z.core.$strip>], "method">]>>;
159
+ }, z.core.$strip>>;
160
+ }, z.core.$strip>;
161
+ }, z.core.$strip>;
18
162
  export declare const configSchema: z.ZodObject<{
19
163
  kernel: z.ZodObject<{
20
164
  id: z.ZodString;
@@ -125,5 +269,6 @@ export declare const configSchema: z.ZodObject<{
125
269
  }, z.core.$strip>;
126
270
  export type KernelInfo = z.infer<typeof kernelInfoSchema>;
127
271
  export type ServerConfig = z.infer<typeof serverConfigSchema>;
272
+ export type RawConfig = z.infer<typeof rawConfigSchema>;
128
273
  export type Config = z.infer<typeof configSchema>;
129
274
  //# sourceMappingURL=Config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,gBAAgB;;;;iBAY3B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;iBA0C7B,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMvB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AACzD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAC7D,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/config/Config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AASvB,eAAO,MAAM,gBAAgB;;;;iBAY3B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;iBA0C7B,CAAA;AAcF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAM1B,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMvB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AACzD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAC7D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AACvD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA"}
@@ -1,8 +1,9 @@
1
1
  // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import { storeConfigSchema, bootstrapConfigSchema, } from '@canton-network/core-wallet-store';
4
- import { storeConfigSchema as signingStoreConfigSchema } from '@canton-network/core-signing-store-sql';
5
3
  import { z } from 'zod';
4
+ import { storeConfigSchema, bootstrapConfigSchema, networkSchema, } from '@canton-network/core-wallet-store';
5
+ import { storeConfigSchema as signingStoreConfigSchema } from '@canton-network/core-signing-store-sql';
6
+ import { authFromEnvSchema, authSchema } from '@canton-network/core-wallet-auth';
6
7
  export const kernelInfoSchema = z.object({
7
8
  id: z.string(),
8
9
  publicUrl: z.string().optional().meta({
@@ -51,6 +52,21 @@ export const serverConfigSchema = z.object({
51
52
  description: 'The JWT claim (e.g. "sub") identifying the admin user. If set, requests with a matching claim will be granted admin privileges.',
52
53
  }),
53
54
  });
55
+ const authFromEnvOrConfig = z.union([authSchema, authFromEnvSchema]);
56
+ const bootstrapFromEnv = bootstrapConfigSchema.extend({
57
+ networks: z.array(networkSchema.extend({
58
+ auth: authFromEnvOrConfig,
59
+ adminAuth: authFromEnvOrConfig.optional(),
60
+ })),
61
+ });
62
+ // Includes secrets for networks as env vars, rather than defined explicitly
63
+ export const rawConfigSchema = z.object({
64
+ kernel: kernelInfoSchema,
65
+ server: z.preprocess((val) => val ?? {}, serverConfigSchema),
66
+ store: storeConfigSchema,
67
+ signingStore: signingStoreConfigSchema,
68
+ bootstrap: bootstrapFromEnv,
69
+ });
54
70
  export const configSchema = z.object({
55
71
  kernel: kernelInfoSchema,
56
72
  server: z.preprocess((val) => val ?? {}, serverConfigSchema),
@@ -13,4 +13,7 @@ test('config from json file', async () => {
13
13
  if (resp.bootstrap.networks[2].auth.method === 'client_credentials') {
14
14
  expect(resp.bootstrap.networks[2].auth.audience).toBe('https://daml.com/jwt/aud/participant/participant1::1220d44fc1c3ba0b5bdf7b956ee71bc94ebe2d23258dc268fdf0824fbaeff2c61424');
15
15
  }
16
+ if (resp.bootstrap.networks[4].adminAuth?.method === 'client_credentials') {
17
+ expect(resp.bootstrap.networks[4].adminAuth.clientSecret).toBe('devnet_secret_testval');
18
+ }
16
19
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigUtils.d.ts","sourceRoot":"","sources":["../../src/config/ConfigUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAA;AAElD,qBAAa,WAAW;IACpB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAoDlD;AAgDD,UAAU,IAAI;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACrB;AAOD,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,IAa1D,CAAA"}
1
+ {"version":3,"file":"ConfigUtils.d.ts","sourceRoot":"","sources":["../../src/config/ConfigUtils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAA8B,MAAM,aAAa,CAAA;AAGhE,qBAAa,WAAW;IACpB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAsDlD;AA+FD,UAAU,IAAI;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACrB;AAOD,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,IAa1D,CAAA"}
@@ -1,11 +1,13 @@
1
1
  // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { readFileSync, existsSync } from 'fs';
4
- import { configSchema } from './Config.js';
4
+ import { rawConfigSchema } from './Config.js';
5
+ import { Env } from '../env.js';
5
6
  export class ConfigUtils {
6
7
  static loadConfigFile(filePath) {
7
8
  if (existsSync(filePath)) {
8
- const config = configSchema.parse(JSON.parse(readFileSync(filePath, 'utf-8')));
9
+ const rawConfig = rawConfigSchema.parse(JSON.parse(readFileSync(filePath, 'utf-8')));
10
+ const config = resolveRawConfig(rawConfig);
9
11
  /**
10
12
  * Perform extra config validation beyond schema validation.
11
13
  * We want to enforce the following constraints:
@@ -38,6 +40,43 @@ export class ConfigUtils {
38
40
  }
39
41
  }
40
42
  }
43
+ // The Wallet Gateway can accept adminAuth secrets from environment variables.
44
+ // However, the store expects strings. This function resolves the config from env vars
45
+ function resolveRawNetworkAuth(n) {
46
+ if (n.method === 'authorization_code') {
47
+ return n;
48
+ }
49
+ if ('clientSecret' in n) {
50
+ return n;
51
+ }
52
+ else {
53
+ const { clientSecretEnv, ...rest } = n;
54
+ const clientSecret = Env.get(clientSecretEnv, { required: true });
55
+ return {
56
+ ...rest,
57
+ clientSecret,
58
+ };
59
+ }
60
+ }
61
+ function resolveRawConfig(rawConfig) {
62
+ const rawNetworks = rawConfig.bootstrap.networks;
63
+ const networks = rawNetworks.map((n) => {
64
+ return {
65
+ ...n,
66
+ auth: resolveRawNetworkAuth(n.auth),
67
+ adminAuth: n.adminAuth
68
+ ? resolveRawNetworkAuth(n.adminAuth)
69
+ : undefined,
70
+ };
71
+ });
72
+ return {
73
+ ...rawConfig,
74
+ bootstrap: {
75
+ ...rawConfig.bootstrap,
76
+ networks,
77
+ },
78
+ };
79
+ }
41
80
  function hasDuplicateElement(list) {
42
81
  let duplicate;
43
82
  list.forEach((item, i) => {
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/dapp-api/controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,WAAW,EAAE,MAAM,kCAAkC,CAAA;AAW/E,OAAO,EAAE,KAAK,EAAe,MAAM,mCAAmC,CAAA;AAQtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAI7B,eAAO,MAAM,cAAc,GACvB,YAAY,gBAAgB,EAC5B,SAAS,MAAM,EACf,SAAS,MAAM,EACf,OAAO,KAAK,EACZ,qBAAqB,mBAAmB,EACxC,SAAS,MAAM,EACf,QAAQ,MAAM,GAAG,IAAI,EACrB,UAAU,WAAW;;;;;;;;;;;;;;CA+QxB,CAAA"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/dapp-api/controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,WAAW,EAEd,MAAM,kCAAkC,CAAA;AAWzC,OAAO,EAAE,KAAK,EAAe,MAAM,mCAAmC,CAAA;AAQtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAI7B,eAAO,MAAM,cAAc,GACvB,YAAY,gBAAgB,EAC5B,SAAS,MAAM,EACf,SAAS,MAAM,EACf,OAAO,KAAK,EACZ,qBAAqB,mBAAmB,EACxC,SAAS,MAAM,EACf,QAAQ,MAAM,GAAG,IAAI,EACrB,UAAU,WAAW;;;;;;;;;;;;;;CAkRxB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import { assertConnected } from '@canton-network/core-wallet-auth';
3
+ import { assertConnected, AuthTokenProvider, } from '@canton-network/core-wallet-auth';
4
4
  import buildController from './rpc-gen/index.js';
5
5
  import { LedgerClient, } from '@canton-network/core-ledger-client';
6
6
  import { v4 } from 'uuid';
@@ -22,8 +22,7 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
22
22
  const ledgerClient = new LedgerClient({
23
23
  baseUrl: new URL(network.ledgerApi.baseUrl),
24
24
  logger,
25
- isAdmin: false,
26
- accessToken: context.accessToken,
25
+ accessTokenProvider: AuthTokenProvider.fromToken(context.accessToken, logger),
27
26
  });
28
27
  const status = await networkStatus(ledgerClient);
29
28
  const notifier = notificationService.getNotifier(context.userId);
@@ -86,8 +85,7 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
86
85
  const ledgerClient = new LedgerClient({
87
86
  baseUrl: new URL(network.ledgerApi.baseUrl),
88
87
  logger,
89
- isAdmin: false,
90
- accessToken: assertConnected(context).accessToken,
88
+ accessTokenProvider: AuthTokenProvider.fromToken(assertConnected(context).accessToken, logger),
91
89
  });
92
90
  let result;
93
91
  switch (params.requestMethod) {
@@ -118,8 +116,7 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
118
116
  const ledgerClient = new LedgerClient({
119
117
  baseUrl: new URL(network.ledgerApi.baseUrl),
120
118
  logger,
121
- isAdmin: false,
122
- accessToken: context.accessToken,
119
+ accessTokenProvider: AuthTokenProvider.fromToken(context.accessToken, logger),
123
120
  });
124
121
  const userId = context.userId;
125
122
  const notifier = notificationService.getNotifier(userId);
@@ -129,10 +126,6 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
129
126
  const synchronizerId = network.synchronizerId ??
130
127
  (await ledgerClient.getSynchronizerId());
131
128
  const response = await prepareSubmission(context.userId, wallet.partyId, synchronizerId, params, ledgerClient);
132
- //TODO: remove and handle normally when v3_3 is not supported anymore
133
- const costEstimation = 'costEstimation' in response
134
- ? response.costEstimation
135
- : undefined;
136
129
  const transaction = {
137
130
  commandId,
138
131
  status: 'pending',
@@ -148,7 +141,8 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
148
141
  userId: context.userId,
149
142
  commandId,
150
143
  commands: params.commands?.[0],
151
- confirmationRequestTrafficCostEstimation: costEstimation?.confirmationRequestTrafficCostEstimation,
144
+ confirmationRequestTrafficCostEstimation: response.costEstimation
145
+ ?.confirmationRequestTrafficCostEstimation,
152
146
  }, 'prepared transaction traffic estimation');
153
147
  store.setTransaction(transaction);
154
148
  return {
@@ -180,8 +174,7 @@ export const dappController = (kernelInfo, dappUrl, userUrl, store, notification
180
174
  const ledgerClient = new LedgerClient({
181
175
  baseUrl: new URL(network.ledgerApi.baseUrl),
182
176
  logger,
183
- isAdmin: false,
184
- accessToken: context.accessToken,
177
+ accessTokenProvider: AuthTokenProvider.fromToken(context.accessToken, logger),
185
178
  });
186
179
  const status = await networkStatus(ledgerClient);
187
180
  return {
@@ -227,7 +227,7 @@ export type PartyId = string;
227
227
  * The status of the wallet.
228
228
  *
229
229
  */
230
- export type WalletStatus = 'initialized' | 'allocated';
230
+ export type WalletStatus = 'initialized' | 'allocated' | 'removed';
231
231
  /**
232
232
  *
233
233
  * The party hint and name of the wallet.
@@ -1 +1 @@
1
- {"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/dapp-api/rpc-gen/typings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typings.d.ts","sourceRoot":"","sources":["../../../src/dapp-api/rpc-gen/typings.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ export declare class Env {
2
+ static FIREBLOCKS_API_KEY: () => string | undefined;
3
+ static FIREBLOCKS_SECRET: () => string | undefined;
4
+ static BLOCKDAEMON_API_URL: (fallback: string) => string;
5
+ static BLOCKDAEMON_API_KEY: (fallback: string) => string;
6
+ static get(key: string, options: {
7
+ required?: boolean;
8
+ fallback: string;
9
+ }): string;
10
+ static get(key: string, options: {
11
+ required: true;
12
+ fallback?: string;
13
+ }): string;
14
+ static get(key: string, options?: {
15
+ required?: boolean;
16
+ fallback?: string;
17
+ } | undefined): string | undefined;
18
+ }
19
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAGA,qBAAa,GAAG;IACZ,MAAM,CAAC,kBAAkB,2BAAsC;IAC/D,MAAM,CAAC,iBAAiB,2BAAqC;IAC7D,MAAM,CAAC,mBAAmB,GAAI,UAAU,MAAM,YACE;IAChD,MAAM,CAAC,mBAAmB,GAAI,UAAU,MAAM,YACE;IAEhD,MAAM,CAAC,GAAG,CACN,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAClD,MAAM;IACT,MAAM,CAAC,GAAG,CACN,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,MAAM;IACT,MAAM,CAAC,GAAG,CACN,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,GAChE,MAAM,GAAG,SAAS;CAcxB"}
package/dist/env.js ADDED
@@ -0,0 +1,16 @@
1
+ // Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export class Env {
4
+ static { this.FIREBLOCKS_API_KEY = () => Env.get('FIREBLOCKS_API_KEY'); }
5
+ static { this.FIREBLOCKS_SECRET = () => Env.get('FIREBLOCKS_SECRET'); }
6
+ static { this.BLOCKDAEMON_API_URL = (fallback) => Env.get('BLOCKDAEMON_API_URL', { fallback }); }
7
+ static { this.BLOCKDAEMON_API_KEY = (fallback) => Env.get('BLOCKDAEMON_API_KEY', { fallback }); }
8
+ static get(key, options) {
9
+ const { fallback, required } = options || {};
10
+ const value = process.env[key]?.trim() || fallback?.trim();
11
+ if (required && !value) {
12
+ throw new Error(`Required environment variable (${key}) missing.`);
13
+ }
14
+ return value;
15
+ }
16
+ }
@@ -56,6 +56,7 @@ declare const _default: {
56
56
  audience: string;
57
57
  clientId: string;
58
58
  clientSecret: string;
59
+ clientSecretEnv?: never;
59
60
  };
60
61
  ledgerApi: {
61
62
  baseUrl: string;
@@ -78,8 +79,9 @@ declare const _default: {
78
79
  scope: string;
79
80
  audience: string;
80
81
  clientId: string;
81
- clientSecret: string;
82
+ clientSecretEnv: string;
82
83
  issuer?: never;
84
+ clientSecret?: never;
83
85
  };
84
86
  ledgerApi: {
85
87
  baseUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"example-config.d.ts","sourceRoot":"","sources":["../src/example-config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,wBA6FkB"}
1
+ {"version":3,"file":"example-config.d.ts","sourceRoot":"","sources":["../src/example-config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,wBA6FqB"}
@@ -82,7 +82,7 @@ export default {
82
82
  scope: 'daml_ledger_api',
83
83
  audience: '<REPLACE_PARTICIPANT_AUDIENCE>',
84
84
  clientId: '<REPLACE_ADMIN_CLIENT_ID>',
85
- clientSecret: '<REPLACE_ADMIN_CLIENT_SECRET>',
85
+ clientSecretEnv: 'MY_CLIENT_SECRET_ENV_VAR',
86
86
  },
87
87
  ledgerApi: {
88
88
  baseUrl: 'http://127.0.0.1:2975',
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA4DA,QAAA,MAAM,OAAO;;;;;;CAAiB,CAAA;AAE9B,MAAM,MAAM,UAAU,GAAG,OAAO,OAAO,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAiEA,QAAA,MAAM,OAAO;;;;;;CAAiB,CAAA;AAE9B,MAAM,MAAM,UAAU,GAAG,OAAO,OAAO,CAAA"}
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 = {
@@ -14,12 +14,11 @@ export declare class PartyAllocationService {
14
14
  private logger;
15
15
  private ledgerClient;
16
16
  private synchronizerId;
17
- constructor({ synchronizerId, accessTokenProvider, httpLedgerUrl, logger, accessToken, }: {
17
+ constructor({ synchronizerId, accessTokenProvider, httpLedgerUrl, logger, }: {
18
18
  synchronizerId?: string;
19
19
  accessTokenProvider: AccessTokenProvider;
20
20
  httpLedgerUrl: string;
21
21
  logger: Logger;
22
- accessToken?: string;
23
22
  });
24
23
  /**
25
24
  * Allocates an internal participant party for a user.
@@ -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,EACN,WAAW,GACd,EAAE;QACC,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,mBAAmB,EAAE,mBAAmB,CAAA;QACxC,aAAa,EAAE,MAAM,CAAA;QACrB,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,CAAC,EAAE,MAAM,CAAA;KACvB;IAYD;;;;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"}
@@ -6,15 +6,13 @@ import { createHash } from 'node:crypto';
6
6
  * This service provides an abstraction for Canton party allocation that seamlessly handles both internal and external parties.
7
7
  */
8
8
  export class PartyAllocationService {
9
- constructor({ synchronizerId, accessTokenProvider, httpLedgerUrl, logger, accessToken, }) {
9
+ constructor({ synchronizerId, accessTokenProvider, httpLedgerUrl, logger, }) {
10
10
  this.logger = logger;
11
11
  this.synchronizerId = synchronizerId;
12
12
  this.ledgerClient = new LedgerClient({
13
13
  baseUrl: new URL(httpLedgerUrl),
14
14
  logger: this.logger,
15
- isAdmin: true,
16
- accessToken: accessToken ?? '',
17
- accessTokenProvider: accessTokenProvider,
15
+ accessTokenProvider,
18
16
  });
19
17
  }
20
18
  async allocateParty(userId, hint, publicKey, signingCallback) {
@@ -97,6 +95,9 @@ export class PartyAllocationService {
97
95
  const res = await this.ledgerClient.postWithRetry('/v2/parties', {
98
96
  partyIdHint: hint,
99
97
  identityProviderId: '',
98
+ synchronizerId: this.synchronizerId ??
99
+ (await this.ledgerClient.getSynchronizerId()),
100
+ userId,
100
101
  });
101
102
  if (!res.partyDetails?.party) {
102
103
  throw new Error('Failed to allocate party');