@distrohelena/canton-typescript-sdk 0.1.4 → 0.1.6

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 (254) hide show
  1. package/README.md +333 -1
  2. package/dist/client/canton-client-options.d.ts +3 -0
  3. package/dist/client/canton-client-options.js +2 -0
  4. package/dist/client/service-registry.js +4 -3
  5. package/dist/core/errors/grpc-transport-error.d.ts +14 -0
  6. package/dist/core/errors/grpc-transport-error.js +76 -0
  7. package/dist/core/signing/sign-command-request.d.ts +4 -0
  8. package/dist/core/signing/sign-command-request.js +4 -0
  9. package/dist/core/signing/sign-command-result.d.ts +2 -0
  10. package/dist/core/signing/sign-command-result.js +9 -0
  11. package/dist/core/transports/transport.interface.d.ts +2 -2
  12. package/dist/core/types/canton-hash-purpose.d.ts +2 -1
  13. package/dist/core/types/canton-hash-purpose.js +1 -0
  14. package/dist/core/types/commands/create-and-exercise-command.js +1 -1
  15. package/dist/core/types/commands/exercise-by-key-command.js +2 -2
  16. package/dist/core/types/commands/exercise-command.js +2 -2
  17. package/dist/core/types/daml-numeric.d.ts +6 -0
  18. package/dist/core/types/daml-numeric.js +14 -0
  19. package/dist/core/types/daml-party.d.ts +6 -0
  20. package/dist/core/types/daml-party.js +14 -0
  21. package/dist/core/types/requests/create-decentralized-party-request.d.ts +41 -0
  22. package/dist/core/types/requests/create-decentralized-party-request.js +82 -0
  23. package/dist/core/types/requests/create-external-party-request.d.ts +42 -0
  24. package/dist/core/types/requests/create-external-party-request.js +47 -0
  25. package/dist/core/types/requests/finalize-decentralized-party-request.d.ts +39 -0
  26. package/dist/core/types/requests/finalize-decentralized-party-request.js +42 -0
  27. package/dist/core/types/requests/get-active-contracts-page-request.d.ts +15 -2
  28. package/dist/core/types/requests/get-active-contracts-page-request.js +4 -0
  29. package/dist/core/types/requests/submit-command-request.d.ts +2 -0
  30. package/dist/core/types/requests/submit-command-request.js +2 -0
  31. package/dist/core/types/topology/topology-signature-format.d.ts +2 -1
  32. package/dist/core/types/topology/topology-signature-format.js +1 -0
  33. package/dist/daml-lf/container/dar-archive-entry.d.ts +8 -0
  34. package/dist/daml-lf/container/dar-archive-entry.js +8 -0
  35. package/dist/daml-lf/container/dar-archive-loader.js +14 -0
  36. package/dist/daml-lf/container/dar-archive.d.ts +6 -0
  37. package/dist/daml-lf/container/dar-archive.js +4 -0
  38. package/dist/daml-lf/container/dar-source-bundle-loader.d.ts +5 -0
  39. package/dist/daml-lf/container/dar-source-bundle-loader.js +33 -0
  40. package/dist/daml-lf/container/dar-source-bundle.d.ts +45 -0
  41. package/dist/daml-lf/container/dar-source-bundle.js +11 -0
  42. package/dist/daml-lf/container/dar-source-file-entry.d.ts +8 -0
  43. package/dist/daml-lf/container/dar-source-file-entry.js +8 -0
  44. package/dist/daml-lf/daml-lf-compilation.d.ts +12 -0
  45. package/dist/daml-lf/daml-lf-compilation.js +35 -0
  46. package/dist/daml-lf/index.d.ts +11 -0
  47. package/dist/daml-lf/index.js +10 -0
  48. package/dist/daml-lf/interpreter/daml-lf-builtin-dispatch.d.ts +43 -0
  49. package/dist/daml-lf/interpreter/daml-lf-builtin-dispatch.js +933 -0
  50. package/dist/daml-lf/interpreter/daml-lf-evaluator.d.ts +95 -0
  51. package/dist/daml-lf/interpreter/daml-lf-evaluator.js +1131 -0
  52. package/dist/daml-lf/interpreter/daml-lf-interpreter-scaffold.d.ts +3 -0
  53. package/dist/daml-lf/interpreter/daml-lf-interpreter-scaffold.js +6 -1
  54. package/dist/daml-lf/interpreter/daml-lf-lexical-scope.d.ts +13 -0
  55. package/dist/daml-lf/interpreter/daml-lf-lexical-scope.js +46 -0
  56. package/dist/daml-lf/interpreter/daml-lf-runtime-frame.d.ts +16 -0
  57. package/dist/daml-lf/interpreter/daml-lf-runtime-frame.js +15 -0
  58. package/dist/daml-lf/interpreter/daml-lf-runtime-value.d.ts +21 -0
  59. package/dist/daml-lf/interpreter/daml-lf-runtime-value.js +4 -1
  60. package/dist/daml-lf/interpreter/daml-lf-step-kind.d.ts +7 -0
  61. package/dist/daml-lf/interpreter/daml-lf-step-kind.js +8 -0
  62. package/dist/daml-lf/interpreter/daml-lf-trace-sink.interface.d.ts +30 -0
  63. package/dist/daml-lf/interpreter/daml-lf-trace-sink.interface.js +1 -0
  64. package/dist/daml-lf/model/daml-lf-builtin-type.d.ts +3 -0
  65. package/dist/daml-lf/model/daml-lf-builtin-type.js +3 -0
  66. package/dist/daml-lf/model/daml-lf-choice.d.ts +5 -0
  67. package/dist/daml-lf/model/daml-lf-choice.js +4 -0
  68. package/dist/daml-lf/model/daml-lf-expression-path.d.ts +2 -0
  69. package/dist/daml-lf/model/daml-lf-expression-path.js +81 -0
  70. package/dist/daml-lf/model/daml-lf-expression.d.ts +146 -0
  71. package/dist/daml-lf/model/daml-lf-expression.js +71 -0
  72. package/dist/daml-lf/model/daml-lf-template.d.ts +2 -0
  73. package/dist/daml-lf/model/daml-lf-template.js +2 -0
  74. package/dist/daml-lf/model/daml-lf-type.d.ts +2 -0
  75. package/dist/daml-lf/model/daml-lf-type.js +4 -0
  76. package/dist/daml-lf/model/lf-2-model-mapper.d.ts +5 -0
  77. package/dist/daml-lf/model/lf-2-model-mapper.js +445 -12
  78. package/dist/debugger/errors/replay-determinism.exception.d.ts +3 -0
  79. package/dist/debugger/errors/replay-determinism.exception.js +3 -0
  80. package/dist/debugger/errors/replay-missing-package.exception.d.ts +3 -0
  81. package/dist/debugger/errors/replay-missing-package.exception.js +3 -0
  82. package/dist/debugger/errors/replay-missing-source.exception.d.ts +3 -0
  83. package/dist/debugger/errors/replay-missing-source.exception.js +3 -0
  84. package/dist/debugger/errors/replay-source-map.exception.d.ts +3 -0
  85. package/dist/debugger/errors/replay-source-map.exception.js +3 -0
  86. package/dist/debugger/errors/replay-state-hydration.exception.d.ts +3 -0
  87. package/dist/debugger/errors/replay-state-hydration.exception.js +3 -0
  88. package/dist/debugger/errors/replay-unsupported-lf-construct.exception.d.ts +3 -0
  89. package/dist/debugger/errors/replay-unsupported-lf-construct.exception.js +3 -0
  90. package/dist/debugger/errors/replay-unsupported-update.exception.d.ts +3 -0
  91. package/dist/debugger/errors/replay-unsupported-update.exception.js +3 -0
  92. package/dist/debugger/index.d.ts +31 -0
  93. package/dist/debugger/index.js +31 -0
  94. package/dist/debugger/ledger-replay-debugger-client.d.ts +31 -0
  95. package/dist/debugger/ledger-replay-debugger-client.js +53 -0
  96. package/dist/debugger/replay/ledger-replay-environment-builder.d.ts +95 -0
  97. package/dist/debugger/replay/ledger-replay-environment-builder.js +249 -0
  98. package/dist/debugger/replay/ledger-replay-session-loader.d.ts +78 -0
  99. package/dist/debugger/replay/ledger-replay-session-loader.js +565 -0
  100. package/dist/debugger/replay/replay-artifact-resolver.d.ts +30 -0
  101. package/dist/debugger/replay/replay-artifact-resolver.js +210 -0
  102. package/dist/debugger/replay/replay-determinism-validator.d.ts +12 -0
  103. package/dist/debugger/replay/replay-determinism-validator.js +161 -0
  104. package/dist/debugger/replay/replay-entrypoint-definition-resolver.d.ts +40 -0
  105. package/dist/debugger/replay/replay-entrypoint-definition-resolver.js +337 -0
  106. package/dist/debugger/replay/replay-entrypoint.d.ts +22 -0
  107. package/dist/debugger/replay/replay-entrypoint.js +14 -0
  108. package/dist/debugger/replay/replay-ledger-value-normalizer.d.ts +7 -0
  109. package/dist/debugger/replay/replay-ledger-value-normalizer.js +194 -0
  110. package/dist/debugger/replay/replay-update-loader.d.ts +24 -0
  111. package/dist/debugger/replay/replay-update-loader.js +94 -0
  112. package/dist/debugger/replay/replay-update-visibility-validator.d.ts +19 -0
  113. package/dist/debugger/replay/replay-update-visibility-validator.js +19 -0
  114. package/dist/debugger/session/in-memory-replay-session-store.d.ts +27 -0
  115. package/dist/debugger/session/in-memory-replay-session-store.js +109 -0
  116. package/dist/debugger/session/replay-phase.d.ts +7 -0
  117. package/dist/debugger/session/replay-phase.js +8 -0
  118. package/dist/debugger/session/replay-scope.d.ts +10 -0
  119. package/dist/debugger/session/replay-scope.js +10 -0
  120. package/dist/debugger/session/replay-session-metadata.d.ts +10 -0
  121. package/dist/debugger/session/replay-session-metadata.js +10 -0
  122. package/dist/debugger/session/replay-session-request.d.ts +6 -0
  123. package/dist/debugger/session/replay-session-request.js +10 -0
  124. package/dist/debugger/session/replay-session.d.ts +12 -0
  125. package/dist/debugger/session/replay-session.js +10 -0
  126. package/dist/debugger/session/replay-source-location.d.ts +17 -0
  127. package/dist/debugger/session/replay-source-location.js +16 -0
  128. package/dist/debugger/session/replay-stack-frame.d.ts +8 -0
  129. package/dist/debugger/session/replay-stack-frame.js +8 -0
  130. package/dist/debugger/session/replay-state-delta.d.ts +29 -0
  131. package/dist/debugger/session/replay-state-delta.js +24 -0
  132. package/dist/debugger/session/replay-step-advance-result.d.ts +24 -0
  133. package/dist/debugger/session/replay-step-advance-result.js +16 -0
  134. package/dist/debugger/session/replay-step.d.ts +30 -0
  135. package/dist/debugger/session/replay-step.js +24 -0
  136. package/dist/debugger/session/replay-value-preview.d.ts +8 -0
  137. package/dist/debugger/session/replay-value-preview.js +15 -0
  138. package/dist/debugger/source/daml-source-mapper.d.ts +12 -0
  139. package/dist/debugger/source/daml-source-mapper.js +21 -0
  140. package/dist/debugger/source/dar-source-map-metadata.d.ts +26 -0
  141. package/dist/debugger/source/dar-source-map-metadata.js +10 -0
  142. package/dist/debugger/source/source-coverage-validator.d.ts +8 -0
  143. package/dist/debugger/source/source-coverage-validator.js +16 -0
  144. package/dist/debugger/source/source-indexed-compilation.d.ts +45 -0
  145. package/dist/debugger/source/source-indexed-compilation.js +110 -0
  146. package/dist/debugger/source/source-mapping-precision.d.ts +5 -0
  147. package/dist/debugger/source/source-mapping-precision.js +4 -0
  148. package/dist/index.d.ts +20 -0
  149. package/dist/index.js +12 -0
  150. package/dist/query/cache/memory-query-cache.d.ts +9 -0
  151. package/dist/query/cache/memory-query-cache.js +24 -0
  152. package/dist/query/cache/query-cache-store.d.ts +5 -0
  153. package/dist/query/cache/query-cache-store.js +1 -0
  154. package/dist/query/canton-manager-options.d.ts +17 -0
  155. package/dist/query/canton-manager-options.js +1 -0
  156. package/dist/query/canton-manager.d.ts +11 -0
  157. package/dist/query/canton-manager.js +42 -0
  158. package/dist/query/errors/pqs-query-error.d.ts +10 -0
  159. package/dist/query/errors/pqs-query-error.js +11 -0
  160. package/dist/query/errors/pqs-schema-profile-error.d.ts +3 -0
  161. package/dist/query/errors/pqs-schema-profile-error.js +3 -0
  162. package/dist/query/errors/query-capability-error.d.ts +7 -0
  163. package/dist/query/errors/query-capability-error.js +10 -0
  164. package/dist/query/grpc/grpc-contract-query-client.d.ts +32 -0
  165. package/dist/query/grpc/grpc-contract-query-client.js +126 -0
  166. package/dist/query/model-types.d.ts +258 -0
  167. package/dist/query/model-types.js +14 -0
  168. package/dist/query/pqs/pqs-pool.d.ts +13 -0
  169. package/dist/query/pqs/pqs-pool.js +18 -0
  170. package/dist/query/pqs/pqs-query-client.d.ts +49 -0
  171. package/dist/query/pqs/pqs-query-client.js +324 -0
  172. package/dist/query/pqs/pqs-schema-profile.d.ts +25 -0
  173. package/dist/query/pqs/pqs-schema-profile.js +120 -0
  174. package/dist/query/pqs/pqs-sql-compiler.d.ts +7 -0
  175. package/dist/query/pqs/pqs-sql-compiler.js +132 -0
  176. package/dist/query/pqs/read-only-sql.d.ts +1 -0
  177. package/dist/query/pqs/read-only-sql.js +35 -0
  178. package/dist/query/query-client.d.ts +61 -0
  179. package/dist/query/query-client.js +1 -0
  180. package/dist/query/query-source.d.ts +4 -0
  181. package/dist/query/query-source.js +5 -0
  182. package/dist/services/commands/command-payload-builder.js +3 -3
  183. package/dist/services/commands/command-submission-pipeline.js +1 -7
  184. package/dist/services/party-management/decentralized-party-lifecycle.d.ts +6 -0
  185. package/dist/services/party-management/decentralized-party-lifecycle.js +82 -0
  186. package/dist/services/party-management/party-management-service-client.d.ts +16 -1
  187. package/dist/services/party-management/party-management-service-client.js +142 -1
  188. package/dist/services/topology-manager-write/topology-signed-transaction-assembler.js +4 -0
  189. package/dist/testing/campaign/campaign-artifact.d.ts +20 -0
  190. package/dist/testing/campaign/campaign-artifact.js +147 -0
  191. package/dist/testing/campaign/campaign-definition.d.ts +9 -0
  192. package/dist/testing/campaign/campaign-definition.js +78 -0
  193. package/dist/testing/campaign/campaign-metrics.d.ts +32 -0
  194. package/dist/testing/campaign/campaign-metrics.js +26 -0
  195. package/dist/testing/campaign/campaign-model.d.ts +11 -0
  196. package/dist/testing/campaign/campaign-model.js +21 -0
  197. package/dist/testing/campaign/campaign-runner.d.ts +99 -0
  198. package/dist/testing/campaign/campaign-runner.js +194 -0
  199. package/dist/testing/campaign/campaign-scheduler.d.ts +40 -0
  200. package/dist/testing/campaign/campaign-scheduler.js +75 -0
  201. package/dist/testing/campaign/campaign-types.d.ts +52 -0
  202. package/dist/testing/campaign/campaign-types.js +11 -0
  203. package/dist/testing/daml/daml-action-arbitrary.d.ts +13 -0
  204. package/dist/testing/daml/daml-action-arbitrary.js +24 -0
  205. package/dist/testing/daml/daml-choice-action-arbitrary.d.ts +18 -0
  206. package/dist/testing/daml/daml-choice-action-arbitrary.js +27 -0
  207. package/dist/testing/daml/daml-create-action-arbitrary.d.ts +19 -0
  208. package/dist/testing/daml/daml-create-action-arbitrary.js +34 -0
  209. package/dist/testing/daml/daml-testing-catalog.d.ts +38 -0
  210. package/dist/testing/daml/daml-testing-catalog.js +40 -0
  211. package/dist/testing/daml/daml-value-arbitrary.d.ts +8 -0
  212. package/dist/testing/daml/daml-value-arbitrary.js +43 -0
  213. package/dist/testing/daml/declarative-campaign-arbitrary.d.ts +15 -0
  214. package/dist/testing/daml/declarative-campaign-arbitrary.js +30 -0
  215. package/dist/testing/errors/invariant-campaign-failure.d.ts +24 -0
  216. package/dist/testing/errors/invariant-campaign-failure.js +37 -0
  217. package/dist/testing/errors/testing-configuration-error.d.ts +3 -0
  218. package/dist/testing/errors/testing-configuration-error.js +6 -0
  219. package/dist/testing/handlers/handler.d.ts +19 -0
  220. package/dist/testing/handlers/handler.js +31 -0
  221. package/dist/testing/index.d.ts +22 -0
  222. package/dist/testing/index.js +22 -0
  223. package/dist/testing/runtime/campaign-isolation.d.ts +14 -0
  224. package/dist/testing/runtime/campaign-isolation.js +23 -0
  225. package/dist/testing/runtime/canton-test-runtime.d.ts +58 -0
  226. package/dist/testing/runtime/canton-test-runtime.js +138 -0
  227. package/dist/testing/runtime/declarative-action-executor.d.ts +16 -0
  228. package/dist/testing/runtime/declarative-action-executor.js +41 -0
  229. package/dist/testing/targets/target.d.ts +49 -0
  230. package/dist/testing/targets/target.js +121 -0
  231. package/dist/transports/grpc/grpc-channel-factory.d.ts +4 -0
  232. package/dist/transports/grpc/grpc-channel-factory.js +42 -1
  233. package/dist/transports/grpc/grpc-transport.d.ts +2 -2
  234. package/dist/transports/grpc/grpc-transport.js +42 -3
  235. package/dist/transports/grpc/mappers/commands-mapper.d.ts +10 -2
  236. package/dist/transports/grpc/mappers/commands-mapper.js +30 -12
  237. package/dist/transports/grpc/mappers/contracts-mapper.d.ts +3 -1
  238. package/dist/transports/grpc/mappers/contracts-mapper.js +16 -3
  239. package/dist/transports/grpc/mappers/interactive-command-mapper.d.ts +15 -0
  240. package/dist/transports/grpc/mappers/interactive-command-mapper.js +54 -0
  241. package/dist/transports/grpc/mappers/topology-manager-write-mapper.js +59 -1
  242. package/dist/transports/json/json-transport.d.ts +2 -2
  243. package/dist/transports/json/json-transport.js +2 -2
  244. package/dist/transports/json/mappers/commands-mapper.js +23 -9
  245. package/node/.generated/start-local/additional-config.extra-participants.conf +37 -0
  246. package/node/.generated/start-local/additional-config.extra-validators.conf +35 -0
  247. package/node/.generated/start-local/compose-extra-participants.yaml +147 -0
  248. package/node/.generated/start-local/extra-participants.env +30 -0
  249. package/node/es256-jwt.mjs +177 -0
  250. package/node/start-local.sh +886 -0
  251. package/node/stop-local.sh +200 -0
  252. package/node/test-start-local.sh +354 -0
  253. package/node/test-stop-local.sh +112 -0
  254. package/package.json +21 -2
