@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
@@ -4,13 +4,10 @@ exports.mapGrpcCreatePartyRequest = mapGrpcCreatePartyRequest;
4
4
  exports.mapGrpcCreateParty = mapGrpcCreateParty;
5
5
  exports.mapGrpcListPartiesRequest = mapGrpcListPartiesRequest;
6
6
  exports.mapGrpcListParties = mapGrpcListParties;
7
- exports.mapGrpcGetParticipantIdRequest = mapGrpcGetParticipantIdRequest;
8
- exports.mapGrpcGetParticipantId = mapGrpcGetParticipantId;
9
7
  exports.mapGrpcGetPartiesRequest = mapGrpcGetPartiesRequest;
10
8
  exports.mapGrpcGetParties = mapGrpcGetParties;
11
9
  const party_details_js_1 = require("../../../core/types/party-details.js");
12
10
  const create_party_response_js_1 = require("../../../core/types/responses/create-party-response.js");
13
- const get_participant_id_response_js_1 = require("../../../core/types/responses/get-participant-id-response.js");
14
11
  const get_parties_response_js_1 = require("../../../core/types/responses/get-parties-response.js");
15
12
  const list_parties_response_js_1 = require("../../../core/types/responses/list-parties-response.js");
16
13
  function mapGrpcCreatePartyRequest(request) {
@@ -18,7 +15,7 @@ function mapGrpcCreatePartyRequest(request) {
18
15
  partyIdHint: request.partyIdHint ?? "",
19
16
  identityProviderId: "",
20
17
  synchronizerId: "",
21
- userId: "",
18
+ userId: request.userId ?? "",
22
19
  };
23
20
  }
24
21
  function mapGrpcCreateParty(payload) {
@@ -47,14 +44,6 @@ function mapGrpcListParties(payload) {
47
44
  nextPageToken: payload.nextPageToken || undefined,
48
45
  });
49
46
  }
