@bitgo-beta/sdk-coin-canton 1.0.1-beta.9 → 1.0.1-beta.90
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/resources/hash/hash.d.ts +5 -0
- package/dist/resources/hash/hash.js +298 -0
- package/dist/resources/proto/damlTransaction.js +100 -0
- package/dist/resources/proto/damlTransactionNode.js +71 -0
- package/dist/resources/proto/damlTransactionNodeSeed.js +56 -0
- package/dist/resources/proto/metadata/metadataGlobalKeyMappingEntry.js +53 -0
- package/dist/resources/proto/metadata/metadataInputContract.js +80 -0
- package/dist/resources/proto/metadata/metadataSubmitterInfo.js +62 -0
- package/dist/resources/proto/metadata.js +189 -0
- package/dist/resources/proto/node/empty.js +36 -0
- package/dist/resources/proto/node/globalKey.js +81 -0
- package/dist/resources/proto/node/identifier.js +73 -0
- package/dist/resources/proto/node/node.js +664 -0
- package/dist/resources/proto/node/timestamp.js +145 -0
- package/dist/resources/proto/node/value.js +838 -0
- package/dist/resources/proto/preparedTransaction.d.ts +8 -0
- package/dist/resources/proto/preparedTransaction.js +66 -0
- package/dist/src/canton.d.ts +15 -2
- package/dist/src/canton.d.ts.map +1 -1
- package/dist/src/canton.js +67 -6
- 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/constant.d.ts +16 -0
- package/dist/src/lib/constant.d.ts.map +1 -0
- package/dist/src/lib/constant.js +19 -0
- package/dist/src/lib/iface.d.ts +107 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +7 -1
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +15 -3
- package/dist/src/lib/keyPair.d.ts +7 -1
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +24 -4
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +51 -0
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -0
- package/dist/src/lib/oneStepPreApprovalBuilder.js +101 -0
- package/dist/src/lib/resourcesInterface.d.ts +214 -0
- package/dist/src/lib/resourcesInterface.d.ts.map +1 -0
- package/dist/src/lib/resourcesInterface.js +3 -0
- package/dist/src/lib/transaction/transaction.d.ts +24 -0
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/transaction.js +206 -0
- package/dist/src/lib/transactionBuilder.d.ts +10 -17
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +31 -27
- package/dist/src/lib/transactionBuilderFactory.d.ts +15 -3
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +56 -6
- package/dist/src/lib/transferAcceptanceBuilder.d.ts +59 -0
- package/dist/src/lib/transferAcceptanceBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferAcceptanceBuilder.js +116 -0
- 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 +5 -1
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +8 -1
- 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 +101 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +258 -3
- package/dist/src/lib/walletInitBuilder.d.ts +101 -0
- package/dist/src/lib/walletInitBuilder.d.ts.map +1 -0
- package/dist/src/lib/walletInitBuilder.js +232 -0
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +17 -0
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -0
- package/dist/src/lib/walletInitialization/walletInitTransaction.js +100 -0
- 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 +40 -0
- package/dist/test/resources.d.ts +79 -0
- package/dist/test/resources.d.ts.map +1 -0
- package/dist/test/resources.js +94 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.d.ts +2 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +66 -0
- package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +57 -0
- 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/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 +57 -0
- package/dist/test/unit/builder/walletInit/walletInitBuilder.d.ts +2 -0
- package/dist/test/unit/builder/walletInit/walletInitBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/walletInit/walletInitBuilder.js +65 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +72 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +76 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +29 -10
- package/dist/src/lib/transaction.d.ts +0 -8
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -17
|
@@ -0,0 +1,206 @@
|
|
|
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.Transaction = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const utils_1 = __importDefault(require("../utils"));
|
|
9
|
+
const constant_1 = require("../constant");
|
|
10
|
+
class Transaction extends sdk_core_1.BaseTransaction {
|
|
11
|
+
constructor(coinConfig) {
|
|
12
|
+
super(coinConfig);
|
|
13
|
+
}
|
|
14
|
+
get prepareCommand() {
|
|
15
|
+
return this._prepareCommand;
|
|
16
|
+
}
|
|
17
|
+
set prepareCommand(transaction) {
|
|
18
|
+
this._prepareCommand = transaction;
|
|
19
|
+
}
|
|
20
|
+
set transactionType(transactionType) {
|
|
21
|
+
this._type = transactionType;
|
|
22
|
+
}
|
|
23
|
+
set acknowledgeData(data) {
|
|
24
|
+
this._acknowledgeData = data;
|
|
25
|
+
}
|
|
26
|
+
get id() {
|
|
27
|
+
if (!this._id) {
|
|
28
|
+
throw new sdk_core_1.InvalidTransactionError('transaction is is not set');
|
|
29
|
+
}
|
|
30
|
+
return this._id;
|
|
31
|
+
}
|
|
32
|
+
set id(id) {
|
|
33
|
+
this._id = id;
|
|
34
|
+
}
|
|
35
|
+
canSign(key) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
set signatures(signature) {
|
|
39
|
+
this._signatures.push(signature);
|
|
40
|
+
}
|
|
41
|
+
set signerFingerprint(fingerprint) {
|
|
42
|
+
this._signerFingerprint = fingerprint;
|
|
43
|
+
}
|
|
44
|
+
toBroadcastFormat() {
|
|
45
|
+
if (!this._type) {
|
|
46
|
+
throw new sdk_core_1.InvalidTransactionError('Transaction type is not set');
|
|
47
|
+
}
|
|
48
|
+
if (this._type === sdk_core_1.TransactionType.TransferAcknowledge) {
|
|
49
|
+
if (!this._acknowledgeData) {
|
|
50
|
+
throw new sdk_core_1.InvalidTransactionError('AcknowledgeData is not set');
|
|
51
|
+
}
|
|
52
|
+
const minData = {
|
|
53
|
+
txType: sdk_core_1.TransactionType[this._type],
|
|
54
|
+
submissionId: this.id,
|
|
55
|
+
acknowledgeData: this._acknowledgeData,
|
|
56
|
+
};
|
|
57
|
+
return Buffer.from(JSON.stringify(minData)).toString('base64');
|
|
58
|
+
}
|
|
59
|
+
if (!this._prepareCommand) {
|
|
60
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
|
|
61
|
+
}
|
|
62
|
+
const partySignatures = [];
|
|
63
|
+
const data = {
|
|
64
|
+
prepareCommandResponse: this._prepareCommand,
|
|
65
|
+
txType: this._type ? sdk_core_1.TransactionType[this._type] : '',
|
|
66
|
+
preparedTransaction: '',
|
|
67
|
+
partySignatures: {
|
|
68
|
+
signatures: partySignatures,
|
|
69
|
+
},
|
|
70
|
+
deduplicationPeriod: {
|
|
71
|
+
Empty: {},
|
|
72
|
+
},
|
|
73
|
+
submissionId: this.id,
|
|
74
|
+
hashingSchemeVersion: constant_1.HASHING_SCHEME_VERSION,
|
|
75
|
+
minLedgerTime: {
|
|
76
|
+
time: {
|
|
77
|
+
Empty: {},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
const signatures = [];
|
|
82
|
+
if (this._signatures.length > 0 && this._signerFingerprint) {
|
|
83
|
+
const signerPartyId = `${this._signerFingerprint.slice(0, 5)}::${this._signerFingerprint}`;
|
|
84
|
+
this.signature.map((signature) => {
|
|
85
|
+
const signatureObj = {
|
|
86
|
+
format: constant_1.SIGNATURE_FORMAT,
|
|
87
|
+
signature: signature,
|
|
88
|
+
signedBy: this._signerFingerprint,
|
|
89
|
+
signingAlgorithmSpec: constant_1.SIGNATURE_ALGORITHM_SPEC,
|
|
90
|
+
};
|
|
91
|
+
signatures.push(signatureObj);
|
|
92
|
+
});
|
|
93
|
+
const partySignature = {
|
|
94
|
+
party: signerPartyId,
|
|
95
|
+
signatures: signatures,
|
|
96
|
+
};
|
|
97
|
+
data.partySignatures?.signatures.push(partySignature);
|
|
98
|
+
data.preparedTransaction = this._prepareCommand.preparedTransaction
|
|
99
|
+
? this._prepareCommand.preparedTransaction
|
|
100
|
+
: '';
|
|
101
|
+
}
|
|
102
|
+
return Buffer.from(JSON.stringify(data)).toString('base64');
|
|
103
|
+
}
|
|
104
|
+
toJson() {
|
|
105
|
+
const result = {
|
|
106
|
+
id: this.id,
|
|
107
|
+
type: this._type,
|
|
108
|
+
sender: '',
|
|
109
|
+
receiver: '',
|
|
110
|
+
amount: '',
|
|
111
|
+
};
|
|
112
|
+
if (this._type === sdk_core_1.TransactionType.TransferAcknowledge) {
|
|
113
|
+
if (!this._acknowledgeData) {
|
|
114
|
+
throw new sdk_core_1.InvalidTransactionError('AcknowledgeData is not set');
|
|
115
|
+
}
|
|
116
|
+
result.acknowledgeData = this._acknowledgeData;
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
if (!this._prepareCommand || !this._prepareCommand.preparedTransaction) {
|
|
120
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
|
|
121
|
+
}
|
|
122
|
+
// TODO: extract other required data (utxo used, request time, execute before etc)
|
|
123
|
+
let parsedInfo;
|
|
124
|
+
try {
|
|
125
|
+
parsedInfo = utils_1.default.parseRawCantonTransactionData(this._prepareCommand.preparedTransaction);
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
throw new sdk_core_1.InvalidTransactionError(`Failed to parse transaction hash: ${e instanceof Error ? e.message : e}`);
|
|
129
|
+
}
|
|
130
|
+
result.sender = parsedInfo.sender;
|
|
131
|
+
result.receiver = parsedInfo.receiver;
|
|
132
|
+
result.amount = parsedInfo.amount;
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
get signablePayload() {
|
|
136
|
+
if (this._type === sdk_core_1.TransactionType.TransferAcknowledge) {
|
|
137
|
+
return Buffer.from(constant_1.DUMMY_HASH, 'base64');
|
|
138
|
+
}
|
|
139
|
+
if (!this._prepareCommand) {
|
|
140
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
|
|
141
|
+
}
|
|
142
|
+
return Buffer.from(this._prepareCommand.preparedTransactionHash, 'base64');
|
|
143
|
+
}
|
|
144
|
+
fromRawTransaction(rawTx) {
|
|
145
|
+
try {
|
|
146
|
+
const decoded = JSON.parse(Buffer.from(rawTx, 'base64').toString('utf8'));
|
|
147
|
+
this.id = decoded.submissionId;
|
|
148
|
+
this.transactionType = sdk_core_1.TransactionType[decoded.txType];
|
|
149
|
+
if (this.type !== sdk_core_1.TransactionType.TransferAcknowledge) {
|
|
150
|
+
if (decoded.prepareCommandResponse) {
|
|
151
|
+
this.prepareCommand = decoded.prepareCommandResponse;
|
|
152
|
+
}
|
|
153
|
+
if (decoded.partySignatures && decoded.partySignatures.signatures.length > 0) {
|
|
154
|
+
this.signerFingerprint = decoded.partySignatures.signatures[0].party.split('::')[1];
|
|
155
|
+
this.signatures = decoded.partySignatures.signatures[0].signatures[0].signature;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
if (decoded.acknowledgeData) {
|
|
160
|
+
this.acknowledgeData = decoded.acknowledgeData;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch (e) {
|
|
165
|
+
throw new sdk_core_1.InvalidTransactionError('Unable to parse raw transaction data');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
explainTransaction() {
|
|
169
|
+
const displayOrder = [
|
|
170
|
+
'id',
|
|
171
|
+
'outputs',
|
|
172
|
+
'outputAmount',
|
|
173
|
+
'inputs',
|
|
174
|
+
'inputAmount',
|
|
175
|
+
'changeOutputs',
|
|
176
|
+
'changeAmount',
|
|
177
|
+
'fee',
|
|
178
|
+
'type',
|
|
179
|
+
];
|
|
180
|
+
const inputs = [];
|
|
181
|
+
let inputAmount = '0';
|
|
182
|
+
switch (this.type) {
|
|
183
|
+
case sdk_core_1.TransactionType.TransferAccept:
|
|
184
|
+
case sdk_core_1.TransactionType.TransferReject: {
|
|
185
|
+
const txData = this.toJson();
|
|
186
|
+
inputs.push({ address: txData.sender, amount: txData.amount });
|
|
187
|
+
inputAmount = txData.amount;
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
id: this.id,
|
|
193
|
+
displayOrder,
|
|
194
|
+
outputs: [],
|
|
195
|
+
outputAmount: '0',
|
|
196
|
+
inputs: inputs,
|
|
197
|
+
inputAmount: inputAmount,
|
|
198
|
+
changeOutputs: [],
|
|
199
|
+
changeAmount: '0',
|
|
200
|
+
fee: { fee: '0' },
|
|
201
|
+
type: this.type,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
exports.Transaction = Transaction;
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQU04QjtBQVk5QixxREFBNkI7QUFDN0IsMENBQTZHO0FBRTdHLE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBSzlDLFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxXQUF5QztRQUMxRCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxlQUFlLENBQUMsZUFBZ0M7UUFDbEQsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLElBQXlCO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksRUFBRTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksa0NBQXVCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLEVBQUUsQ0FBQyxFQUFVO1FBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25D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LEtBQUssMEJBQWUsQ0FBQyxjQUFjLENBQUM7WUFDcEMsS0FBSywwQkFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDL0QsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQzVCLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxZQUFZO1lBQ1osT0FBTyxFQUFFLEVBQUU7WUFDWCxZQUFZLEVBQUUsR0FBRztZQUNqQixNQUFNLEVBQUUsTUFBTTtZQUNkLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLFlBQVksRUFBRSxHQUFHO1lBQ2pCLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFqTkQsa0NBaU5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgSVRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UsXG4gIE11bHRpSGFzaFNpZ25hdHVyZSxcbiAgUGFydHlTaWduYXR1cmUsXG4gIFByZXBhcmVkVHhuUGFyc2VkSW5mbyxcbiAgVHJhbnNhY3Rpb25Ccm9hZGNhc3REYXRhLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBUcmFuc2ZlckFja25vd2xlZGdlLFxuICBUeERhdGEsXG59IGZyb20gJy4uL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBEVU1NWV9IQVNILCBIQVNISU5HX1NDSEVNRV9WRVJTSU9OLCBTSUdOQVRVUkVfQUxHT1JJVEhNX1NQRUMsIFNJR05BVFVSRV9GT1JNQVQgfSBmcm9tICcuLi9jb25zdGFudCc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX3ByZXBhcmVDb21tYW5kOiBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlO1xuICBwcml2YXRlIF9zaWduZXJGaW5nZXJwcmludDogc3RyaW5nO1xuICBwcml2YXRlIF9hY2tub3dsZWRnZURhdGE6IFRyYW5zZmVyQWNrbm93bGVkZ2U7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldCBwcmVwYXJlQ29tbWFuZCgpOiBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlIHtcbiAgICByZXR1cm4gdGhpcy5fcHJlcGFyZUNvbW1hbmQ7XG4gIH1cblxuICBzZXQgcHJlcGFyZUNvbW1hbmQodHJhbnNhY3Rpb246IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UpIHtcbiAgICB0aGlzLl9wcmVwYXJlQ29tbWFuZCA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSkge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICBzZXQgYWNrbm93bGVkZ2VEYXRhKGRhdGE6IFRyYW5zZmVyQWNrbm93bGVkZ2UpIHtcbiAgICB0aGlzLl9hY2tub3dsZWRnZURhdGEgPSBkYXRhO1xuICB9XG5cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9pZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbiBpcyBpcyBub3Qgc2V0Jyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIHNldCBpZChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5faWQgPSBpZDtcbiAgfVxuXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc2V0IHNpZ25hdHVyZXMoc2lnbmF0dXJlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgfVxuXG4gIHNldCBzaWduZXJGaW5nZXJwcmludChmaW5nZXJwcmludDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2lnbmVyRmluZ2VycHJpbnQgPSBmaW5nZXJwcmludDtcbiAgfVxuXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl90eXBlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgaXMgbm90IHNldCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyQWNrbm93bGVkZ2UpIHtcbiAgICAgIGlmICghdGhpcy5fYWNrbm93bGVkZ2VEYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignQWNrbm93bGVkZ2VEYXRhIGlzIG5vdCBzZXQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbkRhdGE6IFRyYW5zYWN0aW9uQnJvYWRjYXN0RGF0YSA9IHtcbiAgICAgICAgdHhUeXBlOiBUcmFuc2FjdGlvblR5cGVbdGhpcy5fdHlwZV0sXG4gICAgICAgIHN1Ym1pc3Npb25JZDogdGhpcy5pZCxcbiAgICAgICAgYWNrbm93bGVkZ2VEYXRhOiB0aGlzLl9hY2tub3dsZWRnZURhdGEsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KG1pbkRhdGEpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fcHJlcGFyZUNvbW1hbmQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICBjb25zdCBwYXJ0eVNpZ25hdHVyZXM6IFBhcnR5U2lnbmF0dXJlW10gPSBbXTtcbiAgICBjb25zdCBkYXRhOiBUcmFuc2FjdGlvbkJyb2FkY2FzdERhdGEgPSB7XG4gICAgICBwcmVwYXJlQ29tbWFuZFJlc3BvbnNlOiB0aGlzLl9wcmVwYXJlQ29tbWFuZCxcbiAgICAgIHR4VHlwZTogdGhpcy5fdHlwZSA/IFRyYW5zYWN0aW9uVHlwZVt0aGlzLl90eXBlXSA6ICcnLFxuICAgICAgcHJlcGFyZWRUcmFuc2FjdGlvbjogJycsXG4gICAgICBwYXJ0eVNpZ25hdHVyZXM6IHtcbiAgICAgICAgc2lnbmF0dXJlczogcGFydHlTaWduYXR1cmVzLFxuICAgICAgfSxcbiAgICAgIGRlZHVwbGljYXRpb25QZXJpb2Q6IHtcbiAgICAgICAgRW1wdHk6IHt9LFxuICAgICAgfSxcbiAgICAgIHN1Ym1pc3Npb25JZDogdGhpcy5pZCxcbiAgICAgIGhhc2hpbmdTY2hlbWVWZXJzaW9uOiBIQVNISU5HX1NDSEVNRV9WRVJTSU9OLFxuICAgICAgbWluTGVkZ2VyVGltZToge1xuICAgICAgICB0aW1lOiB7XG4gICAgICAgICAgRW1wdHk6IHt9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHNpZ25hdHVyZXM6IE11bHRpSGFzaFNpZ25hdHVyZVtdID0gW107XG4gICAgaWYgKHRoaXMuX3NpZ25hdHVyZXMubGVuZ3RoID4gMCAmJiB0aGlzLl9zaWduZXJGaW5nZXJwcmludCkge1xuICAgICAgY29uc3Qgc2lnbmVyUGFydHlJZCA9IGAke3RoaXMuX3NpZ25lckZpbmdlcnByaW50LnNsaWNlKDAsIDUpfTo6JHt0aGlzLl9zaWduZXJGaW5nZXJwcmludH1gO1xuICAgICAgdGhpcy5zaWduYXR1cmUubWFwKChzaWduYXR1cmUpID0+IHtcbiAgICAgICAgY29uc3Qgc2lnbmF0dXJlT2JqOiBNdWx0aUhhc2hTaWduYXR1cmUgPSB7XG4gICAgICAgICAgZm9ybWF0OiBTSUdOQVRVUkVfRk9STUFULFxuICAgICAgICAgIHNpZ25hdHVyZTogc2lnbmF0dXJlLFxuICAgICAgICAgIHNpZ25lZEJ5OiB0aGlzLl9zaWduZXJGaW5nZXJwcmludCxcbiAgICAgICAgICBzaWduaW5nQWxnb3JpdGhtU3BlYzogU0lHTkFUVVJFX0FMR09SSVRITV9TUEVDLFxuICAgICAgICB9O1xuICAgICAgICBzaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlT2JqKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcGFydHlTaWduYXR1cmUgPSB7XG4gICAgICAgIHBhcnR5OiBzaWduZXJQYXJ0eUlkLFxuICAgICAgICBzaWduYXR1cmVzOiBzaWduYXR1cmVzLFxuICAgICAgfTtcbiAgICAgIGRhdGEucGFydHlTaWduYXR1cmVzPy5zaWduYXR1cmVzLnB1c2gocGFydHlTaWduYXR1cmUpO1xuICAgICAgZGF0YS5wcmVwYXJlZFRyYW5zYWN0aW9uID0gdGhpcy5fcHJlcGFyZUNvbW1hbmQucHJlcGFyZWRUcmFuc2FjdGlvblxuICAgICAgICA/IHRoaXMuX3ByZXBhcmVDb21tYW5kLnByZXBhcmVkVHJhbnNhY3Rpb25cbiAgICAgICAgOiAnJztcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGRhdGEpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgdHlwZTogdGhpcy5fdHlwZSBhcyBUcmFuc2FjdGlvblR5cGUsXG4gICAgICBzZW5kZXI6ICcnLFxuICAgICAgcmVjZWl2ZXI6ICcnLFxuICAgICAgYW1vdW50OiAnJyxcbiAgICB9O1xuICAgIGlmICh0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2tub3dsZWRnZSkge1xuICAgICAgaWYgKCF0aGlzLl9hY2tub3dsZWRnZURhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdBY2tub3dsZWRnZURhdGEgaXMgbm90IHNldCcpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmFja25vd2xlZGdlRGF0YSA9IHRoaXMuX2Fja25vd2xlZGdlRGF0YTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGlmICghdGhpcy5fcHJlcGFyZUNvbW1hbmQgfHwgIXRoaXMuX3ByZXBhcmVDb21tYW5kLnByZXBhcmVkVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICAvLyBUT0RPOiBleHRyYWN0IG90aGVyIHJlcXVpcmVkIGRhdGEgKHV0eG8gdXNlZCwgcmVxdWVzdCB0aW1lLCBleGVjdXRlIGJlZm9yZSBldGMpXG4gICAgbGV0IHBhcnNlZEluZm86IFByZXBhcmVkVHhuUGFyc2VkSW5mbztcbiAgICB0cnkge1xuICAgICAgcGFyc2VkSW5mbyA9IHV0aWxzLnBhcnNlUmF3Q2FudG9uVHJhbnNhY3Rpb25EYXRhKHRoaXMuX3ByZXBhcmVDb21tYW5kLnByZXBhcmVkVHJhbnNhY3Rpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgRmFpbGVkIHRvIHBhcnNlIHRyYW5zYWN0aW9uIGhhc2g6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogZX1gKTtcbiAgICB9XG4gICAgcmVzdWx0LnNlbmRlciA9IHBhcnNlZEluZm8uc2VuZGVyO1xuICAgIHJlc3VsdC5yZWNlaXZlciA9IHBhcnNlZEluZm8ucmVjZWl2ZXI7XG4gICAgcmVzdWx0LmFtb3VudCA9IHBhcnNlZEluZm8uYW1vdW50O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFja25vd2xlZGdlKSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oRFVNTVlfSEFTSCwgJ2Jhc2U2NCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3ByZXBhcmVDb21tYW5kKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuX3ByZXBhcmVDb21tYW5kLnByZXBhcmVkVHJhbnNhY3Rpb25IYXNoLCAnYmFzZTY0Jyk7XG4gIH1cblxuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHg6IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkOiBUcmFuc2FjdGlvbkJyb2FkY2FzdERhdGEgPSBKU09OLnBhcnNlKEJ1ZmZlci5mcm9tKHJhd1R4LCAnYmFzZTY0JykudG9TdHJpbmcoJ3V0ZjgnKSk7XG4gICAgICB0aGlzLmlkID0gZGVjb2RlZC5zdWJtaXNzaW9uSWQ7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZVtkZWNvZGVkLnR4VHlwZV07XG4gICAgICBpZiAodGhpcy50eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2tub3dsZWRnZSkge1xuICAgICAgICBpZiAoZGVjb2RlZC5wcmVwYXJlQ29tbWFuZFJlc3BvbnNlKSB7XG4gICAgICAgICAgdGhpcy5wcmVwYXJlQ29tbWFuZCA9IGRlY29kZWQucHJlcGFyZUNvbW1hbmRSZXNwb25zZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVjb2RlZC5wYXJ0eVNpZ25hdHVyZXMgJiYgZGVjb2RlZC5wYXJ0eVNpZ25hdHVyZXMuc2lnbmF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5zaWduZXJGaW5nZXJwcmludCA9IGRlY29kZWQucGFydHlTaWduYXR1cmVzLnNpZ25hdHVyZXNbMF0ucGFydHkuc3BsaXQoJzo6JylbMV07XG4gICAgICAgICAgdGhpcy5zaWduYXR1cmVzID0gZGVjb2RlZC5wYXJ0eVNpZ25hdHVyZXMuc2lnbmF0dXJlc1swXS5zaWduYXR1cmVzWzBdLnNpZ25hdHVyZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGRlY29kZWQuYWNrbm93bGVkZ2VEYXRhKSB7XG4gICAgICAgICAgdGhpcy5hY2tub3dsZWRnZURhdGEgPSBkZWNvZGVkLmFja25vd2xlZGdlRGF0YTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVW5hYmxlIHRvIHBhcnNlIHJhdyB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgfVxuICB9XG5cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFtcbiAgICAgICdpZCcsXG4gICAgICAnb3V0cHV0cycsXG4gICAgICAnb3V0cHV0QW1vdW50JyxcbiAgICAgICdpbnB1dHMnLFxuICAgICAgJ2lucHV0QW1vdW50JyxcbiAgICAgICdjaGFuZ2VPdXRwdXRzJyxcbiAgICAgICdjaGFuZ2VBbW91bnQnLFxuICAgICAgJ2ZlZScsXG4gICAgICAndHlwZScsXG4gICAgXTtcbiAgICBjb25zdCBpbnB1dHM6IElUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG4gICAgbGV0IGlucHV0QW1vdW50ID0gJzAnO1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFjY2VwdDpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyUmVqZWN0OiB7XG4gICAgICAgIGNvbnN0IHR4RGF0YSA9IHRoaXMudG9Kc29uKCk7XG4gICAgICAgIGlucHV0cy5wdXNoKHsgYWRkcmVzczogdHhEYXRhLnNlbmRlciwgYW1vdW50OiB0eERhdGEuYW1vdW50IH0pO1xuICAgICAgICBpbnB1dEFtb3VudCA9IHR4RGF0YS5hbW91bnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBvdXRwdXRzOiBbXSxcbiAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgaW5wdXRzOiBpbnB1dHMsXG4gICAgICBpbnB1dEFtb3VudDogaW5wdXRBbW91bnQsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogJzAnIH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,30 +1,23 @@
|
|
|
1
|
-
import { BaseAddress, BaseKey, BaseTransactionBuilder,
|
|
1
|
+
import { BaseAddress, BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, Signature, TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
2
|
import BigNumber from 'bignumber.js';
|
|
3
|
-
import {
|
|
3
|
+
import { CantonPrepareCommandResponse } from './iface';
|
|
4
|
+
import { Transaction } from './transaction/transaction';
|
|
4
5
|
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
5
6
|
protected _transaction: Transaction;
|
|
6
|
-
|
|
7
|
+
protected _signatures: Signature[];
|
|
8
|
+
initBuilder(tx: Transaction): void;
|
|
7
9
|
/**
|
|
8
10
|
* The transaction type.
|
|
9
11
|
*/
|
|
10
12
|
protected abstract get transactionType(): TransactionType;
|
|
11
13
|
/** @inheritdoc */
|
|
12
|
-
|
|
14
|
+
get transaction(): Transaction;
|
|
13
15
|
/** @inheritdoc */
|
|
14
|
-
|
|
16
|
+
abstract setTransaction(transaction: CantonPrepareCommandResponse): void;
|
|
15
17
|
/** @inheritdoc */
|
|
16
18
|
protected signImplementation(key: BaseKey): Transaction;
|
|
17
19
|
/** @inheritDoc */
|
|
18
|
-
addSignature(publicKey: BasePublicKey, signature: Buffer): void;
|
|
19
|
-
/**
|
|
20
|
-
* Sets the sender of this transaction.
|
|
21
|
-
* This account will be responsible for paying transaction fees.
|
|
22
|
-
*
|
|
23
|
-
* @param {string} senderAddress the account that is sending this transaction
|
|
24
|
-
* @returns {TransactionBuilder} This transaction builder
|
|
25
|
-
*/
|
|
26
|
-
sender(senderAddress: string): this;
|
|
27
|
-
fee(feeOptions: FeeOptions): this;
|
|
20
|
+
abstract addSignature(publicKey: BasePublicKey, signature: Buffer): void;
|
|
28
21
|
/** @inheritdoc */
|
|
29
22
|
protected fromImplementation(rawTransaction: string): Transaction;
|
|
30
23
|
/** @inheritdoc */
|
|
@@ -34,9 +27,9 @@ export declare abstract class TransactionBuilder extends BaseTransactionBuilder
|
|
|
34
27
|
/** @inheritdoc */
|
|
35
28
|
validateKey(key: BaseKey): void;
|
|
36
29
|
/** @inheritdoc */
|
|
37
|
-
validateRawTransaction(rawTransaction: string): void
|
|
30
|
+
validateRawTransaction(rawTransaction: string): Promise<void>;
|
|
38
31
|
/** @inheritdoc */
|
|
39
|
-
validateTransaction(transaction?: Transaction): void
|
|
32
|
+
validateTransaction(transaction?: Transaction): Promise<void>;
|
|
40
33
|
/** @inheritdoc */
|
|
41
34
|
validateValue(value: BigNumber): void;
|
|
42
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAEtB,
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,OAAO,EACP,sBAAsB,EAEtB,SAAS,IAAI,aAAa,EAC1B,SAAS,EACT,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,8BAAsB,kBAAmB,SAAQ,sBAAsB;IACrE,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,CAAM;IAExC,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAIlC;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D,kBAAkB;IAClB,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,kBAAkB;IAClB,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI;IAExE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAIvD,kBAAkB;IAClB,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAExE,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAIjE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAK3D,kBAAkB;IAClB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IAMnE,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAY/B,kBAAkB;IACZ,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,kBAAkB;IACZ,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnE,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;CAKtC"}
|
|
@@ -5,41 +5,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TransactionBuilder = void 0;
|
|
7
7
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const keyPair_1 = require("./keyPair");
|
|
8
9
|
const utils_1 = __importDefault(require("./utils"));
|
|
9
10
|
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
10
11
|
constructor() {
|
|
11
12
|
super(...arguments);
|
|
12
13
|
this._signatures = [];
|
|
13
14
|
}
|
|
15
|
+
initBuilder(tx) {
|
|
16
|
+
this._transaction = tx;
|
|
17
|
+
}
|
|
14
18
|
/** @inheritdoc */
|
|
15
19
|
get transaction() {
|
|
16
20
|
return this._transaction;
|
|
17
21
|
}
|
|
18
22
|
/** @inheritdoc */
|
|
19
|
-
set transaction(transaction) {
|
|
20
|
-
this._transaction = transaction;
|
|
21
|
-
}
|
|
22
|
-
/** @inheritdoc */
|
|
23
23
|
signImplementation(key) {
|
|
24
24
|
throw new Error('Method not implemented.');
|
|
25
25
|
}
|
|
26
|
-
/** @inheritDoc */
|
|
27
|
-
addSignature(publicKey, signature) {
|
|
28
|
-
this._signatures.push({ publicKey, signature });
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Sets the sender of this transaction.
|
|
32
|
-
* This account will be responsible for paying transaction fees.
|
|
33
|
-
*
|
|
34
|
-
* @param {string} senderAddress the account that is sending this transaction
|
|
35
|
-
* @returns {TransactionBuilder} This transaction builder
|
|
36
|
-
*/
|
|
37
|
-
sender(senderAddress) {
|
|
38
|
-
throw new Error('Method not implemented.');
|
|
39
|
-
}
|
|
40
|
-
fee(feeOptions) {
|
|
41
|
-
throw new Error('Method not implemented.');
|
|
42
|
-
}
|
|
43
26
|
/** @inheritdoc */
|
|
44
27
|
fromImplementation(rawTransaction) {
|
|
45
28
|
throw new Error('Method not implemented.');
|
|
@@ -57,15 +40,36 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
|
57
40
|
}
|
|
58
41
|
/** @inheritdoc */
|
|
59
42
|
validateKey(key) {
|
|
60
|
-
|
|
43
|
+
let keyPair;
|
|
44
|
+
try {
|
|
45
|
+
keyPair = new keyPair_1.KeyPair({ prv: key.key });
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
throw new sdk_core_1.BuildTransactionError('Invalid key');
|
|
49
|
+
}
|
|
50
|
+
if (!keyPair.getKeys().prv) {
|
|
51
|
+
throw new sdk_core_1.BuildTransactionError('Invalid key');
|
|
52
|
+
}
|
|
61
53
|
}
|
|
62
54
|
/** @inheritdoc */
|
|
63
|
-
validateRawTransaction(rawTransaction) {
|
|
64
|
-
|
|
55
|
+
async validateRawTransaction(rawTransaction) {
|
|
56
|
+
if (!rawTransaction || !this._transaction.prepareCommand) {
|
|
57
|
+
throw new sdk_core_1.BuildTransactionError('invalid raw transaction');
|
|
58
|
+
}
|
|
59
|
+
const localHash = await utils_1.default.computeHashFromPrepareSubmissionResponse(rawTransaction);
|
|
60
|
+
if (localHash !== this._transaction.prepareCommand.preparedTransactionHash) {
|
|
61
|
+
throw new sdk_core_1.BuildTransactionError('invalid raw transaction, hash not matching');
|
|
62
|
+
}
|
|
65
63
|
}
|
|
66
64
|
/** @inheritdoc */
|
|
67
|
-
validateTransaction(transaction) {
|
|
68
|
-
|
|
65
|
+
async validateTransaction(transaction) {
|
|
66
|
+
if (!transaction?.prepareCommand?.preparedTransaction) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const localHash = await utils_1.default.computeHashFromPrepareSubmissionResponse(transaction.prepareCommand.preparedTransaction);
|
|
70
|
+
if (localHash !== transaction.prepareCommand.preparedTransactionHash) {
|
|
71
|
+
throw new sdk_core_1.BuildTransactionError('invalid transaction');
|
|
72
|
+
}
|
|
69
73
|
}
|
|
70
74
|
/** @inheritdoc */
|
|
71
75
|
validateValue(value) {
|
|
@@ -75,4 +79,4 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
|
75
79
|
}
|
|
76
80
|
}
|
|
77
81
|
exports.TransactionBuilder = TransactionBuilder;
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBUThCO0FBRzlCLHVDQUFvQztBQUVwQyxvREFBNEI7QUFFNUIsTUFBc0Isa0JBQW1CLFNBQVEsaUNBQXNCO0lBQXZFOztRQUVZLGdCQUFXLEdBQWdCLEVBQUUsQ0FBQztJQXdGMUMsQ0FBQztJQXRGQyxXQUFXLENBQUMsRUFBZTtRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBT0Qsa0JBQWtCO0lBQ2xCLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBS0Qsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUtELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLGNBQXNCO1FBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixrQkFBa0I7SUFDbEIsZUFBZSxDQUFDLE9BQW9CLEVBQUUsYUFBc0I7UUFDMUQsSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXLENBQUMsR0FBWTtRQUN0QixJQUFJLE9BQWdCLENBQUM7UUFDckIsSUFBSSxDQUFDO1lBQ0gsT0FBTyxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixLQUFLLENBQUMsc0JBQXNCLENBQUMsY0FBc0I7UUFDakQsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekQsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sZUFBSyxDQUFDLHdDQUF3QyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDM0UsTUFBTSxJQUFJLGdDQUFxQixDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDaEYsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQXlCO1FBQ2pELElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLENBQUM7WUFDdEQsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLGVBQUssQ0FBQyx3Q0FBd0MsQ0FDcEUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FDL0MsQ0FBQztRQUNGLElBQUksU0FBUyxLQUFLLFdBQVcsQ0FBQyxjQUFjLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNyRSxNQUFNLElBQUksZ0NBQXFCLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixhQUFhLENBQUMsS0FBZ0I7UUFDNUIsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTFGRCxnREEwRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlQWRkcmVzcyxcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9zaWduYXR1cmVzOiBTaWduYXR1cmVbXSA9IFtdO1xuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRyYW5zYWN0aW9uIHR5cGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGFic3RyYWN0IHNldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlKTogdm9pZDtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFic3RyYWN0IGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZDtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzICcgKyBhZGRyZXNzLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBsZXQga2V5UGFpcjogS2V5UGFpcjtcbiAgICB0cnkge1xuICAgICAga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBrZXknKTtcbiAgICB9XG4gICAgaWYgKCFrZXlQYWlyLmdldEtleXMoKS5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGFzeW5jIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24gfHwgIXRoaXMuX3RyYW5zYWN0aW9uLnByZXBhcmVDb21tYW5kKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdpbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBsb2NhbEhhc2ggPSBhd2FpdCB1dGlscy5jb21wdXRlSGFzaEZyb21QcmVwYXJlU3VibWlzc2lvblJlc3BvbnNlKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBpZiAobG9jYWxIYXNoICE9PSB0aGlzLl90cmFuc2FjdGlvbi5wcmVwYXJlQ29tbWFuZC5wcmVwYXJlZFRyYW5zYWN0aW9uSGFzaCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignaW52YWxpZCByYXcgdHJhbnNhY3Rpb24sIGhhc2ggbm90IG1hdGNoaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGFzeW5jIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdHJhbnNhY3Rpb24/LnByZXBhcmVDb21tYW5kPy5wcmVwYXJlZFRyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGxvY2FsSGFzaCA9IGF3YWl0IHV0aWxzLmNvbXB1dGVIYXNoRnJvbVByZXBhcmVTdWJtaXNzaW9uUmVzcG9uc2UoXG4gICAgICB0cmFuc2FjdGlvbi5wcmVwYXJlQ29tbWFuZC5wcmVwYXJlZFRyYW5zYWN0aW9uXG4gICAgKTtcbiAgICBpZiAobG9jYWxIYXNoICE9PSB0cmFuc2FjdGlvbi5wcmVwYXJlQ29tbWFuZC5wcmVwYXJlZFRyYW5zYWN0aW9uSGFzaCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignaW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { BaseTransactionBuilderFactory } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { TransferAcceptanceBuilder } from './transferAcceptanceBuilder';
|
|
4
|
+
import { TransferAcknowledgeBuilder } from './transferAcknowledgeBuilder';
|
|
2
5
|
import { TransactionBuilder } from './transactionBuilder';
|
|
3
6
|
import { TransferBuilder } from './transferBuilder';
|
|
7
|
+
import { TransferRejectionBuilder } from './transferRejectionBuilder';
|
|
8
|
+
import { Transaction } from './transaction/transaction';
|
|
9
|
+
import { WalletInitBuilder } from './walletInitBuilder';
|
|
10
|
+
import { WalletInitTransaction } from './walletInitialization/walletInitTransaction';
|
|
4
11
|
export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
|
|
12
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
5
13
|
/** @inheritdoc */
|
|
6
|
-
from(raw: string): TransactionBuilder;
|
|
14
|
+
from(raw: string): TransactionBuilder | WalletInitBuilder;
|
|
15
|
+
getTransferAcceptanceBuilder(tx?: Transaction): TransferAcceptanceBuilder;
|
|
16
|
+
getTransferAcknowledgeBuilder(tx?: Transaction): TransferAcknowledgeBuilder;
|
|
17
|
+
getTransferRejectBuilder(tx?: Transaction): TransferRejectionBuilder;
|
|
7
18
|
/** @inheritdoc */
|
|
8
|
-
getTransferBuilder(): TransferBuilder;
|
|
19
|
+
getTransferBuilder(tx?: Transaction): TransferBuilder;
|
|
9
20
|
/** @inheritdoc */
|
|
10
|
-
getWalletInitializationBuilder():
|
|
21
|
+
getWalletInitializationBuilder(tx?: WalletInitTransaction): WalletInitBuilder;
|
|
22
|
+
private static initializeBuilder;
|
|
11
23
|
}
|
|
12
24
|
//# sourceMappingURL=transactionBuilderFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,6BAA6B,EAG9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAErF,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAG7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,iBAAiB;IA4BzD,4BAA4B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,yBAAyB;IAIzE,6BAA6B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,0BAA0B;IAI3E,wBAAwB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,wBAAwB;IAIpE,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB;IAClB,8BAA8B,CAAC,EAAE,CAAC,EAAE,qBAAqB,GAAG,iBAAiB;IAI7E,OAAO,CAAC,MAAM,CAAC,iBAAiB;CASjC"}
|
|
@@ -2,19 +2,69 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TransactionBuilderFactory = void 0;
|
|
4
4
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const transferAcceptanceBuilder_1 = require("./transferAcceptanceBuilder");
|
|
6
|
+
const transferAcknowledgeBuilder_1 = require("./transferAcknowledgeBuilder");
|
|
7
|
+
const transferBuilder_1 = require("./transferBuilder");
|
|
8
|
+
const transferRejectionBuilder_1 = require("./transferRejectionBuilder");
|
|
9
|
+
const transaction_1 = require("./transaction/transaction");
|
|
10
|
+
const walletInitBuilder_1 = require("./walletInitBuilder");
|
|
11
|
+
const walletInitTransaction_1 = require("./walletInitialization/walletInitTransaction");
|
|
5
12
|
class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
|
|
13
|
+
constructor(_coinConfig) {
|
|
14
|
+
super(_coinConfig);
|
|
15
|
+
}
|
|
6
16
|
/** @inheritdoc */
|
|
7
17
|
from(raw) {
|
|
8
|
-
|
|
18
|
+
try {
|
|
19
|
+
const tx = new walletInitTransaction_1.WalletInitTransaction(this._coinConfig);
|
|
20
|
+
tx.fromRawTransaction(raw);
|
|
21
|
+
return this.getWalletInitializationBuilder(tx);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
const tx = new transaction_1.Transaction(this._coinConfig);
|
|
25
|
+
tx.fromRawTransaction(raw);
|
|
26
|
+
switch (tx.type) {
|
|
27
|
+
case sdk_core_1.TransactionType.Send: {
|
|
28
|
+
return this.getTransferBuilder(tx);
|
|
29
|
+
}
|
|
30
|
+
case sdk_core_1.TransactionType.TransferAccept: {
|
|
31
|
+
return this.getTransferAcceptanceBuilder(tx);
|
|
32
|
+
}
|
|
33
|
+
case sdk_core_1.TransactionType.TransferAcknowledge: {
|
|
34
|
+
return this.getTransferAcknowledgeBuilder(tx);
|
|
35
|
+
}
|
|
36
|
+
case sdk_core_1.TransactionType.TransferReject: {
|
|
37
|
+
return this.getTransferRejectBuilder(tx);
|
|
38
|
+
}
|
|
39
|
+
default: {
|
|
40
|
+
throw new sdk_core_1.InvalidTransactionError('unsupported transaction');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
getTransferAcceptanceBuilder(tx) {
|
|
46
|
+
return TransactionBuilderFactory.initializeBuilder(tx, new transferAcceptanceBuilder_1.TransferAcceptanceBuilder(this._coinConfig));
|
|
47
|
+
}
|
|
48
|
+
getTransferAcknowledgeBuilder(tx) {
|
|
49
|
+
return TransactionBuilderFactory.initializeBuilder(tx, new transferAcknowledgeBuilder_1.TransferAcknowledgeBuilder(this._coinConfig));
|
|
50
|
+
}
|
|
51
|
+
getTransferRejectBuilder(tx) {
|
|
52
|
+
return TransactionBuilderFactory.initializeBuilder(tx, new transferRejectionBuilder_1.TransferRejectionBuilder(this._coinConfig));
|
|
9
53
|
}
|
|
10
54
|
/** @inheritdoc */
|
|
11
|
-
getTransferBuilder() {
|
|
12
|
-
|
|
55
|
+
getTransferBuilder(tx) {
|
|
56
|
+
return TransactionBuilderFactory.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig));
|
|
13
57
|
}
|
|
14
58
|
/** @inheritdoc */
|
|
15
|
-
getWalletInitializationBuilder() {
|
|
16
|
-
|
|
59
|
+
getWalletInitializationBuilder(tx) {
|
|
60
|
+
return TransactionBuilderFactory.initializeBuilder(tx, new walletInitBuilder_1.WalletInitBuilder(this._coinConfig));
|
|
61
|
+
}
|
|
62
|
+
static initializeBuilder(tx, builder) {
|
|
63
|
+
if (tx) {
|
|
64
|
+
builder.initBuilder(tx);
|
|
65
|
+
}
|
|
66
|
+
return builder;
|
|
17
67
|
}
|
|
18
68
|
}
|
|
19
69
|
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFLOEI7QUFFOUIsMkVBQXdFO0FBQ3hFLDZFQUEwRTtBQUUxRSx1REFBb0Q7QUFDcEQseUVBQXNFO0FBQ3RFLDJEQUF3RDtBQUN4RCwyREFBd0Q7QUFDeEQsd0ZBQXFGO0FBRXJGLE1BQWEseUJBQTBCLFNBQVEsd0NBQTZCO0lBQzFFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLEdBQVc7UUFDZCxJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsR0FBRyxJQUFJLDZDQUFxQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2RCxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE1BQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDN0MsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixLQUFLLDBCQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDMUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7Z0JBQ0QsS0FBSywwQkFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDO2dCQUNELEtBQUssMEJBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7b0JBQ3pDLE9BQU8sSUFBSSxDQUFDLDZCQUE2QixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO2dCQUNELEtBQUssMEJBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO29CQUNwQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztnQkFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO29CQUNSLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2dCQUMvRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsNEJBQTRCLENBQUMsRUFBZ0I7UUFDM0MsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxxREFBeUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQsNkJBQTZCLENBQUMsRUFBZ0I7UUFDNUMsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSx1REFBMEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsd0JBQXdCLENBQUMsRUFBZ0I7UUFDdkMsT0FBTyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxtREFBd0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQixDQUFDLEVBQWdCO1FBQ2pDLE9BQU8seUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDhCQUE4QixDQUFDLEVBQTBCO1FBQ3ZELE9BQU8seUJBQXlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUkscUNBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDOUIsRUFBbUIsRUFDbkIsT0FBaUI7UUFFakIsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQWhFRCw4REFnRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2ZlckFjY2VwdGFuY2VCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckFjY2VwdGFuY2VCdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zZmVyQWNrbm93bGVkZ2VCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckFja25vd2xlZGdlQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2ZlclJlamVjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zZmVyUmVqZWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgV2FsbGV0SW5pdEJ1aWxkZXIgfSBmcm9tICcuL3dhbGxldEluaXRCdWlsZGVyJztcbmltcG9ydCB7IFdhbGxldEluaXRUcmFuc2FjdGlvbiB9IGZyb20gJy4vd2FsbGV0SW5pdGlhbGl6YXRpb24vd2FsbGV0SW5pdFRyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB8IFdhbGxldEluaXRCdWlsZGVyIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdHggPSBuZXcgV2FsbGV0SW5pdFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgICByZXR1cm4gdGhpcy5nZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodHgpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcbiAgICAgIHN3aXRjaCAodHgudHlwZSkge1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKHR4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFjY2VwdDoge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQWNjZXB0YW5jZUJ1aWxkZXIodHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyQWNrbm93bGVkZ2U6IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlckFja25vd2xlZGdlQnVpbGRlcih0eCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJSZWplY3Q6IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2ZlclJlamVjdEJ1aWxkZXIodHgpO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3Vuc3VwcG9ydGVkIHRyYW5zYWN0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRUcmFuc2ZlckFjY2VwdGFuY2VCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckFjY2VwdGFuY2VCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRyYW5zZmVyQWNjZXB0YW5jZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZ2V0VHJhbnNmZXJBY2tub3dsZWRnZUJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRyYW5zZmVyQWNrbm93bGVkZ2VCdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRyYW5zZmVyQWNrbm93bGVkZ2VCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIGdldFRyYW5zZmVyUmVqZWN0QnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogVHJhbnNmZXJSZWplY3Rpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRyYW5zZmVyUmVqZWN0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0VHJhbnNmZXJCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBUcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgVHJhbnNmZXJCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIodHg/OiBXYWxsZXRJbml0VHJhbnNhY3Rpb24pOiBXYWxsZXRJbml0QnVpbGRlciB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBXYWxsZXRJbml0QnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXplQnVpbGRlcjxUVHggZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24sIFRCdWlsZGVyIGV4dGVuZHMgeyBpbml0QnVpbGRlcih0eDogVFR4KTogdm9pZCB9PihcbiAgICB0eDogVFR4IHwgdW5kZWZpbmVkLFxuICAgIGJ1aWxkZXI6IFRCdWlsZGVyXG4gICk6IFRCdWlsZGVyIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,59 @@
|
|
|
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 TransferAcceptanceBuilder 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 id for the transfer acceptance
|
|
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 acceptance contract id the receiver needs to accept
|
|
28
|
+
* @param id - canton acceptance 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 receiver of the acceptance
|
|
35
|
+
*
|
|
36
|
+
* @param id - the receiver 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
|
+
* This method performs validation before constructing the object. If required fields are
|
|
45
|
+
* missing or invalid, it throws an error.
|
|
46
|
+
*
|
|
47
|
+
* @returns {CantonTransferAcceptRejectRequest} - A fully constructed and validated request object for transfer acceptance.
|
|
48
|
+
* @throws {Error} If any required field is missing or fails validation.
|
|
49
|
+
*/
|
|
50
|
+
toRequestObject(): CantonTransferAcceptRejectRequest;
|
|
51
|
+
/**
|
|
52
|
+
* Validates the internal state of the builder before building the request object.
|
|
53
|
+
*
|
|
54
|
+
* @private
|
|
55
|
+
* @throws {Error} If any required field is missing or invalid.
|
|
56
|
+
*/
|
|
57
|
+
private validate;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=transferAcceptanceBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferAcceptanceBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferAcceptanceBuilder.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,yBAA0B,SAAQ,kBAAkB;IAC/D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;gBAClB,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;IAU3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQvB;;;;;;;;OAQG;IACH,eAAe,IAAI,iCAAiC;IAYpD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAKjB"}
|