@@ -2,16 +2,18 @@ import { randomUUID } from "node:crypto";
2
2
  import { ValidationError } from "../../../core/errors/validation-error.js";
3
3
  import { CreateAndExerciseCommand } from "../../../core/types/commands/create-and-exercise-command.js";
4
4
  import { CreateCommand } from "../../../core/types/commands/create-command.js";
5
+ import { DamlNumeric } from "../../../core/types/daml-numeric.js";
6
+ import { DamlParty } from "../../../core/types/daml-party.js";
5
7
  import { ExerciseByKeyCommand } from "../../../core/types/commands/exercise-by-key-command.js";
6
8
  import { ExerciseCommand } from "../../../core/types/commands/exercise-command.js";
7
9
  import { SubmitCommandResponse } from "../../../core/types/responses/submit-command-response.js";
8
- export function mapGrpcSubmitCommandRequest(request, _signed) {
10
+ export function mapGrpcSubmitCommandRequest(request) {
9
11
  return {
10
12
  commands: {
11
13
  workflowId: "",
12
- userId: "",
14
+ userId: request.userId ?? "",
13
15
  commandId: randomUUID(),
14
- commands: [mapCommand(request.command)],
16
+ commands: [mapGrpcLedgerCommand(request.command)],
15
17
  deduplicationPeriod: {
16
18
  oneofKind: undefined,
17
19
  },
@@ -33,11 +35,11 @@ export function mapGrpcSubmitCommand(payload) {
33
35
  : payload.updateId,
34
36
  });
35
37
  }
36
- function mapCommand(command) {
38
+ export function mapGrpcLedgerCommand(command) {
37
39
  if (command instanceof CreateCommand) {
38
- return mapCreateCommand(command);
40
+ return mapGrpcCreateCommand(command);
39
41
  }
40
- if (command instanceof ExerciseCommand) {
42
+ else if (command instanceof ExerciseCommand) {
41
43
  return {
42
44
  command: {
43
45
  oneofKind: "exercise",
@@ -50,7 +52,7 @@ function mapCommand(command) {
50
52
  },
51
53
  };
52
54
  }
53
- if (command instanceof ExerciseByKeyCommand) {
55
+ else if (command instanceof ExerciseByKeyCommand) {
54
56
  return {
55
57
  command: {
56
58
  oneofKind: "exerciseByKey",
@@ -63,7 +65,7 @@ function mapCommand(command) {
63
65
  },
64
66
  };
65
67
  }
66
- if (command instanceof CreateAndExerciseCommand) {
68
+ else if (command instanceof CreateAndExerciseCommand) {
67
69
  return {
68
70
  command: {
69
71
  oneofKind: "createAndExercise",
@@ -78,7 +80,7 @@ function mapCommand(command) {
78
80
  }
79
81
  throw new ValidationError("unsupported submit command type");
80
82
  }
81
- function mapCreateCommand(command) {
83
+ export function mapGrpcCreateCommand(command) {
82
84
  return {
83
85
  command: {
84
86
  oneofKind: "create",
@@ -89,7 +91,7 @@ function mapCreateCommand(command) {
89
91
  },
90
92
  };
91
93
  }
92
- function mapRecord(payload) {
94
+ export function mapRecord(payload) {
93
95
  return {
94
96
  fields: Object.entries(payload).map(([label, value]) => ({
95
97
  label,
@@ -97,7 +99,7 @@ function mapRecord(payload) {
97
99
  })),
98
100
  };
99
101
  }
100
- function mapValue(value) {
102
+ export function mapValue(value) {
101
103
  if (value === null || value === undefined) {
102
104
  return {
103
105
  sum: {
@@ -106,6 +108,22 @@ function mapValue(value) {
106
108
  },
107
109
  };
108
110
  }
111
+ else if (value instanceof DamlParty) {
112
+ return {
113
+ sum: {
114
+ oneofKind: "party",
115
+ party: value.value,
116
+ },
117
+ };
118
+ }
119
+ else if (value instanceof DamlNumeric) {
120
+ return {
121
+ sum: {
122
+ oneofKind: "numeric",
123
+ numeric: value.value,
124
+ },
125
+ };
126
+ }
109
127
  else if (typeof value === "string") {
110
128
  return {
111
129
  sum: {
@@ -154,7 +172,7 @@ function mapValue(value) {
154
172
  },
155
173
  };
156
174
  }
157
- function parseTemplateIdentifier(templateId) {
175
+ export function parseTemplateIdentifier(templateId) {
158
176
  const parts = templateId.split(":");
159
177
  if (parts.length === 2) {
160
178
  return {
@@ -5,7 +5,9 @@ import { GetContractRequest as GrpcGetContractRequest } from "../generated/canto
5
5
  import { GetContractResponse as GrpcGetContractResponse } from "../generated/canton/com/daml/ledger/api/v2/contract_service.js";
6
6
  import { GetActiveContractsPageRequest } from "../generated/canton/com/daml/ledger/api/v2/state_service.js";
7
7
  export declare function mapGrpcQueryContractsRequest(request: {
8
- party: string;
8
+ party?: string;
9
+ parties?: readonly string[];
10
+ allParties?: boolean;
9
11
  templateId?: string;
10
12
  interfaceId?: string;
11
13
  includeInterfaceView?: boolean;
@@ -30,10 +30,23 @@ export function mapGrpcGetContract(payload) {
30
30
  });
31
31
  }
32
32
  function createEventFormat(request) {
33
+ const filters = createFilters(request);
34
+ const parties = request.parties ?? (request.party === undefined ? [] : [request.party]);
35
+ if (request.allParties === true) {
36
+ if (parties.length > 0) {
37
+ throw new ValidationError("allParties cannot be combined with party filters");
38
+ }
39
+ return {
40
+ filtersByParty: {},
41
+ filtersForAnyParty: filters,
42
+ verbose: true,
43
+ };
44
+ }
45
+ else if (parties.length === 0) {
46
+ throw new ValidationError("A party filter or allParties is required");
47
+ }
33
48
  return {
34
- filtersByParty: {
35
- [request.party]: createFilters(request),
36
- },
49
+ filtersByParty: Object.fromEntries(parties.map((party) => [party, filters])),
37
50
  verbose: true,
38
51
  };
39
52
  }
@@ -0,0 +1,15 @@
1
+ import { SignCommandResult } from "../../../core/signing/sign-command-result.js";
2
+ import { SubmitCommandRequest } from "../../../core/types/requests/submit-command-request.js";
3
+ import { SubmitCommandResponse } from "../../../core/types/responses/submit-command-response.js";
4
+ import { Signature } from "../generated/canton/com/daml/ledger/api/v2/crypto.js";
5
+ import { ExecuteSubmissionAndWaitRequest, ExecuteSubmissionAndWaitResponse, HashingSchemeVersion, PrepareSubmissionRequest, PreparedTransaction } from "../generated/canton/com/daml/ledger/api/v2/interactive/interactive_submission_service.js";
6
+ export declare function mapGrpcPrepareSubmissionRequest(request: SubmitCommandRequest, commandId: string): PrepareSubmissionRequest;
7
+ export declare function mapGrpcExecuteSubmissionAndWaitRequest(init: {
8
+ request: SubmitCommandRequest;
9
+ preparedTransaction: PreparedTransaction;
10
+ hashingSchemeVersion: HashingSchemeVersion;
11
+ submissionId: string;
12
+ signerResult: SignCommandResult;
13
+ }): ExecuteSubmissionAndWaitRequest;
14
+ export declare function mapGrpcInteractiveSubmitCommand(payload: ExecuteSubmissionAndWaitResponse): SubmitCommandResponse;
15
+ export declare function mapGrpcSignature(result: SignCommandResult): Signature;
@@ -0,0 +1,54 @@
1
+ import { ValidationError } from "../../../core/errors/validation-error.js";
2
+ import { SubmitCommandResponse } from "../../../core/types/responses/submit-command-response.js";
3
+ import { SignatureFormat, SigningAlgorithmSpec, } from "../generated/canton/com/daml/ledger/api/v2/crypto.js";
4
+ import { mapGrpcLedgerCommand } from "./commands-mapper.js";
5
+ export function mapGrpcPrepareSubmissionRequest(request, commandId) {
6
+ return {
7
+ userId: request.userId ?? "",
8
+ commandId,
9
+ commands: [mapGrpcLedgerCommand(request.command)],
10
+ actAs: [...request.actAs],
11
+ readAs: [...request.readAs],
12
+ disclosedContracts: [],
13
+ synchronizerId: "",
14
+ packageIdSelectionPreference: [],
15
+ prefetchContractKeys: [],
16
+ verboseHashing: false,
17
+ };
18
+ }
19
+ export function mapGrpcExecuteSubmissionAndWaitRequest(init) {
20
+ return {
21
+ preparedTransaction: init.preparedTransaction,
22
+ partySignatures: {
23
+ signatures: [
24
+ {
25
+ party: init.request.actAs[0] ?? "",
26
+ signatures: [mapGrpcSignature(init.signerResult)],
27
+ },
28
+ ],
29
+ },
30
+ deduplicationPeriod: {
31
+ oneofKind: undefined,
32
+ },
33
+ submissionId: init.submissionId,
34
+ userId: init.request.userId ?? "",
35
+ hashingSchemeVersion: init.hashingSchemeVersion,
36
+ };
37
+ }
38
+ export function mapGrpcInteractiveSubmitCommand(payload) {
39
+ return new SubmitCommandResponse({
40
+ transactionId: payload.updateId,
41
+ });
42
+ }
43
+ export function mapGrpcSignature(result) {
44
+ const algorithm = result.algorithm.toLowerCase();
45
+ if (algorithm === "ed25519") {
46
+ return {
47
+ format: SignatureFormat.CONCAT,
48
+ signature: result.signature,
49
+ signedBy: result.signedBy,
50
+ signingAlgorithmSpec: SigningAlgorithmSpec.ED25519,
51
+ };
52
+ }
53
+ throw new ValidationError(`unsupported gRPC command signing algorithm '${result.algorithm}'`);
54
+ }
@@ -8,7 +8,9 @@ import { ImportTopologySnapshotResponse } from "../../../core/types/responses/im
8
8
  import { ImportTopologySnapshotV2Response } from "../../../core/types/responses/import-topology-snapshot-v2-response.js";
9
9
  import { SignTopologyTransactionsResponse } from "../../../core/types/responses/sign-topology-transactions-response.js";
10
10
  import { GeneratedTopologyTransaction } from "../../../core/types/topology/generated-topology-transaction.js";
11
+ import { DecentralizedNamespaceDefinition } from "../../../core/types/topology/decentralized-namespace-definition.js";
11
12
  import { MultiTopologyTransactionSignature } from "../../../core/types/topology/multi-topology-transaction-signature.js";
13
+ import { NamespaceDelegation, NamespaceDelegationRestrictionKind, } from "../../../core/types/topology/namespace-delegation.js";
12
14
  import { PartyToParticipant, PartyToParticipantOnboarding, } from "../../../core/types/topology/party-to-participant.js";
13
15
  import { SignedTopologyTransaction } from "../../../core/types/topology/signed-topology-transaction.js";
14
16
  import { TopologyForceFlag } from "../../../core/types/topology/topology-force-flag.js";
@@ -18,7 +20,7 @@ import { TopologyTransactionSignature } from "../../../core/types/topology/topol
18
20
  import { CryptoKeyFormat, SignatureFormat as GrpcSignatureFormat, SigningAlgorithmSpec, SigningKeyScheme, SigningKeySpec, SigningKeyUsage, } from "../generated/canton/com/digitalasset/canton/crypto/v30/crypto.js";
19
21
  import { ForceFlag, } from "../generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_write_service.js";
20
22
  import { Enums_ParticipantPermission, } from "../generated/canton/com/digitalasset/canton/protocol/v30/topology.js";
21
- import { mapGrpcTopologyChangeOp, mapGrpcTopologyStoreId, } from "./topology-common-mapper.js";
23
+ import { mapGrpcTopologyChangeOp, mapGrpcTopologyMappingCode, mapGrpcTopologyStoreId, } from "./topology-common-mapper.js";
22
24
  export function mapGrpcGenerateTopologyTransactionsRequest(request) {
23
25
  return {
24
26
  proposals: request.proposals.map(mapGrpcGenerateTopologyTransactionsProposal),
@@ -155,8 +157,64 @@ function mapGrpcTopologyMapping(mapping) {
155
157
  },
156
158
  };
157
159
  }
160
+ else if (mapping instanceof DecentralizedNamespaceDefinition) {
161
+ return {
162
+ mapping: {
163
+ oneofKind: "decentralizedNamespaceDefinition",
164
+ decentralizedNamespaceDefinition: mapGrpcDecentralizedNamespaceDefinition(mapping),
165
+ },
166
+ };
167
+ }
168
+ else if (mapping instanceof NamespaceDelegation) {
169
+ return {
170
+ mapping: {
171
+ oneofKind: "namespaceDelegation",
172
+ namespaceDelegation: mapGrpcNamespaceDelegation(mapping),
173
+ },
174
+ };
175
+ }
158
176
  throw new ValidationError(`Unsupported topology write mapping type: ${mapping.constructor.name}.`);
159
177
  }
178
+ function mapGrpcDecentralizedNamespaceDefinition(value) {
179
+ return {
180
+ decentralizedNamespace: value.decentralizedNamespace,
181
+ threshold: value.threshold,
182
+ owners: [...value.owners],
183
+ };
184
+ }
185
+ function mapGrpcNamespaceDelegation(value) {
186
+ return {
187
+ namespace: value.namespace,
188
+ targetKey: value.targetKey === undefined
189
+ ? undefined
190
+ : mapGrpcSigningPublicKey(value.targetKey),
191
+ isRootDelegation: value.isRootDelegation,
192
+ restriction: mapGrpcNamespaceDelegationRestriction(value),
193
+ };
194
+ }
195
+ function mapGrpcNamespaceDelegationRestriction(value) {
196
+ switch (value.restriction?.kind) {
197
+ case NamespaceDelegationRestrictionKind.canSignAllMappings:
198
+ return {
199
+ oneofKind: "canSignAllMappings",
200
+ canSignAllMappings: {},
201
+ };
202
+ case NamespaceDelegationRestrictionKind.canSignAllButNamespaceDelegations:
203
+ return {
204
+ oneofKind: "canSignAllButNamespaceDelegations",
205
+ canSignAllButNamespaceDelegations: {},
206
+ };
207
+ case NamespaceDelegationRestrictionKind.canSignSpecificMappings:
208
+ return {
209
+ oneofKind: "canSignSpecificMapings",
210
+ canSignSpecificMapings: {
211
+ mappings: value.restriction.mappings.map(mapGrpcTopologyMappingCode),
212
+ },
213
+ };
214
+ default:
215
+ return { oneofKind: undefined };
216
+ }
217
+ }
160
218
  function mapGrpcPartyToParticipant(value) {
161
219
  return {
162
220
  party: value.party,
@@ -63,7 +63,6 @@ import { ParticipantListPackagesRequest } from "../../core/types/requests/partic
63
63
  import { SubmitCommandRequest } from "../../core/types/requests/submit-command-request.js";
64
64
  import { TrafficControlStateRequest } from "../../core/types/requests/traffic-control-state-request.js";
65
65
  import { UploadDarFileRequest } from "../../core/types/requests/upload-dar-file-request.js";
66
- import { SignCommandResult } from "../../core/signing/sign-command-result.js";
67
66
  import { AllocatePartyResponse } from "../../core/types/responses/allocate-party-response.js";
68
67
  import { AllocateExternalPartyResponse } from "../../core/types/responses/allocate-external-party-response.js";
69
68
  import { AddPartyAsyncResponse } from "../../core/types/responses/add-party-async-response.js";
@@ -127,6 +126,7 @@ import { SubmitCommandResponse } from "../../core/types/responses/submit-command
127
126
  import { TrafficControlStateResponse } from "../../core/types/responses/traffic-control-state-response.js";
128
127
  import { UploadDarFileResponse } from "../../core/types/responses/upload-dar-file-response.js";
129
128
  import { ITransport } from "../../core/transports/transport.interface.js";
129
+ import { ICommandSigner } from "../../core/signing/command-signer.interface.js";
130
130
  import { RequestOptions } from "../../core/types/request-options.js";
131
131
  import { IJsonHttpClient } from "./json-http-client.js";
132
132
  import { CompletionObserver } from "../../services/command-completion/completion-observer.interface.js";
@@ -233,6 +233,6 @@ export declare class JsonTransport implements ITransport {
233
233
  getUpdateByHashAsync(_request: GetUpdateByHashRequest, _options?: RequestOptions): Promise<GetUpdateByHashResponse>;
234
234
  getUpdatesPageAsync(_request: GetUpdatesPageRequest, _options?: RequestOptions): Promise<GetUpdatesPageResponse>;
235
235
  getCompletionsAsync(_request: GetCompletionsRequest, _observer: CompletionObserver, _options?: RequestOptions): Promise<void>;
236
- submitCommandAsync(request: SubmitCommandRequest, signed?: SignCommandResult, options?: RequestOptions): Promise<SubmitCommandResponse>;
236
+ submitCommandAsync(request: SubmitCommandRequest, signer?: ICommandSigner, options?: RequestOptions): Promise<SubmitCommandResponse>;
237
237
  private throwIfDisposed;
238
238
  }
@@ -453,9 +453,9 @@ export class JsonTransport {
453
453
  this.throwIfDisposed();
454
454
  throw new NotSupportedError("CommandCompletionService.GetCompletions is not supported by json transport");
455
455
  }
456
- async submitCommandAsync(request, signed, options) {
456
+ async submitCommandAsync(request, signer, options) {
457
457
  this.throwIfDisposed();
458
- if (signed) {
458
+ if (signer) {
459
459
  throw new NotSupportedError("command signing is not supported by json transport");
460
460
  }
461
461
  const payload = await this.httpClient.postAsync("/v2/commands/submit-and-wait", mapJsonSubmitCommandRequest(request), options);
@@ -2,6 +2,8 @@ import { randomUUID } from "node:crypto";
2
2
  import { ValidationError } from "../../../core/errors/validation-error.js";
3
3
  import { CreateAndExerciseCommand } from "../../../core/types/commands/create-and-exercise-command.js";
4
4
  import { CreateCommand } from "../../../core/types/commands/create-command.js";
5
+ import { DamlNumeric } from "../../../core/types/daml-numeric.js";
6
+ import { DamlParty } from "../../../core/types/daml-party.js";
5
7
  import { ExerciseByKeyCommand } from "../../../core/types/commands/exercise-by-key-command.js";
6
8
  import { ExerciseCommand } from "../../../core/types/commands/exercise-command.js";
7
9
  import { SubmitCommandResponse } from "../../../core/types/responses/submit-command-response.js";
@@ -28,39 +30,51 @@ function mapJsonCommand(command) {
28
30
  return {
29
31
  CreateCommand: {
30
32
  templateId: command.templateId,
31
- createArguments: command.payload,
33
+ createArguments: mapJsonValue(command.payload),
32
34
  },
33
35
  };
34
36
  }
35
- if (command instanceof ExerciseCommand) {
37
+ else if (command instanceof ExerciseCommand) {
36
38
  return {
37
39
  ExerciseCommand: {
38
40
  templateId: command.templateId,
39
41
  contractId: command.contractId,
40
42
  choice: command.choice,
41
- choiceArgument: command.argument,
43
+ choiceArgument: mapJsonValue(command.argument),
42
44
  },
43
45
  };
44
46
  }
45
- if (command instanceof ExerciseByKeyCommand) {
47
+ else if (command instanceof ExerciseByKeyCommand) {
46
48
  return {
47
49
  ExerciseByKeyCommand: {
48
50
  templateId: command.templateId,
49
- contractKey: command.contractKey,
51
+ contractKey: mapJsonValue(command.contractKey),
50
52
  choice: command.choice,
51
- choiceArgument: command.argument,
53
+ choiceArgument: mapJsonValue(command.argument),
52
54
  },
53
55
  };
54
56
  }
55
- if (command instanceof CreateAndExerciseCommand) {
57
+ else if (command instanceof CreateAndExerciseCommand) {
56
58
  return {
57
59
  CreateAndExerciseCommand: {
58
60
  templateId: command.templateId,
59
- createArguments: command.payload,
61
+ createArguments: mapJsonValue(command.payload),
60
62
  choice: command.choice,
61
- choiceArgument: command.argument,
63
+ choiceArgument: mapJsonValue(command.argument),
62
64
  },
63
65
  };
64
66
  }
65
67
  throw new ValidationError("unsupported submit command type");
66
68
  }
69
+ function mapJsonValue(value) {
70
+ if (value instanceof DamlParty || value instanceof DamlNumeric) {
71
+ return value.value;
72
+ }
73
+ else if (Array.isArray(value)) {
74
+ return value.map(mapJsonValue);
75
+ }
76
+ else if (value !== null && typeof value === "object") {
77
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, mapJsonValue(item)]));
78
+ }
79
+ return value;
80
+ }
@@ -0,0 +1,37 @@
1
+ canton.participants.extra-1 = $${_participant} {
2
+ storage.config.properties.databaseName = "participant-extra-1"
3
+ init {
4
+ generate-topology-transactions-and-keys = true
5
+ identity.type = auto
6
+ }
7
+ monitoring {
8
+ http-health-server.port = ${EXTRA_PARTICIPANT_1_HTTP_HEALTHCHECK_PORT}
9
+ grpc-health-server.port = ${EXTRA_PARTICIPANT_1_GRPC_HEALTHCHECK_PORT}
10
+ }
11
+ http-ledger-api.port = ${EXTRA_PARTICIPANT_1_JSON_API_PORT}
12
+ admin-api.port = ${EXTRA_PARTICIPANT_1_ADMIN_API_PORT}
13
+ ledger-api.port = ${EXTRA_PARTICIPANT_1_LEDGER_API_PORT}
14
+ ledger-api {
15
+ auth-services = [{
16
+ type = unsafe-jwt-hmac-256
17
+ target-audience = "${EXTRA_VALIDATOR_1_AUTH_AUDIENCE}"
18
+ secret = "unsafe"
19
+ }]
20
+
21
+ user-management-service.additional-admin-user-id = "${EXTRA_VALIDATOR_1_USER_NAME}"
22
+ }
23
+ }
24
+
25
+ canton.participants.extra-1.ledger-api.auth-services = [
26
+ {
27
+ type = unsafe-jwt-hmac-256
28
+ target-audience = "https://canton.network.global"
29
+ secret = "unsafe"
30
+ },
31
+ {
32
+ type = jwt-es-256-crt
33
+ certificate = "/app/es256-certificate.pem"
34
+ target-audience = "https://canton.network.global/es256"
35
+ }
36
+ ]
37
+
@@ -0,0 +1,35 @@
1
+ canton.validator-apps.extra-1-validator_backend = $${_validator_backend} {
2
+ onboarding.secret = "${EXTRA_VALIDATOR_1_ONBOARDING_SECRET}"
3
+ domain-migration-dump-path = "/domain-upgrade-dump/domain_migration_dump-extra-1.json"
4
+ storage.config.properties.databaseName = "${EXTRA_VALIDATOR_1_DB}"
5
+ admin-api.port = ${EXTRA_VALIDATOR_1_ADMIN_API_PORT}
6
+ canton-identifier-config.participant = extra-1
7
+ participant-client {
8
+ admin-api.port = ${EXTRA_PARTICIPANT_1_ADMIN_API_PORT}
9
+ ledger-api {
10
+ client-config.port = ${EXTRA_PARTICIPANT_1_LEDGER_API_PORT}
11
+ auth-config = {
12
+ type = "self-signed"
13
+ user = "${EXTRA_VALIDATOR_1_USER_NAME}"
14
+ audience = "${EXTRA_VALIDATOR_1_AUTH_AUDIENCE}"
15
+ secret = "unsafe"
16
+ }
17
+ }
18
+ }
19
+ auth = {
20
+ algorithm = "hs-256-unsafe"
21
+ audience = "${EXTRA_VALIDATOR_1_AUTH_AUDIENCE}"
22
+ secret = "unsafe"
23
+ }
24
+ ledger-api-user = "${EXTRA_VALIDATOR_1_USER_NAME}"
25
+ validator-wallet-users.0 = "${EXTRA_VALIDATOR_1_WALLET_ADMIN_USER_NAME}"
26
+ validator-party-hint = "${EXTRA_VALIDATOR_1_PARTY_HINT}"
27
+
28
+ domains.global.buy-extra-traffic {
29
+ min-topup-interval = ${?MIN_TRAFFIC_TOPUP_INTERVAL}
30
+ target-throughput = ${?TARGET_TRAFFIC_THROUGHPUT}
31
+ }
32
+ }
33
+
34
+ canton.sv-apps.sv.expected-validator-onboardings += { secret = "${EXTRA_VALIDATOR_1_ONBOARDING_SECRET}" }
35
+
@@ -0,0 +1,147 @@
1
+ volumes:
2
+ postgres-pqs-extra-1:
3
+
4
+ services:
5
+ postgres:
6
+ env_file:
7
+ - ${START_LOCAL_GENERATED_DIR}/extra-participants.env
8
+ canton:
9
+ env_file:
10
+ - ${START_LOCAL_GENERATED_DIR}/extra-participants.env
11
+ environment:
12
+ ADDITIONAL_CONFIG_EXTRA_PARTICIPANTS: |
13
+ canton.participants.extra-1 = $${_participant} {
14
+ storage.config.properties.databaseName = "participant-extra-1"
15
+ init {
16
+ generate-topology-transactions-and-keys = true
17
+ identity.type = auto
18
+ }
19
+ monitoring {
20
+ http-health-server.port = ${EXTRA_PARTICIPANT_1_HTTP_HEALTHCHECK_PORT}
21
+ grpc-health-server.port = ${EXTRA_PARTICIPANT_1_GRPC_HEALTHCHECK_PORT}
22
+ }
23
+ http-ledger-api.port = ${EXTRA_PARTICIPANT_1_JSON_API_PORT}
24
+ admin-api.port = ${EXTRA_PARTICIPANT_1_ADMIN_API_PORT}
25
+ ledger-api.port = ${EXTRA_PARTICIPANT_1_LEDGER_API_PORT}
26
+ ledger-api {
27
+ auth-services = [{
28
+ type = unsafe-jwt-hmac-256
29
+ target-audience = "${EXTRA_VALIDATOR_1_AUTH_AUDIENCE}"
30
+ secret = "unsafe"
31
+ }]
32
+
33
+ user-management-service.additional-admin-user-id = "${EXTRA_VALIDATOR_1_USER_NAME}"
34
+ }
35
+ }
36
+
37
+ canton.participants.extra-1.ledger-api.auth-services = [
38
+ {
39
+ type = unsafe-jwt-hmac-256
40
+ target-audience = "https://canton.network.global"
41
+ secret = "unsafe"
42
+ },
43
+ {
44
+ type = jwt-es-256-crt
45
+ certificate = "/app/es256-certificate.pem"
46
+ target-audience = "https://canton.network.global/es256"
47
+ }
48
+ ]
49
+
50
+ ports:
51
+ - "${EXTRA_PARTICIPANT_1_LEDGER_API_PUBLISHED_PORT}:${EXTRA_PARTICIPANT_1_LEDGER_API_PORT}"
52
+ - "${EXTRA_PARTICIPANT_1_ADMIN_API_PUBLISHED_PORT}:${EXTRA_PARTICIPANT_1_ADMIN_API_PORT}"
53
+ - "${EXTRA_PARTICIPANT_1_JSON_API_PUBLISHED_PORT}:${EXTRA_PARTICIPANT_1_JSON_API_PORT}"
54
+ splice:
55
+ env_file:
56
+ - ${START_LOCAL_GENERATED_DIR}/extra-participants.env
57
+ environment:
58
+ ADDITIONAL_CONFIG_EXTRA_VALIDATORS: |
59
+ canton.validator-apps.extra-1-validator_backend = $${_validator_backend} {
60
+ onboarding.secret = "${EXTRA_VALIDATOR_1_ONBOARDING_SECRET}"
61
+ domain-migration-dump-path = "/domain-upgrade-dump/domain_migration_dump-extra-1.json"
62
+ storage.config.properties.databaseName = "${EXTRA_VALIDATOR_1_DB}"
63
+ admin-api.port = ${EXTRA_VALIDATOR_1_ADMIN_API_PORT}
64
+ canton-identifier-config.participant = extra-1
65
+ participant-client {
66
+ admin-api.port = ${EXTRA_PARTICIPANT_1_ADMIN_API_PORT}
67
+ ledger-api {
68
+ client-config.port = ${EXTRA_PARTICIPANT_1_LEDGER_API_PORT}
69
+ auth-config = {
70
+ type = "self-signed"
71
+ user = "${EXTRA_VALIDATOR_1_USER_NAME}"
72
+ audience = "${EXTRA_VALIDATOR_1_AUTH_AUDIENCE}"
73
+ secret = "unsafe"
74
+ }
75
+ }
76
+ }
77
+ auth = {
78
+ algorithm = "hs-256-unsafe"
79
+ audience = "${EXTRA_VALIDATOR_1_AUTH_AUDIENCE}"
80
+ secret = "unsafe"
81
+ }
82
+ ledger-api-user = "${EXTRA_VALIDATOR_1_USER_NAME}"
83
+ validator-wallet-users.0 = "${EXTRA_VALIDATOR_1_WALLET_ADMIN_USER_NAME}"
84
+ validator-party-hint = "${EXTRA_VALIDATOR_1_PARTY_HINT}"
85
+
86
+ domains.global.buy-extra-traffic {
87
+ min-topup-interval = $${?MIN_TRAFFIC_TOPUP_INTERVAL}
88
+ target-throughput = $${?TARGET_TRAFFIC_THROUGHPUT}
89
+ }
90
+ }
91
+
92
+ canton.sv-apps.sv.expected-validator-onboardings += { secret = "${EXTRA_VALIDATOR_1_ONBOARDING_SECRET}" }
93
+
94
+ ports:
95
+ - "${EXTRA_VALIDATOR_1_ADMIN_API_PUBLISHED_PORT}:${EXTRA_VALIDATOR_1_ADMIN_API_PORT}"
96
+ postgres-pqs-extra-1:
97
+ image: "postgres:${POSTGRES_VERSION}"
98
+ container_name: postgres-pqs-extra-1
99
+ volumes:
100
+ - postgres-pqs-extra-1:/var/lib/postgresql/data
101
+ - ${LOCALNET_DIR}/docker/postgres/postgres-entrypoint.sh:/postgres-entrypoint.sh
102
+ environment:
103
+ POSTGRES_USER: ${DB_USER}
104
+ POSTGRES_PASSWORD: ${DB_PASSWORD}
105
+ POSTGRES_DB: postgres
106
+ CREATE_DATABASE_EXTRA_PQS_1: ${EXTRA_PQS_1_POSTGRES_DB}
107
+ ports:
108
+ - "${EXTRA_PQS_1_POSTGRES_PUBLISHED_PORT}:5432"
109
+ entrypoint: /postgres-entrypoint.sh
110
+ healthcheck:
111
+ test: "pg_isready -U ${DB_USER} -d postgres"
112
+ interval: 10s
113
+ timeout: 3s
114
+ retries: 3
115
+ start_period: 30s
116
+ user: "postgres"
117
+ command:
118
+ - postgres
119
+ - -c
120
+ - max_connections=1000
121
+ pqs-extra-1:
122
+ image: ${SCRIBE_IMAGE}:${SCRIBE_VERSION}
123
+ container_name: pqs-extra-1
124
+ environment:
125
+ SCRIBE_SOURCE_LEDGER_HOST: canton
126
+ SCRIBE_SOURCE_LEDGER_PORT: ${EXTRA_PARTICIPANT_1_LEDGER_API_PORT}
127
+ SCRIBE_SOURCE_LEDGER_AUTH: OAuth
128
+ SCRIBE_TARGET_POSTGRES_HOST: postgres-pqs-extra-1
129
+ SCRIBE_TARGET_POSTGRES_PORT: 5432
130
+ SCRIBE_TARGET_POSTGRES_DATABASE: ${EXTRA_PQS_1_POSTGRES_DB}
131
+ SCRIBE_TARGET_POSTGRES_USERNAME: ${DB_USER}
132
+ SCRIBE_TARGET_POSTGRES_PASSWORD: ${DB_PASSWORD}
133
+ SCRIBE_CONFIG: /onboarding/extra-1-pqs.conf
134
+ volumes:
135
+ - onboarding:/onboarding
136
+ command:
137
+ - pipeline
138
+ - ledger
139
+ - postgres-document
140
+ depends_on:
141
+ canton:
142
+ condition: service_healthy
143
+ splice-onboarding:
144
+ condition: service_healthy
145
+ postgres-pqs-extra-1:
146
+ condition: service_healthy
147
+ restart: on-failure:100
@@ -0,0 +1,30 @@
1
+ START_LOCAL_GENERATED_DIR=/home/helena/env/daml/typescript-sdk/node/.generated/start-local
2
+ CREATE_DATABASE_EXTRA_1=participant-extra-1
3
+ CREATE_DATABASE_EXTRA_VALIDATOR_1=validator-extra-1
4
+ CREATE_DATABASE_EXTRA_PQS_1=pqs-extra-1
5
+ EXTRA_PARTICIPANT_1_NAME=extra-1
6
+ EXTRA_PARTICIPANT_1_DB=participant-extra-1
7
+ EXTRA_PARTICIPANT_1_PARTY_HINT=extra_1_quickstart-helena-1
8
+ EXTRA_PARTICIPANT_1_LEDGER_API_PORT=5901
9
+ EXTRA_PARTICIPANT_1_ADMIN_API_PORT=5902
10
+ EXTRA_PARTICIPANT_1_JSON_API_PORT=5975
11
+ EXTRA_PARTICIPANT_1_HTTP_HEALTHCHECK_PORT=5900
12
+ EXTRA_PARTICIPANT_1_GRPC_HEALTHCHECK_PORT=5961
13
+ EXTRA_PARTICIPANT_1_LEDGER_API_PUBLISHED_PORT=5901
14
+ EXTRA_PARTICIPANT_1_ADMIN_API_PUBLISHED_PORT=5902
15
+ EXTRA_PARTICIPANT_1_JSON_API_PUBLISHED_PORT=5975
16
+ EXTRA_VALIDATOR_1_DB=validator-extra-1
17
+ EXTRA_VALIDATOR_1_PARTY_HINT=validator_1_quickstart-helena-1
18
+ EXTRA_VALIDATOR_1_ONBOARDING_SECRET=extra-1-validator-onboarding-secret
19
+ EXTRA_VALIDATOR_1_ADMIN_API_PORT=5903
20
+ EXTRA_VALIDATOR_1_ADMIN_API_PUBLISHED_PORT=5903
21
+ EXTRA_VALIDATOR_1_USER_NAME=ledger-api-user
22
+ EXTRA_VALIDATOR_1_WALLET_ADMIN_USER_NAME=extra-1
23
+ EXTRA_VALIDATOR_1_AUTH_AUDIENCE=https://canton.network.global
24
+ EXTRA_VALIDATOR_1_AUTH_MODE=shared-secret
25
+ EXTRA_PQS_1_NAME=pqs-extra-1
26
+ EXTRA_PQS_1_USER_NAME=extra-1-pqs-user
27
+ EXTRA_PQS_1_POSTGRES_NAME=postgres-pqs-extra-1
28
+ EXTRA_PQS_1_POSTGRES_DB=pqs-extra-1
29
+ EXTRA_PQS_1_POSTGRES_PUBLISHED_PORT=5541
30
+ EXTRA_PQS_1_CONFIG_FILE=extra-1-pqs.conf