@distrohelena/canton-typescript-sdk 0.1.32 → 0.1.35

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 (121) hide show
  1. package/README.md +220 -9
  2. package/dist/cjs/client/external-party-activation-client.js +20 -10
  3. package/dist/cjs/core/errors/active-contracts-traversal-error.js +12 -0
  4. package/dist/cjs/core/polling/poll-until-async.js +26 -0
  5. package/dist/cjs/core/types/active-contracts-traversal-options.js +26 -0
  6. package/dist/cjs/core/types/command-deduplication-period.js +2 -0
  7. package/dist/cjs/core/types/operation-deadline.js +42 -0
  8. package/dist/cjs/core/types/requests/allocate-party-request.js +2 -0
  9. package/dist/cjs/core/types/requests/finalize-decentralized-party-request.js +6 -0
  10. package/dist/cjs/core/types/requests/submit-command-request.js +43 -0
  11. package/dist/cjs/core/types/requests/wait-for-party-hosting-request.js +40 -0
  12. package/dist/cjs/index.js +13 -27
  13. package/dist/cjs/query/grpc/grpc-contract-query-client.js +33 -16
  14. package/dist/cjs/services/party-management/decentralized-party-lifecycle.js +28 -3
  15. package/dist/cjs/services/party-management/party-management-service-client.js +3 -0
  16. package/dist/cjs/services/state/state-service-client.js +1 -1
  17. package/dist/cjs/services/topology-aggregation/topology-aggregation-service-client.js +36 -0
  18. package/dist/cjs/transports/grpc/grpc-channel-factory.js +5 -7
  19. package/dist/cjs/transports/grpc/grpc-transport.js +31 -15
  20. package/dist/cjs/transports/grpc/mappers/command-deduplication-mapper.js +22 -0
  21. package/dist/cjs/transports/grpc/mappers/commands-mapper.js +3 -4
  22. package/dist/cjs/transports/grpc/mappers/interactive-command-mapper.js +5 -3
  23. package/dist/cjs/transports/grpc/mappers/parties-mapper.js +1 -12
  24. package/dist/cjs/transports/json/mappers/commands-mapper.js +5 -1
  25. package/dist/cjs/transports/json/mappers/parties-mapper.js +1 -0
  26. package/dist/client/external-party-activation-client.js +20 -10
  27. package/dist/client/external-party-activation-response.d.ts +1 -1
  28. package/dist/core/errors/active-contracts-traversal-error.d.ts +5 -0
  29. package/dist/core/errors/active-contracts-traversal-error.js +8 -0
  30. package/dist/core/polling/poll-until-async.d.ts +10 -0
  31. package/dist/core/polling/poll-until-async.js +23 -0
  32. package/dist/core/transports/transport.interface.d.ts +11 -3
  33. package/dist/core/types/active-contracts-traversal-options.d.ts +11 -0
  34. package/dist/core/types/active-contracts-traversal-options.js +22 -0
  35. package/dist/core/types/command-deduplication-period.d.ts +7 -0
  36. package/dist/core/types/command-deduplication-period.js +1 -0
  37. package/dist/core/types/operation-deadline.d.ts +13 -0
  38. package/dist/core/types/operation-deadline.js +38 -0
  39. package/dist/core/types/requests/allocate-party-request.d.ts +2 -0
  40. package/dist/core/types/requests/allocate-party-request.js +2 -0
  41. package/dist/core/types/requests/finalize-decentralized-party-request.d.ts +6 -0
  42. package/dist/core/types/requests/finalize-decentralized-party-request.js +6 -0
  43. package/dist/core/types/requests/submit-command-request.d.ts +5 -0
  44. package/dist/core/types/requests/submit-command-request.js +43 -0
  45. package/dist/core/types/requests/wait-for-party-hosting-request.d.ts +14 -0
  46. package/dist/core/types/requests/wait-for-party-hosting-request.js +36 -0
  47. package/dist/index.d.ts +5 -11
  48. package/dist/index.js +4 -11
  49. package/dist/query/grpc/grpc-contract-query-client.js +33 -16
  50. package/dist/services/party-management/decentralized-party-lifecycle.d.ts +1 -1
  51. package/dist/services/party-management/decentralized-party-lifecycle.js +28 -3
  52. package/dist/services/party-management/party-management-service-client.js +3 -0
  53. package/dist/services/state/state-service-client.d.ts +1 -1
  54. package/dist/services/state/state-service-client.js +1 -1
  55. package/dist/services/topology-aggregation/topology-aggregation-service-client.d.ts +4 -1
  56. package/dist/services/topology-aggregation/topology-aggregation-service-client.js +36 -0
  57. package/dist/services/topology-manager-read/topology-manager-read-service-client.d.ts +3 -1
  58. package/dist/services/user-management/user-management-service-client.d.ts +7 -1
  59. package/dist/transports/grpc/grpc-channel-factory.d.ts +0 -1
  60. package/dist/transports/grpc/grpc-channel-factory.js +5 -7
  61. package/dist/transports/grpc/grpc-transport.d.ts +10 -3
  62. package/dist/transports/grpc/grpc-transport.js +31 -15
  63. package/dist/transports/grpc/mappers/command-deduplication-mapper.d.ts +5 -0
  64. package/dist/transports/grpc/mappers/command-deduplication-mapper.js +19 -0
  65. package/dist/transports/grpc/mappers/commands-mapper.js +3 -4
  66. package/dist/transports/grpc/mappers/interactive-command-mapper.js +5 -3
  67. package/dist/transports/grpc/mappers/parties-mapper.d.ts +3 -7
  68. package/dist/transports/grpc/mappers/parties-mapper.js +1 -10
  69. package/dist/transports/json/json-transport.d.ts +10 -5
  70. package/dist/transports/json/mappers/commands-mapper.js +5 -1
  71. package/dist/transports/json/mappers/parties-mapper.d.ts +1 -0
  72. package/dist/transports/json/mappers/parties-mapper.js +1 -0
  73. package/node/participant-358-synchronizer.mjs +174 -0
  74. package/node/start-local-participant-358.sh +214 -0
  75. package/node/stop-local-participant-358.sh +18 -0
  76. package/node/test-participant-358-sidecar-smoke.sh +19 -0
  77. package/node/test-participant-358-sidecar.sh +113 -0
  78. package/package.json +18 -2
  79. package/dist/cjs/core/types/health-check-status.js +0 -10
  80. package/dist/cjs/core/types/requests/get-ledger-api-version-request.js +0 -6
  81. package/dist/cjs/core/types/requests/get-package-references-request.js +0 -10
  82. package/dist/cjs/core/types/requests/get-participant-id-request.js +0 -7
  83. package/dist/cjs/core/types/requests/get-participant-status-request.js +0 -6
  84. package/dist/cjs/core/types/requests/health-check-request.js +0 -10
  85. package/dist/cjs/core/types/responses/get-ledger-api-version-response.js +0 -12
  86. package/dist/cjs/core/types/responses/get-package-references-response.js +0 -10
  87. package/dist/cjs/core/types/responses/get-participant-id-response.js +0 -10
  88. package/dist/cjs/core/types/responses/get-participant-status-response.js +0 -12
  89. package/dist/cjs/core/types/responses/health-check-response.js +0 -10
  90. package/dist/cjs/transports/grpc/mappers/health-mapper.js +0 -24
  91. package/dist/cjs/transports/grpc/mappers/participant-status-mapper.js +0 -58
  92. package/dist/core/types/health-check-status.d.ts +0 -6
  93. package/dist/core/types/health-check-status.js +0 -7
  94. package/dist/core/types/requests/get-ledger-api-version-request.d.ts +0 -2
  95. package/dist/core/types/requests/get-ledger-api-version-request.js +0 -2
  96. package/dist/core/types/requests/get-package-references-request.d.ts +0 -6
  97. package/dist/core/types/requests/get-package-references-request.js +0 -6
  98. package/dist/core/types/requests/get-participant-id-request.d.ts +0 -3
  99. package/dist/core/types/requests/get-participant-id-request.js +0 -3
  100. package/dist/core/types/requests/get-participant-status-request.d.ts +0 -2
  101. package/dist/core/types/requests/get-participant-status-request.js +0 -2
  102. package/dist/core/types/requests/health-check-request.d.ts +0 -6
  103. package/dist/core/types/requests/health-check-request.js +0 -6
  104. package/dist/core/types/responses/get-ledger-api-version-response.d.ts +0 -8
  105. package/dist/core/types/responses/get-ledger-api-version-response.js +0 -8
  106. package/dist/core/types/responses/get-package-references-response.d.ts +0 -7
  107. package/dist/core/types/responses/get-package-references-response.js +0 -6
  108. package/dist/core/types/responses/get-participant-id-response.d.ts +0 -6
  109. package/dist/core/types/responses/get-participant-id-response.js +0 -6
  110. package/dist/core/types/responses/get-participant-status-response.d.ts +0 -10
  111. package/dist/core/types/responses/get-participant-status-response.js +0 -8
  112. package/dist/core/types/responses/health-check-response.d.ts +0 -7
  113. package/dist/core/types/responses/health-check-response.js +0 -6
  114. package/dist/transports/grpc/mappers/health-mapper.d.ts +0 -5
  115. package/dist/transports/grpc/mappers/health-mapper.js +0 -21
  116. package/dist/transports/grpc/mappers/participant-status-mapper.d.ts +0 -5
  117. package/dist/transports/grpc/mappers/participant-status-mapper.js +0 -54
  118. package/node/.generated/start-local/additional-config.extra-participants.conf +0 -72
  119. package/node/.generated/start-local/additional-config.extra-validators.conf +0 -105
  120. package/node/.generated/start-local/compose-extra-participants.yaml +0 -366
  121. package/node/.generated/start-local/extra-participants.env +0 -88
