@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.
- package/dist/src/canton.d.ts +22 -1
- package/dist/src/canton.d.ts.map +1 -1
- package/dist/src/canton.js +267 -10
- package/dist/src/cantonToken.d.ts +19 -0
- package/dist/src/cantonToken.d.ts.map +1 -0
- package/dist/src/cantonToken.js +52 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/allocationAllocateBuilder.d.ts +126 -0
- package/dist/src/lib/allocationAllocateBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationAllocateBuilder.js +250 -0
- package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts +67 -0
- package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationAllocateWithdrawnBuilder.js +130 -0
- package/dist/src/lib/allocationRejectBuilder.d.ts +51 -0
- package/dist/src/lib/allocationRejectBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationRejectBuilder.js +107 -0
- package/dist/src/lib/allocationRequestBuilder.d.ts +116 -0
- package/dist/src/lib/allocationRequestBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationRequestBuilder.js +248 -0
- package/dist/src/lib/cantonCommandBuilder.d.ts +72 -0
- package/dist/src/lib/cantonCommandBuilder.d.ts.map +1 -0
- package/dist/src/lib/cantonCommandBuilder.js +173 -0
- package/dist/src/lib/clearSigning.d.ts +58 -0
- package/dist/src/lib/clearSigning.d.ts.map +1 -0
- package/dist/src/lib/clearSigning.js +66 -0
- package/dist/src/lib/constant.d.ts +2 -0
- package/dist/src/lib/constant.d.ts.map +1 -1
- package/dist/src/lib/constant.js +4 -2
- package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts +56 -0
- package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts.map +1 -0
- package/dist/src/lib/cosignDelegationAcceptBuilder.js +112 -0
- package/dist/src/lib/cosignDelegationProposalBuilder.d.ts +60 -0
- package/dist/src/lib/cosignDelegationProposalBuilder.d.ts.map +1 -0
- package/dist/src/lib/cosignDelegationProposalBuilder.js +111 -0
- package/dist/src/lib/iface.d.ts +143 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +3 -1
- package/dist/src/lib/index.d.ts +13 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +29 -2
- package/dist/src/lib/messages/cantonBaseMessage.d.ts +16 -0
- package/dist/src/lib/messages/cantonBaseMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonBaseMessage.js +28 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts +14 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.js +23 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts +17 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.js +25 -0
- package/dist/src/lib/messages/cantonSignTopology/index.d.ts +3 -0
- package/dist/src/lib/messages/cantonSignTopology/index.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/index.js +19 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts +13 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.js +22 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts +14 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.js +22 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.d.ts +3 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.js +19 -0
- package/dist/src/lib/messages/index.d.ts +5 -0
- package/dist/src/lib/messages/index.d.ts.map +1 -0
- package/dist/src/lib/messages/index.js +21 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +11 -1
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -1
- package/dist/src/lib/oneStepPreApprovalBuilder.js +29 -1
- package/dist/src/lib/resourcesInterface.d.ts +1 -1
- package/dist/src/lib/resourcesInterface.d.ts.map +1 -1
- package/dist/src/lib/resourcesInterface.js +1 -1
- package/dist/src/lib/transaction/transaction.d.ts +21 -2
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transaction.js +330 -9
- package/dist/src/lib/transactionBuilder.d.ts +3 -3
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +1 -5
- package/dist/src/lib/transactionBuilderFactory.d.ts +22 -1
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +78 -2
- package/dist/src/lib/transferAcceptanceBuilder.d.ts +7 -5
- package/dist/src/lib/transferAcceptanceBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferAcceptanceBuilder.js +20 -6
- package/dist/src/lib/transferAcknowledgeBuilder.d.ts +72 -0
- package/dist/src/lib/transferAcknowledgeBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferAcknowledgeBuilder.js +133 -0
- package/dist/src/lib/transferBuilder.d.ts +87 -3
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +169 -1
- package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts +67 -0
- package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferOfferWithdrawnBuilder.js +130 -0
- package/dist/src/lib/transferRejectionBuilder.d.ts +59 -0
- package/dist/src/lib/transferRejectionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferRejectionBuilder.js +116 -0
- package/dist/src/lib/utils.d.ts +51 -3
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +751 -44
- package/dist/src/lib/walletInitBuilder.d.ts +2 -1
- package/dist/src/lib/walletInitBuilder.d.ts.map +1 -1
- package/dist/src/lib/walletInitBuilder.js +4 -1
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +2 -1
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -1
- package/dist/src/lib/walletInitialization/walletInitTransaction.js +14 -1
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/test/helper.d.ts +3 -0
- package/dist/test/helper.d.ts.map +1 -0
- package/dist/test/helper.js +9 -0
- package/dist/test/integration/canton.integration.d.ts +2 -0
- package/dist/test/integration/canton.integration.d.ts.map +1 -0
- package/dist/test/integration/canton.integration.js +157 -0
- package/dist/test/integration/canton.token.integration.d.ts +2 -0
- package/dist/test/integration/canton.token.integration.d.ts.map +1 -0
- package/dist/test/integration/canton.token.integration.js +51 -0
- package/dist/test/resources.d.ts +233 -2
- package/dist/test/resources.d.ts.map +1 -1
- package/dist/test/resources.js +238 -7
- package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.js +360 -0
- package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.js +133 -0
- package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.js +121 -0
- package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.js +407 -0
- package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts +2 -0
- package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.js +340 -0
- package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts +2 -0
- package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.js +104 -0
- package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts +2 -0
- package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.js +74 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +25 -7
- package/dist/test/unit/builder/transfer/transferBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transfer/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transfer/transferBuilder.js +84 -0
- package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +65 -15
- package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.js +32 -0
- package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.js +64 -0
- package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transferReject/transferRejectBuilder.js +96 -0
- package/dist/test/unit/canton.d.ts +2 -0
- package/dist/test/unit/canton.d.ts.map +1 -0
- package/dist/test/unit/canton.js +705 -0
- package/dist/test/unit/index.d.ts +5 -0
- package/dist/test/unit/index.d.ts.map +1 -1
- package/dist/test/unit/index.js +6 -1
- package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts +2 -0
- package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts.map +1 -0
- package/dist/test/unit/messages/cantonSignTopologyMessage.js +46 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts +2 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts.map +1 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.js +48 -0
- package/dist/test/unit/messages/clearSigning.d.ts +2 -0
- package/dist/test/unit/messages/clearSigning.d.ts.map +1 -0
- package/dist/test/unit/messages/clearSigning.js +72 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
- package/dist/test/unit/utils.js +376 -5
- package/dist/tsconfig.tsbuildinfo +1 -1
- 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"}
|
package/dist/src/lib/constant.js
CHANGED
|
@@ -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
|
-
|
|
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"}
|