@bitgo-beta/sdk-coin-canton 1.0.1-beta.62 → 1.0.1-beta.621

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 (178) hide show
  1. package/dist/src/canton.d.ts +22 -1
  2. package/dist/src/canton.d.ts.map +1 -1
  3. package/dist/src/canton.js +267 -10
  4. package/dist/src/cantonToken.d.ts +19 -0
  5. package/dist/src/cantonToken.d.ts.map +1 -0
  6. package/dist/src/cantonToken.js +52 -0
  7. package/dist/src/index.d.ts +1 -0
  8. package/dist/src/index.d.ts.map +1 -1
  9. package/dist/src/index.js +2 -1
  10. package/dist/src/lib/allocationAllocateBuilder.d.ts +126 -0
  11. package/dist/src/lib/allocationAllocateBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/allocationAllocateBuilder.js +250 -0
  13. package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts +67 -0
  14. package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/allocationAllocateWithdrawnBuilder.js +130 -0
  16. package/dist/src/lib/allocationRejectBuilder.d.ts +51 -0
  17. package/dist/src/lib/allocationRejectBuilder.d.ts.map +1 -0
  18. package/dist/src/lib/allocationRejectBuilder.js +107 -0
  19. package/dist/src/lib/allocationRequestBuilder.d.ts +116 -0
  20. package/dist/src/lib/allocationRequestBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/allocationRequestBuilder.js +248 -0
  22. package/dist/src/lib/cantonCommandBuilder.d.ts +72 -0
  23. package/dist/src/lib/cantonCommandBuilder.d.ts.map +1 -0
  24. package/dist/src/lib/cantonCommandBuilder.js +173 -0
  25. package/dist/src/lib/clearSigning.d.ts +58 -0
  26. package/dist/src/lib/clearSigning.d.ts.map +1 -0
  27. package/dist/src/lib/clearSigning.js +66 -0
  28. package/dist/src/lib/constant.d.ts +2 -0
  29. package/dist/src/lib/constant.d.ts.map +1 -1
  30. package/dist/src/lib/constant.js +4 -2
  31. package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts +56 -0
  32. package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/cosignDelegationAcceptBuilder.js +112 -0
  34. package/dist/src/lib/cosignDelegationProposalBuilder.d.ts +60 -0
  35. package/dist/src/lib/cosignDelegationProposalBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/cosignDelegationProposalBuilder.js +111 -0
  37. package/dist/src/lib/iface.d.ts +143 -2
  38. package/dist/src/lib/iface.d.ts.map +1 -1
  39. package/dist/src/lib/iface.js +3 -1
  40. package/dist/src/lib/index.d.ts +13 -0
  41. package/dist/src/lib/index.d.ts.map +1 -1
  42. package/dist/src/lib/index.js +29 -2
  43. package/dist/src/lib/messages/cantonBaseMessage.d.ts +16 -0
  44. package/dist/src/lib/messages/cantonBaseMessage.d.ts.map +1 -0
  45. package/dist/src/lib/messages/cantonBaseMessage.js +28 -0
  46. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts +14 -0
  47. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts.map +1 -0
  48. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.js +23 -0
  49. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts +17 -0
  50. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts.map +1 -0
  51. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.js +25 -0
  52. package/dist/src/lib/messages/cantonSignTopology/index.d.ts +3 -0
  53. package/dist/src/lib/messages/cantonSignTopology/index.d.ts.map +1 -0
  54. package/dist/src/lib/messages/cantonSignTopology/index.js +19 -0
  55. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts +13 -0
  56. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts.map +1 -0
  57. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.js +22 -0
  58. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts +14 -0
  59. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.js +22 -0
  61. package/dist/src/lib/messages/cantonSignTransaction/index.d.ts +3 -0
  62. package/dist/src/lib/messages/cantonSignTransaction/index.d.ts.map +1 -0
  63. package/dist/src/lib/messages/cantonSignTransaction/index.js +19 -0
  64. package/dist/src/lib/messages/index.d.ts +5 -0
  65. package/dist/src/lib/messages/index.d.ts.map +1 -0
  66. package/dist/src/lib/messages/index.js +21 -0
  67. package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
  68. package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  69. package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
  70. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +11 -1
  71. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -1
  72. package/dist/src/lib/oneStepPreApprovalBuilder.js +29 -1
  73. package/dist/src/lib/resourcesInterface.d.ts +1 -1
  74. package/dist/src/lib/resourcesInterface.d.ts.map +1 -1
  75. package/dist/src/lib/resourcesInterface.js +1 -1
  76. package/dist/src/lib/transaction/transaction.d.ts +21 -2
  77. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  78. package/dist/src/lib/transaction/transaction.js +330 -9
  79. package/dist/src/lib/transactionBuilder.d.ts +3 -3
  80. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  81. package/dist/src/lib/transactionBuilder.js +1 -5
  82. package/dist/src/lib/transactionBuilderFactory.d.ts +22 -1
  83. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  84. package/dist/src/lib/transactionBuilderFactory.js +78 -2
  85. package/dist/src/lib/transferAcceptanceBuilder.d.ts +7 -5
  86. package/dist/src/lib/transferAcceptanceBuilder.d.ts.map +1 -1
  87. package/dist/src/lib/transferAcceptanceBuilder.js +20 -6
  88. package/dist/src/lib/transferAcknowledgeBuilder.d.ts +72 -0
  89. package/dist/src/lib/transferAcknowledgeBuilder.d.ts.map +1 -0
  90. package/dist/src/lib/transferAcknowledgeBuilder.js +133 -0
  91. package/dist/src/lib/transferBuilder.d.ts +87 -3
  92. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  93. package/dist/src/lib/transferBuilder.js +169 -1
  94. package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts +67 -0
  95. package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts.map +1 -0
  96. package/dist/src/lib/transferOfferWithdrawnBuilder.js +130 -0
  97. package/dist/src/lib/transferRejectionBuilder.d.ts +59 -0
  98. package/dist/src/lib/transferRejectionBuilder.d.ts.map +1 -0
  99. package/dist/src/lib/transferRejectionBuilder.js +116 -0
  100. package/dist/src/lib/utils.d.ts +51 -3
  101. package/dist/src/lib/utils.d.ts.map +1 -1
  102. package/dist/src/lib/utils.js +751 -44
  103. package/dist/src/lib/walletInitBuilder.d.ts +2 -1
  104. package/dist/src/lib/walletInitBuilder.d.ts.map +1 -1
  105. package/dist/src/lib/walletInitBuilder.js +4 -1
  106. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +2 -1
  107. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -1
  108. package/dist/src/lib/walletInitialization/walletInitTransaction.js +14 -1
  109. package/dist/src/register.d.ts.map +1 -1
  110. package/dist/src/register.js +5 -1
  111. package/dist/test/helper.d.ts +3 -0
  112. package/dist/test/helper.d.ts.map +1 -0
  113. package/dist/test/helper.js +9 -0
  114. package/dist/test/integration/canton.integration.d.ts +2 -0
  115. package/dist/test/integration/canton.integration.d.ts.map +1 -0
  116. package/dist/test/integration/canton.integration.js +157 -0
  117. package/dist/test/integration/canton.token.integration.d.ts +2 -0
  118. package/dist/test/integration/canton.token.integration.d.ts.map +1 -0
  119. package/dist/test/integration/canton.token.integration.js +51 -0
  120. package/dist/test/resources.d.ts +233 -2
  121. package/dist/test/resources.d.ts.map +1 -1
  122. package/dist/test/resources.js +238 -7
  123. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts +2 -0
  124. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts.map +1 -0
  125. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.js +360 -0
  126. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts +2 -0
  127. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
  128. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.js +133 -0
  129. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts +2 -0
  130. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts.map +1 -0
  131. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.js +121 -0
  132. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts +2 -0
  133. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts.map +1 -0
  134. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.js +407 -0
  135. package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts +2 -0
  136. package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts.map +1 -0
  137. package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.js +340 -0
  138. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts +2 -0
  139. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts.map +1 -0
  140. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.js +104 -0
  141. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts +2 -0
  142. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts.map +1 -0
  143. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.js +74 -0
  144. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +25 -7
  145. package/dist/test/unit/builder/transfer/transferBuilder.d.ts +2 -0
  146. package/dist/test/unit/builder/transfer/transferBuilder.d.ts.map +1 -0
  147. package/dist/test/unit/builder/transfer/transferBuilder.js +84 -0
  148. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +65 -15
  149. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts +2 -0
  150. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts.map +1 -0
  151. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.js +32 -0
  152. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts +2 -0
  153. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts.map +1 -0
  154. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.js +64 -0
  155. package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts +2 -0
  156. package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts.map +1 -0
  157. package/dist/test/unit/builder/transferReject/transferRejectBuilder.js +96 -0
  158. package/dist/test/unit/canton.d.ts +2 -0
  159. package/dist/test/unit/canton.d.ts.map +1 -0
  160. package/dist/test/unit/canton.js +705 -0
  161. package/dist/test/unit/index.d.ts +5 -0
  162. package/dist/test/unit/index.d.ts.map +1 -1
  163. package/dist/test/unit/index.js +6 -1
  164. package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts +2 -0
  165. package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts.map +1 -0
  166. package/dist/test/unit/messages/cantonSignTopologyMessage.js +46 -0
  167. package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts +2 -0
  168. package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts.map +1 -0
  169. package/dist/test/unit/messages/cantonSignTransactionMessage.js +48 -0
  170. package/dist/test/unit/messages/clearSigning.d.ts +2 -0
  171. package/dist/test/unit/messages/clearSigning.d.ts.map +1 -0
  172. package/dist/test/unit/messages/clearSigning.js +72 -0
  173. package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
  174. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  175. package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
  176. package/dist/test/unit/utils.js +376 -5
  177. package/dist/tsconfig.tsbuildinfo +1 -1
  178. package/package.json +8 -8
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CantonCommandBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const iface_1 = require("./iface");
9
+ const transactionBuilder_1 = require("./transactionBuilder");
10
+ const utils_1 = __importDefault(require("./utils"));
11
+ class CantonCommandBuilder extends transactionBuilder_1.TransactionBuilder {
12
+ constructor(_coinConfig) {
13
+ super(_coinConfig);
14
+ this._actAs = [];
15
+ this._readAs = [];
16
+ this._resolveContracts = [];
17
+ }
18
+ initBuilder(tx) {
19
+ super.initBuilder(tx);
20
+ this.setTransactionType();
21
+ try {
22
+ this._commandId = tx.id;
23
+ }
24
+ catch {
25
+ // tx.id throws when not set — leave _commandId uninitialized
26
+ }
27
+ const parties = tx.cantonCommandActAsParties;
28
+ if (parties.length > 0) {
29
+ this._actAs = parties;
30
+ }
31
+ }
32
+ get transactionType() {
33
+ return sdk_core_1.TransactionType.CantonCommand;
34
+ }
35
+ setTransactionType() {
36
+ this.transaction.transactionType = sdk_core_1.TransactionType.CantonCommand;
37
+ }
38
+ setTransaction(transaction) {
39
+ this.transaction.prepareCommand = transaction;
40
+ }
41
+ /** @inheritDoc */
42
+ addSignature(publicKey, signature) {
43
+ if (!this.transaction) {
44
+ throw new sdk_core_1.InvalidTransactionError('transaction is empty!');
45
+ }
46
+ this._signatures.push({ publicKey, signature });
47
+ const pubKeyBase64 = utils_1.default.getBase64FromHex(publicKey.pub);
48
+ this.transaction.signerFingerprint = utils_1.default.getAddressFromPublicKey(pubKeyBase64);
49
+ this.transaction.signatures = signature.toString('base64');
50
+ }
51
+ /**
52
+ * Sets the unique command id. Also sets the transaction _id.
53
+ *
54
+ * @param id - A uuid
55
+ * @returns The current builder instance for chaining.
56
+ */
57
+ commandId(id) {
58
+ if (!id || !id.trim()) {
59
+ throw new Error('commandId must be a non-empty string');
60
+ }
61
+ this._commandId = id.trim();
62
+ this.transaction.id = id.trim();
63
+ return this;
64
+ }
65
+ /**
66
+ * Sets the parties that will act in the DAML submission.
67
+ *
68
+ * @param parties - Non-empty array of fully-qualified party ids
69
+ * @returns The current builder instance for chaining.
70
+ */
71
+ actAs(parties) {
72
+ if (!parties || parties.length === 0) {
73
+ throw new Error('actAs must be a non-empty array');
74
+ }
75
+ const normalizedParties = parties.map((p) => p.trim());
76
+ if (normalizedParties.some((p) => !p)) {
77
+ throw new Error('actAs parties must be non-empty strings');
78
+ }
79
+ this._actAs = normalizedParties;
80
+ this.transaction.cantonCommandActAs = normalizedParties;
81
+ return this;
82
+ }
83
+ /**
84
+ * Sets the read-only parties for the DAML submission.
85
+ *
86
+ * @param parties - Array of fully-qualified party ids
87
+ * @returns The current builder instance for chaining.
88
+ */
89
+ readAs(parties) {
90
+ if (parties && parties.length > 0) {
91
+ const normalized = parties.map((p) => p.trim());
92
+ if (normalized.some((p) => !p)) {
93
+ throw new Error('readAs parties must be non-empty strings');
94
+ }
95
+ this._readAs = normalized;
96
+ }
97
+ else {
98
+ this._readAs = [];
99
+ }
100
+ return this;
101
+ }
102
+ /**
103
+ * Sets the opaque DAML command object (CreateCommand or ExerciseCommand).
104
+ *
105
+ * @param command - The raw DAML command as a plain object
106
+ * @returns The current builder instance for chaining.
107
+ */
108
+ command(command) {
109
+ if (!command || typeof command !== 'object' || Array.isArray(command)) {
110
+ throw new Error('command must be a plain object');
111
+ }
112
+ this._command = command;
113
+ return this;
114
+ }
115
+ /**
116
+ * Sets the list of ACS contract resolution specs that IMS will resolve before prepare.
117
+ *
118
+ * @param specs - Array of CantonCommandResolveContractSpec
119
+ * @returns The current builder instance for chaining.
120
+ */
121
+ resolveContracts(specs) {
122
+ this._resolveContracts = specs ?? [];
123
+ return this;
124
+ }
125
+ /**
126
+ * Sets the Canton token identifier (e.g. 'tcanton:stgusd1') forwarded to IMS for
127
+ * choice-context resolution on token-specific commands such as mint and burn.
128
+ *
129
+ * @param name - Registered BitGo canton token name
130
+ * @returns The current builder instance for chaining.
131
+ */
132
+ token(name) {
133
+ if (typeof name !== 'string' || !name.trim()) {
134
+ throw new Error('token must be a non-empty string');
135
+ }
136
+ this._token = name.trim();
137
+ return this;
138
+ }
139
+ /**
140
+ * Builds and returns the CantonCommandRequest from the builder's internal state.
141
+ *
142
+ * @returns {CantonCommandRequest}
143
+ * @throws {Error} If any required field is missing.
144
+ */
145
+ toRequestObject() {
146
+ this.validate();
147
+ const req = {
148
+ commandId: this._commandId,
149
+ actAs: this._actAs,
150
+ readAs: this._readAs ?? [],
151
+ command: this._command,
152
+ resolveContracts: this._resolveContracts ?? [],
153
+ };
154
+ if (this._token) {
155
+ req.token = this._token;
156
+ }
157
+ return req;
158
+ }
159
+ validate() {
160
+ if (!this._commandId)
161
+ throw new Error('commandId is missing');
162
+ if (!this._actAs || this._actAs.length === 0)
163
+ throw new Error('actAs is missing');
164
+ if (!this._command)
165
+ throw new Error('command is missing');
166
+ const activeKeys = iface_1.CANTON_COMMAND_KEYS.filter((key) => utils_1.default.isPlainObject(this._command[key]));
167
+ if (activeKeys.length !== 1) {
168
+ throw new Error(`command must contain exactly one of: ${iface_1.CANTON_COMMAND_KEYS.join(', ')} as a non-null plain object`);
169
+ }
170
+ }
171
+ }
172
+ exports.CantonCommandBuilder = CantonCommandBuilder;
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uQ29tbWFuZEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NhbnRvbkNvbW1hbmRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQU04QjtBQUU5QixtQ0FBa0c7QUFDbEcsNkRBQTBEO0FBRTFELG9EQUE0QjtBQUU1QixNQUFhLG9CQUFxQixTQUFRLHVDQUFrQjtJQVExRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQVBiLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFDdEIsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUV2QixzQkFBaUIsR0FBdUMsRUFBRSxDQUFDO0lBS25FLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBZTtRQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsNkRBQTZEO1FBQy9ELENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7UUFDN0MsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sMEJBQWUsQ0FBQyxhQUFhLENBQUM7SUFDdkMsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRywwQkFBZSxDQUFDLGFBQWEsQ0FBQztJQUNuRSxDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQXlDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMs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YixDQUFDO0lBRU8sUUFBUTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUMxRCxNQUFNLFVBQVUsR0FBRywyQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNwRCxlQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBMEIsQ0FBQyxDQUFDLENBQy9ELENBQUM7UUFDRixJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FDYix3Q0FBd0MsMkJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FDcEcsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFqTEQsb0RBaUxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFB1YmxpY0tleSxcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBDYW50b25Db21tYW5kLFxuICBDYW50b25Db21tYW5kUmVzb2x2ZUNvbnRyYWN0U3BlYyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQ0FOVE9OX0NPTU1BTkRfS0VZUywgQ2FudG9uQ29tbWFuZFJlcXVlc3QsIENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBDYW50b25Db21tYW5kQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2NvbW1hbmRJZDogc3RyaW5nO1xuICBwcml2YXRlIF9hY3RBczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBfcmVhZEFzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9jb21tYW5kOiBDYW50b25Db21tYW5kO1xuICBwcml2YXRlIF9yZXNvbHZlQ29udHJhY3RzOiBDYW50b25Db21tYW5kUmVzb2x2ZUNvbnRyYWN0U3BlY1tdID0gW107XG4gIHByaXZhdGUgX3Rva2VuPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZSgpO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl9jb21tYW5kSWQgPSB0eC5pZDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHR4LmlkIHRocm93cyB3aGVuIG5vdCBzZXQg4oCUIGxlYXZlIF9jb21tYW5kSWQgdW5pbml0aWFsaXplZFxuICAgIH1cbiAgICBjb25zdCBwYXJ0aWVzID0gdHguY2FudG9uQ29tbWFuZEFjdEFzUGFydGllcztcbiAgICBpZiAocGFydGllcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9hY3RBcyA9IHBhcnRpZXM7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZDtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uVHlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnByZXBhcmVDb21tYW5kID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbiBpcyBlbXB0eSEnKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHsgcHVibGljS2V5LCBzaWduYXR1cmUgfSk7XG4gICAgY29uc3QgcHViS2V5QmFzZTY0ID0gdXRpbHMuZ2V0QmFzZTY0RnJvbUhleChwdWJsaWNLZXkucHViKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ25lckZpbmdlcnByaW50ID0gdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHViS2V5QmFzZTY0KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZXMgPSBzaWduYXR1cmUudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHVuaXF1ZSBjb21tYW5kIGlkLiBBbHNvIHNldHMgdGhlIHRyYW5zYWN0aW9uIF9pZC5cbiAgICpcbiAgICogQHBhcmFtIGlkIC0gQSB1dWlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgY29tbWFuZElkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29tbWFuZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX2NvbW1hbmRJZCA9IGlkLnRyaW0oKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmlkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHBhcnRpZXMgdGhhdCB3aWxsIGFjdCBpbiB0aGUgREFNTCBzdWJtaXNzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGFydGllcyAtIE5vbi1lbXB0eSBhcnJheSBvZiBmdWxseS1xdWFsaWZpZWQgcGFydHkgaWRzXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgYWN0QXMocGFydGllczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICBpZiAoIXBhcnRpZXMgfHwgcGFydGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYWN0QXMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheScpO1xuICAgIH1cbiAgICBjb25zdCBub3JtYWxpemVkUGFydGllcyA9IHBhcnRpZXMubWFwKChwKSA9PiBwLnRyaW0oKSk7XG4gICAgaWYgKG5vcm1hbGl6ZWRQYXJ0aWVzLnNvbWUoKHApID0+ICFwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhY3RBcyBwYXJ0aWVzIG11c3QgYmUgbm9uLWVtcHR5IHN0cmluZ3MnKTtcbiAgICB9XG4gICAgdGhpcy5fYWN0QXMgPSBub3JtYWxpemVkUGFydGllcztcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmNhbnRvbkNvbW1hbmRBY3RBcyA9IG5vcm1hbGl6ZWRQYXJ0aWVzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJlYWQtb25seSBwYXJ0aWVzIGZvciB0aGUgREFNTCBzdWJtaXNzaW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcGFydGllcyAtIEFycmF5IG9mIGZ1bGx5LXF1YWxpZmllZCBwYXJ0eSBpZHNcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICByZWFkQXMocGFydGllcz86IHN0cmluZ1tdIHwgbnVsbCk6IHRoaXMge1xuICAgIGlmIChwYXJ0aWVzICYmIHBhcnRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHBhcnRpZXMubWFwKChwKSA9PiBwLnRyaW0oKSk7XG4gICAgICBpZiAobm9ybWFsaXplZC5zb21lKChwKSA9PiAhcCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZWFkQXMgcGFydGllcyBtdXN0IGJlIG5vbi1lbXB0eSBzdHJpbmdzJyk7XG4gICAgICB9XG4gICAgICB0aGlzLl9yZWFkQXMgPSBub3JtYWxpemVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZWFkQXMgPSBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgb3BhcXVlIERBTUwgY29tbWFuZCBvYmplY3QgKENyZWF0ZUNvbW1hbmQgb3IgRXhlcmNpc2VDb21tYW5kKS5cbiAgICpcbiAgICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgcmF3IERBTUwgY29tbWFuZCBhcyBhIHBsYWluIG9iamVjdFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICovXG4gIGNvbW1hbmQoY29tbWFuZDogQ2FudG9uQ29tbWFuZCk6IHRoaXMge1xuICAgIGlmICghY29tbWFuZCB8fCB0eXBlb2YgY29tbWFuZCAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShjb21tYW5kKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb21tYW5kIG11c3QgYmUgYSBwbGFpbiBvYmplY3QnKTtcbiAgICB9XG4gICAgdGhpcy5fY29tbWFuZCA9IGNvbW1hbmQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbGlzdCBvZiBBQ1MgY29udHJhY3QgcmVzb2x1dGlvbiBzcGVjcyB0aGF0IElNUyB3aWxsIHJlc29sdmUgYmVmb3JlIHByZXBhcmUuXG4gICAqXG4gICAqIEBwYXJhbSBzcGVjcyAtIEFycmF5IG9mIENhbnRvbkNvbW1hbmRSZXNvbHZlQ29udHJhY3RTcGVjXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgcmVzb2x2ZUNvbnRyYWN0cyhzcGVjcz86IENhbnRvbkNvbW1hbmRSZXNvbHZlQ29udHJhY3RTcGVjW10gfCBudWxsKTogdGhpcyB7XG4gICAgdGhpcy5fcmVzb2x2ZUNvbnRyYWN0cyA9IHNwZWNzID8/IFtdO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIENhbnRvbiB0b2tlbiBpZGVudGlmaWVyIChlLmcuICd0Y2FudG9uOnN0Z3VzZDEnKSBmb3J3YXJkZWQgdG8gSU1TIGZvclxuICAgKiBjaG9pY2UtY29udGV4dCByZXNvbHV0aW9uIG9uIHRva2VuLXNwZWNpZmljIGNvbW1hbmRzIHN1Y2ggYXMgbWludCBhbmQgYnVybi5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBSZWdpc3RlcmVkIEJpdEdvIGNhbnRvbiB0b2tlbiBuYW1lXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgdG9rZW4obmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJyB8fCAhbmFtZS50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndG9rZW4gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fdG9rZW4gPSBuYW1lLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYW5kIHJldHVybnMgdGhlIENhbnRvbkNvbW1hbmRSZXF1ZXN0IGZyb20gdGhlIGJ1aWxkZXIncyBpbnRlcm5hbCBzdGF0ZS5cbiAgICpcbiAgICogQHJldHVybnMge0NhbnRvbkNvbW1hbmRSZXF1ZXN0fVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYW55IHJlcXVpcmVkIGZpZWxkIGlzIG1pc3NpbmcuXG4gICAqL1xuICB0b1JlcXVlc3RPYmplY3QoKTogQ2FudG9uQ29tbWFuZFJlcXVlc3Qge1xuICAgIHRoaXMudmFsaWRhdGUoKTtcblxuICAgIGNvbnN0IHJlcTogQ2FudG9uQ29tbWFuZFJlcXVlc3QgPSB7XG4gICAgICBjb21tYW5kSWQ6IHRoaXMuX2NvbW1hbmRJZCxcbiAgICAgIGFjdEFzOiB0aGlzLl9hY3RBcyxcbiAgICAgIHJlYWRBczogdGhpcy5fcmVhZEFzID8/IFtdLFxuICAgICAgY29tbWFuZDogdGhpcy5fY29tbWFuZCxcbiAgICAgIHJlc29sdmVDb250cmFjdHM6IHRoaXMuX3Jlc29sdmVDb250cmFjdHMgPz8gW10sXG4gICAgfTtcbiAgICBpZiAodGhpcy5fdG9rZW4pIHtcbiAgICAgIHJlcS50b2tlbiA9IHRoaXMuX3Rva2VuO1xuICAgIH1cbiAgICByZXR1cm4gcmVxO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbW1hbmRJZCkgdGhyb3cgbmV3IEVycm9yKCdjb21tYW5kSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fYWN0QXMgfHwgdGhpcy5fYWN0QXMubGVuZ3RoID09PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2FjdEFzIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2NvbW1hbmQpIHRocm93IG5ldyBFcnJvcignY29tbWFuZCBpcyBtaXNzaW5nJyk7XG4gICAgY29uc3QgYWN0aXZlS2V5cyA9IENBTlRPTl9DT01NQU5EX0tFWVMuZmlsdGVyKChrZXkpID0+XG4gICAgICB1dGlscy5pc1BsYWluT2JqZWN0KHRoaXMuX2NvbW1hbmRba2V5IGFzIGtleW9mIENhbnRvbkNvbW1hbmRdKVxuICAgICk7XG4gICAgaWYgKGFjdGl2ZUtleXMubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBjb21tYW5kIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBvZjogJHtDQU5UT05fQ09NTUFORF9LRVlTLmpvaW4oJywgJyl9IGFzIGEgbm9uLW51bGwgcGxhaW4gb2JqZWN0YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { MessageStandardType } from '@bitgo-beta/sdk-core';
2
+ /**
3
+ * Clear signing and payload-type detection for Canton message signing requests.
4
+ *
5
+ * The Canton Signing Driver receives raw `tx` bytes and a `txHash` from the
6
+ * Canton Gateway's signTransaction() call. It does not know whether `tx` is a
7
+ * Daml prepared transaction or a topology transaction. This module owns that
8
+ * detection, keeping Canton-specific proto knowledge inside sdk-coin-canton.
9
+ *
10
+ * Usage in wallet-platform (buildUnsignedMsgWithIntent):
11
+ * 1. Call detectCantonSigningPayloadType(tx) → MessageStandardType
12
+ * 2. Use that type as messageStandardType in the msgrequest
13
+ * 3. In getHsmPayload, key off the type to choose Format 1 vs Format 2
14
+ */
15
+ export interface DecodedCantonTransaction {
16
+ /** 'CreateCommand' or 'ExerciseCommand' */
17
+ kind: string;
18
+ /** Fully-qualified Daml template identifier */
19
+ templateId: {
20
+ packageId: string;
21
+ moduleName: string;
22
+ entityName: string;
23
+ };
24
+ /** Decoded Daml arguments (create arguments or choice arguments) */
25
+ argument: unknown;
26
+ /** Choice name — present for ExerciseCommand only */
27
+ choice?: string;
28
+ /** Contract ID being exercised — present for ExerciseCommand only */
29
+ contractId?: string;
30
+ /** Parties acting on this command — present for ExerciseCommand only */
31
+ actingParties?: string[];
32
+ }
33
+ /**
34
+ * Detect whether a Canton `tx` payload (base64) is a Daml prepared transaction
35
+ * or a topology transaction, by attempting to parse as PreparedTransaction proto.
36
+ *
37
+ * - PreparedTransaction → has `transaction.nodes` populated → CANTON_SIGN_TRANSACTION
38
+ * - Topology bytes → parsing fails or nodes empty → CANTON_SIGN_TOPOLOGY
39
+ *
40
+ * wallet-platform calls this on the raw `tx` bytes from the Canton Gateway to
41
+ * determine which MessageStandardType to use and which HSM payload format to apply.
42
+ *
43
+ * @param txBase64 - base64-encoded `tx` bytes from Canton's signTransaction request
44
+ * @returns The appropriate MessageStandardType for this payload
45
+ */
46
+ export declare function detectCantonSigningPayloadType(txBase64: string): MessageStandardType;
47
+ /**
48
+ * Decode a Canton prepared transaction into a human-readable structure
49
+ * suitable for storage as a clearSigningPayload on the txRequest message.
50
+ *
51
+ * Only meaningful when detectCantonSigningPayloadType() returns CANTON_SIGN_TRANSACTION.
52
+ * For topology transactions, there is no Daml command structure to decode.
53
+ *
54
+ * @param preparedTransactionBase64 - base64-encoded protobuf bytes from the Canton signTransaction request
55
+ * @returns Decoded command info describing the Daml operation being signed
56
+ */
57
+ export declare function decodePreparedTransaction(preparedTransactionBase64: string): DecodedCantonTransaction;
58
+ //# sourceMappingURL=clearSigning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clearSigning.d.ts","sourceRoot":"","sources":["../../../src/lib/clearSigning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAI3D;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,wBAAwB;IACvC,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,oEAAoE;IACpE,QAAQ,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAWpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,yBAAyB,EAAE,MAAM,GAAG,wBAAwB,CAmBrG"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.detectCantonSigningPayloadType = detectCantonSigningPayloadType;
7
+ exports.decodePreparedTransaction = decodePreparedTransaction;
8
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
9
+ const preparedTransaction_js_1 = require("../../resources/proto/preparedTransaction.js");
10
+ const utils_1 = __importDefault(require("./utils"));
11
+ /**
12
+ * Detect whether a Canton `tx` payload (base64) is a Daml prepared transaction
13
+ * or a topology transaction, by attempting to parse as PreparedTransaction proto.
14
+ *
15
+ * - PreparedTransaction → has `transaction.nodes` populated → CANTON_SIGN_TRANSACTION
16
+ * - Topology bytes → parsing fails or nodes empty → CANTON_SIGN_TOPOLOGY
17
+ *
18
+ * wallet-platform calls this on the raw `tx` bytes from the Canton Gateway to
19
+ * determine which MessageStandardType to use and which HSM payload format to apply.
20
+ *
21
+ * @param txBase64 - base64-encoded `tx` bytes from Canton's signTransaction request
22
+ * @returns The appropriate MessageStandardType for this payload
23
+ */
24
+ function detectCantonSigningPayloadType(txBase64) {
25
+ try {
26
+ const bytes = Buffer.from(txBase64, 'base64');
27
+ const decoded = preparedTransaction_js_1.PreparedTransaction.fromBinary(bytes);
28
+ if (decoded.transaction && Array.isArray(decoded.transaction.nodes) && decoded.transaction.nodes.length > 0) {
29
+ return sdk_core_1.MessageStandardType.CANTON_SIGN_TRANSACTION;
30
+ }
31
+ }
32
+ catch {
33
+ // bytes did not parse as a PreparedTransaction proto
34
+ }
35
+ return sdk_core_1.MessageStandardType.CANTON_SIGN_TOPOLOGY;
36
+ }
37
+ /**
38
+ * Decode a Canton prepared transaction into a human-readable structure
39
+ * suitable for storage as a clearSigningPayload on the txRequest message.
40
+ *
41
+ * Only meaningful when detectCantonSigningPayloadType() returns CANTON_SIGN_TRANSACTION.
42
+ * For topology transactions, there is no Daml command structure to decode.
43
+ *
44
+ * @param preparedTransactionBase64 - base64-encoded protobuf bytes from the Canton signTransaction request
45
+ * @returns Decoded command info describing the Daml operation being signed
46
+ */
47
+ function decodePreparedTransaction(preparedTransactionBase64) {
48
+ // Single parse: extractCantonCommandInfo internally calls PreparedTransaction.fromBinary.
49
+ // Any failure (topology bytes, random bytes, missing transaction body) is caught here and
50
+ // surfaced as a descriptive error rather than letting an internal proto exception escape.
51
+ try {
52
+ const info = utils_1.default.extractCantonCommandInfo(preparedTransactionBase64);
53
+ return {
54
+ kind: info.kind,
55
+ templateId: info.templateId,
56
+ argument: info.argument,
57
+ ...(info.choice !== undefined && { choice: info.choice }),
58
+ ...(info.contractId !== undefined && { contractId: info.contractId }),
59
+ ...(info.actingParties !== undefined && { actingParties: info.actingParties }),
60
+ };
61
+ }
62
+ catch {
63
+ throw new Error('decodePreparedTransaction: payload is not a Daml PreparedTransaction — call detectCantonSigningPayloadType() first');
64
+ }
65
+ }
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXJTaWduaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jbGVhclNpZ25pbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFrREEsd0VBV0M7QUFZRCw4REFtQkM7QUE1RkQsbURBQTJEO0FBQzNELHlGQUFtRjtBQUNuRixvREFBNEI7QUFtQzVCOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILFNBQWdCLDhCQUE4QixDQUFDLFFBQWdCO0lBQzdELElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sT0FBTyxHQUFHLDRDQUFtQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxJQUFJLE9BQU8sQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1RyxPQUFPLDhCQUFtQixDQUFDLHVCQUF1QixDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AscURBQXFEO0lBQ3ZELENBQUM7SUFDRCxPQUFPLDhCQUFtQixDQUFDLG9CQUFvQixDQUFDO0FBQ2xELENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQix5QkFBeUIsQ0FBQyx5QkFBaUM7SUFDekUsMEZBQTBGO0lBQzFGLDBGQUEwRjtJQUMxRiwwRkFBMEY7SUFDMUYsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsZUFBSyxDQUFDLHdCQUF3QixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdkUsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6RCxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JFLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVMsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDL0UsQ0FBQztJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLElBQUksS0FBSyxDQUNiLG9IQUFvSCxDQUNySCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZXNzYWdlU3RhbmRhcmRUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgUHJlcGFyZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9wcm90by9wcmVwYXJlZFRyYW5zYWN0aW9uLmpzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBDbGVhciBzaWduaW5nIGFuZCBwYXlsb2FkLXR5cGUgZGV0ZWN0aW9uIGZvciBDYW50b24gbWVzc2FnZSBzaWduaW5nIHJlcXVlc3RzLlxuICpcbiAqIFRoZSBDYW50b24gU2lnbmluZyBEcml2ZXIgcmVjZWl2ZXMgcmF3IGB0eGAgYnl0ZXMgYW5kIGEgYHR4SGFzaGAgZnJvbSB0aGVcbiAqIENhbnRvbiBHYXRld2F5J3Mgc2lnblRyYW5zYWN0aW9uKCkgY2FsbC4gSXQgZG9lcyBub3Qga25vdyB3aGV0aGVyIGB0eGAgaXMgYVxuICogRGFtbCBwcmVwYXJlZCB0cmFuc2FjdGlvbiBvciBhIHRvcG9sb2d5IHRyYW5zYWN0aW9uLiBUaGlzIG1vZHVsZSBvd25zIHRoYXRcbiAqIGRldGVjdGlvbiwga2VlcGluZyBDYW50b24tc3BlY2lmaWMgcHJvdG8ga25vd2xlZGdlIGluc2lkZSBzZGstY29pbi1jYW50b24uXG4gKlxuICogVXNhZ2UgaW4gd2FsbGV0LXBsYXRmb3JtIChidWlsZFVuc2lnbmVkTXNnV2l0aEludGVudCk6XG4gKiAgIDEuIENhbGwgZGV0ZWN0Q2FudG9uU2lnbmluZ1BheWxvYWRUeXBlKHR4KSDihpIgTWVzc2FnZVN0YW5kYXJkVHlwZVxuICogICAyLiBVc2UgdGhhdCB0eXBlIGFzIG1lc3NhZ2VTdGFuZGFyZFR5cGUgaW4gdGhlIG1zZ3JlcXVlc3RcbiAqICAgMy4gSW4gZ2V0SHNtUGF5bG9hZCwga2V5IG9mZiB0aGUgdHlwZSB0byBjaG9vc2UgRm9ybWF0IDEgdnMgRm9ybWF0IDJcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIERlY29kZWRDYW50b25UcmFuc2FjdGlvbiB7XG4gIC8qKiAnQ3JlYXRlQ29tbWFuZCcgb3IgJ0V4ZXJjaXNlQ29tbWFuZCcgKi9cbiAga2luZDogc3RyaW5nO1xuICAvKiogRnVsbHktcXVhbGlmaWVkIERhbWwgdGVtcGxhdGUgaWRlbnRpZmllciAqL1xuICB0ZW1wbGF0ZUlkOiB7XG4gICAgcGFja2FnZUlkOiBzdHJpbmc7XG4gICAgbW9kdWxlTmFtZTogc3RyaW5nO1xuICAgIGVudGl0eU5hbWU6IHN0cmluZztcbiAgfTtcbiAgLyoqIERlY29kZWQgRGFtbCBhcmd1bWVudHMgKGNyZWF0ZSBhcmd1bWVudHMgb3IgY2hvaWNlIGFyZ3VtZW50cykgKi9cbiAgYXJndW1lbnQ6IHVua25vd247XG4gIC8qKiBDaG9pY2UgbmFtZSDigJQgcHJlc2VudCBmb3IgRXhlcmNpc2VDb21tYW5kIG9ubHkgKi9cbiAgY2hvaWNlPzogc3RyaW5nO1xuICAvKiogQ29udHJhY3QgSUQgYmVpbmcgZXhlcmNpc2VkIOKAlCBwcmVzZW50IGZvciBFeGVyY2lzZUNvbW1hbmQgb25seSAqL1xuICBjb250cmFjdElkPzogc3RyaW5nO1xuICAvKiogUGFydGllcyBhY3Rpbmcgb24gdGhpcyBjb21tYW5kIOKAlCBwcmVzZW50IGZvciBFeGVyY2lzZUNvbW1hbmQgb25seSAqL1xuICBhY3RpbmdQYXJ0aWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogRGV0ZWN0IHdoZXRoZXIgYSBDYW50b24gYHR4YCBwYXlsb2FkIChiYXNlNjQpIGlzIGEgRGFtbCBwcmVwYXJlZCB0cmFuc2FjdGlvblxuICogb3IgYSB0b3BvbG9neSB0cmFuc2FjdGlvbiwgYnkgYXR0ZW1wdGluZyB0byBwYXJzZSBhcyBQcmVwYXJlZFRyYW5zYWN0aW9uIHByb3RvLlxuICpcbiAqIC0gUHJlcGFyZWRUcmFuc2FjdGlvbiDihpIgaGFzIGB0cmFuc2FjdGlvbi5ub2Rlc2AgcG9wdWxhdGVkIOKGkiBDQU5UT05fU0lHTl9UUkFOU0FDVElPTlxuICogLSBUb3BvbG9neSBieXRlcyAgICAg4oaSIHBhcnNpbmcgZmFpbHMgb3Igbm9kZXMgZW1wdHkgICAgICDihpIgQ0FOVE9OX1NJR05fVE9QT0xPR1lcbiAqXG4gKiB3YWxsZXQtcGxhdGZvcm0gY2FsbHMgdGhpcyBvbiB0aGUgcmF3IGB0eGAgYnl0ZXMgZnJvbSB0aGUgQ2FudG9uIEdhdGV3YXkgdG9cbiAqIGRldGVybWluZSB3aGljaCBNZXNzYWdlU3RhbmRhcmRUeXBlIHRvIHVzZSBhbmQgd2hpY2ggSFNNIHBheWxvYWQgZm9ybWF0IHRvIGFwcGx5LlxuICpcbiAqIEBwYXJhbSB0eEJhc2U2NCAtIGJhc2U2NC1lbmNvZGVkIGB0eGAgYnl0ZXMgZnJvbSBDYW50b24ncyBzaWduVHJhbnNhY3Rpb24gcmVxdWVzdFxuICogQHJldHVybnMgVGhlIGFwcHJvcHJpYXRlIE1lc3NhZ2VTdGFuZGFyZFR5cGUgZm9yIHRoaXMgcGF5bG9hZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0Q2FudG9uU2lnbmluZ1BheWxvYWRUeXBlKHR4QmFzZTY0OiBzdHJpbmcpOiBNZXNzYWdlU3RhbmRhcmRUeXBlIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBieXRlcyA9IEJ1ZmZlci5mcm9tKHR4QmFzZTY0LCAnYmFzZTY0Jyk7XG4gICAgY29uc3QgZGVjb2RlZCA9IFByZXBhcmVkVHJhbnNhY3Rpb24uZnJvbUJpbmFyeShieXRlcyk7XG4gICAgaWYgKGRlY29kZWQudHJhbnNhY3Rpb24gJiYgQXJyYXkuaXNBcnJheShkZWNvZGVkLnRyYW5zYWN0aW9uLm5vZGVzKSAmJiBkZWNvZGVkLnRyYW5zYWN0aW9uLm5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBNZXNzYWdlU3RhbmRhcmRUeXBlLkNBTlRPTl9TSUdOX1RSQU5TQUNUSU9OO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gYnl0ZXMgZGlkIG5vdCBwYXJzZSBhcyBhIFByZXBhcmVkVHJhbnNhY3Rpb24gcHJvdG9cbiAgfVxuICByZXR1cm4gTWVzc2FnZVN0YW5kYXJkVHlwZS5DQU5UT05fU0lHTl9UT1BPTE9HWTtcbn1cblxuLyoqXG4gKiBEZWNvZGUgYSBDYW50b24gcHJlcGFyZWQgdHJhbnNhY3Rpb24gaW50byBhIGh1bWFuLXJlYWRhYmxlIHN0cnVjdHVyZVxuICogc3VpdGFibGUgZm9yIHN0b3JhZ2UgYXMgYSBjbGVhclNpZ25pbmdQYXlsb2FkIG9uIHRoZSB0eFJlcXVlc3QgbWVzc2FnZS5cbiAqXG4gKiBPbmx5IG1lYW5pbmdmdWwgd2hlbiBkZXRlY3RDYW50b25TaWduaW5nUGF5bG9hZFR5cGUoKSByZXR1cm5zIENBTlRPTl9TSUdOX1RSQU5TQUNUSU9OLlxuICogRm9yIHRvcG9sb2d5IHRyYW5zYWN0aW9ucywgdGhlcmUgaXMgbm8gRGFtbCBjb21tYW5kIHN0cnVjdHVyZSB0byBkZWNvZGUuXG4gKlxuICogQHBhcmFtIHByZXBhcmVkVHJhbnNhY3Rpb25CYXNlNjQgLSBiYXNlNjQtZW5jb2RlZCBwcm90b2J1ZiBieXRlcyBmcm9tIHRoZSBDYW50b24gc2lnblRyYW5zYWN0aW9uIHJlcXVlc3RcbiAqIEByZXR1cm5zIERlY29kZWQgY29tbWFuZCBpbmZvIGRlc2NyaWJpbmcgdGhlIERhbWwgb3BlcmF0aW9uIGJlaW5nIHNpZ25lZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlUHJlcGFyZWRUcmFuc2FjdGlvbihwcmVwYXJlZFRyYW5zYWN0aW9uQmFzZTY0OiBzdHJpbmcpOiBEZWNvZGVkQ2FudG9uVHJhbnNhY3Rpb24ge1xuICAvLyBTaW5nbGUgcGFyc2U6IGV4dHJhY3RDYW50b25Db21tYW5kSW5mbyBpbnRlcm5hbGx5IGNhbGxzIFByZXBhcmVkVHJhbnNhY3Rpb24uZnJvbUJpbmFyeS5cbiAgLy8gQW55IGZhaWx1cmUgKHRvcG9sb2d5IGJ5dGVzLCByYW5kb20gYnl0ZXMsIG1pc3NpbmcgdHJhbnNhY3Rpb24gYm9keSkgaXMgY2F1Z2h0IGhlcmUgYW5kXG4gIC8vIHN1cmZhY2VkIGFzIGEgZGVzY3JpcHRpdmUgZXJyb3IgcmF0aGVyIHRoYW4gbGV0dGluZyBhbiBpbnRlcm5hbCBwcm90byBleGNlcHRpb24gZXNjYXBlLlxuICB0cnkge1xuICAgIGNvbnN0IGluZm8gPSB1dGlscy5leHRyYWN0Q2FudG9uQ29tbWFuZEluZm8ocHJlcGFyZWRUcmFuc2FjdGlvbkJhc2U2NCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtpbmQ6IGluZm8ua2luZCxcbiAgICAgIHRlbXBsYXRlSWQ6IGluZm8udGVtcGxhdGVJZCxcbiAgICAgIGFyZ3VtZW50OiBpbmZvLmFyZ3VtZW50LFxuICAgICAgLi4uKGluZm8uY2hvaWNlICE9PSB1bmRlZmluZWQgJiYgeyBjaG9pY2U6IGluZm8uY2hvaWNlIH0pLFxuICAgICAgLi4uKGluZm8uY29udHJhY3RJZCAhPT0gdW5kZWZpbmVkICYmIHsgY29udHJhY3RJZDogaW5mby5jb250cmFjdElkIH0pLFxuICAgICAgLi4uKGluZm8uYWN0aW5nUGFydGllcyAhPT0gdW5kZWZpbmVkICYmIHsgYWN0aW5nUGFydGllczogaW5mby5hY3RpbmdQYXJ0aWVzIH0pLFxuICAgIH07XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdkZWNvZGVQcmVwYXJlZFRyYW5zYWN0aW9uOiBwYXlsb2FkIGlzIG5vdCBhIERhbWwgUHJlcGFyZWRUcmFuc2FjdGlvbiDigJQgY2FsbCBkZXRlY3RDYW50b25TaWduaW5nUGF5bG9hZFR5cGUoKSBmaXJzdCdcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -11,4 +11,6 @@ export declare const PUBLIC_KEY_FORMAT = "CRYPTO_KEY_FORMAT_RAW";
11
11
  export declare const PUBLIC_KEY_SPEC = "SIGNING_KEY_SPEC_EC_CURVE25519";