package/dist/index.js CHANGED
@@ -85,7 +85,6 @@ export { OffsetCheckpoint } from "./core/types/offset-checkpoint.js";
85
85
  export { PackageFormat } from "./core/types/package-format.js";
86
86
  export { HashFunction } from "./core/types/hash-function.js";
87
87
  export { CantonHashPurpose } from "./core/types/canton-hash-purpose.js";
88
- export { HealthCheckStatus } from "./core/types/health-check-status.js";
89
88
  export { PackageStatus } from "./core/types/package-status.js";
90
89
  export { PendingOperationMetadata } from "./core/types/pending-operation-metadata.js";
91
90
  export { ParticipantPruningSchedule } from "./core/types/participant-pruning-schedule.js";
@@ -94,6 +93,8 @@ export { ReceivedAcsCommitment } from "./core/types/received-acs-commitment.js";
94
93
  export { ReceivedAcsCommitmentPerSynchronizer } from "./core/types/received-acs-commitment-per-synchronizer.js";
95
94
  export { ReceivedAcsCommitmentState } from "./core/types/received-acs-commitment-state.js";
96
95
  export { RequestOptions } from "./core/types/request-options.js";
96
+ export { OperationDeadline } from "./core/types/operation-deadline.js";
97
+ export { ActiveContractsTraversalOptions } from "./core/types/active-contracts-traversal-options.js";
97
98
  export { PackageMetadataFilter } from "./core/types/package-metadata-filter.js";
98
99
  export { PackageReference } from "./core/types/package-reference.js";
99
100
  export { ParticipantDarDescription } from "./core/types/participant-dar-description.js";
@@ -186,17 +187,12 @@ export { GetDarRequest } from "./core/types/requests/get-dar-request.js";
186
187
  export { GetActiveContractsPageRequest } from "./core/types/requests/get-active-contracts-page-request.js";
187
188
  export { GetActiveContractsRequest } from "./core/types/requests/get-active-contracts-request.js";
188
189
  export { GetCommandStatusRequest } from "./core/types/requests/get-command-status-request.js";
189
- export { HealthCheckRequest } from "./core/types/requests/health-check-request.js";
190
190
  export { ListPackagesRequest } from "./core/types/requests/list-packages-request.js";
191
191
  export { ListAllRequest } from "./core/types/requests/list-all-request.js";
192
192
  export { ListDecentralizedNamespaceDefinitionRequest } from "./core/types/requests/list-decentralized-namespace-definition-request.js";
193
- export { GetLedgerApiVersionRequest } from "./core/types/requests/get-ledger-api-version-request.js";
194
193
  export { GetIdentityProviderConfigRequest } from "./core/types/requests/get-identity-provider-config-request.js";
195
- export { GetParticipantStatusRequest } from "./core/types/requests/get-participant-status-request.js";
196
194
  export { GetPackageRequest } from "./core/types/requests/get-package-request.js";
197
- export { GetPackageReferencesRequest } from "./core/types/requests/get-package-references-request.js";
198
195
  export { GetPackageStatusRequest } from "./core/types/requests/get-package-status-request.js";
199
- export { GetParticipantIdRequest } from "./core/types/requests/get-participant-id-request.js";
200
196
  export { GetConnectedSynchronizersRequest } from "./core/types/requests/get-connected-synchronizers-request.js";
201
197
  export { GetLatestPrunedOffsetsRequest } from "./core/types/requests/get-latest-pruned-offsets-request.js";
202
198
  export { GetLedgerEndRequest } from "./core/types/requests/get-ledger-end-request.js";
@@ -226,6 +222,7 @@ export { ListUserRightsRequest } from "./core/types/requests/list-user-rights-re
226
222
  export { ListUsersRequest } from "./core/types/requests/list-users-request.js";
227
223
  export { SubmitCommandRequest } from "./core/types/requests/submit-command-request.js";
228
224
  export { TopologyListPartiesRequest } from "./core/types/requests/topology-list-parties-request.js";
225
+ export { WaitForPartyHostingRequest } from "./core/types/requests/wait-for-party-hosting-request.js";
229
226
  export { GrantUserRightsRequest } from "./core/types/requests/grant-user-rights-request.js";
230
227
  export { UploadDarFileRequest } from "./core/types/requests/upload-dar-file-request.js";
231
228
  export { AllocatePartyResponse } from "./core/types/responses/allocate-party-response.js";
@@ -234,15 +231,10 @@ export { GetDarResponse } from "./core/types/responses/get-dar-response.js";
234
231
  export { GetActiveContractsPageResponse } from "./core/types/responses/get-active-contracts-page-response.js";
235
232
  export { GetConnectedSynchronizersResponse } from "./core/types/responses/get-connected-synchronizers-response.js";
236
233
  export { GetCommandStatusResponse } from "./core/types/responses/get-command-status-response.js";
237
- export { HealthCheckResponse } from "./core/types/responses/health-check-response.js";
238
- export { GetLedgerApiVersionResponse } from "./core/types/responses/get-ledger-api-version-response.js";
239
234
  export { GetIdentityProviderConfigResponse } from "./core/types/responses/get-identity-provider-config-response.js";
240
235
  export { GetLatestPrunedOffsetsResponse } from "./core/types/responses/get-latest-pruned-offsets-response.js";
241
236
  export { GetLedgerEndResponse } from "./core/types/responses/get-ledger-end-response.js";
242
- export { GetParticipantStatusResponse } from "./core/types/responses/get-participant-status-response.js";
243
- export { GetParticipantIdResponse } from "./core/types/responses/get-participant-id-response.js";
244
237
  export { GetPackageResponse } from "./core/types/responses/get-package-response.js";
245
- export { GetPackageReferencesResponse } from "./core/types/responses/get-package-references-response.js";
246
238
  export { GetPackageStatusResponse } from "./core/types/responses/get-package-status-response.js";
247
239
  export { GetPartiesResponse } from "./core/types/responses/get-parties-response.js";
