@distrohelena/canton-typescript-sdk 0.1.35 → 0.1.37

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 (102) hide show
  1. package/README.md +159 -51
  2. package/dist/cjs/core/types/requests/{submit-command-request.js → submit-commands-request.js} +10 -6
  3. package/dist/cjs/index.js +10 -8
  4. package/dist/cjs/query/canonical/in-memory-query-evaluator.js +291 -0
  5. package/dist/cjs/query/canonical/public-identity.js +41 -0
  6. package/dist/cjs/query/canonical/query-ast.js +2 -0
  7. package/dist/cjs/query/canonical/query-dataset.js +351 -0
  8. package/dist/cjs/query/canonical/query-normalizer.js +655 -0
  9. package/dist/cjs/query/canonical/query-schema.js +86 -0
  10. package/dist/cjs/query/canton-manager.js +14 -5
  11. package/dist/cjs/query/errors/query-snapshot-incomplete-error.js +19 -0
  12. package/dist/cjs/query/grpc/grpc-contract-cache.js +484 -0
  13. package/dist/cjs/query/grpc/grpc-package-relation-reader.js +218 -0
  14. package/dist/cjs/query/grpc/grpc-query-client.js +249 -0
  15. package/dist/cjs/query/grpc/grpc-query-snapshot-reader.js +238 -0
  16. package/dist/cjs/query/grpc/grpc-query-value-mapper.js +204 -0
  17. package/dist/cjs/query/grpc/grpc-relation-mapper.js +794 -0
  18. package/dist/cjs/query/pqs/pqs-query-client.js +151 -582
  19. package/dist/cjs/query/pqs/pqs-relational-sql-compiler.js +138 -95
  20. package/dist/cjs/query/pqs/pqs-result-shape.js +28 -0
  21. package/dist/cjs/query/pqs/pqs-schema-profile.js +49 -48
  22. package/dist/cjs/query/pqs/pqs-sql-compiler.js +343 -289
  23. package/dist/cjs/query/pqs/pqs-sql-syntax.js +10 -0
  24. package/dist/cjs/services/command/command-service-client.js +16 -3
  25. package/dist/cjs/services/commands/command-payload-builder.js +1 -1
  26. package/dist/cjs/services/commands/command-submission-pipeline.js +21 -6
  27. package/dist/cjs/services/state/state-service-client.js +56 -0
  28. package/dist/cjs/testing/runtime/declarative-action-executor.js +3 -3
  29. package/dist/cjs/transports/grpc/grpc-transport.js +2 -2
  30. package/dist/cjs/transports/grpc/mappers/commands-mapper.js +6 -6
  31. package/dist/cjs/transports/grpc/mappers/interactive-command-mapper.js +1 -1
  32. package/dist/cjs/transports/json/json-transport.js +1 -1
  33. package/dist/cjs/transports/json/mappers/commands-mapper.js +3 -3
  34. package/dist/core/transports/transport.interface.d.ts +4 -4
  35. package/dist/core/types/prepared-command-submission.d.ts +3 -3
  36. package/dist/core/types/requests/{submit-command-request.d.ts → submit-commands-request.d.ts} +8 -4
  37. package/dist/core/types/requests/{submit-command-request.js → submit-commands-request.js} +8 -4
  38. package/dist/index.d.ts +5 -2
  39. package/dist/index.js +2 -1
  40. package/dist/query/canonical/in-memory-query-evaluator.d.ts +22 -0
  41. package/dist/query/canonical/in-memory-query-evaluator.js +287 -0
  42. package/dist/query/canonical/public-identity.d.ts +14 -0
  43. package/dist/query/canonical/public-identity.js +35 -0
  44. package/dist/query/canonical/query-ast.d.ts +104 -0
  45. package/dist/query/canonical/query-ast.js +1 -0
  46. package/dist/query/canonical/query-dataset.d.ts +63 -0
  47. package/dist/query/canonical/query-dataset.js +343 -0
  48. package/dist/query/canonical/query-normalizer.d.ts +10 -0
  49. package/dist/query/canonical/query-normalizer.js +646 -0
  50. package/dist/query/canonical/query-schema.d.ts +25 -0
  51. package/dist/query/canonical/query-schema.js +83 -0
  52. package/dist/query/canton-manager.js +14 -5
  53. package/dist/query/errors/query-snapshot-incomplete-error.d.ts +14 -0
  54. package/dist/query/errors/query-snapshot-incomplete-error.js +15 -0
  55. package/dist/query/grpc/grpc-contract-cache.d.ts +27 -0
  56. package/dist/query/grpc/grpc-contract-cache.js +479 -0
  57. package/dist/query/grpc/grpc-package-relation-reader.d.ts +43 -0
  58. package/dist/query/grpc/grpc-package-relation-reader.js +213 -0
  59. package/dist/query/grpc/grpc-query-client.d.ts +42 -0
  60. package/dist/query/grpc/grpc-query-client.js +245 -0
  61. package/dist/query/grpc/grpc-query-snapshot-reader.d.ts +33 -0
  62. package/dist/query/grpc/grpc-query-snapshot-reader.js +233 -0
  63. package/dist/query/grpc/grpc-query-value-mapper.d.ts +15 -0
  64. package/dist/query/grpc/grpc-query-value-mapper.js +195 -0
  65. package/dist/query/grpc/grpc-relation-mapper.d.ts +67 -0
  66. package/dist/query/grpc/grpc-relation-mapper.js +789 -0
  67. package/dist/query/pqs/pqs-query-client.d.ts +10 -20
  68. package/dist/query/pqs/pqs-query-client.js +154 -585
  69. package/dist/query/pqs/pqs-relational-sql-compiler.d.ts +9 -17
  70. package/dist/query/pqs/pqs-relational-sql-compiler.js +136 -95
  71. package/dist/query/pqs/pqs-result-shape.d.ts +25 -0
  72. package/dist/query/pqs/pqs-result-shape.js +25 -0
  73. package/dist/query/pqs/pqs-schema-profile.js +49 -48
  74. package/dist/query/pqs/pqs-sql-compiler.d.ts +18 -3
  75. package/dist/query/pqs/pqs-sql-compiler.js +337 -288
  76. package/dist/query/pqs/pqs-sql-syntax.d.ts +2 -0
  77. package/dist/query/pqs/pqs-sql-syntax.js +6 -0
  78. package/dist/query/query-client.d.ts +15 -0
  79. package/dist/services/command/command-service-client.d.ts +9 -4
  80. package/dist/services/command/command-service-client.js +16 -3
  81. package/dist/services/command-submission/command-submission-service-client.d.ts +2 -2
  82. package/dist/services/commands/command-payload-builder.d.ts +2 -2
  83. package/dist/services/commands/command-payload-builder.js +1 -1
  84. package/dist/services/commands/command-submission-pipeline.d.ts +5 -4
  85. package/dist/services/commands/command-submission-pipeline.js +21 -6
  86. package/dist/services/state/state-service-client.d.ts +4 -0
  87. package/dist/services/state/state-service-client.js +56 -0
  88. package/dist/testing/runtime/declarative-action-executor.js +3 -3
  89. package/dist/transports/grpc/grpc-transport.d.ts +4 -4
  90. package/dist/transports/grpc/grpc-transport.js +3 -3
  91. package/dist/transports/grpc/mappers/commands-mapper.d.ts +3 -3
  92. package/dist/transports/grpc/mappers/commands-mapper.js +4 -4
  93. package/dist/transports/grpc/mappers/interactive-command-mapper.d.ts +3 -3
  94. package/dist/transports/grpc/mappers/interactive-command-mapper.js +1 -1
  95. package/dist/transports/json/json-transport.d.ts +2 -2
  96. package/dist/transports/json/json-transport.js +2 -2
  97. package/dist/transports/json/mappers/commands-mapper.d.ts +2 -2
  98. package/dist/transports/json/mappers/commands-mapper.js +2 -2
  99. package/package.json +8 -3
  100. package/dist/cjs/query/grpc/grpc-contract-query-client.js +0 -178
  101. package/dist/query/grpc/grpc-contract-query-client.d.ts +0 -33
  102. package/dist/query/grpc/grpc-contract-query-client.js +0 -174
