@bitgo-beta/sdk-coin-iota 1.0.1-beta.32 → 1.0.1-beta.320
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/README.md +1 -1
- package/dist/src/iota.d.ts +13 -2
- package/dist/src/iota.d.ts.map +1 -1
- package/dist/src/iota.js +142 -22
- package/dist/src/lib/constants.d.ts +10 -6
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +12 -8
- package/dist/src/lib/iface.d.ts +33 -1
- 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 +1 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +4 -2
- package/dist/src/lib/transaction.d.ts +72 -5
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +270 -6
- package/dist/src/lib/transactionBuilder.d.ts +70 -9
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +155 -14
- package/dist/src/lib/transactionBuilderFactory.d.ts +15 -2
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +45 -5
- package/dist/src/lib/transferBuilder.d.ts +10 -2
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +45 -3
- package/dist/src/lib/transferTransaction.d.ts +28 -0
- package/dist/src/lib/transferTransaction.d.ts.map +1 -0
- package/dist/src/lib/transferTransaction.js +173 -0
- package/dist/src/lib/utils.d.ts +2 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +28 -4
- package/dist/test/resources/iota.d.ts +35 -0
- package/dist/test/resources/iota.d.ts.map +1 -0
- package/dist/test/resources/iota.js +93 -0
- package/dist/test/unit/index.d.ts +2 -0
- package/dist/test/unit/index.d.ts.map +1 -0
- package/dist/test/unit/index.js +16 -0
- package/dist/test/unit/iota.d.ts +2 -0
- package/dist/test/unit/iota.d.ts.map +1 -0
- package/dist/test/unit/iota.js +603 -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 +135 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.js +306 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +243 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +400 -0
- package/dist/test/unit/transferTransaction.d.ts +2 -0
- package/dist/test/unit/transferTransaction.d.ts.map +1 -0
- package/dist/test/unit/transferTransaction.js +465 -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 +278 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +16 -10
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -0
|
@@ -1,38 +1,179 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.TransactionBuilder = void 0;
|
|
4
7
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
10
|
+
const utils_2 = require("@iota/iota-sdk/utils");
|
|
5
11
|
class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
6
|
-
|
|
7
|
-
|
|
12
|
+
constructor(coinConfig) {
|
|
13
|
+
super(coinConfig);
|
|
8
14
|
}
|
|
9
|
-
|
|
10
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the transaction builder fields using the decoded transaction data
|
|
17
|
+
*
|
|
18
|
+
* @param {Transaction} tx the transaction data
|
|
19
|
+
*/
|
|
20
|
+
initBuilder(tx) {
|
|
21
|
+
this.validateTransaction(tx);
|
|
22
|
+
this.transaction.sender = tx.sender;
|
|
23
|
+
this.transaction.gasPrice = tx.gasPrice;
|
|
24
|
+
this.transaction.gasBudget = tx.gasBudget;
|
|
25
|
+
this.transaction.gasPaymentObjects = tx.gasPaymentObjects;
|
|
26
|
+
this.transaction.gasSponsor = tx.gasSponsor;
|
|
11
27
|
}
|
|
12
|
-
|
|
13
|
-
|
|
28
|
+
get transactionType() {
|
|
29
|
+
return this.transaction.type;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @inheritdoc
|
|
33
|
+
* */
|
|
34
|
+
get transaction() {
|
|
35
|
+
return this._transaction;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @inheritdoc
|
|
39
|
+
* */
|
|
40
|
+
set transaction(transaction) {
|
|
41
|
+
this._transaction = transaction;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Sets the sender of this transaction.
|
|
45
|
+
*
|
|
46
|
+
* @param {string} senderAddress the account that is sending this transaction
|
|
47
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
48
|
+
*/
|
|
49
|
+
sender(senderAddress) {
|
|
50
|
+
this.validateAddress({ address: senderAddress });
|
|
51
|
+
this.transaction.sender = senderAddress;
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Sets the gasData for this transaction.
|
|
56
|
+
*
|
|
57
|
+
* @param {string} gasData the gas details for this transaction
|
|
58
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
59
|
+
*/
|
|
60
|
+
gasData(gasData) {
|
|
61
|
+
this.validateGasData(gasData);
|
|
62
|
+
this.transaction.gasPrice = gasData.gasPrice;
|
|
63
|
+
this.transaction.gasBudget = gasData.gasBudget;
|
|
64
|
+
this.transaction.gasPaymentObjects = gasData.gasPaymentObjects;
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Sets the gasSponsor of this transaction.
|
|
69
|
+
*
|
|
70
|
+
* @param {string} sponsorAddress the account that is sponsoring this transaction's gas
|
|
71
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
72
|
+
*/
|
|
73
|
+
gasSponsor(sponsorAddress) {
|
|
74
|
+
this.validateAddress({ address: sponsorAddress });
|
|
75
|
+
this.transaction.gasSponsor = sponsorAddress;
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
addSignature(publicKey, signature) {
|
|
79
|
+
if (!utils_1.default.isValidPublicKey(publicKey.pub) || !utils_1.default.isValidSignature((0, utils_2.toBase64)(signature))) {
|
|
80
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction signature');
|
|
81
|
+
}
|
|
82
|
+
this.transaction.addSignature(publicKey, signature);
|
|
83
|
+
}
|
|
84
|
+
addGasSponsorSignature(publicKey, signature) {
|
|
85
|
+
if (!utils_1.default.isValidPublicKey(publicKey.pub) || !utils_1.default.isValidSignature((0, utils_2.toBase64)(signature))) {
|
|
86
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction signature');
|
|
87
|
+
}
|
|
88
|
+
this.transaction.addGasSponsorSignature(publicKey, signature);
|
|
14
89
|
}
|
|
15
90
|
validateKey(key) {
|
|
16
91
|
throw new Error('Method not implemented.');
|
|
17
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* @inheritdoc
|
|
95
|
+
* */
|
|
18
96
|
validateAddress(address, addressFormat) {
|
|
19
|
-
|
|
97
|
+
if (!utils_1.default.isValidAddress(address.address)) {
|
|
98
|
+
throw new sdk_core_1.BuildTransactionError('Invalid address ' + address.address);
|
|
99
|
+
}
|
|
20
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* @inheritdoc
|
|
103
|
+
* */
|
|
21
104
|
validateValue(value) {
|
|
22
|
-
|
|
105
|
+
if (value.isNaN()) {
|
|
106
|
+
throw new sdk_core_1.BuildTransactionError('Invalid amount format');
|
|
107
|
+
}
|
|
108
|
+
else if (value.isLessThan(0)) {
|
|
109
|
+
throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
|
|
110
|
+
}
|
|
23
111
|
}
|
|
112
|
+
/** @inheritdoc */
|
|
24
113
|
validateRawTransaction(rawTransaction) {
|
|
25
|
-
|
|
114
|
+
if (!rawTransaction) {
|
|
115
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction: Undefined');
|
|
116
|
+
}
|
|
117
|
+
if (!utils_1.default.isValidRawTransaction(rawTransaction)) {
|
|
118
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction');
|
|
119
|
+
}
|
|
26
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* @inheritdoc
|
|
123
|
+
* */
|
|
27
124
|
validateTransaction(transaction) {
|
|
28
|
-
|
|
125
|
+
if (!transaction) {
|
|
126
|
+
throw new Error('transaction not defined');
|
|
127
|
+
}
|
|
128
|
+
this.validateAddress({ address: transaction.sender });
|
|
129
|
+
this.validateGasData({
|
|
130
|
+
gasBudget: transaction.gasBudget,
|
|
131
|
+
gasPrice: transaction.gasPrice,
|
|
132
|
+
gasPaymentObjects: transaction.gasPaymentObjects,
|
|
133
|
+
});
|
|
134
|
+
if (transaction.gasSponsor) {
|
|
135
|
+
this.validateAddress({ address: transaction.gasSponsor });
|
|
136
|
+
}
|
|
29
137
|
}
|
|
30
|
-
|
|
31
|
-
|
|
138
|
+
/**
|
|
139
|
+
* @inheritdoc
|
|
140
|
+
* */
|
|
141
|
+
fromImplementation(rawTransaction) {
|
|
142
|
+
if (!utils_1.default.isValidRawTransaction(rawTransaction)) {
|
|
143
|
+
throw new sdk_core_1.BuildTransactionError('Invalid transaction');
|
|
144
|
+
}
|
|
145
|
+
this.transaction.parseFromBroadcastTx(rawTransaction);
|
|
146
|
+
return this.transaction;
|
|
32
147
|
}
|
|
33
|
-
|
|
148
|
+
/**
|
|
149
|
+
* @inheritdoc
|
|
150
|
+
* */
|
|
151
|
+
signImplementation(key) {
|
|
34
152
|
throw new Error('Method not implemented.');
|
|
35
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* @inheritdoc
|
|
156
|
+
* */
|
|
157
|
+
async buildImplementation() {
|
|
158
|
+
// If gas data is provided, this is not a simulate transaction
|
|
159
|
+
if (this.transaction.gasPrice && this.transaction.gasBudget && this.transaction.gasPaymentObjects) {
|
|
160
|
+
this.transaction.isSimulateTx = false;
|
|
161
|
+
}
|
|
162
|
+
await this.transaction.build();
|
|
163
|
+
this.transaction.addInputsAndOutputs();
|
|
164
|
+
return this.transaction;
|
|
165
|
+
}
|
|
166
|
+
validateGasData(gasData) {
|
|
167
|
+
if (gasData.gasBudget) {
|
|
168
|
+
this.validateValue(new bignumber_js_1.default(gasData.gasBudget));
|
|
169
|
+
}
|
|
170
|
+
if (gasData.gasPrice) {
|
|
171
|
+
this.validateValue(new bignumber_js_1.default(gasData.gasPrice));
|
|
172
|
+
}
|
|
173
|
+
if (gasData.gasPaymentObjects && gasData.gasPaymentObjects.length === 0) {
|
|
174
|
+
throw new sdk_core_1.BuildTransactionError('Gas input objects list is empty');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
36
177
|
}
|
|
37
178
|
exports.TransactionBuilder = TransactionBuilder;
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXFHO0FBR3JHLE1BQWEsa0JBQW1CLFNBQVEsaUNBQXNCO0lBQ2xELGtCQUFrQixDQUFDLGNBQW1CO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ1Msa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNTLG1CQUFtQjtRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELFdBQVcsQ0FBQyxHQUFZO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsZUFBZSxDQUFDLE9BQW9CLEVBQUUsYUFBc0I7UUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxhQUFhLENBQUMsS0FBZ0I7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxjQUFtQjtRQUN4QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELG1CQUFtQixDQUFDLFdBQTZCO1FBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBYyxXQUFXO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBYyxXQUFXLENBQUMsV0FBNEI7UUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQS9CRCxnREErQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQWRkcmVzcywgQmFzZUtleSwgQmFzZVRyYW5zYWN0aW9uLCBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBmcm9tSW1wbGVtZW50YXRpb24ocmF3VHJhbnNhY3Rpb246IGFueSk6IEJhc2VUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogQmFzZVRyYW5zYWN0aW9uIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgcHJvdGVjdGVkIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxCYXNlVHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogYW55KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBCYXNlVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBCYXNlVHJhbnNhY3Rpb24ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBCYXNlVHJhbnNhY3Rpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cbiJdfQ==
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBUzhCO0FBQzlCLGdFQUFxQztBQUdyQyxvREFBNEI7QUFFNUIsZ0RBQWdEO0FBRWhELE1BQXNCLGtCQUFtQixTQUFRLGlDQUFzQjtJQUdyRSxZQUFzQixVQUFnQztRQUNwRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsRUFBZTtRQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDMUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVEOztTQUVLO0lBQ0wsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7U0FFSztJQUNMLElBQWMsV0FBVyxDQUFDLFdBQXdCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FB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QUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOztTQUVLO0lBQ0ssS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyw4REFBOEQ7UUFDOUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQWdCO1FBQ3RDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxzQkFBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsaUJBQWlCLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4RSxNQUFNLElBQUksZ0NBQXFCLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUNyRSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBekxELGdEQXlMQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VBZGRyZXNzLFxuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXksXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXQsIEdhc0RhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IHRvQmFzZTY0IH0gZnJvbSAnQGlvdGEvaW90YS1zZGsvdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVUcmFuc2FjdGlvbih0eCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZW5kZXIgPSB0eC5zZW5kZXI7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5nYXNQcmljZSA9IHR4Lmdhc1ByaWNlO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZ2FzQnVkZ2V0ID0gdHguZ2FzQnVkZ2V0O1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZ2FzUGF5bWVudE9iamVjdHMgPSB0eC5nYXNQYXltZW50T2JqZWN0cztcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmdhc1Nwb25zb3IgPSB0eC5nYXNTcG9uc29yO1xuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uLnR5cGU7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICogKi9cbiAgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICogKi9cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VuZGVyQWRkcmVzcyB0aGUgYWNjb3VudCB0aGF0IGlzIHNlbmRpbmcgdGhpcyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHNlbmRlcihzZW5kZXJBZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZW5kZXIgPSBzZW5kZXJBZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGdhc0RhdGEgZm9yIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBnYXNEYXRhIHRoZSBnYXMgZGV0YWlscyBmb3IgdGhpcyB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIGdhc0RhdGEoZ2FzRGF0YTogR2FzRGF0YSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVHYXNEYXRhKGdhc0RhdGEpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZ2FzUHJpY2UgPSBnYXNEYXRhLmdhc1ByaWNlO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZ2FzQnVkZ2V0ID0gZ2FzRGF0YS5nYXNCdWRnZXQ7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5nYXNQYXltZW50T2JqZWN0cyA9IGdhc0RhdGEuZ2FzUGF5bWVudE9iamVjdHMgYXMgVHJhbnNhY3Rpb25PYmplY3RJbnB1dFtdO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGdhc1Nwb25zb3Igb2YgdGhpcyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNwb25zb3JBZGRyZXNzIHRoZSBhY2NvdW50IHRoYXQgaXMgc3BvbnNvcmluZyB0aGlzIHRyYW5zYWN0aW9uJ3MgZ2FzXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZ2FzU3BvbnNvcihzcG9uc29yQWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiBzcG9uc29yQWRkcmVzcyB9KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmdhc1Nwb25zb3IgPSBzcG9uc29yQWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IFB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRQdWJsaWNLZXkocHVibGljS2V5LnB1YikgfHwgIXV0aWxzLmlzVmFsaWRTaWduYXR1cmUodG9CYXNlNjQoc2lnbmF0dXJlKSkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24gc2lnbmF0dXJlJyk7XG4gICAgfVxuICAgIHRoaXMudHJhbnNhY3Rpb24uYWRkU2lnbmF0dXJlKHB1YmxpY0tleSwgc2lnbmF0dXJlKTtcbiAgfVxuXG4gIGFkZEdhc1Nwb25zb3JTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgaWYgKCF1dGlscy5pc1ZhbGlkUHVibGljS2V5KHB1YmxpY0tleS5wdWIpIHx8ICF1dGlscy5pc1ZhbGlkU2lnbmF0dXJlKHRvQmFzZTY0KHNpZ25hdHVyZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHNpZ25hdHVyZScpO1xuICAgIH1cbiAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZEdhc1Nwb25zb3JTaWduYXR1cmUocHVibGljS2V5LCBzaWduYXR1cmUpO1xuICB9XG5cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcywgYWRkcmVzc0Zvcm1hdD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzICcgKyBhZGRyZXNzLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKiAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNOYU4oKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhbW91bnQgZm9ybWF0Jyk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5pc0xlc3NUaGFuKDApKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgbGVzcyB0aGFuIHplcm8nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb246IFVuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNhY3Rpb24gbm90IGRlZmluZWQnKTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoeyBhZGRyZXNzOiB0cmFuc2FjdGlvbi5zZW5kZXIgfSk7XG4gICAgdGhpcy52YWxpZGF0ZUdhc0RhdGEoe1xuICAgICAgZ2FzQnVkZ2V0OiB0cmFuc2FjdGlvbi5nYXNCdWRnZXQsXG4gICAgICBnYXNQcmljZTogdHJhbnNhY3Rpb24uZ2FzUHJpY2UsXG4gICAgICBnYXNQYXltZW50T2JqZWN0czogdHJhbnNhY3Rpb24uZ2FzUGF5bWVudE9iamVjdHMsXG4gICAgfSk7XG4gICAgaWYgKHRyYW5zYWN0aW9uLmdhc1Nwb25zb3IpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzczogdHJhbnNhY3Rpb24uZ2FzU3BvbnNvciB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXRkb2NcbiAgICogKi9cbiAgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcgfCBVaW50OEFycmF5KTogVHJhbnNhY3Rpb24ge1xuICAgIGlmICghdXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICB0aGlzLnRyYW5zYWN0aW9uLnBhcnNlRnJvbUJyb2FkY2FzdFR4KHJhd1RyYW5zYWN0aW9uKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKiAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IEJhc2VUcmFuc2FjdGlvbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICAvLyBJZiBnYXMgZGF0YSBpcyBwcm92aWRlZCwgdGhpcyBpcyBub3QgYSBzaW11bGF0ZSB0cmFuc2FjdGlvblxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmdhc1ByaWNlICYmIHRoaXMudHJhbnNhY3Rpb24uZ2FzQnVkZ2V0ICYmIHRoaXMudHJhbnNhY3Rpb24uZ2FzUGF5bWVudE9iamVjdHMpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uaXNTaW11bGF0ZVR4ID0gZmFsc2U7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uYnVpbGQoKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVHYXNEYXRhKGdhc0RhdGE6IEdhc0RhdGEpOiB2b2lkIHtcbiAgICBpZiAoZ2FzRGF0YS5nYXNCdWRnZXQpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKGdhc0RhdGEuZ2FzQnVkZ2V0KSk7XG4gICAgfVxuICAgIGlmIChnYXNEYXRhLmdhc1ByaWNlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihnYXNEYXRhLmdhc1ByaWNlKSk7XG4gICAgfVxuICAgIGlmIChnYXNEYXRhLmdhc1BheW1lbnRPYmplY3RzICYmIGdhc0RhdGEuZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdHYXMgaW5wdXQgb2JqZWN0cyBsaXN0IGlzIGVtcHR5Jyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import { BaseTransactionBuilderFactory } from '@bitgo-beta/sdk-core';
|
|
2
2
|
import { TransactionBuilder } from './transactionBuilder';
|
|
3
3
|
import { TransferBuilder } from './transferBuilder';
|
|
4
|
+
import { Transaction } from './transaction';
|
|
5
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
6
|
export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
|
|
7
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
5
8
|
getWalletInitializationBuilder(): void;
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
/** @inheritdoc */
|
|
10
|
+
getTransferBuilder(tx?: Transaction): TransferBuilder;
|
|
11
|
+
from(rawTx: string | Uint8Array): TransactionBuilder;
|
|
12
|
+
private identifyTxTypeFromRawTx;
|
|
13
|
+
/**
|
|
14
|
+
* Initialize the builder with the given transaction
|
|
15
|
+
*
|
|
16
|
+
* @param {Transaction | undefined} tx - the transaction used to initialize the builder
|
|
17
|
+
* @param {TransactionBuilder} builder - the builder to be initialized
|
|
18
|
+
* @returns {TransactionBuilder} the builder initialized
|
|
19
|
+
*/
|
|
20
|
+
private initializeBuilder;
|
|
8
21
|
}
|
|
9
22
|
//# 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,
|
|
1
|
+
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA4C,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAIrC,8BAA8B,IAAI,IAAI;IAI7C,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,kBAAkB;IAapD,OAAO,CAAC,uBAAuB;IAQ/B;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;CAM1B"}
|
|
@@ -1,17 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.TransactionBuilderFactory = void 0;
|
|
4
7
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const transferBuilder_1 = require("./transferBuilder");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
11
|
+
const transactions_1 = require("@iota/iota-sdk/transactions");
|
|
5
12
|
class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
|
|
13
|
+
constructor(coinConfig) {
|
|
14
|
+
super(coinConfig);
|
|
15
|
+
}
|
|
6
16
|
getWalletInitializationBuilder() {
|
|
7
17
|
throw new Error('Method not implemented.');
|
|
8
18
|
}
|
|
9
|
-
|
|
10
|
-
|
|
19
|
+
/** @inheritdoc */
|
|
20
|
+
getTransferBuilder(tx) {
|
|
21
|
+
return this.initializeBuilder(tx, new transferBuilder_1.TransferBuilder(this._coinConfig));
|
|
11
22
|
}
|
|
12
|
-
from(
|
|
13
|
-
|
|
23
|
+
from(rawTx) {
|
|
24
|
+
let builder;
|
|
25
|
+
const rawTxBase64 = utils_1.default.getBase64String(rawTx);
|
|
26
|
+
const txType = this.identifyTxTypeFromRawTx(rawTxBase64);
|
|
27
|
+
switch (txType) {
|
|
28
|
+
case sdk_core_1.TransactionType.Send:
|
|
29
|
+
builder = new transferBuilder_1.TransferBuilder(this._coinConfig);
|
|
30
|
+
builder.fromImplementation(rawTxBase64);
|
|
31
|
+
return builder;
|
|
32
|
+
}
|
|
33
|
+
throw new sdk_core_1.InvalidTransactionError('Unsupported transaction');
|
|
34
|
+
}
|
|
35
|
+
identifyTxTypeFromRawTx(rawTx) {
|
|
36
|
+
const txData = transactions_1.Transaction.from(rawTx).getData();
|
|
37
|
+
if (txData.commands.filter((command) => !constants_1.TRANSFER_TRANSACTION_COMMANDS.includes(command.$kind)).length === 0) {
|
|
38
|
+
return sdk_core_1.TransactionType.Send;
|
|
39
|
+
}
|
|
40
|
+
throw new sdk_core_1.InvalidTransactionError('Unsupported commands in the transaction');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Initialize the builder with the given transaction
|
|
44
|
+
*
|
|
45
|
+
* @param {Transaction | undefined} tx - the transaction used to initialize the builder
|
|
46
|
+
* @param {TransactionBuilder} builder - the builder to be initialized
|
|
47
|
+
* @returns {TransactionBuilder} the builder initialized
|
|
48
|
+
*/
|
|
49
|
+
initializeBuilder(tx, builder) {
|
|
50
|
+
if (tx) {
|
|
51
|
+
builder.initBuilder(tx);
|
|
52
|
+
}
|
|
53
|
+
return builder;
|
|
14
54
|
}
|
|
15
55
|
}
|
|
16
56
|
exports.TransactionBuilderFactory = TransactionBuilderFactory;
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBK0c7QUFFL0csdURBQW9EO0FBRXBELDJDQUE0RDtBQUM1RCxvREFBNEI7QUFDNUIsOERBQTZFO0FBRzdFLE1BQWEseUJBQTBCLFNBQVEsd0NBQTZCO0lBQzFFLFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFTSw4QkFBOEI7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0JBQWtCLENBQUMsRUFBZ0I7UUFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQTBCO1FBQzdCLElBQUksT0FBMkIsQ0FBQztRQUNoQyxNQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE1BQU0sTUFBTSxHQUFvQixJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUUsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssMEJBQWUsQ0FBQyxJQUFJO2dCQUN2QixPQUFPLEdBQUcsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDaEQsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN4QyxPQUFPLE9BQU8sQ0FBQztRQUNuQixDQUFDO1FBQ0QsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLHVCQUF1QixDQUFDLEtBQTBCO1FBQ3hELE1BQU0sTUFBTSxHQUFHLDBCQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMseUNBQTZCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3RyxPQUFPLDBCQUFlLENBQUMsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFDRCxNQUFNLElBQUksa0NBQXVCLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssaUJBQWlCLENBQStCLEVBQTJCLEVBQUUsT0FBVTtRQUM3RixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBaERELDhEQWdEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRSQU5TRkVSX1RSQU5TQUNUSU9OX0NPTU1BTkRTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gYXMgSW90YVRyYW5zYWN0aW9uIH0gZnJvbSAnQGlvdGEvaW90YS1zZGsvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoY29pbkNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgZnJvbShyYXdUeDogc3RyaW5nIHwgVWludDhBcnJheSk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgbGV0IGJ1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICBjb25zdCByYXdUeEJhc2U2NCA9IHV0aWxzLmdldEJhc2U2NFN0cmluZyhyYXdUeCk7XG4gICAgY29uc3QgdHhUeXBlOiBUcmFuc2FjdGlvblR5cGUgPSB0aGlzLmlkZW50aWZ5VHhUeXBlRnJvbVJhd1R4KHJhd1R4QmFzZTY0KTtcbiAgICBzd2l0Y2ggKHR4VHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgYnVpbGRlciA9IG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgIGJ1aWxkZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1R4QmFzZTY0KTtcbiAgICAgICAgcmV0dXJuIGJ1aWxkZXI7XG4gICAgfVxuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVW5zdXBwb3J0ZWQgdHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgaWRlbnRpZnlUeFR5cGVGcm9tUmF3VHgocmF3VHg6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIGNvbnN0IHR4RGF0YSA9IElvdGFUcmFuc2FjdGlvbi5mcm9tKHJhd1R4KS5nZXREYXRhKCk7XG4gICAgaWYgKHR4RGF0YS5jb21tYW5kcy5maWx0ZXIoKGNvbW1hbmQpID0+ICFUUkFOU0ZFUl9UUkFOU0FDVElPTl9DT01NQU5EUy5pbmNsdWRlcyhjb21tYW5kLiRraW5kKSkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gICAgfVxuICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVW5zdXBwb3J0ZWQgY29tbWFuZHMgaW4gdGhlIHRyYW5zYWN0aW9uJyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoIHRoZSBnaXZlbiB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IGJ1aWxkZXIgLSB0aGUgYnVpbGRlciB0byBiZSBpbml0aWFsaXplZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplQnVpbGRlcjxUIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPih0eDogVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQsIGJ1aWxkZXI6IFQpOiBUIHtcbiAgICBpZiAodHgpIHtcbiAgICAgIGJ1aWxkZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIH1cbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfVxufVxuIl19
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import { TransactionBuilder } from './transactionBuilder';
|
|
2
2
|
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
-
import {
|
|
3
|
+
import { TransferTransaction } from './transferTransaction';
|
|
4
|
+
import { TransactionRecipient } from '@bitgo-beta/sdk-core';
|
|
5
|
+
import { Transaction } from './transaction';
|
|
6
|
+
import { TransactionObjectInput } from './iface';
|
|
4
7
|
export declare class TransferBuilder extends TransactionBuilder {
|
|
5
8
|
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
6
|
-
|
|
9
|
+
recipients(recipients: TransactionRecipient[]): this;
|
|
10
|
+
paymentObjects(paymentObjects: TransactionObjectInput[]): this;
|
|
11
|
+
initBuilder(tx: Transaction): void;
|
|
12
|
+
validateTransaction(transaction?: Transaction): void;
|
|
13
|
+
protected get transferTransaction(): TransferTransaction;
|
|
14
|
+
private validateRecipients;
|
|
7
15
|
}
|
|
8
16
|
//# sourceMappingURL=transferBuilder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAyB,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,UAAU,CAAC,UAAU,EAAE,oBAAoB,EAAE,GAAG,IAAI;IAMpD,cAAc,CAAC,cAAc,EAAE,sBAAsB,EAAE,GAAG,IAAI;IAQ9D,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IASlC,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI;IAWpD,SAAS,KAAK,mBAAmB,IAAI,mBAAmB,CAEvD;IAED,OAAO,CAAC,kBAAkB;CAM3B"}
|
|
@@ -1,15 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.TransferBuilder = void 0;
|
|
4
7
|
const transactionBuilder_1 = require("./transactionBuilder");
|
|
8
|
+
const transferTransaction_1 = require("./transferTransaction");
|
|
5
9
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
10
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
6
11
|
class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
7
12
|
constructor(_coinConfig) {
|
|
8
13
|
super(_coinConfig);
|
|
14
|
+
this._transaction = new transferTransaction_1.TransferTransaction(_coinConfig);
|
|
9
15
|
}
|
|
10
|
-
|
|
11
|
-
|
|
16
|
+
recipients(recipients) {
|
|
17
|
+
this.validateRecipients(recipients);
|
|
18
|
+
this.transferTransaction.recipients = recipients;
|
|
19
|
+
return this;
|
|
20
|
+
}
|
|
21
|
+
paymentObjects(paymentObjects) {
|
|
22
|
+
if (paymentObjects.length === 0) {
|
|
23
|
+
throw new sdk_core_1.BuildTransactionError('No Objects provided for payment');
|
|
24
|
+
}
|
|
25
|
+
this.transferTransaction.paymentObjects = paymentObjects;
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
initBuilder(tx) {
|
|
29
|
+
if (!(tx instanceof transferTransaction_1.TransferTransaction)) {
|
|
30
|
+
throw new sdk_core_1.BuildTransactionError('Transaction must be of type TransferTransaction');
|
|
31
|
+
}
|
|
32
|
+
super.initBuilder(tx);
|
|
33
|
+
this.transferTransaction.recipients = tx.recipients;
|
|
34
|
+
this.transferTransaction.paymentObjects = tx.paymentObjects;
|
|
35
|
+
}
|
|
36
|
+
validateTransaction(transaction) {
|
|
37
|
+
if (!transaction) {
|
|
38
|
+
throw new sdk_core_1.BuildTransactionError('Transaction is required for validation');
|
|
39
|
+
}
|
|
40
|
+
if (!(transaction instanceof transferTransaction_1.TransferTransaction)) {
|
|
41
|
+
throw new sdk_core_1.BuildTransactionError('Transaction must be of type TransferTransaction');
|
|
42
|
+
}
|
|
43
|
+
super.validateTransaction(transaction);
|
|
44
|
+
this.validateRecipients(transaction.recipients);
|
|
45
|
+
}
|
|
46
|
+
get transferTransaction() {
|
|
47
|
+
return this._transaction;
|
|
48
|
+
}
|
|
49
|
+
validateRecipients(recipients) {
|
|
50
|
+
recipients.forEach((recipient) => {
|
|
51
|
+
this.validateAddress({ address: recipient.address });
|
|
52
|
+
this.validateValue(new bignumber_js_1.default(recipient.amount));
|
|
53
|
+
});
|
|
12
54
|
}
|
|
13
55
|
}
|
|
14
56
|
exports.TransferBuilder = TransferBuilder;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTBEO0FBRTFELCtEQUE0RDtBQUM1RCxtREFBbUY7QUFDbkYsZ0VBQXFDO0FBSXJDLE1BQWEsZUFBZ0IsU0FBUSx1Q0FBa0I7SUFDckQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlDQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxVQUFVLENBQUMsVUFBa0M7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxjQUF3QztRQUNyRCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLElBQUksQ0FBQyxDQUFDLEVBQUUsWUFBWSx5Q0FBbUIsQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUNELEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQ3BELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsV0FBeUI7UUFDM0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxXQUFXLFlBQVkseUNBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ2xELE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1FBQ3JGLENBQUM7UUFDRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBYyxtQkFBbUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsWUFBbUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsVUFBa0M7UUFDM0QsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLHNCQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFsREQsMENBa0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNmZXJUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNmZXJUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uUmVjaXBpZW50IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uT2JqZWN0SW5wdXQgfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2ZlclRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHJlY2lwaWVudHMocmVjaXBpZW50czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVSZWNpcGllbnRzKHJlY2lwaWVudHMpO1xuICAgIHRoaXMudHJhbnNmZXJUcmFuc2FjdGlvbi5yZWNpcGllbnRzID0gcmVjaXBpZW50cztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHBheW1lbnRPYmplY3RzKHBheW1lbnRPYmplY3RzOiBUcmFuc2FjdGlvbk9iamVjdElucHV0W10pOiB0aGlzIHtcbiAgICBpZiAocGF5bWVudE9iamVjdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdObyBPYmplY3RzIHByb3ZpZGVkIGZvciBwYXltZW50Jyk7XG4gICAgfVxuICAgIHRoaXMudHJhbnNmZXJUcmFuc2FjdGlvbi5wYXltZW50T2JqZWN0cyA9IHBheW1lbnRPYmplY3RzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCEodHggaW5zdGFuY2VvZiBUcmFuc2ZlclRyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gbXVzdCBiZSBvZiB0eXBlIFRyYW5zZmVyVHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHRoaXMudHJhbnNmZXJUcmFuc2FjdGlvbi5yZWNpcGllbnRzID0gdHgucmVjaXBpZW50cztcbiAgICB0aGlzLnRyYW5zZmVyVHJhbnNhY3Rpb24ucGF5bWVudE9iamVjdHMgPSB0eC5wYXltZW50T2JqZWN0cztcbiAgfVxuXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGlzIHJlcXVpcmVkIGZvciB2YWxpZGF0aW9uJyk7XG4gICAgfVxuICAgIGlmICghKHRyYW5zYWN0aW9uIGluc3RhbmNlb2YgVHJhbnNmZXJUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIG11c3QgYmUgb2YgdHlwZSBUcmFuc2ZlclRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHN1cGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgIHRoaXMudmFsaWRhdGVSZWNpcGllbnRzKHRyYW5zYWN0aW9uLnJlY2lwaWVudHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2ZlclRyYW5zYWN0aW9uKCk6IFRyYW5zZmVyVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbiBhcyBUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJlY2lwaWVudHMocmVjaXBpZW50czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSkge1xuICAgIHJlY2lwaWVudHMuZm9yRWFjaCgocmVjaXBpZW50KSA9PiB7XG4gICAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IHJlY2lwaWVudC5hZGRyZXNzIH0pO1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIocmVjaXBpZW50LmFtb3VudCkpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { TransactionRecipient } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { Transaction } from './transaction';
|
|
4
|
+
import { TransactionExplanation, TransactionObjectInput, TransferTxData, TxData } from './iface';
|
|
5
|
+
export declare class TransferTransaction extends Transaction {
|
|
6
|
+
private _recipients;
|
|
7
|
+
private _paymentObjects?;
|
|
8
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
9
|
+
get recipients(): TransactionRecipient[];
|
|
10
|
+
set recipients(value: TransactionRecipient[]);
|
|
11
|
+
get paymentObjects(): TransactionObjectInput[] | undefined;
|
|
12
|
+
set paymentObjects(value: TransactionObjectInput[] | undefined);
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
addInputsAndOutputs(): void;
|
|
17
|
+
toJson(): TransferTxData;
|
|
18
|
+
parseFromJSON(txData: TransferTxData): void;
|
|
19
|
+
parseFromBroadcastTx(tx: string | Uint8Array): void;
|
|
20
|
+
protected messageWithIntent(message: Uint8Array): Uint8Array;
|
|
21
|
+
protected populateTxInputsAndCommands(): void;
|
|
22
|
+
protected validateTxDataImplementation(): void;
|
|
23
|
+
/**
|
|
24
|
+
* @inheritDoc
|
|
25
|
+
*/
|
|
26
|
+
protected explainTransactionImplementation(json: TxData, explanationResult: TransactionExplanation): TransactionExplanation;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=transferTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transferTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,oBAAoB,EAAmB,MAAM,sBAAsB,CAAC;AAC7G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAajG,qBAAa,mBAAoB,SAAQ,WAAW;IAClD,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,eAAe,CAAC,CAA2B;gBAEvC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAO5C,IAAI,UAAU,IAAI,oBAAoB,EAAE,CAEvC;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,oBAAoB,EAAE,EAG3C;IAED,IAAI,cAAc,IAAI,sBAAsB,EAAE,GAAG,SAAS,CAEzD;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,sBAAsB,EAAE,GAAG,SAAS,EAG7D;IAED;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAmB3B,MAAM,IAAI,cAAc;IAQxB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAO3C,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAqCnD,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAI5D,SAAS,CAAC,2BAA2B,IAAI,IAAI;IA4B7C,SAAS,CAAC,4BAA4B,IAAI,IAAI;IAwC9C;;OAEG;IACH,SAAS,CAAC,gCAAgC,CACxC,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,sBAAsB,GACxC,sBAAsB;CAc1B"}
|