248
240
  export { GetUserResponse } from "./core/types/responses/get-user-response.js";
@@ -280,6 +272,7 @@ export { ParticipantNodeStatus } from "./core/types/participant-node-status.js";
280
272
  export { SynchronizerTime } from "./core/types/synchronizer-time.js";
281
273
  export { CantonError } from "./core/errors/canton-error.js";
282
274
  export { ValidationError } from "./core/errors/validation-error.js";
275
+ export { ActiveContractsTraversalError } from "./core/errors/active-contracts-traversal-error.js";
283
276
  export { AuthenticationError } from "./core/errors/authentication-error.js";
284
277
  export { AuthorizationError } from "./core/errors/authorization-error.js";
285
278
  export { TransportError } from "./core/errors/transport-error.js";
@@ -1,4 +1,4 @@
1
- import { GetActiveContractsPageRequest } from "../../core/types/requests/get-active-contracts-page-request.js";
1
+ import { mapGrpcQueryContractsRequest } from "../../transports/grpc/mappers/contracts-mapper.js";
2
2
  import { QueryCapabilityError } from "../errors/query-capability-error.js";
3
3
  import { QuerySource } from "../query-source.js";
4
4
  export class GrpcContractQueryClient {
@@ -58,8 +58,9 @@ export class GrpcContractQueryClient {
58
58
  let rows = snapshot.filter((row) => args.where?.contractId?.equals === undefined
59
59
  ? true
60
60
  : row.contractId === args.where.contractId.equals);
61
- if (args.where?.payload !== undefined)
61
+ if (args.where?.payload !== undefined) {
62
62
  rows = rows.filter((row) => matchesPayload(row.payload, args.where.payload));
63
+ }
63
64
  return rows;
64
65
  }
65
66
  unsupported(operation) {
@@ -91,7 +92,7 @@ export class GrpcContractQueryClient {
91
92
  let pageToken;
92
93
  let activeAtOffset;
93
94
  do {
94
- const response = await this.stateService.getActiveContractsPageAsync(new GetActiveContractsPageRequest(parties === undefined
95
+ const response = await this.stateService.getActiveContractsPageAsync(mapGrpcQueryContractsRequest(parties === undefined
95
96
  ? { allParties: true, activeAtOffset, pageToken }
96
97
  : { parties, activeAtOffset, pageToken }));
97
98
  activeAtOffset ??= response.activeAtOffset;
@@ -107,14 +108,17 @@ export class GrpcContractQueryClient {
107
108
  }
108
109
  }
109
110
  function hasUnsupportedFilter(where) {
110
- if (where === undefined)
111
+ if (where === undefined) {
111
112
  return false;
112
- if ("and" in where || "or" in where || "not" in where || "createdEventOffset" in where || "createdAt" in where || "archivedEventOffset" in where || "archivedAt" in where)
113
+ }
114
+ else if ("and" in where || "or" in where || "not" in where || "createdEventOffset" in where || "createdAt" in where || "archivedEventOffset" in where || "archivedAt" in where) {
113
115
  return true;
116
+ }
114
117
  for (const field of ["contractId", "templateId"]) {
115
118
  const filter = where[field];
116
- if (filter !== undefined && Object.keys(filter).some((key) => key !== "equals"))
119
+ if (filter !== undefined && Object.keys(filter).some((key) => key !== "equals")) {
117
120
  return true;
121
+ }
118
122
  }
119
123
  return false;
120
124
  }
@@ -136,22 +140,35 @@ function mapGrpcContract(value) {
136
140
  }
137
141
  function matchesPayload(value, filter) {
138
142
  const match = filter.match;
139
- if (match === undefined)
143
+ if (match === undefined) {
140
144
  return false;
145
+ }
141
146
  const visit = (current, node) => Object.entries(node).every(([key, child]) => {
142
147
  const next = current !== null && typeof current === "object" ? current[key] : undefined;
143
148
  const predicate = child;
144
- if (Object.keys(predicate).some((name) => ["equals", "lt", "lte", "gt", "gte", "like", "ilike"].includes(name)))
149
+ if (Object.keys(predicate).some((name) => ["equals", "lt", "lte", "gt", "gte", "like", "ilike"].includes(name))) {
145
150
  return compare(String(next ?? ""), predicate);
151
+ }
146
152
  return visit(next, predicate);
147
153
  });
148
154
  return visit(value, match);
149
155
  }
150
- function compare(value, filter) { if (filter.equals !== undefined)
151
- return value === filter.equals; if (filter.like !== undefined || filter.ilike !== undefined) {
152
- const pattern = String(filter.like ?? filter.ilike).replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replaceAll("%", ".*").replaceAll("_", ".");
153
- return new RegExp(`^${pattern}$`, filter.ilike === undefined ? "" : "i").test(value);
154
- } if (filter.lt !== undefined)
155
- return value < String(filter.lt); if (filter.lte !== undefined)
156
- return value <= String(filter.lte); if (filter.gt !== undefined)
157
- return value > String(filter.gt); return value >= String(filter.gte); }
156
+ function compare(value, filter) {
157
+ if (filter.equals !== undefined) {
158
+ return value === filter.equals;
159
+ }
160
+ else if (filter.like !== undefined || filter.ilike !== undefined) {
161
+ const pattern = String(filter.like ?? filter.ilike).replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replaceAll("%", ".*").replaceAll("_", ".");
162
+ return new RegExp(`^${pattern}$`, filter.ilike === undefined ? "" : "i").test(value);
163
+ }
164
+ else if (filter.lt !== undefined) {
165
+ return value < String(filter.lt);
166
+ }
167
+ else if (filter.lte !== undefined) {
168
+ return value <= String(filter.lte);
169
+ }
170
+ else if (filter.gt !== undefined) {
171
+ return value > String(filter.gt);
172
+ }
173
+ return value >= String(filter.gte);
174
+ }
@@ -1,6 +1,6 @@
1
1
  import { CreateDecentralizedPartyRequest } from "../../core/types/requests/create-decentralized-party-request.js";
2
2
  import { PreparedDecentralizedParty } from "../../core/types/requests/finalize-decentralized-party-request.js";
3
- import { GetParticipantIdResponse } from "../../core/types/responses/get-participant-id-response.js";
4
3
  import { RequestOptions } from "../../core/types/request-options.js";
4
+ import type { GetParticipantIdResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/party_management_service.js";
5
5
  import { TopologyManagerWriteServiceClient } from "../topology-manager-write/topology-manager-write-service-client.js";
6
6
  export declare function prepareDecentralizedPartyAsync(request: CreateDecentralizedPartyRequest, localParticipant: GetParticipantIdResponse, topologyWriter: TopologyManagerWriteServiceClient, options?: RequestOptions): Promise<PreparedDecentralizedParty>;
@@ -12,6 +12,17 @@ export async function prepareDecentralizedPartyAsync(request, localParticipant,
12
12
  const partyId = `${request.partyHint}::${decentralizedNamespace}`;
13
13
  const owners = request.owners.map(toTopologyKey);
14
14
  const partyKeys = request.partySigningKeys.map(toTopologyKey);
15
+ const store = {
16
+ store: {
17
+ oneofKind: "synchronizer",
18
+ synchronizer: {
19
+ kind: {
20
+ oneofKind: "id",
21
+ id: request.synchronizer,
22
+ },
23
+ },
24
+ },
25
+ };
15
26
  const participants = [
16
27
  {
17
28
  participantUid: localParticipant.participantId,
@@ -27,6 +38,7 @@ export async function prepareDecentralizedPartyAsync(request, localParticipant,
27
38
  {
28
39
  operation: Enums_TopologyChangeOp.ADD_REPLACE,
29
40
  serial: 1,
41
+ store,
30
42
  mapping: {
31
43
  mapping: {
32
44
  oneofKind: "decentralizedNamespaceDefinition",
@@ -38,14 +50,15 @@ export async function prepareDecentralizedPartyAsync(request, localParticipant,
38
50
  },
39
51
  },
40
52
  },
41
- ...owners.map((targetKey) => ({
53
+ ...owners.map((targetKey, index) => ({
42
54
  operation: Enums_TopologyChangeOp.ADD_REPLACE,
43
55
  serial: 1,
56
+ store,
44
57
  mapping: {
45
58
  mapping: {
46
59
  oneofKind: "namespaceDelegation",
47
60
  namespaceDelegation: {
48
- namespace: decentralizedNamespace,
61
+ namespace: ownerFingerprints[index],
49
62
  targetKey,
50
63
  isRootDelegation: true,
51
64
  restriction: { oneofKind: undefined },
@@ -56,6 +69,7 @@ export async function prepareDecentralizedPartyAsync(request, localParticipant,
56
69
  {
57
70
  operation: Enums_TopologyChangeOp.ADD_REPLACE,
58
71
  serial: 1,
72
+ store,
59
73
  mapping: {
60
74
  mapping: {
61
75
  oneofKind: "partyToParticipant",
@@ -98,7 +112,18 @@ export async function prepareDecentralizedPartyAsync(request, localParticipant,
98
112
  }))]
99
113
  : ownerRequests;
100
114
  });
101
- return new PreparedDecentralizedParty({ synchronizer: request.synchronizer, partyId, decentralizedNamespace, ownerThreshold: request.ownerThreshold, partySigningThreshold: request.partySigningThreshold, transactions, signingRequests });
115
+ return new PreparedDecentralizedParty({
116
+ synchronizer: request.synchronizer,
117
+ partyId,
118
+ decentralizedNamespace,
119
+ ownerThreshold: request.ownerThreshold,
120
+ partySigningThreshold: request.partySigningThreshold,
121
+ identityProviderId: request.identityProviderId,
122
+ waitForAllocation: request.waitForAllocation,
123
+ userId: request.userId,
124
+ transactions,
125
+ signingRequests,
126
+ });
102
127
  }
103
128
  function fingerprintFor(value) {
104
129
  const fingerprint = computeCantonPublicKeyFingerprint(value.publicKey.keyData, value.publicKey.format);
@@ -67,6 +67,9 @@ export class PartyManagementServiceClient {
67
67
  signatures: (signaturesByHash.get(toHex(transaction.transactionHash)) ?? []).map(toGeneratedSignature),
68
68
  })),
69
69
  multiHashSignatures: [],
70
+ identityProviderId: prepared.identityProviderId,
71
+ waitForAllocation: prepared.waitForAllocation,
72
+ userId: prepared.userId,
70
73
  }), _options);
71
74
  }
72
75
  /** Creates a decentralized party using the per-key callbacks in the request. */
@@ -6,7 +6,7 @@ import { ContractObserver } from "../contracts/contract-observer.interface.js";
6
6
  export declare class StateServiceClient {
7
7
  private readonly transport;
8
8
  constructor(transport: ITransport);
9
- /** Reads a page of active contracts. gRPC supports template and interface filters; JSON supports template queries only. */
9
+ /** Reads a page of active contracts. Supported on gRPC; JSON rejects it. */
10
10
  getActiveContractsPageAsync(request: GetActiveContractsPageRequest, options?: RequestOptions): Promise<GetActiveContractsPageResponse>;
11
11
  /** Reads active contracts as a stream. JSON-backed; gRPC currently rejects it. */
12
12
  getActiveContractsAsync(request: GetActiveContractsRequest, observer: ContractObserver, options?: RequestOptions): Promise<void>;
@@ -4,7 +4,7 @@ export class StateServiceClient {
4
4
  this.transport = transport;
5
5
  void this.transport;
6
6
  }
7
- /** Reads a page of active contracts. gRPC supports template and interface filters; JSON supports template queries only. */
7
+ /** Reads a page of active contracts. Supported on gRPC; JSON rejects it. */
8
8
  getActiveContractsPageAsync(request, options) {
9
9
  return this.transport.getActiveContractsPageAsync(request, options);
10
10
  }
@@ -1,12 +1,15 @@
1
1
  import { ITransport } from "../../core/transports/transport.interface.js";
2
2
  import { RequestOptions } from "../../core/types/request-options.js";
3
+ import { WaitForPartyHostingRequest } from "../../core/types/requests/wait-for-party-hosting-request.js";
3
4
  import type { ListKeyOwnersRequest, ListKeyOwnersResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_aggregation_service.js";
4
- import type { ListPartiesRequest as TopologyListPartiesRequest, ListPartiesResponse as TopologyListPartiesResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_aggregation_service.js";
5
+ import { ListPartiesRequest as TopologyListPartiesRequest, ListPartiesResponse as TopologyListPartiesResponse, ListPartiesResponse_Result as TopologyListPartiesResult } from "../../transports/grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_aggregation_service.js";
5
6
  export declare class TopologyAggregationServiceClient {
6
7
  private readonly transport;
7
8
  constructor(transport: ITransport);
8
9
  /** Lists aggregated party hosting information. Supported on gRPC; JSON rejects it. */
9
10
  listPartiesAsync(request: TopologyListPartiesRequest, options?: RequestOptions): Promise<TopologyListPartiesResponse>;
11
+ /** Waits for exact aggregated party hosting information. Supported on gRPC; JSON rejects it. */
12
+ waitForPartyHostingAsync(request: WaitForPartyHostingRequest, options?: RequestOptions): Promise<TopologyListPartiesResult>;
10
13
  /** Lists aggregated key owner information. Supported on gRPC; JSON rejects it. */
11
14
  listKeyOwnersAsync(request: ListKeyOwnersRequest, options?: RequestOptions): Promise<ListKeyOwnersResponse>;
12
15
  }
@@ -1,3 +1,5 @@
1
+ import { pollUntilAsync } from "../../core/polling/poll-until-async.js";
2
+ import { ListPartiesRequest as TopologyListPartiesRequest, } from "../../transports/grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_aggregation_service.js";
1
3
  export class TopologyAggregationServiceClient {
2
4
  transport;
3
5
  constructor(transport) {
@@ -8,8 +10,42 @@ export class TopologyAggregationServiceClient {
8
10
  listPartiesAsync(request, options) {
9
11
  return this.transport.topologyListPartiesAsync(request, options);
10
12
  }
13
+ /** Waits for exact aggregated party hosting information. Supported on gRPC; JSON rejects it. */
14
+ async waitForPartyHostingAsync(request, options) {
15
+ const response = await pollUntilAsync({
16
+ timeoutMs: request.timeoutMs,
17
+ pollIntervalMs: request.pollIntervalMs,
18
+ readAsync: () => this.listPartiesAsync(TopologyListPartiesRequest.create({
19
+ limit: 1,
20
+ synchronizerIds: [request.synchronizerId],
21
+ filterParty: request.partyId,
22
+ filterParticipant: request.participantId,
23
+ }), options),
24
+ match: value => findPartyHosting(value.results, request) !== undefined,
25
+ createTimeoutError: lastObserved => new Error(`Timed out waiting for party hosting for '${request.partyId}'; expected participant '${request.participantId}' on synchronizer '${request.synchronizerId}'; last observed hosting: ${formatHosting(lastObserved?.results ?? [])}.`),
26
+ });
27
+ const result = findPartyHosting(response.results, request);
28
+ if (result === undefined) {
29
+ throw new Error("Party hosting wait completed without a matching result.");
30
+ }
31
+ return result;
32
+ }
11
33
  /** Lists aggregated key owner information. Supported on gRPC; JSON rejects it. */
12
34
  listKeyOwnersAsync(request, options) {
13
35
  return this.transport.listKeyOwnersAsync(request, options);
14
36
  }
15
37
  }
38
+ function findPartyHosting(results, request) {
39
+ return results.find(result => result.party === request.partyId &&
40
+ result.participants.some(participant => participant.participantUid === request.participantId &&
41
+ participant.synchronizers.some(permission => permission.synchronizerId === request.synchronizerId)));
42
+ }
43
+ function formatHosting(results) {
44
+ if (results.length === 0) {
45
+ return "none";
46
+ }
47
+ return results.slice(0, 5).map(result => {
48
+ const participants = result.participants.slice(0, 5).flatMap(participant => participant.synchronizers.slice(0, 5).map(synchronizer => `${participant.participantUid}@${synchronizer.synchronizerId}`));
49
+ return `party='${result.party}', participants=[${participants.join(", ")}]`;
50
+ }).join("; ");
51
+ }
@@ -1,6 +1,8 @@
1
1
  import { ITransport } from "../../core/transports/transport.interface.js";
2
2
  import { RequestOptions } from "../../core/types/request-options.js";
3
- import type { ListAllV2Request, ListAllV2Response, ListAllRequest, ListAllResponse, ListAvailableStoresRequest, ListAvailableStoresResponse, ListLsuAnnouncementRequest, ListLsuAnnouncementResponse, ListLsuSequencerConnectionSuccessorRequest, ListLsuSequencerConnectionSuccessorResponse, ListMediatorSynchronizerStateRequest, ListMediatorSynchronizerStateResponse, ListSequencingParametersStateRequest, ListSequencingParametersStateResponse, ListSynchronizerParametersStateRequest, ListSynchronizerParametersStateResponse, ListPartyToParticipantRequest, ListPartyToParticipantResponse, ListVettedPackagesRequest as TopologyListVettedPackagesRequest, ListVettedPackagesResponse as TopologyListVettedPackagesResponse, ListPartyHostingLimitsRequest, ListPartyHostingLimitsResponse, ListParticipantSynchronizerPermissionRequest, ListParticipantSynchronizerPermissionResponse, ListSynchronizerTrustCertificateRequest, ListSynchronizerTrustCertificateResponse, ListPartyToKeyMappingRequest, ListPartyToKeyMappingResponse, ListOwnerToKeyMappingRequest, ListOwnerToKeyMappingResponse, ListDecentralizedNamespaceDefinitionRequest, ListDecentralizedNamespaceDefinitionResponse, ListNamespaceDelegationRequest, ListNamespaceDelegationResponse, ListSequencerSynchronizerStateRequest, ListSequencerSynchronizerStateResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_read_service.js";
3
+ import { ListPartyToParticipantRequest } from "../../core/types/requests/list-party-to-participant-request.js";
4
+ import { ListPartyToParticipantResponse } from "../../core/types/responses/list-party-to-participant-response.js";
5
+ import type { ListAllV2Request, ListAllV2Response, ListAllRequest, ListAllResponse, ListAvailableStoresRequest, ListAvailableStoresResponse, ListLsuAnnouncementRequest, ListLsuAnnouncementResponse, ListLsuSequencerConnectionSuccessorRequest, ListLsuSequencerConnectionSuccessorResponse, ListMediatorSynchronizerStateRequest, ListMediatorSynchronizerStateResponse, ListSequencingParametersStateRequest, ListSequencingParametersStateResponse, ListSynchronizerParametersStateRequest, ListSynchronizerParametersStateResponse, ListVettedPackagesRequest as TopologyListVettedPackagesRequest, ListVettedPackagesResponse as TopologyListVettedPackagesResponse, ListPartyHostingLimitsRequest, ListPartyHostingLimitsResponse, ListParticipantSynchronizerPermissionRequest, ListParticipantSynchronizerPermissionResponse, ListSynchronizerTrustCertificateRequest, ListSynchronizerTrustCertificateResponse, ListPartyToKeyMappingRequest, ListPartyToKeyMappingResponse, ListOwnerToKeyMappingRequest, ListOwnerToKeyMappingResponse, ListDecentralizedNamespaceDefinitionRequest, ListDecentralizedNamespaceDefinitionResponse, ListNamespaceDelegationRequest, ListNamespaceDelegationResponse, ListSequencerSynchronizerStateRequest, ListSequencerSynchronizerStateResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_read_service.js";
4
6
  export declare class TopologyManagerReadServiceClient {
5
7
  private readonly transport;
6
8
  constructor(transport: ITransport);
@@ -1,6 +1,12 @@
1
1
  import { ITransport } from "../../core/transports/transport.interface.js";
2
2
  import { RequestOptions } from "../../core/types/request-options.js";
3
- import type { GetUserRequest, GetUserResponse, GrantUserRightsRequest, GrantUserRightsResponse, ListUserRightsRequest, ListUserRightsResponse, ListUsersRequest, ListUsersResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/user_management_service.js";
3
+ import { GetUserRequest } from "../../core/types/requests/get-user-request.js";
4
+ import { ListUserRightsRequest } from "../../core/types/requests/list-user-rights-request.js";
5
+ import { ListUsersRequest } from "../../core/types/requests/list-users-request.js";
6
+ import { GetUserResponse } from "../../core/types/responses/get-user-response.js";
7
+ import { ListUserRightsResponse } from "../../core/types/responses/list-user-rights-response.js";
8
+ import { ListUsersResponse } from "../../core/types/responses/list-users-response.js";
9
+ import type { GrantUserRightsRequest, GrantUserRightsResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/user_management_service.js";
4
10
  export declare class UserManagementServiceClient {
5
11
  private readonly transport;
6
12
  constructor(transport: ITransport);
@@ -117,7 +117,6 @@ export interface GrpcOperations {
117
117
  getContractAsync?(request: GrpcGetContractRequest, options?: RequestOptions): Promise<GrpcGetContractResponse>;
118
118
  getEventsByContractIdAsync?(request: GrpcGetEventsByContractIdRequest, options?: RequestOptions): Promise<GrpcGetEventsByContractIdResponse>;
119
119
  queryContractsAsync(request: unknown, options?: RequestOptions): Promise<unknown>;
120
- getActiveContractsPageAsync?(request: unknown, options?: RequestOptions): Promise<unknown>;
121
120
  getConnectedSynchronizersAsync?(request: unknown, options?: RequestOptions): Promise<unknown>;
122
121
  getLedgerEndAsync?(request: unknown, options?: RequestOptions): Promise<unknown>;
123
122
  getLatestPrunedOffsetsAsync?(request: unknown, options?: RequestOptions): Promise<unknown>;
@@ -423,10 +423,6 @@ export function createGrpcOperations(options, endpoint, grpcChannelSecurity, dep
423
423
  const callOptions = await buildCallOptionsForLedgerSurfaceAsync(options, requestOptions);
424
424
  return await unwrapUnaryResponse(stateServiceClient.getActiveContractsPage(request, callOptions));
425
425
  },
426
- async getActiveContractsPageAsync(request, requestOptions) {
427
- const callOptions = await buildCallOptionsForLedgerSurfaceAsync(options, requestOptions);
428
- return await unwrapUnaryResponse(stateServiceClient.getActiveContractsPage(request, callOptions));
429
- },
430
426
  async getConnectedSynchronizersAsync(request, requestOptions) {
431
427
  const callOptions = await buildCallOptionsForLedgerSurfaceAsync(options, requestOptions);
432
428
  return await unwrapUnaryResponse(stateServiceClient.getConnectedSynchronizers(request, callOptions));
@@ -506,7 +502,7 @@ function wrapGrpcOperations(operations, onGrpcError) {
506
502
  if (typeof operation !== "function") {
507
503
  return operation;
508
504
  }
509
- if (property === "getUpdatesAsync" || property === "getCompletionsAsync") {
505
+ else if (property === "getUpdatesAsync" || property === "getCompletionsAsync") {
510
506
  return (...args) => wrapGrpcStream(() => operation.apply(target, args), onGrpcError);
511
507
  }
512
508
  return async (...args) => {
@@ -542,8 +538,9 @@ async function* wrapGrpcStream(createStream, onGrpcError) {
542
538
  }
543
539
  function notifyGrpcError(error, onGrpcError) {
544
540
  const parsedError = GrpcTransportError.fromUnknown(error);
545
- if (parsedError === undefined)
541
+ if (parsedError === undefined) {
546
542
  return error;
543
+ }
547
544
  try {
548
545
  onGrpcError?.(parsedError);
549
546
  }
@@ -576,8 +573,9 @@ async function* streamServerResponsesAsync(createCall) {
576
573
  iterator = responseIterator;
577
574
  while (true) {
578
575
  const next = await responseIterator.next();
579
- if (next.done)
576
+ if (next.done) {
580
577
  break;
578
+ }
581
579
  yield next.value;
582
580
  }
583
581
  exhausted = true;
@@ -1,13 +1,21 @@
1
1
  import { CantonClientOptions } from "../../client/canton-client-options.js";
2
2
  import { AllocatePartyRequest } from "../../core/types/requests/allocate-party-request.js";
3
3
  import { GetActiveContractsRequest } from "../../core/types/requests/get-active-contracts-request.js";
4
+ import { GetUserRequest } from "../../core/types/requests/get-user-request.js";
4
5
  import { ListKnownPartiesRequest } from "../../core/types/requests/list-known-parties-request.js";
6
+ import { ListPartyToParticipantRequest } from "../../core/types/requests/list-party-to-participant-request.js";
7
+ import { ListUserRightsRequest } from "../../core/types/requests/list-user-rights-request.js";
8
+ import { ListUsersRequest } from "../../core/types/requests/list-users-request.js";
5
9
  import { SubmitCommandRequest } from "../../core/types/requests/submit-command-request.js";
6
10
  import { CommandSigners, ICommandSigner } from "../../core/signing/command-signer.interface.js";
7
11
  import { SignCommandResult } from "../../core/signing/sign-command-result.js";
8
12
  import { PreparedCommandSubmission } from "../../core/types/prepared-command-submission.js";
9
13
  import { AllocatePartyResponse as SdkAllocatePartyResponse } from "../../core/types/responses/allocate-party-response.js";
14
+ import { GetUserResponse } from "../../core/types/responses/get-user-response.js";
10
15
  import { ListKnownPartiesResponse as SdkListKnownPartiesResponse } from "../../core/types/responses/list-known-parties-response.js";
16
+ import { ListPartyToParticipantResponse } from "../../core/types/responses/list-party-to-participant-response.js";
17
+ import { ListUserRightsResponse } from "../../core/types/responses/list-user-rights-response.js";
18
+ import { ListUsersResponse } from "../../core/types/responses/list-users-response.js";
11
19
  import { SubmitCommandResponse } from "../../core/types/responses/submit-command-response.js";
12
20
  import { ITransport } from "../../core/transports/transport.interface.js";
13
21
  import { RequestOptions } from "../../core/types/request-options.js";
@@ -23,7 +31,6 @@ import type { ListKnownPackagesRequest, ListKnownPackagesResponse, UploadDarFile
23
31
  import { GetPackageRequest, GetPackageResponse, GetPackageStatusRequest, GetPackageStatusResponse, ListPackagesRequest, ListPackagesResponse, ListVettedPackagesRequest, ListVettedPackagesResponse } from "./generated/canton/com/daml/ledger/api/v2/package_service.js";
24
32
  import { AllocateExternalPartyRequest as ProtobufAllocateExternalPartyRequest, AllocateExternalPartyResponse as ProtobufAllocateExternalPartyResponse, GenerateExternalPartyTopologyRequest as ProtobufGenerateExternalPartyTopologyRequest, GenerateExternalPartyTopologyResponse as ProtobufGenerateExternalPartyTopologyResponse } from "./generated/canton/com/daml/ledger/api/v2/admin/party_management_service.js";
25
33
  import { GrantUserRightsResponse as ProtobufGrantUserRightsResponse } from "./generated/canton/com/daml/ledger/api/v2/admin/user_management_service.js";
26
- import type { GetUserRequest, GetUserResponse, ListUserRightsRequest, ListUserRightsResponse, ListUsersRequest, ListUsersResponse } from "./generated/canton/com/daml/ledger/api/v2/admin/user_management_service.js";
27
34
  import { GetLedgerApiVersionRequest, GetLedgerApiVersionResponse } from "./generated/canton/com/daml/ledger/api/v2/version_service.js";
28
35
  import type { GetContractRequest, GetContractResponse } from "./generated/canton/com/daml/ledger/api/v2/contract_service.js";
29
36
  import { CompletionStreamResponse as ProtobufCompletionStreamResponse, GetCompletionsRequest } from "./generated/canton/com/daml/ledger/api/v2/command_completion_service.js";
@@ -43,7 +50,7 @@ import type { TrafficControlStateRequest, TrafficControlStateResponse } from "./
43
50
  import { ParticipantStatusRequest, ParticipantStatusResponse as ProtobufParticipantStatusResponse } from "./generated/canton/com/digitalasset/canton/admin/participant/v30/participant_status_service.js";
44
51
  import { ListKeyOwnersRequest as ProtobufListKeyOwnersRequest, ListKeyOwnersResponse as ProtobufListKeyOwnersResponse, ListPartiesRequest as ProtobufTopologyListPartiesRequest, ListPartiesResponse as ProtobufTopologyListPartiesResponse } from "./generated/canton/com/digitalasset/canton/topology/admin/v30/topology_aggregation_service.js";
45
52
  import type { AddTransactionsRequest as ProtobufAddTransactionsRequest, AddTransactionsResponse as ProtobufAddTransactionsResponse, AuthorizeRequest as ProtobufAuthorizeRequest, AuthorizeResponse as ProtobufAuthorizeResponse, CreateTemporaryTopologyStoreRequest as ProtobufCreateTemporaryTopologyStoreRequest, CreateTemporaryTopologyStoreResponse as ProtobufCreateTemporaryTopologyStoreResponse, DropTemporaryTopologyStoreRequest as ProtobufDropTemporaryTopologyStoreRequest, DropTemporaryTopologyStoreResponse as ProtobufDropTemporaryTopologyStoreResponse, GenerateTransactionsRequest as ProtobufGenerateTransactionsRequest, GenerateTransactionsResponse as ProtobufGenerateTransactionsResponse, ImportTopologySnapshotRequest as ProtobufImportTopologySnapshotRequest, ImportTopologySnapshotResponse as ProtobufImportTopologySnapshotResponse, ImportTopologySnapshotV2Request as ProtobufImportTopologySnapshotV2Request, ImportTopologySnapshotV2Response as ProtobufImportTopologySnapshotV2Response, SignTransactionsRequest as ProtobufSignTransactionsRequest, SignTransactionsResponse as ProtobufSignTransactionsResponse } from "./generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_write_service.js";
46
- import { ListAllRequest as ProtobufTopologyListAllRequest, ListAllResponse as ProtobufTopologyListAllResponse, ListAllV2Request as ProtobufTopologyListAllV2Request, ListAllV2Response as ProtobufTopologyListAllV2Response, ListAvailableStoresRequest as ProtobufListAvailableStoresRequest, ListAvailableStoresResponse as ProtobufListAvailableStoresResponse, ListDecentralizedNamespaceDefinitionRequest as ProtobufListDecentralizedNamespaceDefinitionRequest, ListDecentralizedNamespaceDefinitionResponse as ProtobufListDecentralizedNamespaceDefinitionResponse, ListLsuAnnouncementRequest as ProtobufListLsuAnnouncementRequest, ListLsuAnnouncementResponse as ProtobufListLsuAnnouncementResponse, ListLsuSequencerConnectionSuccessorRequest as ProtobufListLsuSequencerConnectionSuccessorRequest, ListLsuSequencerConnectionSuccessorResponse as ProtobufListLsuSequencerConnectionSuccessorResponse, ListMediatorSynchronizerStateRequest as ProtobufListMediatorSynchronizerStateRequest, ListMediatorSynchronizerStateResponse as ProtobufListMediatorSynchronizerStateResponse, ListNamespaceDelegationRequest as ProtobufListNamespaceDelegationRequest, ListNamespaceDelegationResponse as ProtobufListNamespaceDelegationResponse, ListOwnerToKeyMappingRequest as ProtobufListOwnerToKeyMappingRequest, ListOwnerToKeyMappingResponse as ProtobufListOwnerToKeyMappingResponse, ListParticipantSynchronizerPermissionRequest as ProtobufListParticipantSynchronizerPermissionRequest, ListParticipantSynchronizerPermissionResponse as ProtobufListParticipantSynchronizerPermissionResponse, ListPartyHostingLimitsRequest as ProtobufListPartyHostingLimitsRequest, ListPartyHostingLimitsResponse as ProtobufListPartyHostingLimitsResponse, ListPartyToKeyMappingRequest as ProtobufListPartyToKeyMappingRequest, ListPartyToKeyMappingResponse as ProtobufListPartyToKeyMappingResponse, ListPartyToParticipantRequest as ProtobufListPartyToParticipantRequest, ListPartyToParticipantResponse as ProtobufListPartyToParticipantResponse, ListSequencerSynchronizerStateRequest as ProtobufListSequencerSynchronizerStateRequest, ListSequencerSynchronizerStateResponse as ProtobufListSequencerSynchronizerStateResponse, ListSequencingParametersStateRequest as ProtobufListSequencingParametersStateRequest, ListSequencingParametersStateResponse as ProtobufListSequencingParametersStateResponse, ListSynchronizerParametersStateRequest as ProtobufListSynchronizerParametersStateRequest, ListSynchronizerParametersStateResponse as ProtobufListSynchronizerParametersStateResponse, ListSynchronizerTrustCertificateRequest as ProtobufListSynchronizerTrustCertificateRequest, ListSynchronizerTrustCertificateResponse as ProtobufListSynchronizerTrustCertificateResponse, ListVettedPackagesRequest as ProtobufTopologyListVettedPackagesRequest, ListVettedPackagesResponse as ProtobufTopologyListVettedPackagesResponse } from "./generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_read_service.js";
53
+ import { ListAllRequest as ProtobufTopologyListAllRequest, ListAllResponse as ProtobufTopologyListAllResponse, ListAllV2Request as ProtobufTopologyListAllV2Request, ListAllV2Response as ProtobufTopologyListAllV2Response, ListAvailableStoresRequest as ProtobufListAvailableStoresRequest, ListAvailableStoresResponse as ProtobufListAvailableStoresResponse, ListDecentralizedNamespaceDefinitionRequest as ProtobufListDecentralizedNamespaceDefinitionRequest, ListDecentralizedNamespaceDefinitionResponse as ProtobufListDecentralizedNamespaceDefinitionResponse, ListLsuAnnouncementRequest as ProtobufListLsuAnnouncementRequest, ListLsuAnnouncementResponse as ProtobufListLsuAnnouncementResponse, ListLsuSequencerConnectionSuccessorRequest as ProtobufListLsuSequencerConnectionSuccessorRequest, ListLsuSequencerConnectionSuccessorResponse as ProtobufListLsuSequencerConnectionSuccessorResponse, ListMediatorSynchronizerStateRequest as ProtobufListMediatorSynchronizerStateRequest, ListMediatorSynchronizerStateResponse as ProtobufListMediatorSynchronizerStateResponse, ListNamespaceDelegationRequest as ProtobufListNamespaceDelegationRequest, ListNamespaceDelegationResponse as ProtobufListNamespaceDelegationResponse, ListOwnerToKeyMappingRequest as ProtobufListOwnerToKeyMappingRequest, ListOwnerToKeyMappingResponse as ProtobufListOwnerToKeyMappingResponse, ListParticipantSynchronizerPermissionRequest as ProtobufListParticipantSynchronizerPermissionRequest, ListParticipantSynchronizerPermissionResponse as ProtobufListParticipantSynchronizerPermissionResponse, ListPartyHostingLimitsRequest as ProtobufListPartyHostingLimitsRequest, ListPartyHostingLimitsResponse as ProtobufListPartyHostingLimitsResponse, ListPartyToKeyMappingRequest as ProtobufListPartyToKeyMappingRequest, ListPartyToKeyMappingResponse as ProtobufListPartyToKeyMappingResponse, ListSequencerSynchronizerStateRequest as ProtobufListSequencerSynchronizerStateRequest, ListSequencerSynchronizerStateResponse as ProtobufListSequencerSynchronizerStateResponse, ListSequencingParametersStateRequest as ProtobufListSequencingParametersStateRequest, ListSequencingParametersStateResponse as ProtobufListSequencingParametersStateResponse, ListSynchronizerParametersStateRequest as ProtobufListSynchronizerParametersStateRequest, ListSynchronizerParametersStateResponse as ProtobufListSynchronizerParametersStateResponse, ListSynchronizerTrustCertificateRequest as ProtobufListSynchronizerTrustCertificateRequest, ListSynchronizerTrustCertificateResponse as ProtobufListSynchronizerTrustCertificateResponse, ListVettedPackagesRequest as ProtobufTopologyListVettedPackagesRequest, ListVettedPackagesResponse as ProtobufTopologyListVettedPackagesResponse } from "./generated/canton/com/digitalasset/canton/topology/admin/v30/topology_manager_read_service.js";
47
54
  export declare class GrpcTransport implements ITransport {
48
55
  private readonly operations;
49
56
  private disposed;
@@ -121,7 +128,7 @@ export declare class GrpcTransport implements ITransport {
121
128
  dropTemporaryTopologyStoreAsync(request: ProtobufDropTemporaryTopologyStoreRequest, options?: RequestOptions): Promise<ProtobufDropTemporaryTopologyStoreResponse>;
122
129
  listPartyHostingLimitsAsync(request: ProtobufListPartyHostingLimitsRequest, options?: RequestOptions): Promise<ProtobufListPartyHostingLimitsResponse>;
123
130
  topologyListVettedPackagesAsync(request: ProtobufTopologyListVettedPackagesRequest, options?: RequestOptions): Promise<ProtobufTopologyListVettedPackagesResponse>;
124
- listPartyToParticipantAsync(request: ProtobufListPartyToParticipantRequest, options?: RequestOptions): Promise<ProtobufListPartyToParticipantResponse>;
131
+ listPartyToParticipantAsync(request: ListPartyToParticipantRequest, options?: RequestOptions): Promise<ListPartyToParticipantResponse>;
125
132
  listSynchronizerParametersStateAsync(request: ProtobufListSynchronizerParametersStateRequest, options?: RequestOptions): Promise<ProtobufListSynchronizerParametersStateResponse>;
126
133
  listSequencingParametersStateAsync(request: ProtobufListSequencingParametersStateRequest, options?: RequestOptions): Promise<ProtobufListSequencingParametersStateResponse>;
127
134
  listMediatorSynchronizerStateAsync(request: ProtobufListMediatorSynchronizerStateRequest, options?: RequestOptions): Promise<ProtobufListMediatorSynchronizerStateResponse>;
@@ -10,6 +10,8 @@ import { createGrpcOperations, } from "./grpc-channel-factory.js";
10
10
  import { mapGrpcSubmitCommand, mapGrpcSubmitCommandForTransactionRequest, mapGrpcSubmitCommandTransaction, mapGrpcSubmitCommandRequest, } from "./mappers/commands-mapper.js";
11
11
  import { mapGrpcExecuteSubmissionAndWaitRequest, mapGrpcInteractiveSubmitCommand, mapGrpcPrepareSubmissionRequest, } from "./mappers/interactive-command-mapper.js";
12
12
  import { mapGrpcCreateParty, mapGrpcCreatePartyRequest, mapGrpcListParties, mapGrpcListPartiesRequest } from "./mappers/parties-mapper.js";
13
+ import { mapGrpcListPartyToParticipantRequest, mapGrpcListPartyToParticipantResponse, } from "./mappers/topology-manager-read-mapper.js";
14
+ import { mapGrpcGetUser, mapGrpcGetUserRequest, mapGrpcListUserRights, mapGrpcListUserRightsRequest, mapGrpcListUsers, mapGrpcListUsersRequest, } from "./mappers/users-mapper.js";
13
15
  import { ObjectDisposedError } from "../../core/errors/object-disposed-error.js";
14
16
  export class GrpcTransport {
15
17
  operations;
@@ -84,15 +86,18 @@ export class GrpcTransport {
84
86
  }
85
87
  async getUserAsync(request, options) {
86
88
  this.throwIfDisposed();
87
- return (await this.operations.getUserAsync(request, options));
89
+ const payload = await this.operations.getUserAsync(mapGrpcGetUserRequest(request), options);
90
+ return mapGrpcGetUser(payload);
88
91
  }
89
92
  async listUsersAsync(request, options) {
90
93
  this.throwIfDisposed();
91
- return (await this.operations.listUsersAsync(request, options));
94
+ const payload = await this.operations.listUsersAsync(mapGrpcListUsersRequest(request), options);
95
+ return mapGrpcListUsers(payload);
92
96
  }
93
97
  async listUserRightsAsync(request, options) {
94
98
  this.throwIfDisposed();
95
- return (await this.operations.listUserRightsAsync(request, options));
99
+ const payload = await this.operations.listUserRightsAsync(mapGrpcListUserRightsRequest(request), options);
100
+ return mapGrpcListUserRights(payload);
96
101
  }
97
102
  async uploadDarFileAsync(request, options) {
98
103
  this.throwIfDisposed();
@@ -373,12 +378,12 @@ export class GrpcTransport {
373
378
  this.throwIfDisposed();
374
379
  let payload;
375
380
  try {
376
- payload = await this.operations.listPartyToParticipantAsync(request, options);
381
+ payload = await this.operations.listPartyToParticipantAsync(mapGrpcListPartyToParticipantRequest(request), options);
377
382
  }
378
383
  catch (error) {
379
384
  this.throwPartyTopologyReadCompatibilityError(error, "topologyManagerReadService.listPartyToParticipantAsync");
380
385
  }
381
- return payload;
386
+ return mapGrpcListPartyToParticipantResponse(payload);
382
387
  }
383
388
  async listSynchronizerParametersStateAsync(request, options) {
384
389
  this.throwIfDisposed();
@@ -437,7 +442,7 @@ export class GrpcTransport {
437
442
  }
438
443
  async getActiveContractsPageAsync(request, options) {
439
444
  this.throwIfDisposed();
440
- return (await this.operations.getActiveContractsPageAsync(request, options));
445
+ return (await this.operations.queryContractsAsync(request, options));
441
446
  }
442
447
  async getConnectedSynchronizersAsync(request, options) {
443
448
  this.throwIfDisposed();
@@ -494,7 +499,7 @@ export class GrpcTransport {
494
499
  else if (!this.operations.executeSubmissionAndWaitAsync) {
495
500
  throw new NotSupportedError("interactive gRPC command signing is not available on this transport");
496
501
  }
497
- const commandId = randomUUID();
502
+ const commandId = request.commandId ?? randomUUID();
498
503
  const submissionId = randomUUID();
499
504
  const prepared = await this.operations.prepareSubmissionAsync(mapGrpcPrepareSubmissionRequest(request, commandId), options);
500
505
  if (!prepared.preparedTransaction) {
@@ -505,8 +510,9 @@ export class GrpcTransport {
505
510
  }
506
511
  const signerResults = await Promise.all(request.actAs.map(async (party) => {
507
512
  const partySigner = "signAsync" in signer ? signer : signer[party];
508
- if (partySigner === undefined)
513
+ if (partySigner === undefined) {
509
514
  throw new ValidationError(`interactive command signing requires a signer for ${party}`);
515
+ }
510
516
  return { party, result: await partySigner.signAsync(new SignCommandRequest({ payload: prepared.preparedTransactionHash, party, algorithmHint: "ed25519" })) };
511
517
  }));
512
518
  const executed = await this.operations.executeSubmissionAndWaitAsync(mapGrpcExecuteSubmissionAndWaitRequest({
@@ -520,23 +526,33 @@ export class GrpcTransport {
520
526
  }
521
527
  async submitCommandForTransactionAsync(request, options) {
522
528
  this.throwIfDisposed();
523
- if (!this.operations.submitCommandForTransactionAsync)
529
+ if (!this.operations.submitCommandForTransactionAsync) {
524
530
  throw new NotSupportedError("transaction-returning command submission is not available on this transport");
531
+ }
525
532
  return mapGrpcSubmitCommandTransaction(await this.operations.submitCommandForTransactionAsync(mapGrpcSubmitCommandForTransactionRequest(request), options));
526
533
  }
527
534
  async prepareCommandAsync(request, options) {
528
- if (!this.operations.prepareSubmissionAsync)
535
+ if (!this.operations.prepareSubmissionAsync) {
529
536
  throw new NotSupportedError("interactive gRPC command signing is not available on this transport");
530
- const prepared = await this.operations.prepareSubmissionAsync(mapGrpcPrepareSubmissionRequest(request, randomUUID()), options);
531
- if (!prepared.preparedTransaction || prepared.preparedTransactionHash.length === 0)
537
+ }
538
+ const commandId = request.commandId ?? randomUUID();
539
+ const prepared = await this.operations.prepareSubmissionAsync(mapGrpcPrepareSubmissionRequest(request, commandId), options);
540
+ if (!prepared.preparedTransaction || prepared.preparedTransactionHash.length === 0) {
532
541
  throw new ValidationError("interactive prepare submission returned an incomplete result");
542
+ }
533
543
  return new PreparedCommandSubmission(request, prepared.preparedTransaction, prepared.preparedTransactionHash, prepared.hashingSchemeVersion);
534
544
  }
535
545
  async executePreparedCommandAndWaitAsync(prepared, signatures, options) {
536
- if (!this.operations.executeSubmissionAndWaitAsync)
546
+ if (!this.operations.executeSubmissionAndWaitAsync) {
537
547
  throw new NotSupportedError("interactive gRPC command signing is not available on this transport");
538
- const signerResults = prepared.request.actAs.map((party) => { const result = signatures[party]; if (!result)
539
- throw new ValidationError(`interactive command signing requires a signature for ${party}`); return { party, result }; });
548
+ }
549
+ const signerResults = prepared.request.actAs.map((party) => {
550
+ const result = signatures[party];
551
+ if (!result) {
552
+ throw new ValidationError(`interactive command signing requires a signature for ${party}`);
553
+ }
554
+ return { party, result };
555
+ });
540
556
  const result = await this.operations.executeSubmissionAndWaitAsync(mapGrpcExecuteSubmissionAndWaitRequest({ request: prepared.request, preparedTransaction: prepared.transaction, hashingSchemeVersion: prepared.hashingSchemeVersion, submissionId: randomUUID(), signerResults }), options);
541
557
  return mapGrpcInteractiveSubmitCommand(result);
542
558
  }
@@ -0,0 +1,5 @@
1
+ import { CommandDeduplicationPeriod } from "../../../core/types/command-deduplication-period.js";
2
+ import { Commands } from "../generated/canton/com/daml/ledger/api/v2/commands.js";
3
+ export declare function mapGrpcDeduplicationPeriod(period: CommandDeduplicationPeriod | undefined, options: {
4
+ readonly allowParticipantBegin: boolean;
5
+ }): Commands["deduplicationPeriod"];