package/README.md CHANGED
@@ -132,36 +132,89 @@ npm run example:topology:party-hosting
132
132
 
133
133
  ### Workflow examples
134
134
 
135
- The four workflow examples are standalone proofs, not a sequence: each uploads
136
- or verifies the fixture DAR, resolves a party, reads the participant status,
137
- and creates its own run-scoped data. First make a Canton participant available
138
- and verify the source with `npm run examples:check`; the default endpoints and
139
- authentication environment variables are documented below. Run any example
140
- independently:
135
+ The eight stateful workflow examples are standalone proofs, not a sequence:
136
+ each uploads or verifies the fixture DAR, resolves a party, reads the
137
+ participant status, and creates its own run-scoped data. First make a Canton
138
+ participant available and verify the source with `npm run examples:check`; the
139
+ default endpoints and authentication environment variables are documented below.
140
+ The pruning preflight is a separate read-only operator check and does none of
141
+ those setup or mutation steps. Run any example independently:
141
142
 
142
143
  ```bash
143
144
  npm run example:workflow:atomic
144
145
  npm run example:workflow:retry
145
146
  npm run example:workflow:resume
146
147
  npm run example:workflow:stale-contract
148
+ npm run example:workflow:command-completion
149
+ npm run example:workflow:contract-lifecycle-audit
150
+ npm run example:workflow:update-lookup-reconciliation
151
+ npm run example:workflow:pruning-preflight
152
+ npm run example:workflow:participant-local
147
153
  ```
148
154
 
149
- They intentionally leave durable state behind. A missing `SDK_EXAMPLE_PARTY`
155
+ Those eight established stateful workflows intentionally leave durable state behind. A missing `SDK_EXAMPLE_PARTY`
150
156
  causes fallback party allocation, which creates durable topology state; every
151
- workflow also creates durable contracts. Set `SDK_EXAMPLE_PARTY` to an existing
152
- party to rerun all four against that party and avoid fallback allocation. The
153
- fixture DAR remains installed after a run.
154
-
155
- Each program prints its actor plus the full participant version returned by the
157
+ one also creates durable contracts. Set `SDK_EXAMPLE_PARTY` to an existing
158
+ party to rerun the established workflows against that party and avoid fallback
159
+ allocation. The fixture DAR remains installed after a run.
160
+
161
+ The participant-local command-submission workflow
162
+ (`npm run example:workflow:participant-local`) is a standalone gRPC-only proof
163
+ of the ordinary participant submission authorization route. It uses the normal
164
+ `SDK_EXAMPLE_*` endpoint, authentication, party, and timeout configuration:
165
+ `SDK_EXAMPLE_LEDGER_ENDPOINT`, `SDK_EXAMPLE_LEDGER_ADMIN_ENDPOINT`,
166
+ `SDK_EXAMPLE_PARTICIPANT_ADMIN_ENDPOINT`, `SDK_EXAMPLE_BEARER_TOKEN`,
167
+ `SDK_EXAMPLE_LEDGER_BEARER_TOKEN`, `SDK_EXAMPLE_LEDGER_ADMIN_BEARER_TOKEN`,
168
+ `SDK_EXAMPLE_PARTICIPANT_ADMIN_BEARER_TOKEN`, `SDK_EXAMPLE_PARTY`,
169
+ `SDK_EXAMPLE_PARTY_PREFIX`, `SDK_EXAMPLE_TIMEOUT_MS`, and
170
+ `SDK_EXAMPLE_TLS_ROOT_CERTIFICATE`. It configures a command signer that throws
171
+ if touched, then successfully creates and finds one exact active Message through
172
+ `commandService.submitParticipantLocalAndWaitAsync`; that success proves the
173
+ configured external signer was bypassed. An explicit party is reused, while
174
+ fallback allocation creates durable topology; the fixture upload leaves a
175
+ durable DAR and the proof leaves a durable contract. The unchanged
176
+ implementation uses the common compatibility path on Participant 3.5.7 and
177
+ the isolated Participant 3.5.8 sidecar.
178
+
179
+ The completion-correlation workflow (`npm run example:workflow:command-completion`)
180
+ is a standalone successful proof that creates durable Message state. It uses the
181
+ same normal `SDK_EXAMPLE_*` configuration: `SDK_EXAMPLE_LEDGER_ENDPOINT`,
182
+ `SDK_EXAMPLE_LEDGER_ADMIN_ENDPOINT`, `SDK_EXAMPLE_PARTICIPANT_ADMIN_ENDPOINT`,
183
+ `SDK_EXAMPLE_BEARER_TOKEN`, `SDK_EXAMPLE_LEDGER_BEARER_TOKEN`,
184
+ `SDK_EXAMPLE_LEDGER_ADMIN_BEARER_TOKEN`,
185
+ `SDK_EXAMPLE_PARTICIPANT_ADMIN_BEARER_TOKEN`,
186
+ `SDK_EXAMPLE_TLS_ROOT_CERTIFICATE`, `SDK_EXAMPLE_PARTY`,
187
+ `SDK_EXAMPLE_PARTY_PREFIX`, and `SDK_EXAMPLE_TIMEOUT_MS`.
188
+ `SDK_EXAMPLE_USER_ID` is mandatory: absent or blank input is rejected, while
189
+ every nonblank value is preserved untrimmed and exactly submitted and exactly
190
+ matched in the completion. With bearer authentication, the configured declared
191
+ user must equal the token's Ledger API user/subject; the example does not inspect
192
+ the token. It keeps the ledger end as its saved exclusive offset and begins the
193
+ first stream read before submission.
194
+ No public wait-for-command-completion helper or API is introduced; the
195
+ correlation helper remains example-only.
196
+ The completion-correlation example asserts successful correlation only; it does
197
+ not assert rejected-command correlation. On both participant observations, the
198
+ stream-first rejected-command probes observed no exact completion before their
199
+ bounded stream transport errors.
200
+
201
+ The contract-lifecycle audit workflow (`npm run example:workflow:contract-lifecycle-audit`) is a standalone gRPC-only proof. It uses the normal `SDK_EXAMPLE_*` endpoint, authentication, party, and timeout configuration: `SDK_EXAMPLE_LEDGER_ENDPOINT`, `SDK_EXAMPLE_LEDGER_ADMIN_ENDPOINT`, `SDK_EXAMPLE_PARTICIPANT_ADMIN_ENDPOINT`, `SDK_EXAMPLE_BEARER_TOKEN`, `SDK_EXAMPLE_LEDGER_BEARER_TOKEN`, `SDK_EXAMPLE_LEDGER_ADMIN_BEARER_TOKEN`, `SDK_EXAMPLE_PARTICIPANT_ADMIN_BEARER_TOKEN`, `SDK_EXAMPLE_PARTY`, `SDK_EXAMPLE_PARTY_PREFIX`, and `SDK_EXAMPLE_TIMEOUT_MS`. An explicit `SDK_EXAMPLE_PARTY` is reused; otherwise fallback allocation creates durable topology. The fixture upload leaves a durable DAR, and the workflow leaves durable contracts. It uses the alpha ContractService to prove the original active Message before replacement and the replacement active Message afterward, then uses EventQuery for the original contract's create/archive history. It makes no post-archive ContractService claim for the original.
202
+
203
+ The update-lookup reconciliation workflow (`npm run example:workflow:update-lookup-reconciliation`) is a standalone gRPC-only proof that observes one exact self-party Message transaction from `UpdateService.GetUpdates`, then immediately reconciles it through `getUpdateById` and `getUpdateByOffset`. It uses the normal `SDK_EXAMPLE_*` endpoint, authentication, party, and timeout configuration, including `SDK_EXAMPLE_PARTY` and `SDK_EXAMPLE_TIMEOUT_MS`; first run `npm run examples:check` and make an authenticated participant available. An explicit party is reused, while fallback allocation creates durable topology; the fixture upload leaves a durable DAR and the workflow leaves durable contracts. The same unchanged implementation is tested against authenticated Participant 3.5.7 and the isolated Participant 3.5.8 sidecar, in default-party and explicit-party modes.
204
+
205
+ The pruning-preflight workflow (`npm run example:workflow:pruning-preflight`) is a standalone gRPC-only, read-only operator check. It requires `SDK_EXAMPLE_OFFSET` to be a canonical positive decimal integer and uses the normal endpoint, authentication, and timeout variables: `SDK_EXAMPLE_LEDGER_ENDPOINT`, `SDK_EXAMPLE_LEDGER_ADMIN_ENDPOINT`, `SDK_EXAMPLE_PARTICIPANT_ADMIN_ENDPOINT`, `SDK_EXAMPLE_BEARER_TOKEN`, `SDK_EXAMPLE_LEDGER_BEARER_TOKEN`, `SDK_EXAMPLE_LEDGER_ADMIN_BEARER_TOKEN`, `SDK_EXAMPLE_PARTICIPANT_ADMIN_BEARER_TOKEN`, and `SDK_EXAMPLE_TIMEOUT_MS`. The participant-admin credential is required for the schedule and safe-pruning context reads. Its safe-pruning context request sends the saved ledger end and a validated current timestamp encoded in `beforeOrAt`; it leaves commitment-state absent. It does not mutate the participant or create durable state: no party, DAR, command, update query, schedule change, or pruning request is made. The later participant watermark classifies the supplied offset as `alreadyPruned`, `beyondLedgerEnd`, or `notObservedPruned`; all-divulged watermarks and schedule/safe-pruning context are reported separately and do not alter that result. `notObservedPruned` is not proven queryable, because pruning can race after the later observation and other query preconditions can still fail. The unchanged implementation is supported on Participant 3.5.7 and the isolated Participant 3.5.8 sidecar.
206
+
207
+ Each of the eight established stateful workflows prints its actor plus the full participant version returned by the
156
208
  authenticated status API, its parsed release core, and its selected path:
157
209
  `Participant version:`, `Release core:`, and `Compatibility path:`. The current
158
- implementation uses one common-code path for release cores 3.5.7 and 3.5.8. It
210
+ stateful-workflow implementation uses one common-code path for release cores 3.5.7 and 3.5.8. It
159
211
  adds a version-specific behavioral difference only after live evidence proves
160
212
  one; it does not infer compatibility from a container tag or endpoint.
161
213
 
162
- - `example:workflow:atomic` first proves that an invalid choice is rejected,
163
- then proves an atomic create-and-exercise by reading the created replacement
164
- and its exact text.
214
+ - `example:workflow:atomic` first proves that a two-command batch with an
215
+ invalid second command is rejected without creating its valid first Message,
216
+ then proves that two independent creates commit atomically and remain active
217
+ with their exact payloads.
165
218
  - `example:workflow:retry` submits a caller-controlled command ID with a
166
219
  deduplication duration, retries the exact same request, classifies the
167
220
  duplicate outcome, and proves that exactly one matching contract is active.
@@ -179,15 +232,15 @@ request and is not a retry proof. The resume example treats the saved offset as
179
232
  exclusive, so its resumed stream must observe only updates after the saved
180
233
  ledger end.
181
234
 
182
- The workflow source and unit contracts were developed and live-tested against
183
- authenticated Participant 3.5.7 and the isolated Participant 3.5.8. Both
184
- final-tree matrices selected the same unchanged implementation and common
235
+ The eight established stateful workflow sources and unit contracts were developed
236
+ and live-tested against authenticated Participant 3.5.7 and the isolated
237
+ Participant 3.5.8. Both final-tree matrices selected the same unchanged implementation and common
185
238
  compatibility path. The normalized outcome comparison is identical: atomic
186
239
  reports `invalidChoice` before its replacement proof, retry reports
187
240
  `duplicateCommand` with one active contract, resume reports `idle-timeout` and
188
241
  a post-offset update, and stale-contract reports `staleContract`.
189
242
 
190
- The best multi-version path reads the authenticated full version, parses its
243
+ For those eight established stateful workflows, the best multi-version path reads the authenticated full version, parses its
191
244
  release core, and uses data-only structured compatibility for observed
192
245
  outcomes. A behavioral difference is introduced only after live proof; it is
193
246
  never inferred from a container tag, endpoint, or prose error message. For the
@@ -555,7 +608,11 @@ const contracts = await client.stateService.getActiveContractsPageAsync(
555
608
  );
556
609
  ```
557
610
 
558
- `stateService.getActiveContractsPageAsync(...)` accepts the generated Ledger API request on gRPC, including its `eventFormat`, `activeAtOffset`, `maxPageSize`, and `pageToken` fields. Build party, template, and interface filters in `eventFormat`. JSON does not implement this paginated RPC; use `getActiveContractsAsync(...)` for JSON streaming reads.
611
+ `stateService.getActiveContractsPageAsync(...)` is gRPC-only and accepts the generated Ledger API request, including its `eventFormat`, `activeAtOffset`, `maxPageSize`, and `pageToken` fields. Build party, template, and interface filters in `eventFormat`.
612
+
613
+ `stateService.getActiveContractsPagesAsync(...)` is the gRPC-only lazy, raw, bounded traversal API. It starts from the same generated request and yields raw `GetActiveContractsPageResponse` values one page at a time. The caller selects the shared `OperationDeadline`, maximum pages, and maximum contracts with `ActiveContractsTraversalOptions`; there is no collect-all wrapper. Transport errors from dispatched RPCs propagate unchanged. Traversal safety, invariant, and bound failures use `ActiveContractsTraversalError` codes, such as an inconsistent offset, repeated page token, or exceeded bound.
614
+
615
+ JSON does not implement either paginated gRPC API. Its existing `stateService.getActiveContractsAsync(...)` behavior remains the distinct JSON streaming read.
559
616
 
560
617
  For interface views, do not use `contractService.getContractAsync(...)`. That contract lookup surface cannot return interface views; use `stateService` or `updateService` instead.
561
618
 
@@ -645,53 +702,103 @@ signature format and algorithm. This convenience operation is gRPC-only.
645
702
 
646
703
  ## Canton Manager queries
647
704
 
648
- `CantonManager` keeps gRPC as the write path and selects a single query source
649
- at initialization. PQS exposes the complete PQS relation surface; gRPC exposes
650
- an all-hosted-party active-contract snapshot.
705
+ `CantonManager` keeps gRPC as the write path and selects one typed-query source
706
+ at initialization. The same typed query function works with either gRPC or
707
+ PQS; source selection changes how the data is read, not the query grammar.
651
708
 
652
709
  ```ts
