@distrohelena/canton-typescript-sdk 0.1.0 → 0.1.1

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 (104) hide show
  1. package/README.md +60 -0
  2. package/dist/client/canton-client.d.ts +2 -0
  3. package/dist/client/canton-client.js +2 -0
  4. package/dist/client/service-registry.d.ts +2 -0
  5. package/dist/client/service-registry.js +104 -0
  6. package/dist/core/transports/transport.interface.d.ts +40 -0
  7. package/dist/core/types/external-party/external-party-crypto-key-format.d.ts +6 -0
  8. package/dist/core/types/external-party/external-party-crypto-key-format.js +7 -0
  9. package/dist/core/types/external-party/external-party-onboarding-transaction.d.ts +9 -0
  10. package/dist/core/types/external-party/external-party-onboarding-transaction.js +8 -0
  11. package/dist/core/types/external-party/external-party-signature-format.d.ts +7 -0
  12. package/dist/core/types/external-party/external-party-signature-format.js +8 -0
  13. package/dist/core/types/external-party/external-party-signature.d.ts +14 -0
  14. package/dist/core/types/external-party/external-party-signature.js +16 -0
  15. package/dist/core/types/external-party/external-party-signing-algorithm-spec.d.ts +7 -0
  16. package/dist/core/types/external-party/external-party-signing-algorithm-spec.js +8 -0
  17. package/dist/core/types/external-party/external-party-signing-key-spec.d.ts +8 -0
  18. package/dist/core/types/external-party/external-party-signing-key-spec.js +9 -0
  19. package/dist/core/types/external-party/external-party-signing-public-key.d.ts +12 -0
  20. package/dist/core/types/external-party/external-party-signing-public-key.js +12 -0
  21. package/dist/core/types/requests/add-topology-transactions-request.d.ts +16 -0
  22. package/dist/core/types/requests/add-topology-transactions-request.js +12 -0
  23. package/dist/core/types/requests/allocate-external-party-request.d.ts +18 -0
  24. package/dist/core/types/requests/allocate-external-party-request.js +16 -0
  25. package/dist/core/types/requests/assemble-signed-topology-transactions-request.d.ts +10 -0
  26. package/dist/core/types/requests/assemble-signed-topology-transactions-request.js +8 -0
  27. package/dist/core/types/requests/authorize-topology-transactions-request.d.ts +37 -0
  28. package/dist/core/types/requests/authorize-topology-transactions-request.js +35 -0
  29. package/dist/core/types/requests/create-temporary-topology-store-request.d.ts +8 -0
  30. package/dist/core/types/requests/create-temporary-topology-store-request.js +8 -0
  31. package/dist/core/types/requests/drop-temporary-topology-store-request.d.ts +7 -0
  32. package/dist/core/types/requests/drop-temporary-topology-store-request.js +6 -0
  33. package/dist/core/types/requests/generate-external-party-topology-request.d.ts +19 -0
  34. package/dist/core/types/requests/generate-external-party-topology-request.js +21 -0
  35. package/dist/core/types/requests/generate-topology-transactions-request.d.ts +26 -0
  36. package/dist/core/types/requests/generate-topology-transactions-request.js +22 -0
  37. package/dist/core/types/requests/import-topology-snapshot-request.d.ts +12 -0
  38. package/dist/core/types/requests/import-topology-snapshot-request.js +10 -0
  39. package/dist/core/types/requests/import-topology-snapshot-v2-request.d.ts +12 -0
  40. package/dist/core/types/requests/import-topology-snapshot-v2-request.js +10 -0
  41. package/dist/core/types/requests/sign-topology-transactions-request.d.ts +15 -0
  42. package/dist/core/types/requests/sign-topology-transactions-request.js +12 -0
  43. package/dist/core/types/responses/add-topology-transactions-response.d.ts +3 -0
  44. package/dist/core/types/responses/add-topology-transactions-response.js +5 -0
  45. package/dist/core/types/responses/allocate-external-party-response.d.ts +6 -0
  46. package/dist/core/types/responses/allocate-external-party-response.js +6 -0
  47. package/dist/core/types/responses/authorize-topology-transactions-response.d.ts +7 -0
  48. package/dist/core/types/responses/authorize-topology-transactions-response.js +6 -0
  49. package/dist/core/types/responses/create-temporary-topology-store-response.d.ts +7 -0
  50. package/dist/core/types/responses/create-temporary-topology-store-response.js +6 -0
  51. package/dist/core/types/responses/drop-temporary-topology-store-response.d.ts +3 -0
  52. package/dist/core/types/responses/drop-temporary-topology-store-response.js +5 -0
  53. package/dist/core/types/responses/generate-external-party-topology-response.d.ts +12 -0
  54. package/dist/core/types/responses/generate-external-party-topology-response.js +12 -0
  55. package/dist/core/types/responses/generate-topology-transactions-response.d.ts +7 -0
  56. package/dist/core/types/responses/generate-topology-transactions-response.js +6 -0
  57. package/dist/core/types/responses/import-topology-snapshot-response.d.ts +3 -0
  58. package/dist/core/types/responses/import-topology-snapshot-response.js +5 -0
  59. package/dist/core/types/responses/import-topology-snapshot-v2-response.d.ts +3 -0
  60. package/dist/core/types/responses/import-topology-snapshot-v2-response.js +5 -0
  61. package/dist/core/types/responses/sign-topology-transactions-response.d.ts +7 -0
  62. package/dist/core/types/responses/sign-topology-transactions-response.js +6 -0
  63. package/dist/core/types/topology/external-topology-signature.d.ts +18 -0
  64. package/dist/core/types/topology/external-topology-signature.js +16 -0
  65. package/dist/core/types/topology/generated-topology-transaction.d.ts +8 -0
  66. package/dist/core/types/topology/generated-topology-transaction.js +8 -0
  67. package/dist/core/types/topology/multi-topology-transaction-signature.d.ts +9 -0
  68. package/dist/core/types/topology/multi-topology-transaction-signature.js +8 -0
  69. package/dist/core/types/topology/prepared-topology-transaction.d.ts +10 -0
  70. package/dist/core/types/topology/prepared-topology-transaction.js +10 -0
  71. package/dist/core/types/topology/signed-topology-transaction.d.ts +14 -0
  72. package/dist/core/types/topology/signed-topology-transaction.js +14 -0
  73. package/dist/core/types/topology/topology-force-flag.d.ts +8 -0
  74. package/dist/core/types/topology/topology-force-flag.js +9 -0
  75. package/dist/core/types/topology/topology-mapping.d.ts +16 -0
  76. package/dist/core/types/topology/topology-mapping.js +1 -0
  77. package/dist/core/types/topology/topology-signature-delegation.d.ts +18 -0
  78. package/dist/core/types/topology/topology-signature-delegation.js +20 -0
  79. package/dist/core/types/topology/topology-signature-format.d.ts +3 -0
  80. package/dist/core/types/topology/topology-signature-format.js +4 -0
  81. package/dist/core/types/topology/topology-transaction-signature.d.ts +15 -0
  82. package/dist/core/types/topology/topology-transaction-signature.js +14 -0
  83. package/dist/daml-lf/container/dar-archive-loader.js +9 -0
  84. package/dist/index.d.ts +41 -0
  85. package/dist/index.js +40 -0
  86. package/dist/services/party-management/party-management-service-client.d.ts +8 -0
  87. package/dist/services/party-management/party-management-service-client.js +8 -0
  88. package/dist/services/topology-manager-write/topology-manager-write-service-client.d.ts +42 -0
  89. package/dist/services/topology-manager-write/topology-manager-write-service-client.js +44 -0
  90. package/dist/services/topology-manager-write/topology-signed-transaction-assembler.d.ts +3 -0
  91. package/dist/services/topology-manager-write/topology-signed-transaction-assembler.js +78 -0
  92. package/dist/transports/grpc/grpc-channel-factory.d.ts +13 -1
  93. package/dist/transports/grpc/grpc-channel-factory.js +48 -0
  94. package/dist/transports/grpc/grpc-transport.d.ts +14 -0
  95. package/dist/transports/grpc/grpc-transport.js +52 -0
  96. package/dist/transports/grpc/mappers/external-party-management-mapper.d.ts +9 -0
  97. package/dist/transports/grpc/mappers/external-party-management-mapper.js +126 -0
  98. package/dist/transports/grpc/mappers/topology-manager-write-mapper.d.ts +33 -0
  99. package/dist/transports/grpc/mappers/topology-manager-write-mapper.js +436 -0
  100. package/dist/transports/json/json-transport.d.ts +14 -0
  101. package/dist/transports/json/json-transport.js +43 -6
  102. package/dist/transports/json/mappers/parties-mapper.d.ts +13 -2
  103. package/dist/transports/json/mappers/parties-mapper.js +15 -1
  104. package/package.json +3 -2