50
- function mapGrpcGetParticipantIdRequest(_request) {
51
- return {};
52
- }
53
- function mapGrpcGetParticipantId(payload) {
54
- return new get_participant_id_response_js_1.GetParticipantIdResponse({
55
- participantId: payload.participantId ?? "",
56
- });
57
- }
58
47
  function mapGrpcGetPartiesRequest(request) {
59
48
  return {
60
49
  parties: [...request.parties],
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.mapJsonSubmitCommandRequest = mapJsonSubmitCommandRequest;
4
4
  exports.mapJsonSubmitCommand = mapJsonSubmitCommand;
5
5
  const node_crypto_1 = require("node:crypto");
6
+ const transport_error_js_1 = require("../../../core/errors/transport-error.js");
6
7
  const validation_error_js_1 = require("../../../core/errors/validation-error.js");
7
8
  const create_and_exercise_command_js_1 = require("../../../core/types/commands/create-and-exercise-command.js");
8
9
  const create_command_js_1 = require("../../../core/types/commands/create-command.js");
@@ -13,8 +14,11 @@ const exercise_by_key_command_js_1 = require("../../../core/types/commands/exerc
13
14
  const exercise_command_js_1 = require("../../../core/types/commands/exercise-command.js");
14
15
  const submit_command_response_js_1 = require("../../../core/types/responses/submit-command-response.js");
15
16
  function mapJsonSubmitCommandRequest(request) {
17
+ if (request.deduplicationPeriod !== undefined) {
18
+ throw new transport_error_js_1.TransportError("command deduplication periods are not supported by the JSON transport");
19
+ }
16
20
  return {
17
- commandId: (0, node_crypto_1.randomUUID)(),
21
+ commandId: request.commandId ?? (0, node_crypto_1.randomUUID)(),
18
22
  actAs: request.actAs,
19
23
  readAs: request.readAs,
20
24
  commands: [mapJsonCommand(request.command)],
@@ -16,6 +16,7 @@ function mapJsonCreateParty(payload) {
16
16
  function mapJsonAllocatePartyRequest(request) {
17
17
  return {
18
18
  partyIdHint: request.partyIdHint,
19
+ userId: request.userId,
19
20
  localMetadata: request.displayName === undefined
20
21
  ? undefined
21
22
  : {
@@ -1,3 +1,5 @@
1
+ import { ListPartyToParticipantRequest } from "../core/types/requests/list-party-to-participant-request.js";
2
+ import { TopologyBaseQuery } from "../core/types/topology/topology-base-query.js";
1
3
  import { TopologyStoreId, TopologyStoreKind, TopologyStoreSynchronizer } from "../core/types/topology/topology-store-id.js";
2
4
  import { Enums_TopologyChangeOp } from "../transports/grpc/generated/canton/com/digitalasset/canton/protocol/v30/topology.js";
3
5
  import { ExternalPartyActivationResponse } from "./external-party-activation-response.js";
@@ -63,27 +65,35 @@ export class ExternalPartyActivationClient {
63
65
  }
64
66
  async readStateAsync(request, options) {
65
67
  const [activeResponse, proposalResponse] = await Promise.all([
66
- this.sourceClient.topologyManagerReadService.listPartyToParticipantAsync({
67
- baseQuery: createSynchronizerQuery(request.synchronizerId, false),
68
+ this.sourceClient.topologyManagerReadService.listPartyToParticipantAsync(new ListPartyToParticipantRequest({
69
+ baseQuery: new TopologyBaseQuery({
70
+ storeId: createSynchronizerStoreId(request.synchronizerId),
71
+ headState: true,
72
+ includeProposals: false,
73
+ }),
68
74
  filterParty: request.partyId,
69
75
  filterParticipant: "",
70
- }, options),
71
- this.sourceClient.topologyManagerReadService.listPartyToParticipantAsync({
72
- baseQuery: createSynchronizerQuery(request.synchronizerId, true),
76
+ }), options),
77
+ this.sourceClient.topologyManagerReadService.listPartyToParticipantAsync(new ListPartyToParticipantRequest({
78
+ baseQuery: new TopologyBaseQuery({
79
+ storeId: createSynchronizerStoreId(request.synchronizerId),
80
+ headState: true,
81
+ includeProposals: true,
82
+ }),
73
83
  filterParty: request.partyId,
74
84
  filterParticipant: "",
75
- }, options),
85
+ }), options),
76
86
  ]);
77
- const active = activeResponse.results.find((item) => item.item?.party === request.partyId);
78
- const proposal = proposalResponse.results.find((item) => item.item?.party === request.partyId);
87
+ const active = activeResponse.results.find((item) => item.item.party === request.partyId);
88
+ const proposal = proposalResponse.results.find((item) => item.item.party === request.partyId);
79
89
  return {
80
- active: active === undefined || active.context === undefined || active.item === undefined
90
+ active: active === undefined || active.context === undefined
81
91
  ? undefined
82
92
  : {
83
93
  context: active.context,
84
94
  mapping: active.item,
85
95
  },
86
- proposal: proposal === undefined || proposal.context === undefined || proposal.item === undefined
96
+ proposal: proposal === undefined || proposal.context === undefined
87
97
  ? undefined
88
98
  : {
89
99
  context: proposal.context,
@@ -1,4 +1,4 @@
1
- import type { PartyToParticipant } from "../transports/grpc/generated/canton/com/digitalasset/canton/protocol/v30/topology.js";
1
+ import type { PartyToParticipant } from "../core/types/topology/party-to-participant.js";
2
2
  export declare class ExternalPartyActivationResponse {
3
3
  readonly partyId: string;
4
4
  readonly synchronizerId: string;
@@ -0,0 +1,5 @@
1
+ import { CantonError } from "./canton-error.js";
2
+ export declare class ActiveContractsTraversalError extends CantonError {
3
+ readonly code: "active-at-offset-mismatch" | "missing-active-at-offset" | "repeated-page-token" | "max-pages-exceeded" | "max-contracts-exceeded";
4
+ constructor(code: ActiveContractsTraversalError["code"], message: string);
5
+ }
@@ -0,0 +1,8 @@
1
+ import { CantonError } from "./canton-error.js";
2
+ export class ActiveContractsTraversalError extends CantonError {
3
+ code;
4
+ constructor(code, message) {
5
+ super(message);
6
+ this.code = code;
7
+ }
8
+ }
@@ -0,0 +1,10 @@
1
+ export interface PollUntilInit<T> {
2
+ readonly timeoutMs: number;
3
+ readonly pollIntervalMs: number;
4
+ readonly readAsync: () => Promise<T>;
5
+ readonly match: (value: T) => boolean;
6
+ readonly createTimeoutError: (lastObserved: T | undefined) => Error;
7
+ readonly now?: () => number;
8
+ readonly sleepAsync?: (milliseconds: number) => Promise<void>;
9
+ }
10
+ export declare function pollUntilAsync<T>(init: PollUntilInit<T>): Promise<T>;
@@ -0,0 +1,23 @@
1
+ export async function pollUntilAsync(init) {
2
+ const now = init.now ?? Date.now;
3
+ const sleepAsync = init.sleepAsync ?? defaultSleepAsync;
4
+ const deadline = now() + init.timeoutMs;
5
+ let lastObserved;
6
+ let firstRead = true;
7
+ while (firstRead || now() < deadline) {
8
+ firstRead = false;
9
+ lastObserved = await init.readAsync();
10
+ if (init.match(lastObserved)) {
11
+ return lastObserved;
12
+ }
13
+ const remainingMs = deadline - now();
14
+ if (remainingMs <= 0) {
15
+ throw init.createTimeoutError(lastObserved);
16
+ }
17
+ await sleepAsync(Math.min(init.pollIntervalMs, remainingMs));
18
+ }
19
+ throw init.createTimeoutError(lastObserved);
20
+ }
21
+ async function defaultSleepAsync(milliseconds) {
22
+ await new Promise(resolve => setTimeout(resolve, milliseconds));
23
+ }
@@ -4,7 +4,11 @@ import type { GetUpdateByHashRequest, GetUpdateByIdRequest, GetUpdateByOffsetReq
4
4
  import type { CompletionStreamResponse, GetCompletionsRequest } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/command_completion_service.js";
5
5
  import { AllocatePartyRequest } from "../types/requests/allocate-party-request.js";
6
6
  import { GetActiveContractsRequest } from "../types/requests/get-active-contracts-request.js";
7
+ import { GetUserRequest } from "../types/requests/get-user-request.js";
7
8
  import { ListKnownPartiesRequest } from "../types/requests/list-known-parties-request.js";
9
+ import { ListPartyToParticipantRequest } from "../types/requests/list-party-to-participant-request.js";
10
+ import { ListUserRightsRequest } from "../types/requests/list-user-rights-request.js";
11
+ import { ListUsersRequest } from "../types/requests/list-users-request.js";
8
12
  import type { GetContractRequest, GetContractResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/contract_service.js";
9
13
  import type { GetEventsByContractIdRequest, GetEventsByContractIdResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/event_query_service.js";
10
14
  import type { CurrentTimeRequest, CurrentTimeResponse, GetIdRequest, GetIdResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/topology/admin/v30/initialization_service.js";
@@ -12,8 +16,12 @@ import type { GetResourceLimitsRequest, GetResourceLimitsResponse } from "../../
12
16
  import type { GetHighestOffsetByTimestampRequest, GetHighestOffsetByTimestampResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/admin/participant/v30/party_management_service.js";
13
17
  import type { GetNoWaitCommitmentsFromRequest, GetNoWaitCommitmentsFromResponse, GetParticipantScheduleRequest as GetParticipantPruningScheduleRequest, GetParticipantScheduleResponse as GetParticipantPruningScheduleResponse, GetScheduleRequest as GetPruningScheduleRequest, GetScheduleResponse as GetPruningScheduleResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/admin/pruning/v30/pruning.js";
14
18
  import { AllocatePartyResponse } from "../types/responses/allocate-party-response.js";
19
+ import { GetUserResponse } from "../types/responses/get-user-response.js";
20
+ import { ListPartyToParticipantResponse } from "../types/responses/list-party-to-participant-response.js";
21
+ import { ListUserRightsResponse } from "../types/responses/list-user-rights-response.js";
22
+ import { ListUsersResponse } from "../types/responses/list-users-response.js";
15
23
  import type { AllocateExternalPartyRequest, AllocateExternalPartyResponse, GenerateExternalPartyTopologyRequest, GenerateExternalPartyTopologyResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/party_management_service.js";
16
- 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";
24
+ 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";
17
25
  import type { GetSynchronizerIdRequest, GetSynchronizerIdResponse, ListConnectedSynchronizersRequest, ListConnectedSynchronizersResponse, ListRegisteredSynchronizersRequest, ListRegisteredSynchronizersResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/admin/participant/v30/synchronizer_connectivity_service.js";
18
26
  import type { AddPartyAsyncRequest, AddPartyAsyncResponse, ClearPartyOnboardingFlagRequest, ClearPartyOnboardingFlagResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/admin/participant/v30/party_management_service.js";
19
27
  import type { GetSafePruningOffsetRequest, GetSafePruningOffsetResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/admin/participant/v30/pruning_service.js";
@@ -38,7 +46,7 @@ import type { GetLedgerApiVersionRequest, GetLedgerApiVersionResponse } from "..
38
46
  import type { ParticipantStatusRequest, ParticipantStatusResponse } from "../../transports/grpc/generated/canton/com/digitalasset/canton/admin/participant/v30/participant_status_service.js";
39
47
  import type { GetIdentityProviderConfigRequest, GetIdentityProviderConfigResponse, ListIdentityProviderConfigsRequest, ListIdentityProviderConfigsResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/identity_provider_config_service.js";
40
48
  import type { GetParticipantIdRequest, GetParticipantIdResponse, GetPartiesRequest, GetPartiesResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/party_management_service.js";
41
- 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";
49
+ import type { GrantUserRightsRequest, GrantUserRightsResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/user_management_service.js";
42
50
  import type { GetCommandStatusRequest, GetCommandStatusResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/command_inspection_service.js";
43
51
  import type { GetActiveContractsPageRequest, GetActiveContractsPageResponse, GetConnectedSynchronizersRequest, GetConnectedSynchronizersResponse, GetLedgerEndRequest, GetLedgerEndResponse, GetLatestPrunedOffsetsRequest, GetLatestPrunedOffsetsResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/state_service.js";
44
52
  import type { ListKnownPackagesRequest, ListKnownPackagesResponse, UploadDarFileRequest, UploadDarFileResponse } from "../../transports/grpc/generated/canton/com/daml/ledger/api/v2/admin/package_management_service.js";
@@ -209,7 +217,7 @@ export interface ITransport {
209
217
  topologyListPartiesAsync(request: TopologyListPartiesRequest, options?: RequestOptions): Promise<TopologyListPartiesResponse>;
210
218
  /** Lists aggregated key owner information. Supported on gRPC; JSON rejects it. */
211
219
  listKeyOwnersAsync(request: ListKeyOwnersRequest, options?: RequestOptions): Promise<ListKeyOwnersResponse>;
212
- /** Reads a page of active contracts. Supported on JSON and gRPC. */
220
+ /** Reads a page of active contracts. Supported on gRPC; JSON rejects it. */
213
221
  getActiveContractsPageAsync(request: GetActiveContractsPageRequest, options?: RequestOptions): Promise<GetActiveContractsPageResponse>;
214
222
  /** Reads connected synchronizers. Supported on gRPC; JSON rejects it. */
215
223
  getConnectedSynchronizersAsync(request: GetConnectedSynchronizersRequest, options?: RequestOptions): Promise<GetConnectedSynchronizersResponse>;
@@ -0,0 +1,11 @@
1
+ import { OperationDeadline } from "./operation-deadline.js";
2
+ export declare class ActiveContractsTraversalOptions {
3
+ readonly deadline: OperationDeadline;
4
+ readonly maxPages: number;
5
+ readonly maxContracts: number;
6
+ constructor(init: {
7
+ deadline: OperationDeadline;
8
+ maxPages: number;
9
+ maxContracts: number;
10
+ });
11
+ }
@@ -0,0 +1,22 @@
1
+ import { ValidationError } from "../errors/validation-error.js";
2
+ import { OperationDeadline } from "./operation-deadline.js";
3
+ export class ActiveContractsTraversalOptions {
4
+ deadline;
5
+ maxPages;
6
+ maxContracts;
7
+ constructor(init) {
8
+ if (!(init.deadline instanceof OperationDeadline)) {
9
+ throw new ValidationError("active contracts traversal deadline must be an OperationDeadline");
10
+ }
11
+ else if (!Number.isSafeInteger(init.maxPages) || init.maxPages <= 0) {
12
+ throw new ValidationError("active contracts traversal maxPages must be a positive safe integer");
13
+ }
14
+ else if (!Number.isSafeInteger(init.maxContracts) || init.maxContracts <= 0) {
15
+ throw new ValidationError("active contracts traversal maxContracts must be a positive safe integer");
16
+ }
17
+ this.deadline = init.deadline;
18
+ this.maxPages = init.maxPages;
19
+ this.maxContracts = init.maxContracts;
20
+ Object.freeze(this);
21
+ }
22
+ }
@@ -0,0 +1,7 @@
1
+ export type CommandDeduplicationPeriod = {
2
+ readonly kind: "duration";
3
+ readonly seconds: number;
4
+ } | {
5
+ readonly kind: "offset";
6
+ readonly offset: string;
7
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import { RequestOptions } from "./request-options.js";
2
+ export declare class OperationDeadline {
3
+ private readonly endsAtMs;
4
+ private readonly now;
5
+ private remainingMs;
6
+ constructor(init: {
7
+ timeoutMs: number;
8
+ now?: () => number;
9
+ });
10
+ remainingTimeoutMs(): number;
11
+ createRequestOptions(): RequestOptions;
12
+ private safeNow;
13
+ }
@@ -0,0 +1,38 @@
1
+ import { TimeoutError } from "../errors/timeout-error.js";
2
+ import { ValidationError } from "../errors/validation-error.js";
3
+ import { RequestOptions } from "./request-options.js";
4
+ export class OperationDeadline {
5
+ endsAtMs;
6
+ now;
7
+ remainingMs;
8
+ constructor(init) {
9
+ if (!Number.isSafeInteger(init.timeoutMs) || init.timeoutMs <= 0) {
10
+ throw new ValidationError("operation deadline timeout must be a positive safe integer");
11
+ }
12
+ this.now = init.now ?? Date.now;
13
+ const startedAtMs = this.safeNow();
14
+ this.endsAtMs = startedAtMs + init.timeoutMs;
15
+ if (!Number.isSafeInteger(this.endsAtMs)) {
16
+ throw new ValidationError("operation deadline end time must be a safe integer");
17
+ }
18
+ this.remainingMs = init.timeoutMs;
19
+ }
20
+ remainingTimeoutMs() {
21
+ const computedRemainingMs = Math.max(0, this.endsAtMs - this.safeNow());
22
+ this.remainingMs = Math.min(this.remainingMs, computedRemainingMs);
23
+ if (this.remainingMs === 0) {
24
+ throw new TimeoutError("operation deadline has expired");
25
+ }
26
+ return this.remainingMs;
27
+ }
28
+ createRequestOptions() {
29
+ return new RequestOptions({ timeoutMs: this.remainingTimeoutMs() });
30
+ }
31
+ safeNow() {
32
+ const now = this.now();
33
+ if (!Number.isSafeInteger(now)) {
34
+ throw new ValidationError("operation deadline clock must return a safe integer");
35
+ }
36
+ return now;
37
+ }
38
+ }
@@ -1,8 +1,10 @@
1
1
  export declare class AllocatePartyRequest {
2
2
  readonly partyIdHint?: string;
3
3
  readonly displayName?: string;
4
+ readonly userId?: string;
4
5
  constructor(init?: {
5
6
  partyIdHint?: string;
6
7
  displayName?: string;
8
+ userId?: string;
7
9
  });
8
10
  }
@@ -1,8 +1,10 @@
1
1
  export class AllocatePartyRequest {
2
2
  partyIdHint;
3
3
  displayName;
4
+ userId;
4
5
  constructor(init = {}) {
5
6
  this.partyIdHint = init.partyIdHint;
6
7
  this.displayName = init.displayName;
8
+ this.userId = init.userId;
7
9
  }
8
10
  }
@@ -13,6 +13,9 @@ export declare class PreparedDecentralizedParty {
13
13
  readonly decentralizedNamespace: string;
14
14
  readonly ownerThreshold: number;
15
15
  readonly partySigningThreshold: number;
16
+ readonly identityProviderId?: string;
17
+ readonly waitForAllocation?: boolean;
18
+ readonly userId?: string;
16
19
  readonly transactions: readonly PreparedTopologyTransaction[];
17
20
  readonly signingRequests: readonly PreparedDecentralizedPartySigningRequest[];
18
21
  constructor(init: {
@@ -21,6 +24,9 @@ export declare class PreparedDecentralizedParty {
21
24
  decentralizedNamespace: string;
22
25
  ownerThreshold: number;
23
26
  partySigningThreshold: number;
27
+ identityProviderId?: string;
28
+ waitForAllocation?: boolean;
29
+ userId?: string;
24
30
  transactions?: readonly PreparedTopologyTransaction[];
25
31
  signingRequests?: readonly PreparedDecentralizedPartySigningRequest[];
26
32
  });
@@ -5,6 +5,9 @@ export class PreparedDecentralizedParty {
5
5
  decentralizedNamespace;
6
6
  ownerThreshold;
7
7
  partySigningThreshold;
8
+ identityProviderId;
9
+ waitForAllocation;
10
+ userId;
8
11
  transactions;
9
12
  signingRequests;
10
13
  constructor(init) {
@@ -13,6 +16,9 @@ export class PreparedDecentralizedParty {
13
16
  this.decentralizedNamespace = init.decentralizedNamespace;
14
17
  this.ownerThreshold = init.ownerThreshold;
15
18
  this.partySigningThreshold = init.partySigningThreshold;
19
+ this.identityProviderId = init.identityProviderId;
20
+ this.waitForAllocation = init.waitForAllocation;
21
+ this.userId = init.userId;
16
22
  this.transactions = [...(init.transactions ?? [])].map((transaction) => new PreparedTopologyTransaction({
17
23
  serializedTransaction: transaction.serializedTransaction,
18
24
  transactionHash: transaction.transactionHash,
@@ -1,11 +1,14 @@
1
1
  import { LedgerCommand } from "../commands/ledger-command.js";
2
2
  import { DisclosedContract } from "../disclosed-contract.js";
3
+ import { CommandDeduplicationPeriod } from "../command-deduplication-period.js";
3
4
  export declare class SubmitCommandRequest {
4
5
  readonly applicationId: string;
5
6
  readonly userId?: string;
6
7
  readonly actAs: readonly string[];
7
8
  readonly readAs: readonly string[];
8
9
  readonly command: LedgerCommand;
10
+ readonly commandId?: string;
11
+ readonly deduplicationPeriod?: CommandDeduplicationPeriod;
9
12
  readonly disclosedContracts: readonly DisclosedContract[];
10
13
  readonly synchronizerId?: string;
11
14
  constructor(init: {
@@ -14,6 +17,8 @@ export declare class SubmitCommandRequest {
14
17
  actAs: readonly string[];
15
18
  readAs?: readonly string[];
16
19
  command: LedgerCommand;
20
+ commandId?: string;
21
+ deduplicationPeriod?: CommandDeduplicationPeriod;
17
22
  disclosedContracts?: readonly DisclosedContract[];
18
23
  synchronizerId?: string;
19
24
  });
@@ -1,22 +1,65 @@
1
1
  import { ValidationError } from "../../errors/validation-error.js";
2
+ const ledgerStringPattern = /^[A-Za-z0-9#:\-_/ ]+$/;
3
+ const canonicalOffsetPattern = /^(0|[1-9][0-9]*)$/;
4
+ const maximumInt64Offset = "9223372036854775807";
2
5
  export class SubmitCommandRequest {
3
6
  applicationId;
4
7
  userId;
5
8
  actAs;
6
9
  readAs;
7
10
  command;
11
+ commandId;
12
+ deduplicationPeriod;
8
13
  disclosedContracts;
9
14
  synchronizerId;
10
15
  constructor(init) {
11
16
  if (init.actAs.length === 0) {
12
17
  throw new ValidationError("submit requests require at least one actAs party");
13
18
  }
19
+ else if (init.commandId !== undefined &&
20
+ (typeof init.commandId !== "string" ||
21
+ init.commandId.length > 255 ||
22
+ !ledgerStringPattern.test(init.commandId))) {
23
+ throw new ValidationError("submit request command ID must be a LedgerString");
24
+ }
25
+ const deduplicationPeriod = freezeDeduplicationPeriod(init.deduplicationPeriod);
14
26
  this.applicationId = init.applicationId;
15
27
  this.userId = init.userId;
16
28
  this.actAs = init.actAs;
17
29
  this.readAs = init.readAs ?? [];
18
30
  this.command = init.command;
31
+ this.commandId = init.commandId;
32
+ this.deduplicationPeriod = deduplicationPeriod;
19
33
  this.disclosedContracts = init.disclosedContracts ?? [];
20
34
  this.synchronizerId = init.synchronizerId;
21
35
  }
22
36
  }
37
+ function freezeDeduplicationPeriod(value) {
38
+ if (value === undefined) {
39
+ return undefined;
40
+ }
41
+ else if (typeof value !== "object" ||
42
+ value === null ||
43
+ Array.isArray(value)) {
44
+ throw new ValidationError("submit request deduplication period is invalid");
45
+ }
46
+ else if (value.kind === "duration") {
47
+ if (typeof value.seconds !== "number" ||
48
+ !Number.isSafeInteger(value.seconds) ||
49
+ value.seconds <= 0) {
50
+ throw new ValidationError("submit request duration deduplication seconds must be a positive safe integer");
51
+ }
52
+ return Object.freeze({ kind: "duration", seconds: value.seconds });
53
+ }
54
+ else if (value.kind !== "offset") {
55
+ throw new ValidationError("submit request deduplication period is invalid");
56
+ }
57
+ if (typeof value.offset !== "string" ||
58
+ !canonicalOffsetPattern.test(value.offset) ||
59
+ value.offset.length > maximumInt64Offset.length ||
60
+ (value.offset.length === maximumInt64Offset.length &&
61
+ value.offset > maximumInt64Offset)) {
62
+ throw new ValidationError("submit request offset deduplication period must be a canonical unsigned int64");
63
+ }
64
+ return Object.freeze({ kind: "offset", offset: value.offset });
65
+ }
@@ -0,0 +1,14 @@
1
+ export declare class WaitForPartyHostingRequest {
2
+ readonly partyId: string;
3
+ readonly participantId: string;
4
+ readonly synchronizerId: string;
5
+ readonly pollIntervalMs: number;
6
+ readonly timeoutMs: number;
7
+ constructor(init: {
8
+ partyId: string;
9
+ participantId: string;
10
+ synchronizerId: string;
11
+ pollIntervalMs?: number;
12
+ timeoutMs?: number;
13
+ });
14
+ }
@@ -0,0 +1,36 @@
1
+ import { ValidationError } from "../../errors/validation-error.js";
2
+ export class WaitForPartyHostingRequest {
3
+ partyId;
4
+ participantId;
5
+ synchronizerId;
6
+ pollIntervalMs;
7
+ timeoutMs;
8
+ constructor(init) {
9
+ const partyId = init.partyId.trim();
10
+ const participantId = init.participantId.trim();
11
+ const synchronizerId = init.synchronizerId.trim();
12
+ const pollIntervalMs = init.pollIntervalMs ?? 500;
13
+ const timeoutMs = init.timeoutMs ?? 30_000;
14
+ if (!partyId) {
15
+ throw new ValidationError("party hosting wait requires a party ID");
16
+ }
17
+ else if (!participantId) {
18
+ throw new ValidationError("party hosting wait requires a participant ID");
19
+ }
20
+ else if (!synchronizerId) {
21
+ throw new ValidationError("party hosting wait requires a synchronizer ID");
22
+ }
23
+ else if (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0) {
24
+ throw new ValidationError("party hosting wait timeout must be a positive safe integer");
25
+ }
26
+ else if (!Number.isSafeInteger(pollIntervalMs) ||
27
+ pollIntervalMs < 0) {
28
+ throw new ValidationError("party hosting wait poll interval must be a non-negative safe integer");
29
+ }
30
+ this.partyId = partyId;
31
+ this.participantId = participantId;
32
+ this.synchronizerId = synchronizerId;
33
+ this.pollIntervalMs = pollIntervalMs;
34
+ this.timeoutMs = timeoutMs;
35
+ }
36
+ }
package/dist/index.d.ts CHANGED
@@ -70,6 +70,7 @@ export { ConnectedSynchronizerHealth } from "./core/types/connected-synchronizer
70
70
  export { ConnectedSynchronizer } from "./core/types/connected-synchronizer.js";
71
71
  export { ConnectedSynchronizerStatus } from "./core/types/connected-synchronizer-status.js";
72
72
  export { CommandInspectionContract } from "./core/types/command-inspection-contract.js";
73
+ export type { CommandDeduplicationPeriod } from "./core/types/command-deduplication-period.js";
73
74
  export { CommandRequestStatistics } from "./core/types/command-request-statistics.js";
74
75
  export { CommandState } from "./core/types/command-state.js";
75
76
  export { CommandStatus } from "./core/types/command-status.js";
@@ -93,7 +94,6 @@ export { OffsetCheckpoint } from "./core/types/offset-checkpoint.js";
93
94
  export { PackageFormat } from "./core/types/package-format.js";
94
95
  export { HashFunction } from "./core/types/hash-function.js";
95
96
  export { CantonHashPurpose } from "./core/types/canton-hash-purpose.js";
96
- export { HealthCheckStatus } from "./core/types/health-check-status.js";
97
97
  export { PackageStatus } from "./core/types/package-status.js";
98
98
  export { PendingOperationMetadata } from "./core/types/pending-operation-metadata.js";
99
99
  export { ParticipantPruningSchedule } from "./core/types/participant-pruning-schedule.js";
@@ -102,6 +102,8 @@ export { ReceivedAcsCommitment } from "./core/types/received-acs-commitment.js";
102
102
  export { ReceivedAcsCommitmentPerSynchronizer } from "./core/types/received-acs-commitment-per-synchronizer.js";
103
103
  export { ReceivedAcsCommitmentState } from "./core/types/received-acs-commitment-state.js";
104
104
  export { RequestOptions } from "./core/types/request-options.js";
105
+ export { OperationDeadline } from "./core/types/operation-deadline.js";
106
+ export { ActiveContractsTraversalOptions } from "./core/types/active-contracts-traversal-options.js";
105
107
  export { PackageMetadataFilter } from "./core/types/package-metadata-filter.js";
106
108
  export { PackageReference } from "./core/types/package-reference.js";
107
109
  export { ParticipantDarDescription } from "./core/types/participant-dar-description.js";
@@ -199,17 +201,12 @@ export { GetDarRequest } from "./core/types/requests/get-dar-request.js";
199
201
  export { GetActiveContractsPageRequest } from "./core/types/requests/get-active-contracts-page-request.js";
200
202
  export { GetActiveContractsRequest } from "./core/types/requests/get-active-contracts-request.js";
201
203
  export { GetCommandStatusRequest } from "./core/types/requests/get-command-status-request.js";
202
- export { HealthCheckRequest } from "./core/types/requests/health-check-request.js";
203
204
  export { ListPackagesRequest } from "./core/types/requests/list-packages-request.js";
204
205
  export { ListAllRequest } from "./core/types/requests/list-all-request.js";
205
206
  export { ListDecentralizedNamespaceDefinitionRequest } from "./core/types/requests/list-decentralized-namespace-definition-request.js";
206
- export { GetLedgerApiVersionRequest } from "./core/types/requests/get-ledger-api-version-request.js";
207
207
  export { GetIdentityProviderConfigRequest } from "./core/types/requests/get-identity-provider-config-request.js";
208
- export { GetParticipantStatusRequest } from "./core/types/requests/get-participant-status-request.js";
209
208
  export { GetPackageRequest } from "./core/types/requests/get-package-request.js";
210
- export { GetPackageReferencesRequest } from "./core/types/requests/get-package-references-request.js";
211
209
  export { GetPackageStatusRequest } from "./core/types/requests/get-package-status-request.js";
212
- export { GetParticipantIdRequest } from "./core/types/requests/get-participant-id-request.js";
213
210
  export { GetConnectedSynchronizersRequest } from "./core/types/requests/get-connected-synchronizers-request.js";
214
211
  export { GetLatestPrunedOffsetsRequest } from "./core/types/requests/get-latest-pruned-offsets-request.js";
215
212
  export { GetLedgerEndRequest } from "./core/types/requests/get-ledger-end-request.js";
@@ -239,6 +236,7 @@ export { ListUserRightsRequest } from "./core/types/requests/list-user-rights-re
239
236
  export { ListUsersRequest } from "./core/types/requests/list-users-request.js";
240
237
  export { SubmitCommandRequest } from "./core/types/requests/submit-command-request.js";
241
238
  export { TopologyListPartiesRequest } from "./core/types/requests/topology-list-parties-request.js";
239
+ export { WaitForPartyHostingRequest } from "./core/types/requests/wait-for-party-hosting-request.js";
242
240
  export { GrantUserRightsRequest } from "./core/types/requests/grant-user-rights-request.js";
243
241
  export type { UserRightAssignment } from "./core/types/requests/grant-user-rights-request.js";
244
242
  export { UploadDarFileRequest } from "./core/types/requests/upload-dar-file-request.js";
@@ -248,15 +246,10 @@ export { GetDarResponse } from "./core/types/responses/get-dar-response.js";
248
246
  export { GetActiveContractsPageResponse } from "./core/types/responses/get-active-contracts-page-response.js";
249
247
  export { GetConnectedSynchronizersResponse } from "./core/types/responses/get-connected-synchronizers-response.js";
250
248
  export { GetCommandStatusResponse } from "./core/types/responses/get-command-status-response.js";
251
- export { HealthCheckResponse } from "./core/types/responses/health-check-response.js";
252
- export { GetLedgerApiVersionResponse } from "./core/types/responses/get-ledger-api-version-response.js";
253
249
  export { GetIdentityProviderConfigResponse } from "./core/types/responses/get-identity-provider-config-response.js";
254
250
  export { GetLatestPrunedOffsetsResponse } from "./core/types/responses/get-latest-pruned-offsets-response.js";
255
251
  export { GetLedgerEndResponse } from "./core/types/responses/get-ledger-end-response.js";
256
- export { GetParticipantStatusResponse } from "./core/types/responses/get-participant-status-response.js";
257
- export { GetParticipantIdResponse } from "./core/types/responses/get-participant-id-response.js";
258
252
  export { GetPackageResponse } from "./core/types/responses/get-package-response.js";
259
- export { GetPackageReferencesResponse } from "./core/types/responses/get-package-references-response.js";
260
253
  export { GetPackageStatusResponse } from "./core/types/responses/get-package-status-response.js";
261
254
  export { GetPartiesResponse } from "./core/types/responses/get-parties-response.js";
262
255
  export { GetUserResponse } from "./core/types/responses/get-user-response.js";
@@ -296,6 +289,7 @@ export type { ContractObserver } from "./services/contracts/contract-observer.in
296
289
  export type { TransactionObserver } from "./services/events/transaction-observer.interface.js";
297
290
  export { CantonError } from "./core/errors/canton-error.js";
298
291
  export { ValidationError } from "./core/errors/validation-error.js";
292
+ export { ActiveContractsTraversalError } from "./core/errors/active-contracts-traversal-error.js";
299
293
  export { AuthenticationError } from "./core/errors/authentication-error.js";
300
294
  export { AuthorizationError } from "./core/errors/authorization-error.js";
301
295
  export { TransportError } from "./core/errors/transport-error.js";