12
12
  export declare const SIGNATURE_FORMAT = "SIGNATURE_FORMAT_RAW";
13
13
  export declare const SIGNATURE_ALGORITHM_SPEC = "SIGNING_ALGORITHM_SPEC_ED25519";
14
+ export declare const HASHING_SCHEME_VERSION = "HASHING_SCHEME_VERSION_V2";
15
+ export declare const DUMMY_HASH = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
14
16
  //# sourceMappingURL=constant.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../../../src/lib/constant.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;CAE3B,CAAC;AAEF,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;CAEhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AACzD,eAAO,MAAM,eAAe,mCAAmC,CAAC;AAChE,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AACvD,eAAO,MAAM,wBAAwB,mCAAmC,CAAC"}
1
+ {"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../../../src/lib/constant.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;CAE3B,CAAC;AAEF,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;CAEhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AACzD,eAAO,MAAM,eAAe,mCAAmC,CAAC;AAChE,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AACvD,eAAO,MAAM,wBAAwB,mCAAmC,CAAC;AACzE,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAElE,eAAO,MAAM,UAAU,iDAAiD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SIGNATURE_ALGORITHM_SPEC = exports.SIGNATURE_FORMAT = exports.PUBLIC_KEY_SPEC = exports.PUBLIC_KEY_FORMAT = exports.SigningAlgorithmSpec = exports.SigningKeySpec = exports.CryptoKeyFormat = void 0;
3
+ exports.DUMMY_HASH = exports.HASHING_SCHEME_VERSION = exports.SIGNATURE_ALGORITHM_SPEC = exports.SIGNATURE_FORMAT = exports.PUBLIC_KEY_SPEC = exports.PUBLIC_KEY_FORMAT = exports.SigningAlgorithmSpec = exports.SigningKeySpec = exports.CryptoKeyFormat = void 0;
4
4
  exports.CryptoKeyFormat = {
5
5
  RAW: 2,
6
6
  };
@@ -14,4 +14,6 @@ exports.PUBLIC_KEY_FORMAT = 'CRYPTO_KEY_FORMAT_RAW';
14
14
  exports.PUBLIC_KEY_SPEC = 'SIGNING_KEY_SPEC_EC_CURVE25519';
15
15
  exports.SIGNATURE_FORMAT = 'SIGNATURE_FORMAT_RAW';
16
16
  exports.SIGNATURE_ALGORITHM_SPEC = 'SIGNING_ALGORITHM_SPEC_ED25519';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbnN0YW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsZUFBZSxHQUFHO0lBQzdCLEdBQUcsRUFBRSxDQUFDO0NBQ1AsQ0FBQztBQUVXLFFBQUEsY0FBYyxHQUFHO0lBQzVCLGFBQWEsRUFBRSxDQUFDO0NBQ2pCLENBQUM7QUFFVyxRQUFBLG9CQUFvQixHQUFHO0lBQ2xDLE9BQU8sRUFBRSxDQUFDO0NBQ1gsQ0FBQztBQUVXLFFBQUEsaUJBQWlCLEdBQUcsdUJBQXVCLENBQUM7QUFDNUMsUUFBQSxlQUFlLEdBQUcsZ0NBQWdDLENBQUM7QUFDbkQsUUFBQSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMxQyxRQUFBLHdCQUF3QixHQUFHLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENyeXB0b0tleUZvcm1hdCA9IHtcbiAgUkFXOiAyLFxufTtcblxuZXhwb3J0IGNvbnN0IFNpZ25pbmdLZXlTcGVjID0ge1xuICBFQ19DVVJWRTI1NTE5OiAxLFxufTtcblxuZXhwb3J0IGNvbnN0IFNpZ25pbmdBbGdvcml0aG1TcGVjID0ge1xuICBFRDI1NTE5OiAxLFxufTtcblxuZXhwb3J0IGNvbnN0IFBVQkxJQ19LRVlfRk9STUFUID0gJ0NSWVBUT19LRVlfRk9STUFUX1JBVyc7XG5leHBvcnQgY29uc3QgUFVCTElDX0tFWV9TUEVDID0gJ1NJR05JTkdfS0VZX1NQRUNfRUNfQ1VSVkUyNTUxOSc7XG5leHBvcnQgY29uc3QgU0lHTkFUVVJFX0ZPUk1BVCA9ICdTSUdOQVRVUkVfRk9STUFUX1JBVyc7XG5leHBvcnQgY29uc3QgU0lHTkFUVVJFX0FMR09SSVRITV9TUEVDID0gJ1NJR05JTkdfQUxHT1JJVEhNX1NQRUNfRUQyNTUxOSc7XG4iXX0=
17
+ exports.HASHING_SCHEME_VERSION = 'HASHING_SCHEME_VERSION_V2';
18
+ exports.DUMMY_HASH = 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbnN0YW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsZUFBZSxHQUFHO0lBQzdCLEdBQUcsRUFBRSxDQUFDO0NBQ1AsQ0FBQztBQUVXLFFBQUEsY0FBYyxHQUFHO0lBQzVCLGFBQWEsRUFBRSxDQUFDO0NBQ2pCLENBQUM7QUFFVyxRQUFBLG9CQUFvQixHQUFHO0lBQ2xDLE9BQU8sRUFBRSxDQUFDO0NBQ1gsQ0FBQztBQUVXLFFBQUEsaUJBQWlCLEdBQUcsdUJBQXVCLENBQUM7QUFDNUMsUUFBQSxlQUFlLEdBQUcsZ0NBQWdDLENBQUM7QUFDbkQsUUFBQSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMxQyxRQUFBLHdCQUF3QixHQUFHLGdDQUFnQyxDQUFDO0FBQzVELFFBQUEsc0JBQXNCLEdBQUcsMkJBQTJCLENBQUM7QUFFckQsUUFBQSxVQUFVLEdBQUcsOENBQThDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQ3J5cHRvS2V5Rm9ybWF0ID0ge1xuICBSQVc6IDIsXG59O1xuXG5leHBvcnQgY29uc3QgU2lnbmluZ0tleVNwZWMgPSB7XG4gIEVDX0NVUlZFMjU1MTk6IDEsXG59O1xuXG5leHBvcnQgY29uc3QgU2lnbmluZ0FsZ29yaXRobVNwZWMgPSB7XG4gIEVEMjU1MTk6IDEsXG59O1xuXG5leHBvcnQgY29uc3QgUFVCTElDX0tFWV9GT1JNQVQgPSAnQ1JZUFRPX0tFWV9GT1JNQVRfUkFXJztcbmV4cG9ydCBjb25zdCBQVUJMSUNfS0VZX1NQRUMgPSAnU0lHTklOR19LRVlfU1BFQ19FQ19DVVJWRTI1NTE5JztcbmV4cG9ydCBjb25zdCBTSUdOQVRVUkVfRk9STUFUID0gJ1NJR05BVFVSRV9GT1JNQVRfUkFXJztcbmV4cG9ydCBjb25zdCBTSUdOQVRVUkVfQUxHT1JJVEhNX1NQRUMgPSAnU0lHTklOR19BTEdPUklUSE1fU1BFQ19FRDI1NTE5JztcbmV4cG9ydCBjb25zdCBIQVNISU5HX1NDSEVNRV9WRVJTSU9OID0gJ0hBU0hJTkdfU0NIRU1FX1ZFUlNJT05fVjInO1xuXG5leHBvcnQgY29uc3QgRFVNTVlfSEFTSCA9ICdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBPSc7XG4iXX0=
@@ -0,0 +1,56 @@
1
+ import { PublicKey, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { CantonPrepareCommandResponse, CantonTransferAcceptRejectRequest } from './iface';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { Transaction } from './transaction/transaction';
6
+ export declare class CosignDelegationAcceptBuilder extends TransactionBuilder {
7
+ private _commandId;
8
+ private _contractId;
9
+ private _actAsPartyId;
10
+ constructor(_coinConfig: Readonly<CoinConfig>);
11
+ initBuilder(tx: Transaction): void;
12
+ get transactionType(): TransactionType;
13
+ setTransactionType(): void;
14
+ setTransaction(transaction: CantonPrepareCommandResponse): void;
15
+ /** @inheritDoc */
16
+ addSignature(publicKey: PublicKey, signature: Buffer): void;
17
+ /**
18
+ * Sets the unique command id for the cosign delegation accept
19
+ * Also sets the _id of the transaction
20
+ *
21
+ * @param id - A uuid
22
+ * @returns The current builder instance for chaining.
23
+ * @throws Error if id is empty.
24
+ */
25
+ commandId(id: string): this;
26
+ /**
27
+ * Sets the contract id of the delegation proposal to accept
28
+ * @param id - canton contract id
29
+ * @returns The current builder instance for chaining.
30
+ * @throws Error if id is empty.
31
+ */
32
+ contractId(id: string): this;
33
+ /**
34
+ * Sets the party acting as the acceptor
35
+ *
36
+ * @param id - the actor party id (address)
37
+ * @returns The current builder instance for chaining.
38
+ * @throws Error if id is empty.
39
+ */
40
+ actAs(id: string): this;
41
+ /**
42
+ * Builds and returns the CantonTransferAcceptRejectRequest object from the builder's internal state.
43
+ *
44
+ * @returns {CantonTransferAcceptRejectRequest} - A fully constructed and validated request object.
45
+ * @throws {Error} If any required field is missing or fails validation.
46
+ */
47
+ toRequestObject(): CantonTransferAcceptRejectRequest;
48
+ /**
49
+ * Validates the internal state of the builder before building the request object.
50
+ *
51
+ * @private
52
+ * @throws {Error} If any required field is missing or invalid.
53
+ */
54
+ private validate;
55
+ }
56
+ //# sourceMappingURL=cosignDelegationAcceptBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosignDelegationAcceptBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/cosignDelegationAcceptBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,iCAAiC,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,qBAAa,6BAA8B,SAAQ,kBAAkB;IACnE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;gBAElB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,kBAAkB,IAAI,IAAI;IAI1B,cAAc,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI;IAI/D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAU3D;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAS3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQvB;;;;;OAKG;IACH,eAAe,IAAI,iCAAiC;IAYpD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAKjB"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CosignDelegationAcceptBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const transactionBuilder_1 = require("./transactionBuilder");
9
+ const utils_1 = __importDefault(require("./utils"));
10
+ class CosignDelegationAcceptBuilder extends transactionBuilder_1.TransactionBuilder {
11
+ constructor(_coinConfig) {
12
+ super(_coinConfig);
13
+ }
14
+ initBuilder(tx) {
15
+ super.initBuilder(tx);
16
+ this.setTransactionType();
17
+ }
18
+ get transactionType() {
19
+ return sdk_core_1.TransactionType.CosignDelegationAccept;
20
+ }
21
+ setTransactionType() {
22
+ this.transaction.transactionType = sdk_core_1.TransactionType.CosignDelegationAccept;
23
+ }
24
+ setTransaction(transaction) {
25
+ this.transaction.prepareCommand = transaction;
26
+ }
27
+ /** @inheritDoc */
28
+ addSignature(publicKey, signature) {
29
+ if (!this.transaction) {
30
+ throw new sdk_core_1.InvalidTransactionError('transaction is empty!');
31
+ }
32
+ this._signatures.push({ publicKey, signature });
33
+ const pubKeyBase64 = utils_1.default.getBase64FromHex(publicKey.pub);
34
+ this.transaction.signerFingerprint = utils_1.default.getAddressFromPublicKey(pubKeyBase64);
35
+ this.transaction.signatures = signature.toString('base64');
36
+ }
37
+ /**
38
+ * Sets the unique command id for the cosign delegation accept
39
+ * Also sets the _id of the transaction
40
+ *
41
+ * @param id - A uuid
42
+ * @returns The current builder instance for chaining.
43
+ * @throws Error if id is empty.
44
+ */
45
+ commandId(id) {
46
+ if (!id || !id.trim()) {
47
+ throw new Error('commandId must be a non-empty string');
48
+ }
49
+ this._commandId = id.trim();
50
+ this.transaction.id = id.trim();
51
+ return this;
52
+ }
53
+ /**
54
+ * Sets the contract id of the delegation proposal to accept
55
+ * @param id - canton contract id
56
+ * @returns The current builder instance for chaining.
57
+ * @throws Error if id is empty.
58
+ */
59
+ contractId(id) {
60
+ if (!id || !id.trim()) {
61
+ throw new Error('contractId must be a non-empty string');
62
+ }
63
+ this._contractId = id.trim();
64
+ return this;
65
+ }
66
+ /**
67
+ * Sets the party acting as the acceptor
68
+ *
69
+ * @param id - the actor party id (address)
70
+ * @returns The current builder instance for chaining.
71
+ * @throws Error if id is empty.
72
+ */
73
+ actAs(id) {
74
+ if (!id || !id.trim()) {
75
+ throw new Error('actAsPartyId must be a non-empty string');
76
+ }
77
+ this._actAsPartyId = id.trim();
78
+ return this;
79
+ }
80
+ /**
81
+ * Builds and returns the CantonTransferAcceptRejectRequest object from the builder's internal state.
82
+ *
83
+ * @returns {CantonTransferAcceptRejectRequest} - A fully constructed and validated request object.
84
+ * @throws {Error} If any required field is missing or fails validation.
85
+ */
86
+ toRequestObject() {
87
+ this.validate();
88
+ return {
89
+ commandId: this._commandId,
90
+ contractId: this._contractId,
91
+ verboseHashing: false,
92
+ actAs: [this._actAsPartyId],
93
+ readAs: [],
94
+ };
95
+ }
96
+ /**
97
+ * Validates the internal state of the builder before building the request object.
98
+ *
99
+ * @private
100
+ * @throws {Error} If any required field is missing or invalid.
101
+ */
102
+ validate() {
103
+ if (!this._commandId)
104
+ throw new Error('commandId is missing');
105
+ if (!this._contractId)
106
+ throw new Error('contractId is missing');
107
+ if (!this._actAsPartyId)
108
+ throw new Error('actAs partyId is missing');
109
+ }
110
+ }
111
+ exports.CosignDelegationAcceptBuilder = CosignDelegationAcceptBuilder;
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zaWduRGVsZWdhdGlvbkFjY2VwdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2Nvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUEyRjtBQUczRiw2REFBMEQ7QUFFMUQsb0RBQTRCO0FBRTVCLE1BQWEsNkJBQThCLFNBQVEsdUNBQWtCO0lBS25FLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBZTtRQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTywwQkFBZSxDQUFDLHNCQUFzQixDQUFDO0lBQ2hELENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxzQkFBc0IsQ0FBQztJQUM1RSxDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQXlDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztJQUNoRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFlBQVksQ0FBQyxTQUFvQixFQUFFLFNBQWlCO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsZUFBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixHQUFHLGVBQUssQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUyxDQUFDLEVBQVU7UUFDbEIsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLEVBQVU7UUFDbkIsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLEVBQVU7UUFDZCxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEIsT0FBTztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMxQixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDNUIsY0FBYyxFQUFFLEtBQUs7WUFDckIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUMzQixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxRQUFRO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGO0FBaEhELHNFQWdIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBQdWJsaWNLZXksIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UsIENhbnRvblRyYW5zZmVyQWNjZXB0UmVqZWN0UmVxdWVzdCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIENvc2lnbkRlbGVnYXRpb25BY2NlcHRCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfY29tbWFuZElkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbnRyYWN0SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfYWN0QXNQYXJ0eUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKCk7XG4gIH1cblxuICBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5Db3NpZ25EZWxlZ2F0aW9uQWNjZXB0O1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlID0gVHJhbnNhY3Rpb25UeXBlLkNvc2lnbkRlbGVnYXRpb25BY2NlcHQ7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucHJlcGFyZUNvbW1hbmQgPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uIGlzIGVtcHR5IScpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9KTtcbiAgICBjb25zdCBwdWJLZXlCYXNlNjQgPSB1dGlscy5nZXRCYXNlNjRGcm9tSGV4KHB1YmxpY0tleS5wdWIpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmVyRmluZ2VycHJpbnQgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJLZXlCYXNlNjQpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlcyA9IHNpZ25hdHVyZS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdW5pcXVlIGNvbW1hbmQgaWQgZm9yIHRoZSBjb3NpZ24gZGVsZWdhdGlvbiBhY2NlcHRcbiAgICogQWxzbyBzZXRzIHRoZSBfaWQgb2YgdGhlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIEEgdXVpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIGNvbW1hbmRJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbW1hbmRJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9jb21tYW5kSWQgPSBpZC50cmltKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5pZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb250cmFjdCBpZCBvZiB0aGUgZGVsZWdhdGlvbiBwcm9wb3NhbCB0byBhY2NlcHRcbiAgICogQHBhcmFtIGlkIC0gY2FudG9uIGNvbnRyYWN0IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgY29udHJhY3RJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRyYWN0SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fY29udHJhY3RJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXJ0eSBhY3RpbmcgYXMgdGhlIGFjY2VwdG9yXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIHRoZSBhY3RvciBwYXJ0eSBpZCAoYWRkcmVzcylcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBhY3RBcyhpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FjdEFzUGFydHlJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9hY3RBc1BhcnR5SWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGFuZCByZXR1cm5zIHRoZSBDYW50b25UcmFuc2ZlckFjY2VwdFJlamVjdFJlcXVlc3Qgb2JqZWN0IGZyb20gdGhlIGJ1aWxkZXIncyBpbnRlcm5hbCBzdGF0ZS5cbiAgICpcbiAgICogQHJldHVybnMge0NhbnRvblRyYW5zZmVyQWNjZXB0UmVqZWN0UmVxdWVzdH0gLSBBIGZ1bGx5IGNvbnN0cnVjdGVkIGFuZCB2YWxpZGF0ZWQgcmVxdWVzdCBvYmplY3QuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgcmVxdWlyZWQgZmllbGQgaXMgbWlzc2luZyBvciBmYWlscyB2YWxpZGF0aW9uLlxuICAgKi9cbiAgdG9SZXF1ZXN0T2JqZWN0KCk6IENhbnRvblRyYW5zZmVyQWNjZXB0UmVqZWN0UmVxdWVzdCB7XG4gICAgdGhpcy52YWxpZGF0ZSgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbW1hbmRJZDogdGhpcy5fY29tbWFuZElkLFxuICAgICAgY29udHJhY3RJZDogdGhpcy5fY29udHJhY3RJZCxcbiAgICAgIHZlcmJvc2VIYXNoaW5nOiBmYWxzZSxcbiAgICAgIGFjdEFzOiBbdGhpcy5fYWN0QXNQYXJ0eUlkXSxcbiAgICAgIHJlYWRBczogW10sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBidWlsZGVyIGJlZm9yZSBidWlsZGluZyB0aGUgcmVxdWVzdCBvYmplY3QuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgcmVxdWlyZWQgZmllbGQgaXMgbWlzc2luZyBvciBpbnZhbGlkLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbW1hbmRJZCkgdGhyb3cgbmV3IEVycm9yKCdjb21tYW5kSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fY29udHJhY3RJZCkgdGhyb3cgbmV3IEVycm9yKCdjb250cmFjdElkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2FjdEFzUGFydHlJZCkgdGhyb3cgbmV3IEVycm9yKCdhY3RBcyBwYXJ0eUlkIGlzIG1pc3NpbmcnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,60 @@
1
+ import { PublicKey, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { CantonPrepareCommandResponse, CosignDelegationProposal } from './iface';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { Transaction } from './transaction/transaction';
6
+ export declare class CosignDelegationProposalBuilder extends TransactionBuilder {
7
+ private _contractId;
8
+ private _operatorId;
9
+ private _updateId;
10
+ private _packageName?;
11
+ constructor(_coinConfig: Readonly<CoinConfig>);
12
+ initBuilder(tx: Transaction): void;
13
+ get transactionType(): TransactionType;
14
+ setTransactionType(): void;
15
+ setTransaction(transaction: CantonPrepareCommandResponse): void;
16
+ /** @inheritDoc */
17
+ addSignature(publicKey: PublicKey, signature: Buffer): void;
18
+ /**
19
+ * Sets the contract id of the delegation proposal to cosign
20
+ * @param id - canton contract id
21
+ * @returns The current builder instance for chaining.
22
+ * @throws Error if id is empty.
23
+ */
24
+ contractId(id: string): this;
25
+ /**
26
+ * Sets the operator party id
27
+ * @param id - operator party id
28
+ * @returns The current builder instance for chaining.
29
+ * @throws Error if id is empty.
30
+ */
31
+ operatorId(id: string): this;
32
+ /**
33
+ * Sets the incoming txn id (updateId of the ledger update)
34
+ * @param id - ledger update id
35
+ * @returns The current builder instance for chaining.
36
+ * @throws Error if id is empty.
37
+ */
38
+ updateId(id: string): this;
39
+ /**
40
+ * Sets the optional package name
41
+ * @param name - package name
42
+ * @returns The current builder instance for chaining.
43
+ */
44
+ packageName(name: string): this;
45
+ /**
46
+ * Builds and returns the CosignDelegationProposal object from the builder's internal state.
47
+ *
48
+ * @returns {CosignDelegationProposal} - A fully constructed and validated request object.
49
+ * @throws {Error} If any required field is missing or fails validation.
50
+ */
51
+ toRequestObject(): CosignDelegationProposal;
52
+ /**
53
+ * Validates the internal state of the builder before building the request object.
54
+ *
55
+ * @private
56
+ * @throws {Error} If any required field is missing or invalid.
57
+ */
58
+ private validate;
59
+ }
60
+ //# sourceMappingURL=cosignDelegationProposalBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cosignDelegationProposalBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/cosignDelegationProposalBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,qBAAa,+BAAgC,SAAQ,kBAAkB;IACrE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAC,CAAS;gBAElB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,kBAAkB,IAAI,IAAI;IAI1B,cAAc,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI;IAI/D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3D;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAU1B;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK/B;;;;;OAKG;IACH,eAAe,IAAI,wBAAwB;IAc3C;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAKjB"}