@@ -0,0 +1,18 @@
1
+ export declare class TopologySignatureDelegation {
2
+ readonly sessionKey: Uint8Array;
3
+ readonly sessionKeySpec?: string;
4
+ readonly validityPeriodFromInclusive: string;
5
+ readonly validityPeriodDurationSeconds: number;
6
+ readonly format?: string;
7
+ readonly signature: Uint8Array;
8
+ readonly signingAlgorithmSpec?: string;
9
+ constructor(init?: {
10
+ sessionKey?: Uint8Array;
11
+ sessionKeySpec?: string;
12
+ validityPeriodFromInclusive?: string;
13
+ validityPeriodDurationSeconds?: number;
14
+ format?: string;
15
+ signature?: Uint8Array;
16
+ signingAlgorithmSpec?: string;
17
+ });
18
+ }
@@ -0,0 +1,20 @@
1
+ export class TopologySignatureDelegation {
2
+ sessionKey;
3
+ sessionKeySpec;
4
+ validityPeriodFromInclusive;
5
+ validityPeriodDurationSeconds;
6
+ format;
7
+ signature;
8
+ signingAlgorithmSpec;
9
+ constructor(init = {}) {
10
+ this.sessionKey = new Uint8Array(init.sessionKey ?? []);
11
+ this.sessionKeySpec = init.sessionKeySpec;
12
+ this.validityPeriodFromInclusive =
13
+ init.validityPeriodFromInclusive ?? "0";
14
+ this.validityPeriodDurationSeconds =
15
+ init.validityPeriodDurationSeconds ?? 0;
16
+ this.format = init.format;
17
+ this.signature = new Uint8Array(init.signature ?? []);
18
+ this.signingAlgorithmSpec = init.signingAlgorithmSpec;
19
+ }
20
+ }
@@ -0,0 +1,3 @@
1
+ export declare enum TopologySignatureFormat {
2
+ ed25519 = "ed25519"
3
+ }
@@ -0,0 +1,4 @@
1
+ export var TopologySignatureFormat;
2
+ (function (TopologySignatureFormat) {
3
+ TopologySignatureFormat["ed25519"] = "ed25519";
4
+ })(TopologySignatureFormat || (TopologySignatureFormat = {}));
@@ -0,0 +1,15 @@
1
+ import { TopologySignatureDelegation } from "./topology-signature-delegation.js";
2
+ export declare class TopologyTransactionSignature {
3
+ readonly format?: string;
4
+ readonly signature: Uint8Array;
5
+ readonly signedByFingerprint: string;
6
+ readonly signingAlgorithmSpec?: string;
7
+ readonly signatureDelegation?: TopologySignatureDelegation;
8
+ constructor(init?: {
9
+ format?: string;
10
+ signature?: Uint8Array;
11
+ signedByFingerprint?: string;
12
+ signingAlgorithmSpec?: string;
13
+ signatureDelegation?: TopologySignatureDelegation;
14
+ });
15
+ }
@@ -0,0 +1,14 @@
1
+ export class TopologyTransactionSignature {
2
+ format;
3
+ signature;
4
+ signedByFingerprint;
5
+ signingAlgorithmSpec;
6
+ signatureDelegation;
7
+ constructor(init = {}) {
8
+ this.format = init.format;
9
+ this.signature = new Uint8Array(init.signature ?? []);
10
+ this.signedByFingerprint = init.signedByFingerprint ?? "";
11
+ this.signingAlgorithmSpec = init.signingAlgorithmSpec;
12
+ this.signatureDelegation = init.signatureDelegation;
13
+ }
14
+ }
@@ -39,18 +39,27 @@ export class DarArchiveLoader {
39
39
  }