653
710
  import {
711
+ CantonClientOptions,
654
712
  CantonManager,
713
+ CreateCommand,
714
+ DamlRecord,
655
715
  MemoryQueryCache,
656
716
  QuerySource,
717
+ SubmitCommandsRequest,
657
718
  TransportKind,
658
719
  } from "@distrohelena/canton-typescript-sdk";
659
720
 
660
- const manager = new CantonManager({
661
- grpc: { transportKind: TransportKind.grpc, ledgerEndpoint: "localhost:6865" },
662
- querySource: QuerySource.pqs,
721
+ const options = {
722
+ grpc: new CantonClientOptions({
723
+ transportKind: TransportKind.grpc,
724
+ ledgerEndpoint: "localhost:6865",
725
+ }),
663
726
  pqs: { connectionString: process.env.PQS_URL!, schema: "public" },
664
727
  cache: { store: new MemoryQueryCache(), ttlMs: 5_000 },
665
- });
728
+ };
666
729
 
667
- const contracts = await manager.query.contracts.findMany({
668
- where: { templateId: { equals: "packageId:Module:Template" }, active: true },
730
+ const readIous = (manager: CantonManager) => manager.query.contracts.findMany({
731
+ where: { templateId: { moduleName: { equals: "Main" }, entityName: { equals: "Iou" } } },
732
+ orderBy: [{ createdAt: "desc" }],
669
733
  take: 50,
670
734
  });
671
735
 
672
- await manager.grpc.commandService.submitAndWaitAsync(/* existing command request */);
673
- await manager.disposeAsync();
736
+ const pqsManager = new CantonManager({ ...options, querySource: QuerySource.pqs });
737
+ const grpcManager = new CantonManager({ ...options, querySource: QuerySource.grpc });
738
+ const pqsContracts = await readIous(pqsManager);
739
+ const grpcContracts = await readIous(grpcManager);
740
+
741
+ // gRPC caching is explicit and point-in-time; ordinary reads never populate it.
742
+ await grpcManager.query.cacheContracts({ parties: ["Alice"] });
743
+ await grpcManager.query.invalidateContractsCache({ parties: ["Alice"] });
744
+
745
+ // A SubmitCommandsRequest contains a non-empty ordered atomic command batch:
746
+ // all commands commit together, or none of them do.
747
+ await grpcManager.grpc.commandService.submitAndWaitAsync(
748
+ new SubmitCommandsRequest({
749
+ applicationId: "example-app",
750
+ actAs: ["Alice"],
751
+ commands: [
752
+ new CreateCommand({
753
+ templateId: { packageId: "", moduleName: "Main", entityName: "Message" },
754
+ createArguments: new DamlRecord({ author: "Alice", body: "Hello" }),
755
+ }),
756
+ ],
757
+ }),
758
+ );
759
+ await Promise.all([pqsManager.disposeAsync(), grpcManager.disposeAsync()]);
674
760
  ```
675
761
 
676
- With `QuerySource.grpc`, omit `pqs`; contract queries fetch the participant's
677
- active-contract snapshot using the Ledger API wildcard for all hosted parties.
678
- PQS-only relation delegates and raw SQL then reject with `QueryCapabilityError`.
679
-
680
- PQS managers expose `contracts`, `contractTypes`, `events`, `exercises`,
681
- `exerciseTypes`, `packages`, `transactions`, and `watermark`. Raw SQL is
682
- available through `manager.query.$queryRaw(...)` when the selected client is
683
- PQS-specific. It accepts one read-only statement with positional parameters;
684
- use a read-only PostgreSQL role as defense in depth.
685
-
686
- The PQS relation delegates use a Prisma-like surface: `findMany({ where,
762
+ To migrate a prior singleton submission, pass `commands: [previousCommand]`.
763
+ There is no compatibility alias; put multiple independent commands in that
764
+ array in their required atomic order.
765
+
766
+ An options object may contain both `grpc` and `pqs`; the PQS setting is used
767
+ only when `querySource` is `pqs`. Both sources expose `contracts`,
768
+ `contractTypes`, `events`, `exercises`, `exerciseTypes`, `packages`,
769
+ `transactions`, and `watermark`, including filters, includes, ordering,
770
+ pagination, projections, grouping, and aggregates. Literal parity requires
771
+ PQS and gRPC to observe the same participant-visible data; independently
772
+ configured participants can legitimately see different contracts.
773
+
774
+ `cacheContracts` is a gRPC-only explicit prewarm of active contracts for one
775
+ party scope. It needs a cache store and a positive TTL; reads may use a valid
776
+ entry but never renew it. A cached gRPC result is internally consistent at its
777
+ `activeAtOffset`, so it can be stale until expiry, refresh, or
778
+ `invalidateContractsCache`. Under PQS the same lifecycle calls are safe no-ops
779
+ and `cacheContracts` returns `{ source: QuerySource.pqs, cached: false }`.
780
+
781
+ Typed-query `pk`/`ix` values are canonical and source-independent. Transaction
782
+ and watermark keys are ledger offsets; event, package, contract-type, and
783
+ exercise-type keys are lossless positive-decimal encodings of their stable
784
+ semantic identities. PQS physical keys are retained only for internal joins.
785
+ If pruning has removed history needed by a gRPC typed query, it rejects with
786
+ `QuerySnapshotIncompleteError` rather than returning partial rows, groups, or
787
+ aggregates.
788
+
789
+ Raw SQL is the sole PQS-only query operation: use
790
+ `pqsManager.query.$queryRaw(...)` for one read-only statement with positional
791
+ parameters and a read-only PostgreSQL role. `$queryRaw` on a gRPC manager
792
+ rejects with `QueryCapabilityError`.
793
+
794
+ The typed relation delegates use a Prisma-like surface: `findMany({ where,
687
795
  select, orderBy, skip, take })`, `findUnique({ where, select })`, `count`, and
688
796
  `aggregate({ count, min, max, sum })`. Filters support `equals`, `in`,
689
797
  `{ is: null }`, `{ isNot: null }`, and `{ has: party }` on array fields.
690
- Ordering accepts one field. `exercises` intentionally has no `findUnique`
798
+ Ordering accepts an ordered list of one-field entries, so multi-field ordering
799
+ uses `[{ createdAt: "desc" }, { contractId: "asc" }]`. `exercises` intentionally has no `findUnique`
691
800
  because the v1 PQS profile does not declare a stable key. The manager validates
692
- the selected PQS schema profile before its first query. In gRPC mode, only the
693
- active-contract `findMany`, `findUnique`, and `count` subset is available;
694
- unsupported query features reject with `QueryCapabilityError`.
801
+ the selected PQS schema profile before its first PQS query.
695
802
 
696
803
  - Ledger endpoint:
697
804
  - `versionService.getLedgerApiVersionAsync(...)`: `json`, `grpc`
@@ -703,11 +810,12 @@ unsupported query features reject with `QueryCapabilityError`.
703
810
  - `commandService.submitAndWaitAsync(...)`: `json`, `grpc`
704
811
  - `commandSubmissionService.submitAsync(...)`: reserved, currently unsupported
705
812
  - `stateService.getActiveContractsPageAsync(...)`: `grpc` only
706
- - `stateService.getActiveContractsAsync(...)`: `json` only
813
+ - `stateService.getActiveContractsPagesAsync(...)`: `grpc` only, lazy raw bounded traversal
814
+ - `stateService.getActiveContractsAsync(...)`: `json` only, existing distinct streaming read
707
815
  - `updateService.getUpdatesAsync(...)`: `grpc` only
708
- - `commandCompletionService`: placeholder, no methods yet
709
- - `eventQueryService`: placeholder, no methods yet
710
- - `contractService`: placeholder, no methods yet
816
+ - `commandCompletionService.getCompletionsAsync(...)`: `grpc` only, existing streaming API
817
+ - `eventQueryService.getEventsByContractIdAsync(...)`: `grpc` only; JSON rejects this request
818
+ - `contractService.getContractAsync(...)`: `grpc` only; JSON rejects this request
711
819
 
712
820
  - Ledger Admin endpoint:
713
821
  - `partyManagementService.allocatePartyAsync(...)`: `json`, `grpc`
@@ -1,22 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SubmitCommandRequest = void 0;
3
+ exports.SubmitCommandsRequest = void 0;
4
4
  const validation_error_js_1 = require("../../errors/validation-error.js");
5
5
  const ledgerStringPattern = /^[A-Za-z0-9#:\-_/ ]+$/;
6
6
  const canonicalOffsetPattern = /^(0|[1-9][0-9]*)$/;
7
7
  const maximumInt64Offset = "9223372036854775807";
8
- class SubmitCommandRequest {
8
+ class SubmitCommandsRequest {
9
9
  applicationId;
10
10
  userId;
11
11
  actAs;
12
12
  readAs;
13
- command;
13
+ commands;
14
14
  commandId;
15
15
  deduplicationPeriod;
16
16
  disclosedContracts;
17
17
  synchronizerId;
18
18
  constructor(init) {
19
- if (init.actAs.length === 0) {
19
+ const commands = init.commands;
20
+ if (!Array.isArray(commands) || commands.length === 0) {
21
+ throw new validation_error_js_1.ValidationError("submit requests require at least one command");
22
+ }
23
+ else if (init.actAs.length === 0) {
20
24
  throw new validation_error_js_1.ValidationError("submit requests require at least one actAs party");
21
25
  }
22
26
  else if (init.commandId !== undefined &&
@@ -30,14 +34,14 @@ class SubmitCommandRequest {
30
34
  this.userId = init.userId;
31
35
  this.actAs = init.actAs;
32
36
  this.readAs = init.readAs ?? [];
33
- this.command = init.command;
37
+ this.commands = Object.freeze([...commands]);
34
38
  this.commandId = init.commandId;
35
39
  this.deduplicationPeriod = deduplicationPeriod;
36
40
  this.disclosedContracts = init.disclosedContracts ?? [];
37
41
  this.synchronizerId = init.synchronizerId;
38
42
  }
39
43
  }
40
- exports.SubmitCommandRequest = SubmitCommandRequest;
44
+ exports.SubmitCommandsRequest = SubmitCommandsRequest;
41
45
  function freezeDeduplicationPeriod(value) {
42
46
  if (value === undefined) {
43
47
  return undefined;
package/dist/cjs/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExternalPartySigningAlgorithmSpec = exports.ExternalPartySignatureFormat = exports.ExternalPartySignature = exports.ExternalPartyOnboardingTransaction = exports.ExternalPartyCryptoKeyFormat = exports.TransportKind = exports.TransportCapability = exports.SignCommandResult = exports.SignCommandRequest = exports.BearerTokenAuthProvider = exports.SynchronizerConnectivityServiceClient = exports.VersionServiceClient = exports.UserManagementServiceClient = exports.UpdateServiceClient = exports.TrafficControlServiceClient = exports.TopologyManagerWriteServiceClient = exports.TopologyManagerReadServiceClient = exports.TopologyAggregationServiceClient = exports.StateServiceClient = exports.ResourceManagementServiceClient = exports.PruningServiceClient = exports.PartyManagementServiceClient = exports.ParticipantStatusServiceClient = exports.ParticipantRepairServiceClient = exports.ParticipantPackageServiceClient = exports.ParticipantPartyManagementServiceClient = exports.ParticipantInspectionServiceClient = exports.PackageServiceClient = exports.PackageManagementServiceClient = exports.IdentityProviderConfigServiceClient = exports.IdentityInitializationServiceClient = exports.HealthServiceClient = exports.EventQueryServiceClient = exports.ContractServiceClient = exports.CommandSubmissionServiceClient = exports.CommandServiceClient = exports.CommandInspectionServiceClient = exports.CommandCompletionServiceClient = exports.ExternalPartyActivationResponse = exports.ExternalPartyActivationRequest = exports.ExternalPartyActivationClient = exports.CantonClientOptions = exports.CantonHashingClient = exports.PqsSchemaProfileError = exports.PqsQueryError = exports.QueryCapabilityError = exports.MemoryQueryCache = exports.QuerySource = exports.CantonManager = exports.CantonClient = void 0;
4
- exports.ParticipantDarDescription = exports.PackageReference = exports.PackageMetadataFilter = exports.ActiveContractsTraversalOptions = exports.OperationDeadline = exports.RequestOptions = exports.ReceivedAcsCommitmentState = exports.ReceivedAcsCommitmentPerSynchronizer = exports.ReceivedAcsCommitment = exports.PruningSchedule = exports.ParticipantPruningSchedule = exports.PendingOperationMetadata = exports.PackageStatus = exports.CantonHashPurpose = exports.HashFunction = exports.PackageFormat = exports.OffsetCheckpoint = exports.ObjectMeta = exports.LedgerUser = exports.KnownPackageDetails = exports.IdentityProviderConfig = exports.UserRightKind = exports.EventStreamKind = exports.DamlParty = exports.DamlNumeric = exports.ContractCreated = exports.ContractArchived = exports.CounterParticipantInfo = exports.CommitmentTimeRange = exports.CommitmentInterval = exports.Completion = exports.CommandUpdateSummary = exports.CommandTiming = exports.CommandStatus = exports.CommandState = exports.CommandRequestStatistics = exports.CommandInspectionContract = exports.ConnectedSynchronizerStatus = exports.ConnectedSynchronizer = exports.ConnectedSynchronizerHealth = exports.AdminTopologyQueueStatus = exports.AdminNotInitializedStatus = exports.AdminNotInitializedExternalInputKind = exports.AdminNodeStatus = exports.AdminComponentStatus = exports.AdminComponentHealthKind = exports.SubmissionMode = exports.GrpcChannelSecurity = exports.ExternalPartySigningPublicKey = exports.ExternalPartySigningKeySpec = void 0;
5
- exports.TopologyForceFlag = exports.TopologyPublicKey = exports.TopologyPartyResult = exports.TopologyPartyParticipantSynchronizerPermission = exports.TopologyPartyParticipant = exports.TopologyMappingResult = exports.TopologyMappingOperation = exports.TopologyMappingCode = exports.TopologyKeyOwnerResult = exports.MultiTopologyTransactionSignature = exports.GeneratedTopologyTransaction = exports.TopologyEncryptionPublicKey = exports.ExternalTopologySignature = exports.TopologyDuration = exports.TopologyBaseResult = exports.TopologyBaseQuery = exports.SynchronizerTrustCertificate = exports.SequencerSynchronizerState = exports.PartyToParticipantParticipant = exports.PartyToParticipantOnboarding = exports.PartyToParticipant = exports.PartyToKeyMapping = exports.PartyHostingLimits = exports.ParticipantSynchronizerPermission = exports.ParticipantSynchronizerLimits = exports.ParticipantPermission = exports.OwnerToKeyMapping = exports.OnboardingRestriction = exports.NamespaceDelegationRestrictionKind = exports.NamespaceDelegationRestriction = exports.NamespaceDelegation = exports.MediatorSynchronizerState = exports.LsuSequencerConnectionSuccessor = exports.LsuSequencerConnection = exports.LsuAnnouncement = exports.DynamicSynchronizerParameters = exports.DynamicSequencingParameters = exports.DecentralizedNamespaceDefinition = exports.AcsCommitmentsCatchUpConfig = exports.WaitCommitmentsSetup = exports.TopologyStateFilter = exports.SynchronizerTimeRange = exports.SlowCounterParticipantSynchronizerConfig = exports.SentAcsCommitmentState = exports.SentAcsCommitmentPerSynchronizer = exports.SentAcsCommitment = exports.SdkCommand = exports.SafeToPruneCommitmentState = exports.ParticipantPackageDescription = exports.ParticipantModuleDescription = void 0;
6
- exports.ListDecentralizedNamespaceDefinitionRequest = exports.ListAllRequest = exports.ListPackagesRequest = exports.GetCommandStatusRequest = exports.GetActiveContractsRequest = exports.GetActiveContractsPageRequest = exports.GetDarRequest = exports.GetDarContentsRequest = exports.AssembleSignedTopologyTransactionsRequest = exports.SubmitCommandTransactionResponse = exports.DamlRecord = exports.DamlEnum = exports.DamlVariant = exports.DamlGenMap = exports.DamlTextMap = exports.DamlTimestamp = exports.DamlDate = exports.DamlUnit = exports.DamlContractId = exports.PreparedCommandSubmission = exports.DisclosedContract = exports.AllocatePartyRequest = exports.CreateExternalPartyRequest = exports.PreparedDecentralizedParty = exports.FinalizeDecentralizedPartyRequest = exports.CreateDecentralizedPartyRequest = exports.ExerciseCommand = exports.ExerciseByKeyCommand = exports.CreateCommand = exports.CreateAndExerciseCommand = exports.SignedTopologyTransaction = exports.PreparedTopologyTransaction = exports.VettedPackages = exports.VettedPackage = exports.TrafficControlParameters = exports.TopologyVettedPackages = exports.TopologyVettedPackage = exports.TopologyTransactions = exports.TopologyTransactionItem = exports.TopologyTransactionSignature = exports.TopologyTimeRange = exports.TopologyStoreTemporary = exports.TopologyStoreSynchronizer = exports.TopologyStoreKind = exports.TopologyStoreId = exports.TopologyStoreAuthorized = exports.TopologySigningPublicKey = exports.TopologySigningKeysWithThreshold = exports.TopologySignatureFormat = exports.TopologySignatureDelegation = void 0;
7
- exports.ListDecentralizedNamespaceDefinitionResponse = exports.ListAllResponse = exports.GetUserResponse = exports.GetPartiesResponse = exports.GetPackageStatusResponse = exports.GetPackageResponse = exports.GetLedgerEndResponse = exports.GetLatestPrunedOffsetsResponse = exports.GetIdentityProviderConfigResponse = exports.GetCommandStatusResponse = exports.GetConnectedSynchronizersResponse = exports.GetActiveContractsPageResponse = exports.GetDarResponse = exports.GetDarContentsResponse = exports.AllocatePartyResponse = exports.UploadDarFileRequest = exports.GrantUserRightsRequest = exports.WaitForPartyHostingRequest = exports.TopologyListPartiesRequest = exports.SubmitCommandRequest = exports.ListUsersRequest = exports.ListUserRightsRequest = exports.ListKeyOwnersRequest = exports.ListIdentityProviderConfigsRequest = exports.ListDarsRequest = exports.ListKnownPackagesRequest = exports.ListKnownPartiesRequest = exports.TopologyListVettedPackagesRequest = exports.ListSynchronizerTrustCertificateRequest = exports.ListSynchronizerParametersStateRequest = exports.ListSequencingParametersStateRequest = exports.ListSequencerSynchronizerStateRequest = exports.ListPartyToParticipantRequest = exports.ListPartyToKeyMappingRequest = exports.ListVettedPackagesRequest = exports.ListPartyHostingLimitsRequest = exports.ListParticipantSynchronizerPermissionRequest = exports.ListOwnerToKeyMappingRequest = exports.ListNamespaceDelegationRequest = exports.ListMediatorSynchronizerStateRequest = exports.ListLsuSequencerConnectionSuccessorRequest = exports.ListLsuAnnouncementRequest = exports.GetUserRequest = exports.GetPartiesRequest = exports.GetLedgerEndRequest = exports.GetLatestPrunedOffsetsRequest = exports.GetConnectedSynchronizersRequest = exports.GetPackageStatusRequest = exports.GetPackageRequest = exports.GetIdentityProviderConfigRequest = void 0;
8
- exports.EndpointNotConfiguredError = exports.ObjectDisposedError = exports.NotSupportedError = exports.ConflictError = exports.TimeoutError = exports.SigningError = exports.GrpcTransportError = exports.TransportError = exports.AuthorizationError = exports.AuthenticationError = exports.ActiveContractsTraversalError = exports.ValidationError = exports.CantonError = exports.SynchronizerTime = exports.ParticipantNodeStatus = exports.PartyDetails = exports.UploadDarFileResponse = exports.GrantUserRightsResponse = exports.SubmitCommandResponse = exports.TopologyListPartiesResponse = exports.TopologyListVettedPackagesResponse = exports.ListVettedPackagesResponse = exports.ListUsersResponse = exports.ListUserRightsResponse = exports.ListSynchronizerTrustCertificateResponse = exports.ListSynchronizerParametersStateResponse = exports.ListSequencingParametersStateResponse = exports.ListSequencerSynchronizerStateResponse = exports.ListPartyToParticipantResponse = exports.ListPartyToKeyMappingResponse = exports.ListPartyHostingLimitsResponse = exports.ListParticipantSynchronizerPermissionResponse = exports.ListKeyOwnersResponse = exports.ListKnownPartiesResponse = exports.ListKnownPackagesResponse = exports.ListIdentityProviderConfigsResponse = exports.ListDarsResponse = exports.ListPackagesResponse = exports.ListOwnerToKeyMappingResponse = exports.ListNamespaceDelegationResponse = exports.ListMediatorSynchronizerStateResponse = exports.ListLsuSequencerConnectionSuccessorResponse = exports.ListLsuAnnouncementResponse = void 0;
3
+ exports.ExternalPartySignatureFormat = exports.ExternalPartySignature = exports.ExternalPartyOnboardingTransaction = exports.ExternalPartyCryptoKeyFormat = exports.TransportKind = exports.TransportCapability = exports.SignCommandResult = exports.SignCommandRequest = exports.BearerTokenAuthProvider = exports.SynchronizerConnectivityServiceClient = exports.VersionServiceClient = exports.UserManagementServiceClient = exports.UpdateServiceClient = exports.TrafficControlServiceClient = exports.TopologyManagerWriteServiceClient = exports.TopologyManagerReadServiceClient = exports.TopologyAggregationServiceClient = exports.StateServiceClient = exports.ResourceManagementServiceClient = exports.PruningServiceClient = exports.PartyManagementServiceClient = exports.ParticipantStatusServiceClient = exports.ParticipantRepairServiceClient = exports.ParticipantPackageServiceClient = exports.ParticipantPartyManagementServiceClient = exports.ParticipantInspectionServiceClient = exports.PackageServiceClient = exports.PackageManagementServiceClient = exports.IdentityProviderConfigServiceClient = exports.IdentityInitializationServiceClient = exports.HealthServiceClient = exports.EventQueryServiceClient = exports.ContractServiceClient = exports.CommandSubmissionServiceClient = exports.CommandServiceClient = exports.CommandInspectionServiceClient = exports.CommandCompletionServiceClient = exports.ExternalPartyActivationResponse = exports.ExternalPartyActivationRequest = exports.ExternalPartyActivationClient = exports.CantonClientOptions = exports.CantonHashingClient = exports.PqsSchemaProfileError = exports.PqsQueryError = exports.QuerySnapshotIncompleteError = exports.QueryCapabilityError = exports.MemoryQueryCache = exports.QuerySource = exports.CantonManager = exports.CantonClient = void 0;
4
+ exports.PackageReference = exports.PackageMetadataFilter = exports.ActiveContractsTraversalOptions = exports.OperationDeadline = exports.RequestOptions = exports.ReceivedAcsCommitmentState = exports.ReceivedAcsCommitmentPerSynchronizer = exports.ReceivedAcsCommitment = exports.PruningSchedule = exports.ParticipantPruningSchedule = exports.PendingOperationMetadata = exports.PackageStatus = exports.CantonHashPurpose = exports.HashFunction = exports.PackageFormat = exports.OffsetCheckpoint = exports.ObjectMeta = exports.LedgerUser = exports.KnownPackageDetails = exports.IdentityProviderConfig = exports.UserRightKind = exports.EventStreamKind = exports.DamlParty = exports.DamlNumeric = exports.ContractCreated = exports.ContractArchived = exports.CounterParticipantInfo = exports.CommitmentTimeRange = exports.CommitmentInterval = exports.Completion = exports.CommandUpdateSummary = exports.CommandTiming = exports.CommandStatus = exports.CommandState = exports.CommandRequestStatistics = exports.CommandInspectionContract = exports.ConnectedSynchronizerStatus = exports.ConnectedSynchronizer = exports.ConnectedSynchronizerHealth = exports.AdminTopologyQueueStatus = exports.AdminNotInitializedStatus = exports.AdminNotInitializedExternalInputKind = exports.AdminNodeStatus = exports.AdminComponentStatus = exports.AdminComponentHealthKind = exports.SubmissionMode = exports.GrpcChannelSecurity = exports.ExternalPartySigningPublicKey = exports.ExternalPartySigningKeySpec = exports.ExternalPartySigningAlgorithmSpec = void 0;
5
+ exports.TopologyPublicKey = exports.TopologyPartyResult = exports.TopologyPartyParticipantSynchronizerPermission = exports.TopologyPartyParticipant = exports.TopologyMappingResult = exports.TopologyMappingOperation = exports.TopologyMappingCode = exports.TopologyKeyOwnerResult = exports.MultiTopologyTransactionSignature = exports.GeneratedTopologyTransaction = exports.TopologyEncryptionPublicKey = exports.ExternalTopologySignature = exports.TopologyDuration = exports.TopologyBaseResult = exports.TopologyBaseQuery = exports.SynchronizerTrustCertificate = exports.SequencerSynchronizerState = exports.PartyToParticipantParticipant = exports.PartyToParticipantOnboarding = exports.PartyToParticipant = exports.PartyToKeyMapping = exports.PartyHostingLimits = exports.ParticipantSynchronizerPermission = exports.ParticipantSynchronizerLimits = exports.ParticipantPermission = exports.OwnerToKeyMapping = exports.OnboardingRestriction = exports.NamespaceDelegationRestrictionKind = exports.NamespaceDelegationRestriction = exports.NamespaceDelegation = exports.MediatorSynchronizerState = exports.LsuSequencerConnectionSuccessor = exports.LsuSequencerConnection = exports.LsuAnnouncement = exports.DynamicSynchronizerParameters = exports.DynamicSequencingParameters = exports.DecentralizedNamespaceDefinition = exports.AcsCommitmentsCatchUpConfig = exports.WaitCommitmentsSetup = exports.TopologyStateFilter = exports.SynchronizerTimeRange = exports.SlowCounterParticipantSynchronizerConfig = exports.SentAcsCommitmentState = exports.SentAcsCommitmentPerSynchronizer = exports.SentAcsCommitment = exports.SdkCommand = exports.SafeToPruneCommitmentState = exports.ParticipantPackageDescription = exports.ParticipantModuleDescription = exports.ParticipantDarDescription = void 0;
6
+ exports.ListAllRequest = exports.ListPackagesRequest = exports.GetCommandStatusRequest = exports.GetActiveContractsRequest = exports.GetActiveContractsPageRequest = exports.GetDarRequest = exports.GetDarContentsRequest = exports.AssembleSignedTopologyTransactionsRequest = exports.SubmitCommandTransactionResponse = exports.DamlRecord = exports.DamlEnum = exports.DamlVariant = exports.DamlGenMap = exports.DamlTextMap = exports.DamlTimestamp = exports.DamlDate = exports.DamlUnit = exports.DamlContractId = exports.PreparedCommandSubmission = exports.DisclosedContract = exports.AllocatePartyRequest = exports.CreateExternalPartyRequest = exports.PreparedDecentralizedParty = exports.FinalizeDecentralizedPartyRequest = exports.CreateDecentralizedPartyRequest = exports.ExerciseCommand = exports.ExerciseByKeyCommand = exports.CreateCommand = exports.CreateAndExerciseCommand = exports.SignedTopologyTransaction = exports.PreparedTopologyTransaction = exports.VettedPackages = exports.VettedPackage = exports.TrafficControlParameters = exports.TopologyVettedPackages = exports.TopologyVettedPackage = exports.TopologyTransactions = exports.TopologyTransactionItem = exports.TopologyTransactionSignature = exports.TopologyTimeRange = exports.TopologyStoreTemporary = exports.TopologyStoreSynchronizer = exports.TopologyStoreKind = exports.TopologyStoreId = exports.TopologyStoreAuthorized = exports.TopologySigningPublicKey = exports.TopologySigningKeysWithThreshold = exports.TopologySignatureFormat = exports.TopologySignatureDelegation = exports.TopologyForceFlag = void 0;
7
+ exports.ListAllResponse = exports.GetUserResponse = exports.GetPartiesResponse = exports.GetPackageStatusResponse = exports.GetPackageResponse = exports.GetLedgerEndResponse = exports.GetLatestPrunedOffsetsResponse = exports.GetIdentityProviderConfigResponse = exports.GetCommandStatusResponse = exports.GetConnectedSynchronizersResponse = exports.GetActiveContractsPageResponse = exports.GetDarResponse = exports.GetDarContentsResponse = exports.AllocatePartyResponse = exports.UploadDarFileRequest = exports.GrantUserRightsRequest = exports.WaitForPartyHostingRequest = exports.TopologyListPartiesRequest = exports.SubmitCommandsRequest = exports.ListUsersRequest = exports.ListUserRightsRequest = exports.ListKeyOwnersRequest = exports.ListIdentityProviderConfigsRequest = exports.ListDarsRequest = exports.ListKnownPackagesRequest = exports.ListKnownPartiesRequest = exports.TopologyListVettedPackagesRequest = exports.ListSynchronizerTrustCertificateRequest = exports.ListSynchronizerParametersStateRequest = exports.ListSequencingParametersStateRequest = exports.ListSequencerSynchronizerStateRequest = exports.ListPartyToParticipantRequest = exports.ListPartyToKeyMappingRequest = exports.ListVettedPackagesRequest = exports.ListPartyHostingLimitsRequest = exports.ListParticipantSynchronizerPermissionRequest = exports.ListOwnerToKeyMappingRequest = exports.ListNamespaceDelegationRequest = exports.ListMediatorSynchronizerStateRequest = exports.ListLsuSequencerConnectionSuccessorRequest = exports.ListLsuAnnouncementRequest = exports.GetUserRequest = exports.GetPartiesRequest = exports.GetLedgerEndRequest = exports.GetLatestPrunedOffsetsRequest = exports.GetConnectedSynchronizersRequest = exports.GetPackageStatusRequest = exports.GetPackageRequest = exports.GetIdentityProviderConfigRequest = exports.ListDecentralizedNamespaceDefinitionRequest = void 0;
8
+ exports.EndpointNotConfiguredError = exports.ObjectDisposedError = exports.NotSupportedError = exports.ConflictError = exports.TimeoutError = exports.SigningError = exports.GrpcTransportError = exports.TransportError = exports.AuthorizationError = exports.AuthenticationError = exports.ActiveContractsTraversalError = exports.ValidationError = exports.CantonError = exports.SynchronizerTime = exports.ParticipantNodeStatus = exports.PartyDetails = exports.UploadDarFileResponse = exports.GrantUserRightsResponse = exports.SubmitCommandResponse = exports.TopologyListPartiesResponse = exports.TopologyListVettedPackagesResponse = exports.ListVettedPackagesResponse = exports.ListUsersResponse = exports.ListUserRightsResponse = exports.ListSynchronizerTrustCertificateResponse = exports.ListSynchronizerParametersStateResponse = exports.ListSequencingParametersStateResponse = exports.ListSequencerSynchronizerStateResponse = exports.ListPartyToParticipantResponse = exports.ListPartyToKeyMappingResponse = exports.ListPartyHostingLimitsResponse = exports.ListParticipantSynchronizerPermissionResponse = exports.ListKeyOwnersResponse = exports.ListKnownPartiesResponse = exports.ListKnownPackagesResponse = exports.ListIdentityProviderConfigsResponse = exports.ListDarsResponse = exports.ListPackagesResponse = exports.ListOwnerToKeyMappingResponse = exports.ListNamespaceDelegationResponse = exports.ListMediatorSynchronizerStateResponse = exports.ListLsuSequencerConnectionSuccessorResponse = exports.ListLsuAnnouncementResponse = exports.ListDecentralizedNamespaceDefinitionResponse = void 0;
9
9
  var canton_client_js_1 = require("./client/canton-client.js");
10
10
  Object.defineProperty(exports, "CantonClient", { enumerable: true, get: function () { return canton_client_js_1.CantonClient; } });
11
11
  var canton_manager_js_1 = require("./query/canton-manager.js");
@@ -16,6 +16,8 @@ var memory_query_cache_js_1 = require("./query/cache/memory-query-cache.js");
16
16
  Object.defineProperty(exports, "MemoryQueryCache", { enumerable: true, get: function () { return memory_query_cache_js_1.MemoryQueryCache; } });
17
17
  var query_capability_error_js_1 = require("./query/errors/query-capability-error.js");
18
18
  Object.defineProperty(exports, "QueryCapabilityError", { enumerable: true, get: function () { return query_capability_error_js_1.QueryCapabilityError; } });
19
+ var query_snapshot_incomplete_error_js_1 = require("./query/errors/query-snapshot-incomplete-error.js");
20
+ Object.defineProperty(exports, "QuerySnapshotIncompleteError", { enumerable: true, get: function () { return query_snapshot_incomplete_error_js_1.QuerySnapshotIncompleteError; } });
19
21
  var pqs_query_error_js_1 = require("./query/errors/pqs-query-error.js");
20
22
  Object.defineProperty(exports, "PqsQueryError", { enumerable: true, get: function () { return pqs_query_error_js_1.PqsQueryError; } });
21
23
  var pqs_schema_profile_error_js_1 = require("./query/errors/pqs-schema-profile-error.js");
@@ -458,8 +460,8 @@ var list_user_rights_request_js_1 = require("./core/types/requests/list-user-rig
458
460
  Object.defineProperty(exports, "ListUserRightsRequest", { enumerable: true, get: function () { return list_user_rights_request_js_1.ListUserRightsRequest; } });
459
461
  var list_users_request_js_1 = require("./core/types/requests/list-users-request.js");
460
462
  Object.defineProperty(exports, "ListUsersRequest", { enumerable: true, get: function () { return list_users_request_js_1.ListUsersRequest; } });
461
- var submit_command_request_js_1 = require("./core/types/requests/submit-command-request.js");
462
- Object.defineProperty(exports, "SubmitCommandRequest", { enumerable: true, get: function () { return submit_command_request_js_1.SubmitCommandRequest; } });
463
+ var submit_commands_request_js_1 = require("./core/types/requests/submit-commands-request.js");
464
+ Object.defineProperty(exports, "SubmitCommandsRequest", { enumerable: true, get: function () { return submit_commands_request_js_1.SubmitCommandsRequest; } });
463
465
  var topology_list_parties_request_js_1 = require("./core/types/requests/topology-list-parties-request.js");
464
466
  Object.defineProperty(exports, "TopologyListPartiesRequest", { enumerable: true, get: function () { return topology_list_parties_request_js_1.TopologyListPartiesRequest; } });
465
467
  var wait_for_party_hosting_request_js_1 = require("./core/types/requests/wait-for-party-hosting-request.js");