40
40
  parseManifestOrThrow(manifestText) {
41
41
  const properties = new Map();
42
+ let currentKey;
42
43
  for (const rawLine of manifestText.split(/\r?\n/)) {
44
+ if (rawLine.startsWith(" ") && currentKey !== undefined) {
45
+ const currentValue = properties.get(currentKey) ?? "";
46
+ properties.set(currentKey, `${currentValue}${rawLine.slice(1)}`);
47
+ continue;
48
+ }
43
49
  const line = rawLine.trim();
44
50
  if (line.length === 0) {
51
+ currentKey = undefined;
45
52
  continue;
46
53
  }
47
54
  const delimiterIndex = line.indexOf(":");
48
55
  if (delimiterIndex < 0) {
56
+ currentKey = undefined;
49
57
  continue;
50
58
  }
51
59
  const key = line.slice(0, delimiterIndex).trim();
52
60
  const value = line.slice(delimiterIndex + 1).trim();
53
61
  properties.set(key, value);
62
+ currentKey = key;
54
63
  }
55
64
  const mainDalfPath = properties.get("Main-Dalf");
56
65
  if (mainDalfPath === undefined || mainDalfPath.length === 0) {
package/dist/index.d.ts CHANGED
@@ -23,6 +23,7 @@ export { ResourceManagementServiceClient } from "./services/resource-management/
23
23
  export { StateServiceClient } from "./services/state/state-service-client.js";
24
24
  export { TopologyAggregationServiceClient } from "./services/topology-aggregation/topology-aggregation-service-client.js";
25
25
  export { TopologyManagerReadServiceClient } from "./services/topology-manager-read/topology-manager-read-service-client.js";
26
+ export { TopologyManagerWriteServiceClient } from "./services/topology-manager-write/topology-manager-write-service-client.js";
26
27
  export { TrafficControlServiceClient } from "./services/traffic-control/traffic-control-service-client.js";
27
28
  export { UpdateServiceClient } from "./services/update/update-service-client.js";
28
29
  export { UserManagementServiceClient } from "./services/user-management/user-management-service-client.js";
@@ -36,6 +37,13 @@ export { SignCommandResult } from "./core/signing/sign-command-result.js";
36
37
  export type { ITransport } from "./core/transports/transport.interface.js";
37
38
  export { TransportCapability } from "./core/transports/transport-capability.js";
38
39
  export { TransportKind } from "./core/types/transport-kind.js";
40
+ export { ExternalPartyCryptoKeyFormat } from "./core/types/external-party/external-party-crypto-key-format.js";
41
+ export { ExternalPartyOnboardingTransaction } from "./core/types/external-party/external-party-onboarding-transaction.js";
42
+ export { ExternalPartySignature } from "./core/types/external-party/external-party-signature.js";
43
+ export { ExternalPartySignatureFormat } from "./core/types/external-party/external-party-signature-format.js";
44
+ export { ExternalPartySigningAlgorithmSpec } from "./core/types/external-party/external-party-signing-algorithm-spec.js";
45
+ export { ExternalPartySigningKeySpec } from "./core/types/external-party/external-party-signing-key-spec.js";
46
+ export { ExternalPartySigningPublicKey } from "./core/types/external-party/external-party-signing-public-key.js";
39
47
  export { GrpcChannelSecurity } from "./core/types/grpc-channel-security.js";
40
48
  export { SubmissionMode } from "./core/types/submission-mode.js";
41
49
  export { AdminComponentHealthKind } from "./core/types/admin-component-health-kind.js";
@@ -133,8 +141,12 @@ export { SynchronizerTrustCertificate } from "./core/types/topology/synchronizer
133
141
  export { TopologyBaseQuery } from "./core/types/topology/topology-base-query.js";
134
142
  export { TopologyBaseResult } from "./core/types/topology/topology-base-result.js";
135
143
  export { TopologyDuration } from "./core/types/topology/topology-duration.js";
144
+ export { ExternalTopologySignature } from "./core/types/topology/external-topology-signature.js";
136
145
  export { TopologyEncryptionPublicKey } from "./core/types/topology/topology-public-key.js";
146
+ export { GeneratedTopologyTransaction } from "./core/types/topology/generated-topology-transaction.js";
147
+ export { MultiTopologyTransactionSignature } from "./core/types/topology/multi-topology-transaction-signature.js";
137
148
  export { TopologyKeyOwnerResult } from "./core/types/topology/topology-key-owner-result.js";
149
+ export type { TopologyMapping } from "./core/types/topology/topology-mapping.js";
138
150
  export { TopologyMappingCode } from "./core/types/topology/topology-mapping-code.js";
139
151
  export { TopologyMappingOperation } from "./core/types/topology/topology-mapping-operation.js";
140
152
  export { TopologyMappingResult } from "./core/types/topology/topology-mapping-result.js";
@@ -142,6 +154,9 @@ export { TopologyPartyParticipant } from "./core/types/topology/topology-party-r
142
154
  export { TopologyPartyParticipantSynchronizerPermission } from "./core/types/topology/topology-party-result.js";
143
155
  export { TopologyPartyResult } from "./core/types/topology/topology-party-result.js";
144
156
  export { TopologyPublicKey } from "./core/types/topology/topology-public-key.js";
157
+ export { TopologyForceFlag } from "./core/types/topology/topology-force-flag.js";
158
+ export { TopologySignatureDelegation } from "./core/types/topology/topology-signature-delegation.js";
159
+ export { TopologySignatureFormat } from "./core/types/topology/topology-signature-format.js";
145
160
  export { TopologySigningKeysWithThreshold } from "./core/types/topology/topology-public-key.js";
146
161
  export { TopologySigningPublicKey } from "./core/types/topology/topology-public-key.js";
147
162
  export { TopologyStoreAuthorized } from "./core/types/topology/topology-store-id.js";
@@ -150,6 +165,7 @@ export { TopologyStoreKind } from "./core/types/topology/topology-store-id.js";
150
165
  export { TopologyStoreSynchronizer } from "./core/types/topology/topology-store-id.js";
151
166
  export { TopologyStoreTemporary } from "./core/types/topology/topology-store-id.js";
152
167
  export { TopologyTimeRange } from "./core/types/topology/topology-base-query.js";
168
+ export { TopologyTransactionSignature } from "./core/types/topology/topology-transaction-signature.js";
153
169
  export { TopologyTransactionItem } from "./core/types/topology/topology-transactions.js";
154
170
  export { TopologyTransactions } from "./core/types/topology/topology-transactions.js";
155
171
  export { TopologyVettedPackage } from "./core/types/topology/vetted-package.js";
@@ -157,10 +173,22 @@ export { TopologyVettedPackages } from "./core/types/topology/vetted-packages.js
157
173
  export { TrafficControlParameters } from "./core/types/topology/dynamic-synchronizer-parameters.js";
158
174
  export { VettedPackage } from "./core/types/vetted-package.js";
159
175
  export { VettedPackages } from "./core/types/vetted-packages.js";
176
+ export { PreparedTopologyTransaction } from "./core/types/topology/prepared-topology-transaction.js";
177
+ export { SignedTopologyTransaction } from "./core/types/topology/signed-topology-transaction.js";
160
178
  export { CreateCommand } from "./core/types/commands/create-command.js";
179
+ export { AddTopologyTransactionsRequest } from "./core/types/requests/add-topology-transactions-request.js";
180
+ export { AllocateExternalPartyRequest } from "./core/types/requests/allocate-external-party-request.js";
161
181
  export { AllocatePartyRequest } from "./core/types/requests/allocate-party-request.js";
182
+ export { AssembleSignedTopologyTransactionsRequest } from "./core/types/requests/assemble-signed-topology-transactions-request.js";
183
+ export { AuthorizeTopologyTransactionsProposal } from "./core/types/requests/authorize-topology-transactions-request.js";
184
+ export { AuthorizeTopologyTransactionsRequest } from "./core/types/requests/authorize-topology-transactions-request.js";
162
185
  export { CountInFlightRequest } from "./core/types/requests/count-in-flight-request.js";
186
+ export { CreateTemporaryTopologyStoreRequest } from "./core/types/requests/create-temporary-topology-store-request.js";
163
187
  export { CurrentTimeRequest } from "./core/types/requests/current-time-request.js";
188
+ export { DropTemporaryTopologyStoreRequest } from "./core/types/requests/drop-temporary-topology-store-request.js";
189
+ export { GenerateTopologyTransactionsProposal } from "./core/types/requests/generate-topology-transactions-request.js";
190
+ export { GenerateTopologyTransactionsRequest } from "./core/types/requests/generate-topology-transactions-request.js";
191
+ export { GenerateExternalPartyTopologyRequest } from "./core/types/requests/generate-external-party-topology-request.js";
164
192
  export { GetDarContentsRequest } from "./core/types/requests/get-dar-contents-request.js";
165
193
  export { GetDarRequest } from "./core/types/requests/get-dar-request.js";
166
194
  export { GetActiveContractsPageRequest } from "./core/types/requests/get-active-contracts-page-request.js";
@@ -180,6 +208,8 @@ export { GetHighestOffsetByTimestampRequest } from "./core/types/requests/get-hi
180
208
  export { GetIdentityProviderConfigRequest } from "./core/types/requests/get-identity-provider-config-request.js";
181
209
  export { GetIdRequest } from "./core/types/requests/get-id-request.js";
182
210
  export { GetIntervalsBehindForCounterParticipantsRequest } from "./core/types/requests/get-intervals-behind-for-counter-participants-request.js";
211
+ export { ImportTopologySnapshotRequest } from "./core/types/requests/import-topology-snapshot-request.js";
212
+ export { ImportTopologySnapshotV2Request } from "./core/types/requests/import-topology-snapshot-v2-request.js";
183
213
  export { InspectCommitmentContractsRequest } from "./core/types/requests/inspect-commitment-contracts-request.js";
184
214
  export { GetNoWaitCommitmentsFromRequest } from "./core/types/requests/get-no-wait-commitments-from-request.js";
185
215
  export { GetParticipantPruningScheduleRequest } from "./core/types/requests/get-participant-pruning-schedule-request.js";
@@ -234,12 +264,14 @@ export { LookupReceivedAcsCommitmentsRequest } from "./core/types/requests/looku
234
264
  export { LookupSentAcsCommitmentsRequest } from "./core/types/requests/lookup-sent-acs-commitments-request.js";
235
265
  export { LookupOffsetByTimeRequest } from "./core/types/requests/lookup-offset-by-time-request.js";
236
266
  export { OpenCommitmentRequest } from "./core/types/requests/open-commitment-request.js";
267
+ export { SignTopologyTransactionsRequest } from "./core/types/requests/sign-topology-transactions-request.js";
237
268
  export { SubmitCommandRequest } from "./core/types/requests/submit-command-request.js";
238
269
  export { TopologyListPartiesRequest } from "./core/types/requests/topology-list-parties-request.js";
239
270
  export { TrafficControlStateRequest } from "./core/types/requests/traffic-control-state-request.js";
240
271
  export { GrantUserRightsRequest } from "./core/types/requests/grant-user-rights-request.js";
241
272
  export type { UserRightAssignment } from "./core/types/requests/grant-user-rights-request.js";
242
273
  export { UploadDarFileRequest } from "./core/types/requests/upload-dar-file-request.js";
274
+ export { AllocateExternalPartyResponse } from "./core/types/responses/allocate-external-party-response.js";
243
275
  export { AllocatePartyResponse } from "./core/types/responses/allocate-party-response.js";
244
276
  export { CountInFlightResponse } from "./core/types/responses/count-in-flight-response.js";
245
277
  export { CurrentTimeResponse } from "./core/types/responses/current-time-response.js";
@@ -278,6 +310,14 @@ export { GetUpdateByIdResponse } from "./core/types/responses/get-update-by-id-r
278
310
  export { GetUpdateByOffsetResponse } from "./core/types/responses/get-update-by-offset-response.js";
279
311
  export { GetUpdatesPageResponse } from "./core/types/responses/get-updates-page-response.js";
280
312
  export { GetUserResponse } from "./core/types/responses/get-user-response.js";
313
+ export { AddTopologyTransactionsResponse } from "./core/types/responses/add-topology-transactions-response.js";
314
+ export { AuthorizeTopologyTransactionsResponse } from "./core/types/responses/authorize-topology-transactions-response.js";
315
+ export { CreateTemporaryTopologyStoreResponse } from "./core/types/responses/create-temporary-topology-store-response.js";
316
+ export { DropTemporaryTopologyStoreResponse } from "./core/types/responses/drop-temporary-topology-store-response.js";
317
+ export { GenerateExternalPartyTopologyResponse } from "./core/types/responses/generate-external-party-topology-response.js";
318
+ export { GenerateTopologyTransactionsResponse } from "./core/types/responses/generate-topology-transactions-response.js";
319
+ export { ImportTopologySnapshotResponse } from "./core/types/responses/import-topology-snapshot-response.js";
320
+ export { ImportTopologySnapshotV2Response } from "./core/types/responses/import-topology-snapshot-v2-response.js";
281
321
  export { ListAllResponse } from "./core/types/responses/list-all-response.js";
282
322
  export { ListAllV2Response } from "./core/types/responses/list-all-v2-response.js";
283
323
  export { ListAvailableStoresResponse } from "./core/types/responses/list-available-stores-response.js";
@@ -311,6 +351,7 @@ export { ListUserRightsResponse } from "./core/types/responses/list-user-rights-
311
351
  export { ListUsersResponse } from "./core/types/responses/list-users-response.js";
312
352
  export { ListVettedPackagesResponse } from "./core/types/responses/list-vetted-packages-response.js";
313
353
  export { LookupOffsetByTimeResponse } from "./core/types/responses/lookup-offset-by-time-response.js";
354
+ export { SignTopologyTransactionsResponse } from "./core/types/responses/sign-topology-transactions-response.js";
314
355
  export { TopologyListVettedPackagesResponse } from "./core/types/responses/topology-list-vetted-packages-response.js";
315
356
  export { TopologyListPartiesResponse } from "./core/types/responses/topology-list-parties-response.js";
316
357
  export { TrafficControlStateResponse } from "./core/types/responses/traffic-control-state-response.js";
package/dist/index.js CHANGED
@@ -22,6 +22,7 @@ export { ResourceManagementServiceClient } from "./services/resource-management/
22
22
  export { StateServiceClient } from "./services/state/state-service-client.js";
23
23
  export { TopologyAggregationServiceClient } from "./services/topology-aggregation/topology-aggregation-service-client.js";
24
24
  export { TopologyManagerReadServiceClient } from "./services/topology-manager-read/topology-manager-read-service-client.js";
25
+ export { TopologyManagerWriteServiceClient } from "./services/topology-manager-write/topology-manager-write-service-client.js";
25
26
  export { TrafficControlServiceClient } from "./services/traffic-control/traffic-control-service-client.js";
26
27
  export { UpdateServiceClient } from "./services/update/update-service-client.js";
27
28
  export { UserManagementServiceClient } from "./services/user-management/user-management-service-client.js";
@@ -32,6 +33,13 @@ export { SignCommandRequest } from "./core/signing/sign-command-request.js";
32
33
  export { SignCommandResult } from "./core/signing/sign-command-result.js";
33
34
  export { TransportCapability } from "./core/transports/transport-capability.js";
34
35
  export { TransportKind } from "./core/types/transport-kind.js";
36
+ export { ExternalPartyCryptoKeyFormat } from "./core/types/external-party/external-party-crypto-key-format.js";
37
+ export { ExternalPartyOnboardingTransaction } from "./core/types/external-party/external-party-onboarding-transaction.js";
38
+ export { ExternalPartySignature } from "./core/types/external-party/external-party-signature.js";
39
+ export { ExternalPartySignatureFormat } from "./core/types/external-party/external-party-signature-format.js";
40
+ export { ExternalPartySigningAlgorithmSpec } from "./core/types/external-party/external-party-signing-algorithm-spec.js";
41
+ export { ExternalPartySigningKeySpec } from "./core/types/external-party/external-party-signing-key-spec.js";
42
+ export { ExternalPartySigningPublicKey } from "./core/types/external-party/external-party-signing-public-key.js";
35
43
  export { GrpcChannelSecurity } from "./core/types/grpc-channel-security.js";
36
44
  export { SubmissionMode } from "./core/types/submission-mode.js";
37
45
  export { AdminComponentHealthKind } from "./core/types/admin-component-health-kind.js";
@@ -129,7 +137,10 @@ export { SynchronizerTrustCertificate } from "./core/types/topology/synchronizer
129
137
  export { TopologyBaseQuery } from "./core/types/topology/topology-base-query.js";
130
138
  export { TopologyBaseResult } from "./core/types/topology/topology-base-result.js";
131
139
  export { TopologyDuration } from "./core/types/topology/topology-duration.js";
140
+ export { ExternalTopologySignature } from "./core/types/topology/external-topology-signature.js";
132
141
  export { TopologyEncryptionPublicKey } from "./core/types/topology/topology-public-key.js";
142
+ export { GeneratedTopologyTransaction } from "./core/types/topology/generated-topology-transaction.js";
143
+ export { MultiTopologyTransactionSignature } from "./core/types/topology/multi-topology-transaction-signature.js";
133
144
  export { TopologyKeyOwnerResult } from "./core/types/topology/topology-key-owner-result.js";
134
145
  export { TopologyMappingCode } from "./core/types/topology/topology-mapping-code.js";
135
146
  export { TopologyMappingOperation } from "./core/types/topology/topology-mapping-operation.js";
@@ -138,6 +149,9 @@ export { TopologyPartyParticipant } from "./core/types/topology/topology-party-r
138
149
  export { TopologyPartyParticipantSynchronizerPermission } from "./core/types/topology/topology-party-result.js";
139
150
  export { TopologyPartyResult } from "./core/types/topology/topology-party-result.js";
140
151
  export { TopologyPublicKey } from "./core/types/topology/topology-public-key.js";
152
+ export { TopologyForceFlag } from "./core/types/topology/topology-force-flag.js";
153
+ export { TopologySignatureDelegation } from "./core/types/topology/topology-signature-delegation.js";
154
+ export { TopologySignatureFormat } from "./core/types/topology/topology-signature-format.js";
141
155
  export { TopologySigningKeysWithThreshold } from "./core/types/topology/topology-public-key.js";
142
156
  export { TopologySigningPublicKey } from "./core/types/topology/topology-public-key.js";
143
157
  export { TopologyStoreAuthorized } from "./core/types/topology/topology-store-id.js";
@@ -146,6 +160,7 @@ export { TopologyStoreKind } from "./core/types/topology/topology-store-id.js";
146
160
  export { TopologyStoreSynchronizer } from "./core/types/topology/topology-store-id.js";
147
161
  export { TopologyStoreTemporary } from "./core/types/topology/topology-store-id.js";
148
162
  export { TopologyTimeRange } from "./core/types/topology/topology-base-query.js";
163
+ export { TopologyTransactionSignature } from "./core/types/topology/topology-transaction-signature.js";
149
164
  export { TopologyTransactionItem } from "./core/types/topology/topology-transactions.js";
150
165
  export { TopologyTransactions } from "./core/types/topology/topology-transactions.js";
151
166
  export { TopologyVettedPackage } from "./core/types/topology/vetted-package.js";
@@ -153,10 +168,22 @@ export { TopologyVettedPackages } from "./core/types/topology/vetted-packages.js
153
168
  export { TrafficControlParameters } from "./core/types/topology/dynamic-synchronizer-parameters.js";
154
169
  export { VettedPackage } from "./core/types/vetted-package.js";
155
170
  export { VettedPackages } from "./core/types/vetted-packages.js";
171
+ export { PreparedTopologyTransaction } from "./core/types/topology/prepared-topology-transaction.js";
172
+ export { SignedTopologyTransaction } from "./core/types/topology/signed-topology-transaction.js";
156
173
  export { CreateCommand } from "./core/types/commands/create-command.js";
174
+ export { AddTopologyTransactionsRequest } from "./core/types/requests/add-topology-transactions-request.js";
175
+ export { AllocateExternalPartyRequest } from "./core/types/requests/allocate-external-party-request.js";
157
176
  export { AllocatePartyRequest } from "./core/types/requests/allocate-party-request.js";
177
+ export { AssembleSignedTopologyTransactionsRequest } from "./core/types/requests/assemble-signed-topology-transactions-request.js";
178
+ export { AuthorizeTopologyTransactionsProposal } from "./core/types/requests/authorize-topology-transactions-request.js";
179
+ export { AuthorizeTopologyTransactionsRequest } from "./core/types/requests/authorize-topology-transactions-request.js";
158
180
  export { CountInFlightRequest } from "./core/types/requests/count-in-flight-request.js";
181
+ export { CreateTemporaryTopologyStoreRequest } from "./core/types/requests/create-temporary-topology-store-request.js";
159
182
  export { CurrentTimeRequest } from "./core/types/requests/current-time-request.js";
183
+ export { DropTemporaryTopologyStoreRequest } from "./core/types/requests/drop-temporary-topology-store-request.js";
184
+ export { GenerateTopologyTransactionsProposal } from "./core/types/requests/generate-topology-transactions-request.js";
185
+ export { GenerateTopologyTransactionsRequest } from "./core/types/requests/generate-topology-transactions-request.js";
186
+ export { GenerateExternalPartyTopologyRequest } from "./core/types/requests/generate-external-party-topology-request.js";
160
187
  export { GetDarContentsRequest } from "./core/types/requests/get-dar-contents-request.js";
161
188
  export { GetDarRequest } from "./core/types/requests/get-dar-request.js";
162
189
  export { GetActiveContractsPageRequest } from "./core/types/requests/get-active-contracts-page-request.js";
@@ -176,6 +203,8 @@ export { GetHighestOffsetByTimestampRequest } from "./core/types/requests/get-hi
176
203
  export { GetIdentityProviderConfigRequest } from "./core/types/requests/get-identity-provider-config-request.js";
177
204
  export { GetIdRequest } from "./core/types/requests/get-id-request.js";
178
205
  export { GetIntervalsBehindForCounterParticipantsRequest } from "./core/types/requests/get-intervals-behind-for-counter-participants-request.js";
206
+ export { ImportTopologySnapshotRequest } from "./core/types/requests/import-topology-snapshot-request.js";
207
+ export { ImportTopologySnapshotV2Request } from "./core/types/requests/import-topology-snapshot-v2-request.js";
179
208
  export { InspectCommitmentContractsRequest } from "./core/types/requests/inspect-commitment-contracts-request.js";
180
209
  export { GetNoWaitCommitmentsFromRequest } from "./core/types/requests/get-no-wait-commitments-from-request.js";
181
210
  export { GetParticipantPruningScheduleRequest } from "./core/types/requests/get-participant-pruning-schedule-request.js";
@@ -230,11 +259,13 @@ export { LookupReceivedAcsCommitmentsRequest } from "./core/types/requests/looku
230
259
  export { LookupSentAcsCommitmentsRequest } from "./core/types/requests/lookup-sent-acs-commitments-request.js";
231
260
  export { LookupOffsetByTimeRequest } from "./core/types/requests/lookup-offset-by-time-request.js";
232
261
  export { OpenCommitmentRequest } from "./core/types/requests/open-commitment-request.js";
262
+ export { SignTopologyTransactionsRequest } from "./core/types/requests/sign-topology-transactions-request.js";
233
263
  export { SubmitCommandRequest } from "./core/types/requests/submit-command-request.js";
234
264
  export { TopologyListPartiesRequest } from "./core/types/requests/topology-list-parties-request.js";
235
265
  export { TrafficControlStateRequest } from "./core/types/requests/traffic-control-state-request.js";
236
266
  export { GrantUserRightsRequest } from "./core/types/requests/grant-user-rights-request.js";
237
267
  export { UploadDarFileRequest } from "./core/types/requests/upload-dar-file-request.js";
268
+ export { AllocateExternalPartyResponse } from "./core/types/responses/allocate-external-party-response.js";
238
269
  export { AllocatePartyResponse } from "./core/types/responses/allocate-party-response.js";
239
270
  export { CountInFlightResponse } from "./core/types/responses/count-in-flight-response.js";
240
271
  export { CurrentTimeResponse } from "./core/types/responses/current-time-response.js";
@@ -273,6 +304,14 @@ export { GetUpdateByIdResponse } from "./core/types/responses/get-update-by-id-r
273
304
  export { GetUpdateByOffsetResponse } from "./core/types/responses/get-update-by-offset-response.js";
274
305
  export { GetUpdatesPageResponse } from "./core/types/responses/get-updates-page-response.js";
275
306
  export { GetUserResponse } from "./core/types/responses/get-user-response.js";
307
+ export { AddTopologyTransactionsResponse } from "./core/types/responses/add-topology-transactions-response.js";
308
+ export { AuthorizeTopologyTransactionsResponse } from "./core/types/responses/authorize-topology-transactions-response.js";
309
+ export { CreateTemporaryTopologyStoreResponse } from "./core/types/responses/create-temporary-topology-store-response.js";
310
+ export { DropTemporaryTopologyStoreResponse } from "./core/types/responses/drop-temporary-topology-store-response.js";
311
+ export { GenerateExternalPartyTopologyResponse } from "./core/types/responses/generate-external-party-topology-response.js";
312
+ export { GenerateTopologyTransactionsResponse } from "./core/types/responses/generate-topology-transactions-response.js";
313
+ export { ImportTopologySnapshotResponse } from "./core/types/responses/import-topology-snapshot-response.js";
314
+ export { ImportTopologySnapshotV2Response } from "./core/types/responses/import-topology-snapshot-v2-response.js";
276
315
  export { ListAllResponse } from "./core/types/responses/list-all-response.js";
277
316
  export { ListAllV2Response } from "./core/types/responses/list-all-v2-response.js";
278
317
  export { ListAvailableStoresResponse } from "./core/types/responses/list-available-stores-response.js";
@@ -306,6 +345,7 @@ export { ListUserRightsResponse } from "./core/types/responses/list-user-rights-
306
345
  export { ListUsersResponse } from "./core/types/responses/list-users-response.js";
307
346
  export { ListVettedPackagesResponse } from "./core/types/responses/list-vetted-packages-response.js";
308
347
  export { LookupOffsetByTimeResponse } from "./core/types/responses/lookup-offset-by-time-response.js";
348
+ export { SignTopologyTransactionsResponse } from "./core/types/responses/sign-topology-transactions-response.js";
309
349
  export { TopologyListVettedPackagesResponse } from "./core/types/responses/topology-list-vetted-packages-response.js";
310
350
  export { TopologyListPartiesResponse } from "./core/types/responses/topology-list-parties-response.js";
311
351
  export { TrafficControlStateResponse } from "./core/types/responses/traffic-control-state-response.js";
@@ -1,10 +1,14 @@
1
1
  import { ITransport } from "../../core/transports/transport.interface.js";
2
2
  import { RequestOptions } from "../../core/types/request-options.js";
3
+ import { AllocateExternalPartyRequest } from "../../core/types/requests/allocate-external-party-request.js";
3
4
  import { AllocatePartyRequest } from "../../core/types/requests/allocate-party-request.js";
5
+ import { GenerateExternalPartyTopologyRequest } from "../../core/types/requests/generate-external-party-topology-request.js";
6
+ import { AllocateExternalPartyResponse } from "../../core/types/responses/allocate-external-party-response.js";
4
7
  import { GetParticipantIdRequest } from "../../core/types/requests/get-participant-id-request.js";
5
8
  import { GetPartiesRequest } from "../../core/types/requests/get-parties-request.js";
6
9
  import { ListKnownPartiesRequest } from "../../core/types/requests/list-known-parties-request.js";
7
10
  import { AllocatePartyResponse } from "../../core/types/responses/allocate-party-response.js";
11
+ import { GenerateExternalPartyTopologyResponse } from "../../core/types/responses/generate-external-party-topology-response.js";
8
12
  import { GetParticipantIdResponse } from "../../core/types/responses/get-participant-id-response.js";
9
13
  import { GetPartiesResponse } from "../../core/types/responses/get-parties-response.js";
10
14
  import { ListKnownPartiesResponse } from "../../core/types/responses/list-known-parties-response.js";
@@ -19,4 +23,8 @@ export declare class PartyManagementServiceClient {
19
23
  getPartiesAsync(request: GetPartiesRequest, options?: RequestOptions): Promise<GetPartiesResponse>;
20
24
  /** Allocates a party. Supported on JSON and gRPC. */
21
25
  allocatePartyAsync(request: AllocatePartyRequest, options?: RequestOptions): Promise<AllocatePartyResponse>;
26
+ /** Generates external-party topology through the ledger-admin API. Supported on gRPC; JSON rejects it. */
27
+ generateExternalPartyTopologyAsync(request: GenerateExternalPartyTopologyRequest, options?: RequestOptions): Promise<GenerateExternalPartyTopologyResponse>;
28
+ /** Allocates an external party through the ledger-admin API. Supported on gRPC; JSON rejects it. */
29
+ allocateExternalPartyAsync(request: AllocateExternalPartyRequest, options?: RequestOptions): Promise<AllocateExternalPartyResponse>;
22
30
  }
@@ -20,4 +20,12 @@ export class PartyManagementServiceClient {
20
20
  allocatePartyAsync(request, options) {
21
21
  return this.transport.allocatePartyAsync(request, options);
22
22
  }
23
+ /** Generates external-party topology through the ledger-admin API. Supported on gRPC; JSON rejects it. */
24
+ generateExternalPartyTopologyAsync(request, options) {
25
+ return this.transport.generateExternalPartyTopologyAsync(request, options);
26
+ }
27
+ /** Allocates an external party through the ledger-admin API. Supported on gRPC; JSON rejects it. */
28
+ allocateExternalPartyAsync(request, options) {
29
+ return this.transport.allocateExternalPartyAsync(request, options);
30
+ }
23
31
  }
@@ -0,0 +1,42 @@
1
+ import { ITransport } from "../../core/transports/transport.interface.js";
2
+ import { RequestOptions } from "../../core/types/request-options.js";
3
+ import { AddTopologyTransactionsRequest } from "../../core/types/requests/add-topology-transactions-request.js";
4
+ import { AssembleSignedTopologyTransactionsRequest } from "../../core/types/requests/assemble-signed-topology-transactions-request.js";
5
+ import { AuthorizeTopologyTransactionsRequest } from "../../core/types/requests/authorize-topology-transactions-request.js";
6
+ import { CreateTemporaryTopologyStoreRequest } from "../../core/types/requests/create-temporary-topology-store-request.js";
7
+ import { DropTemporaryTopologyStoreRequest } from "../../core/types/requests/drop-temporary-topology-store-request.js";
8
+ import { GenerateTopologyTransactionsRequest } from "../../core/types/requests/generate-topology-transactions-request.js";
9
+ import { ImportTopologySnapshotRequest } from "../../core/types/requests/import-topology-snapshot-request.js";
10
+ import { ImportTopologySnapshotV2Request } from "../../core/types/requests/import-topology-snapshot-v2-request.js";
11
+ import { SignTopologyTransactionsRequest } from "../../core/types/requests/sign-topology-transactions-request.js";
12
+ import { AddTopologyTransactionsResponse } from "../../core/types/responses/add-topology-transactions-response.js";
13
+ import { AuthorizeTopologyTransactionsResponse } from "../../core/types/responses/authorize-topology-transactions-response.js";
14
+ import { CreateTemporaryTopologyStoreResponse } from "../../core/types/responses/create-temporary-topology-store-response.js";
15
+ import { DropTemporaryTopologyStoreResponse } from "../../core/types/responses/drop-temporary-topology-store-response.js";
16
+ import { GenerateTopologyTransactionsResponse } from "../../core/types/responses/generate-topology-transactions-response.js";
17
+ import { ImportTopologySnapshotResponse } from "../../core/types/responses/import-topology-snapshot-response.js";
18
+ import { ImportTopologySnapshotV2Response } from "../../core/types/responses/import-topology-snapshot-v2-response.js";
19
+ import { SignTopologyTransactionsResponse } from "../../core/types/responses/sign-topology-transactions-response.js";
20
+ import { SignedTopologyTransaction } from "../../core/types/topology/signed-topology-transaction.js";
21
+ export declare class TopologyManagerWriteServiceClient {
22
+ private readonly transport;
23
+ constructor(transport: ITransport);
24
+ /** Authorizes topology transactions. Supported on gRPC; JSON rejects it. */
25
+ authorizeAsync(request: AuthorizeTopologyTransactionsRequest, options?: RequestOptions): Promise<AuthorizeTopologyTransactionsResponse>;
26
+ /** Adds topology transactions to a topology store. Supported on gRPC; JSON rejects it. */
27
+ addTransactionsAsync(request: AddTopologyTransactionsRequest, options?: RequestOptions): Promise<AddTopologyTransactionsResponse>;
28
+ /** Imports a serialized topology snapshot. Supported on gRPC; JSON rejects it. */
29
+ importTopologySnapshotAsync(request: ImportTopologySnapshotRequest, options?: RequestOptions): Promise<ImportTopologySnapshotResponse>;
30
+ /** Imports a serialized topology snapshot using the V2 RPC. Supported on gRPC; JSON rejects it. */
31
+ importTopologySnapshotV2Async(request: ImportTopologySnapshotV2Request, options?: RequestOptions): Promise<ImportTopologySnapshotV2Response>;
32
+ /** Adds local signatures to topology transactions. Supported on gRPC; JSON rejects it. */
33
+ signTransactionsAsync(request: SignTopologyTransactionsRequest, options?: RequestOptions): Promise<SignTopologyTransactionsResponse>;
34
+ /** Generates topology transactions from raw proposals. Supported on gRPC; JSON rejects it. */
35
+ generateTransactionsAsync(request: GenerateTopologyTransactionsRequest, options?: RequestOptions): Promise<GenerateTopologyTransactionsResponse>;
36
+ /** Creates a temporary topology store. Supported on gRPC; JSON rejects it. */
37
+ createTemporaryTopologyStoreAsync(request: CreateTemporaryTopologyStoreRequest, options?: RequestOptions): Promise<CreateTemporaryTopologyStoreResponse>;
38
+ /** Drops a temporary topology store. Supported on gRPC; JSON rejects it. */
39
+ dropTemporaryTopologyStoreAsync(request: DropTemporaryTopologyStoreRequest, options?: RequestOptions): Promise<DropTemporaryTopologyStoreResponse>;
40
+ /** Assembles SDK-owned signed topology transactions from detached signatures. SDK-local; transport independent. */
41
+ assembleSignedTransactions(request: AssembleSignedTopologyTransactionsRequest): SignedTopologyTransaction[];
42
+ }
@@ -0,0 +1,44 @@
1
+ import { assembleSignedTopologyTransactions } from "./topology-signed-transaction-assembler.js";
2
+ export class TopologyManagerWriteServiceClient {
3
+ transport;
4
+ constructor(transport) {
5
+ this.transport = transport;
6
+ void this.transport;
7
+ }
8
+ /** Authorizes topology transactions. Supported on gRPC; JSON rejects it. */
9
+ authorizeAsync(request, options) {
10
+ return this.transport.authorizeTopologyTransactionsAsync(request, options);
11
+ }
12
+ /** Adds topology transactions to a topology store. Supported on gRPC; JSON rejects it. */
13
+ addTransactionsAsync(request, options) {
14
+ return this.transport.addTopologyTransactionsAsync(request, options);
15
+ }
16
+ /** Imports a serialized topology snapshot. Supported on gRPC; JSON rejects it. */
17
+ importTopologySnapshotAsync(request, options) {
18
+ return this.transport.importTopologySnapshotAsync(request, options);
19
+ }
20
+ /** Imports a serialized topology snapshot using the V2 RPC. Supported on gRPC; JSON rejects it. */
21
+ importTopologySnapshotV2Async(request, options) {
22
+ return this.transport.importTopologySnapshotV2Async(request, options);
23
+ }
24
+ /** Adds local signatures to topology transactions. Supported on gRPC; JSON rejects it. */
25
+ signTransactionsAsync(request, options) {
26
+ return this.transport.signTopologyTransactionsAsync(request, options);
27
+ }
28
+ /** Generates topology transactions from raw proposals. Supported on gRPC; JSON rejects it. */
29
+ generateTransactionsAsync(request, options) {
30
+ return this.transport.generateTopologyTransactionsAsync(request, options);
31
+ }
32
+ /** Creates a temporary topology store. Supported on gRPC; JSON rejects it. */
33
+ createTemporaryTopologyStoreAsync(request, options) {
34
+ return this.transport.createTemporaryTopologyStoreAsync(request, options);
35
+ }
36
+ /** Drops a temporary topology store. Supported on gRPC; JSON rejects it. */
37
+ dropTemporaryTopologyStoreAsync(request, options) {
38
+ return this.transport.dropTemporaryTopologyStoreAsync(request, options);
39
+ }
40
+ /** Assembles SDK-owned signed topology transactions from detached signatures. SDK-local; transport independent. */
41
+ assembleSignedTransactions(request) {
42
+ return assembleSignedTopologyTransactions(request);
43
+ }
44
+ }
@@ -0,0 +1,3 @@
1
+ import { AssembleSignedTopologyTransactionsRequest } from "../../core/types/requests/assemble-signed-topology-transactions-request.js";
2
+ import { SignedTopologyTransaction } from "../../core/types/topology/signed-topology-transaction.js";
3
+ export declare function assembleSignedTopologyTransactions(request: AssembleSignedTopologyTransactionsRequest): SignedTopologyTransaction[];
@@ -0,0 +1,78 @@
1
+ import { ValidationError } from "../../core/errors/validation-error.js";
2
+ import { SignedTopologyTransaction } from "../../core/types/topology/signed-topology-transaction.js";
3
+ import { TopologySignatureFormat } from "../../core/types/topology/topology-signature-format.js";
4
+ import { TopologyTransactionSignature } from "../../core/types/topology/topology-transaction-signature.js";
5
+ export function assembleSignedTopologyTransactions(request) {
6
+ const preparedTransactionsByHash = new Map(request.preparedTransactions.map((preparedTransaction) => [
7
+ toHex(preparedTransaction.transactionHash),
8
+ preparedTransaction,
9
+ ]));
10
+ const signaturesByHash = new Map();
11
+ const seenSignerPairs = new Set();
12
+ for (const signature of request.signatures) {
13
+ validateExternalSignature(signature);
14
+ const signatureFormat = signature.signatureFormat;
15
+ const hashKey = toHex(signature.transactionHash);
16
+ const preparedTransaction = preparedTransactionsByHash.get(hashKey);
17
+ if (preparedTransaction === undefined) {
18
+ throw new ValidationError(`No prepared transaction matches detached signature hash ${hashKey}.`);
19
+ }
20
+ const signerKey = `${hashKey}:${signature.signedByFingerprint}`;
21
+ if (seenSignerPairs.has(signerKey)) {
22
+ throw new ValidationError(`Duplicate detached signature for signer ${signature.signedByFingerprint} on transaction ${hashKey}.`);
23
+ }
24
+ seenSignerPairs.add(signerKey);
25
+ const mappedSignature = new TopologyTransactionSignature({
26
+ format: mapExternalSignatureFormatToRawFormat(signatureFormat),
27
+ signature: signature.signature,
28
+ signedByFingerprint: signature.signedByFingerprint,
29
+ signingAlgorithmSpec: signature.signingAlgorithmSpec
30
+ ?? mapExternalSignatureFormatToAlgorithmSpec(signatureFormat),
31
+ signatureDelegation: signature.signatureDelegation,
32
+ });
33
+ const existing = signaturesByHash.get(hashKey) ?? [];
34
+ existing.push(mappedSignature);
35
+ signaturesByHash.set(hashKey, existing);
36
+ }
37
+ return request.preparedTransactions.map((preparedTransaction) => new SignedTopologyTransaction({
38
+ transaction: preparedTransaction.serializedTransaction,
39
+ signatures: signaturesByHash.get(toHex(preparedTransaction.transactionHash)) ?? [],
40
+ proposal: preparedTransaction.proposal,
41
+ multiTransactionSignatures: [],
42
+ }));
43
+ }
44
+ function validateExternalSignature(signature) {
45
+ if (signature.transactionHash.length === 0) {
46
+ throw new ValidationError("Detached topology signatures require a transactionHash.");
47
+ }
48
+ else if (signature.signature.length === 0) {
49
+ throw new ValidationError("Detached topology signatures require signature bytes.");
50
+ }
51
+ else if (signature.signedByFingerprint.length === 0) {
52
+ throw new ValidationError("Detached topology signatures require signedByFingerprint.");
53
+ }
54
+ else if (signature.signatureFormat === undefined) {
55
+ throw new ValidationError("Detached topology signatures require signatureFormat.");
56
+ }
57
+ }
58
+ function mapExternalSignatureFormatToRawFormat(signatureFormat) {
59
+ switch (signatureFormat) {
60
+ case TopologySignatureFormat.ed25519:
61
+ return "concat";
62
+ default:
63
+ return "unspecified";
64
+ }
65
+ }
66
+ function mapExternalSignatureFormatToAlgorithmSpec(signatureFormat) {
67
+ switch (signatureFormat) {
68
+ case TopologySignatureFormat.ed25519:
69
+ return "ed25519";
70
+ default:
71
+ return "unspecified";
72
+ }
73
+ }
74
+ function toHex(bytes) {
75
+ return [...bytes]
76
+ .map((value) => value.toString(16).padStart(2, "0"))
77
+ .join("");
78
+ }