@bitgo-beta/sdk-coin-algo 1.1.0
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/.eslintignore +5 -0
- package/.mocharc.yml +8 -0
- package/CHANGELOG.md +88 -0
- package/LICENSE +191 -0
- package/README.md +30 -0
- package/dist/src/algo.d.ts +211 -0
- package/dist/src/algo.d.ts.map +1 -0
- package/dist/src/algo.js +419 -0
- package/dist/src/algoToken.d.ts +32 -0
- package/dist/src/algoToken.d.ts.map +1 -0
- package/dist/src/algoToken.js +82 -0
- package/dist/src/builder.d.ts +3 -0
- package/dist/src/builder.d.ts.map +1 -0
- package/dist/src/builder.js +10 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +30 -0
- package/dist/src/lib/assetTransferBuilder.d.ts +42 -0
- package/dist/src/lib/assetTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/assetTransferBuilder.js +105 -0
- package/dist/src/lib/errors.d.ts +11 -0
- package/dist/src/lib/errors.d.ts.map +1 -0
- package/dist/src/lib/errors.js +27 -0
- package/dist/src/lib/ifaces.d.ts +46 -0
- package/dist/src/lib/ifaces.d.ts.map +1 -0
- package/dist/src/lib/ifaces.js +3 -0
- package/dist/src/lib/index.d.ts +13 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +47 -0
- package/dist/src/lib/keyPair.d.ts +25 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +77 -0
- package/dist/src/lib/keyRegistrationBuilder.d.ts +104 -0
- package/dist/src/lib/keyRegistrationBuilder.d.ts.map +1 -0
- package/dist/src/lib/keyRegistrationBuilder.js +240 -0
- package/dist/src/lib/seedEncoding.d.ts +25 -0
- package/dist/src/lib/seedEncoding.d.ts.map +1 -0
- package/dist/src/lib/seedEncoding.js +97 -0
- package/dist/src/lib/transaction.d.ts +75 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +251 -0
- package/dist/src/lib/transactionBuilder.d.ts +204 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +373 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +16 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +52 -0
- package/dist/src/lib/transferBuilder.d.ts +40 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +89 -0
- package/dist/src/lib/txnSchema.d.ts +7 -0
- package/dist/src/lib/txnSchema.d.ts.map +1 -0
- package/dist/src/lib/txnSchema.js +68 -0
- package/dist/src/lib/utils.d.ts +249 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +539 -0
- package/dist/src/seedValidator.d.ts +31 -0
- package/dist/src/seedValidator.d.ts.map +1 -0
- package/dist/src/seedValidator.js +89 -0
- package/dist/src/talgo.d.ts +12 -0
- package/dist/src/talgo.d.ts.map +1 -0
- package/dist/src/talgo.js +20 -0
- package/package.json +64 -0
- package/types/index.d.ts +60 -0
|
@@ -0,0 +1,251 @@
|
|
|
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 algosdk_1 = __importDefault(require("algosdk"));
|
|
8
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
9
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
10
|
+
const keyPair_1 = require("./keyPair");
|
|
11
|
+
class Transaction extends sdk_core_1.BaseTransaction {
|
|
12
|
+
constructor(coinConfig) {
|
|
13
|
+
super(coinConfig);
|
|
14
|
+
this._numberOfRequiredSigners = 0;
|
|
15
|
+
this._signers = [];
|
|
16
|
+
}
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
canSign({ key }) {
|
|
19
|
+
if (this._numberOfRequiredSigners === 0) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (this._numberOfRequiredSigners === 1) {
|
|
23
|
+
const kp = new keyPair_1.KeyPair({ prv: key });
|
|
24
|
+
const addr = kp.getAddress();
|
|
25
|
+
if (addr === this._sender) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
sender(address) {
|
|
37
|
+
this._sender = address;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Signs transaction.
|
|
41
|
+
*
|
|
42
|
+
* @param {KeyPair} keyPair Signer keys.
|
|
43
|
+
*/
|
|
44
|
+
sign(keyPair) {
|
|
45
|
+
if (!this._algoTransaction) {
|
|
46
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
47
|
+
}
|
|
48
|
+
if (this._numberOfRequiredSigners === 1) {
|
|
49
|
+
this.signSingle(keyPair[0]);
|
|
50
|
+
}
|
|
51
|
+
else if (this._numberOfRequiredSigners > 1) {
|
|
52
|
+
this.signMultiSig(keyPair);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Signs transaction.
|
|
57
|
+
*
|
|
58
|
+
* @param {KeyPair} keyPair Signer keys.
|
|
59
|
+
*/
|
|
60
|
+
signSingle(keyPair) {
|
|
61
|
+
if (!this._algoTransaction) {
|
|
62
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
63
|
+
}
|
|
64
|
+
const signKey = Buffer.from(keyPair.getSigningKey()).toString('hex');
|
|
65
|
+
if (signKey) {
|
|
66
|
+
this._signedTransaction = algosdk_1.default.signTransaction(this._algoTransaction, utils_1.default.toUint8Array(signKey)).blob;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
throw new sdk_core_1.InvalidKey('Private key undefined');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Signs multisig transaction.
|
|
74
|
+
*
|
|
75
|
+
* @param {KeyPair} keyPair Signers keys.
|
|
76
|
+
*/
|
|
77
|
+
signMultiSig(keyPair) {
|
|
78
|
+
if (!this._algoTransaction) {
|
|
79
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
80
|
+
}
|
|
81
|
+
if (this._signers.length === 0) {
|
|
82
|
+
throw new sdk_core_1.SigningError('Signers not specified for multisig');
|
|
83
|
+
}
|
|
84
|
+
if (keyPair.length === 0) {
|
|
85
|
+
throw new sdk_core_1.SigningError('Keypair not specified for multisig');
|
|
86
|
+
}
|
|
87
|
+
const multiSigOptions = {
|
|
88
|
+
version: 1,
|
|
89
|
+
threshold: this._numberOfRequiredSigners,
|
|
90
|
+
addrs: this._signers,
|
|
91
|
+
};
|
|
92
|
+
const msigAddress = algosdk_1.default.multisigAddress(multiSigOptions);
|
|
93
|
+
this._algoTransaction.from = algosdk_1.default.decodeAddress(msigAddress);
|
|
94
|
+
// Check if it is a signed or unsigned tx.
|
|
95
|
+
// If unsigned, sign it using first keypair and then append next signatures.
|
|
96
|
+
// If signed, appending next signatures.
|
|
97
|
+
let signedTx = this._signedTransaction
|
|
98
|
+
? this._signedTransaction
|
|
99
|
+
: algosdk_1.default.signMultisigTransaction(this._algoTransaction, multiSigOptions, keyPair.shift().getSigningKey()).blob;
|
|
100
|
+
keyPair.forEach((kp) => {
|
|
101
|
+
signedTx = algosdk_1.default.appendSignMultisigTransaction(signedTx, multiSigOptions, kp.getSigningKey()).blob;
|
|
102
|
+
});
|
|
103
|
+
this._signedTransaction = signedTx;
|
|
104
|
+
}
|
|
105
|
+
set signedTransaction(txn) {
|
|
106
|
+
this._signedTransaction = txn;
|
|
107
|
+
}
|
|
108
|
+
get numberOfRequiredSigners() {
|
|
109
|
+
return this._numberOfRequiredSigners;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Sets the number of signers required for signing this transaction.
|
|
113
|
+
*
|
|
114
|
+
* @param {number} num Threshold number of signers.
|
|
115
|
+
*/
|
|
116
|
+
setNumberOfRequiredSigners(num) {
|
|
117
|
+
this._numberOfRequiredSigners = num;
|
|
118
|
+
}
|
|
119
|
+
set signers(addrs) {
|
|
120
|
+
this._signers = addrs;
|
|
121
|
+
}
|
|
122
|
+
get signers() {
|
|
123
|
+
return this._signers;
|
|
124
|
+
}
|
|
125
|
+
set signedBy(signer) {
|
|
126
|
+
this._signedBy = signer;
|
|
127
|
+
}
|
|
128
|
+
get signedBy() {
|
|
129
|
+
return this._signedBy;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Sets algo transaction.
|
|
133
|
+
*
|
|
134
|
+
* @param {algosdk.Transaction} tx
|
|
135
|
+
*/
|
|
136
|
+
setAlgoTransaction(tx) {
|
|
137
|
+
this._algoTransaction = tx;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get underlaying algo transaction.
|
|
141
|
+
*
|
|
142
|
+
* @returns {algosdk.Transaction}
|
|
143
|
+
*/
|
|
144
|
+
getAlgoTransaction() {
|
|
145
|
+
return this._algoTransaction;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Set the transaction type.
|
|
149
|
+
*
|
|
150
|
+
* @param {TransactionType} transactionType The transaction type to be set.
|
|
151
|
+
*/
|
|
152
|
+
setTransactionType(transactionType) {
|
|
153
|
+
this._type = transactionType;
|
|
154
|
+
}
|
|
155
|
+
estimateSize() {
|
|
156
|
+
if (!this._algoTransaction) {
|
|
157
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
158
|
+
}
|
|
159
|
+
return this._algoTransaction.estimateSize();
|
|
160
|
+
}
|
|
161
|
+
/** @inheritdoc */
|
|
162
|
+
toBroadcastFormat() {
|
|
163
|
+
if (!this._algoTransaction) {
|
|
164
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
165
|
+
}
|
|
166
|
+
if (this._signedTransaction && this._signedTransaction.length > 0) {
|
|
167
|
+
return this._signedTransaction;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
return algosdk_1.default.encodeUnsignedTransaction(this._algoTransaction);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/** @inheritdoc */
|
|
174
|
+
toJson() {
|
|
175
|
+
var _a, _b;
|
|
176
|
+
if (!this._algoTransaction) {
|
|
177
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
178
|
+
}
|
|
179
|
+
const result = {
|
|
180
|
+
id: this._algoTransaction.txID(),
|
|
181
|
+
type: (_a = this._algoTransaction.type) === null || _a === void 0 ? void 0 : _a.toString(),
|
|
182
|
+
from: algosdk_1.default.encodeAddress(this._algoTransaction.from.publicKey),
|
|
183
|
+
fee: this._algoTransaction.fee,
|
|
184
|
+
firstRound: this._algoTransaction.firstRound,
|
|
185
|
+
lastRound: this._algoTransaction.lastRound,
|
|
186
|
+
note: this._algoTransaction.note,
|
|
187
|
+
tokenId: (_b = this._algoTransaction) === null || _b === void 0 ? void 0 : _b.assetIndex,
|
|
188
|
+
genesisID: this._algoTransaction.genesisID,
|
|
189
|
+
genesisHash: this._algoTransaction.genesisHash.toString('base64'),
|
|
190
|
+
};
|
|
191
|
+
if (this._algoTransaction.closeRemainderTo) {
|
|
192
|
+
result.closeRemainderTo = algosdk_1.default.encodeAddress(this._algoTransaction.closeRemainderTo.publicKey);
|
|
193
|
+
}
|
|
194
|
+
if (this.type === sdk_core_1.TransactionType.Send) {
|
|
195
|
+
result.to = algosdk_1.default.encodeAddress(this._algoTransaction.to.publicKey);
|
|
196
|
+
result.amount = this._algoTransaction.amount.toString();
|
|
197
|
+
}
|
|
198
|
+
if (this.type === sdk_core_1.TransactionType.WalletInitialization) {
|
|
199
|
+
if (!this._algoTransaction.nonParticipation) {
|
|
200
|
+
if (this._algoTransaction.voteKey &&
|
|
201
|
+
this._algoTransaction.selectionKey &&
|
|
202
|
+
this._algoTransaction.voteFirst &&
|
|
203
|
+
this._algoTransaction.voteLast &&
|
|
204
|
+
this._algoTransaction.voteKeyDilution) {
|
|
205
|
+
result.voteKey = this._algoTransaction.voteKey.toString('base64');
|
|
206
|
+
result.selectionKey = this._algoTransaction.selectionKey.toString('base64');
|
|
207
|
+
result.voteFirst = this._algoTransaction.voteFirst;
|
|
208
|
+
result.voteLast = this._algoTransaction.voteLast;
|
|
209
|
+
result.voteKeyDilution = this._algoTransaction.voteKeyDilution;
|
|
210
|
+
if (this._algoTransaction.stateProofKey) {
|
|
211
|
+
result.stateProofKey = this._algoTransaction.stateProofKey.toString('base64');
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
result.nonParticipation = this._algoTransaction.nonParticipation;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (result.type === 'axfer' && result.to && result.amount) {
|
|
220
|
+
result.txType = utils_1.default.getTokenTxType(result.amount, result.from, result.to, result.closeRemainderTo);
|
|
221
|
+
result.tokenName = this._coinConfig.suffix;
|
|
222
|
+
}
|
|
223
|
+
return result;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Load the input and output data on this transaction.
|
|
227
|
+
*/
|
|
228
|
+
loadInputsAndOutputs() {
|
|
229
|
+
if (!this._algoTransaction) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
if (this.type === sdk_core_1.TransactionType.Send) {
|
|
233
|
+
this._outputs = [
|
|
234
|
+
{
|
|
235
|
+
address: algosdk_1.default.encodeAddress(this._algoTransaction.to.publicKey),
|
|
236
|
+
value: this._algoTransaction.amount.toString(),
|
|
237
|
+
coin: this._coinConfig.name,
|
|
238
|
+
},
|
|
239
|
+
];
|
|
240
|
+
this._inputs = [
|
|
241
|
+
{
|
|
242
|
+
address: algosdk_1.default.encodeAddress(this._algoTransaction.from.publicKey),
|
|
243
|
+
value: this._algoTransaction.amount.toString(),
|
|
244
|
+
coin: this._coinConfig.name,
|
|
245
|
+
},
|
|
246
|
+
];
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
exports.Transaction = Transaction;
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLHNEQUE4QjtBQUM5QixtREFPOEI7QUFDOUIsb0RBQTRCO0FBQzVCLHVDQUFvQztBQUdwQyxNQUFhLFdBQVksU0FBUSwwQkFBZTtJQVE5QyxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFXO1FBQ3RCLElBQUksSUFBSSxDQUFDLHdCQUF3QixLQUFLLENBQUMsRUFBRTtZQUN2QyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sRUFBRSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN6QixPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsT0FBZTtRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxPQUFrQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzFC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O2lCQUM1QjthQUNGLENBQUM7WUFFRixJQUFJLENBQUMsT0FBTyxHQUFHO2dCQUNiO29CQUNFLE9BQU8sRUFBRSxpQkFBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDcEUsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO29CQUM5QyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2lCQUM1QjthQUNGLENBQUM7U0FDSDtJQUNILENBQUM7Q0FDRjtBQXpRRCxrQ0F5UUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgYWxnb3NkayBmcm9tICdhbGdvc2RrJztcbmltcG9ydCB7XG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBCYXNlS2V5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZEtleSxcbiAgU2lnbmluZ0Vycm9yLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IFR4RGF0YSB9IGZyb20gJy4vaWZhY2VzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfYWxnb1RyYW5zYWN0aW9uPzogYWxnb3Nkay5UcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfc2lnbmVkVHJhbnNhY3Rpb24/OiBVaW50OEFycmF5O1xuICBwcml2YXRlIF9udW1iZXJPZlJlcXVpcmVkU2lnbmVyczogbnVtYmVyO1xuICBwcml2YXRlIF9zZW5kZXI6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2lnbmVyczogc3RyaW5nW107XG4gIHByaXZhdGUgX3NpZ25lZEJ5OiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID0gMDtcbiAgICB0aGlzLl9zaWduZXJzID0gW107XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbih7IGtleSB9OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9PT0gMSkge1xuICAgICAgY29uc3Qga3AgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5IH0pO1xuICAgICAgY29uc3QgYWRkciA9IGtwLmdldEFkZHJlc3MoKTtcbiAgICAgIGlmIChhZGRyID09PSB0aGlzLl9zZW5kZXIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHNlbmRlcihhZGRyZXNzOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9zZW5kZXIgPSBhZGRyZXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ25zIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgU2lnbmVyIGtleXMuXG4gICAqL1xuICBzaWduKGtleVBhaXI6IEtleVBhaXJbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWxnb1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycyA9PT0gMSkge1xuICAgICAgdGhpcy5zaWduU2luZ2xlKGtleVBhaXJbMF0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPiAxKSB7XG4gICAgICB0aGlzLnNpZ25NdWx0aVNpZyhrZXlQYWlyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBTaWduZXIga2V5cy5cbiAgICovXG4gIHByaXZhdGUgc2lnblNpbmdsZShrZXlQYWlyOiBLZXlQYWlyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbktleSA9IEJ1ZmZlci5mcm9tKGtleVBhaXIuZ2V0U2lnbmluZ0tleSgpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgaWYgKHNpZ25LZXkpIHtcbiAgICAgIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uID0gYWxnb3Nkay5zaWduVHJhbnNhY3Rpb24odGhpcy5fYWxnb1RyYW5zYWN0aW9uLCB1dGlscy50b1VpbnQ4QXJyYXkoc2lnbktleSkpLmJsb2I7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkS2V5KCdQcml2YXRlIGtleSB1bmRlZmluZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgbXVsdGlzaWcgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBTaWduZXJzIGtleXMuXG4gICAqL1xuICBwcml2YXRlIHNpZ25NdWx0aVNpZyhrZXlQYWlyOiBLZXlQYWlyW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc2lnbmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ1NpZ25lcnMgbm90IHNwZWNpZmllZCBmb3IgbXVsdGlzaWcnKTtcbiAgICB9XG4gICAgaWYgKGtleVBhaXIubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdLZXlwYWlyIG5vdCBzcGVjaWZpZWQgZm9yIG11bHRpc2lnJyk7XG4gICAgfVxuICAgIGNvbnN0IG11bHRpU2lnT3B0aW9ucyA9IHtcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICB0aHJlc2hvbGQ6IHRoaXMuX251bWJlck9mUmVxdWlyZWRTaWduZXJzLFxuICAgICAgYWRkcnM6IHRoaXMuX3NpZ25lcnMsXG4gICAgfTtcbiAgICBjb25zdCBtc2lnQWRkcmVzcyA9IGFsZ29zZGsubXVsdGlzaWdBZGRyZXNzKG11bHRpU2lnT3B0aW9ucyk7XG4gICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmZyb20gPSBhbGdvc2RrLmRlY29kZUFkZHJlc3MobXNpZ0FkZHJlc3MpO1xuXG4gICAgLy8gQ2hlY2sgaWYgaXQgaXMgYSBzaWduZWQgb3IgdW5zaWduZWQgdHguXG4gICAgLy8gSWYgdW5zaWduZWQsIHNpZ24gaXQgdXNpbmcgZmlyc3Qga2V5cGFpciBhbmQgdGhlbiBhcHBlbmQgbmV4dCBzaWduYXR1cmVzLlxuICAgIC8vIElmIHNpZ25lZCwgYXBwZW5kaW5nIG5leHQgc2lnbmF0dXJlcy5cbiAgICBsZXQgc2lnbmVkVHggPSB0aGlzLl9zaWduZWRUcmFuc2FjdGlvblxuICAgICAgPyB0aGlzLl9zaWduZWRUcmFuc2FjdGlvblxuICAgICAgOiBhbGdvc2RrLnNpZ25NdWx0aXNpZ1RyYW5zYWN0aW9uKHRoaXMuX2FsZ29UcmFuc2FjdGlvbiwgbXVsdGlTaWdPcHRpb25zLCBrZXlQYWlyLnNoaWZ0KCkhLmdldFNpZ25pbmdLZXkoKSkuYmxvYjtcblxuICAgIGtleVBhaXIuZm9yRWFjaCgoa3ApID0+IHtcbiAgICAgIHNpZ25lZFR4ID0gYWxnb3Nkay5hcHBlbmRTaWduTXVsdGlzaWdUcmFuc2FjdGlvbihzaWduZWRUeCwgbXVsdGlTaWdPcHRpb25zLCBrcC5nZXRTaWduaW5nS2V5KCkpLmJsb2I7XG4gICAgfSk7XG4gICAgdGhpcy5fc2lnbmVkVHJhbnNhY3Rpb24gPSBzaWduZWRUeDtcbiAgfVxuXG4gIHNldCBzaWduZWRUcmFuc2FjdGlvbih0eG46IFVpbnQ4QXJyYXkpIHtcbiAgICB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbiA9IHR4bjtcbiAgfVxuXG4gIGdldCBudW1iZXJPZlJlcXVpcmVkU2lnbmVycygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9udW1iZXJPZlJlcXVpcmVkU2lnbmVycztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBudW1iZXIgb2Ygc2lnbmVycyByZXF1aXJlZCBmb3Igc2lnbmluZyB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbnVtIFRocmVzaG9sZCBudW1iZXIgb2Ygc2lnbmVycy5cbiAgICovXG4gIHNldE51bWJlck9mUmVxdWlyZWRTaWduZXJzKG51bTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fbnVtYmVyT2ZSZXF1aXJlZFNpZ25lcnMgPSBudW07XG4gIH1cblxuICBzZXQgc2lnbmVycyhhZGRyczogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9zaWduZXJzID0gYWRkcnM7XG4gIH1cblxuICBnZXQgc2lnbmVycygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25lcnM7XG4gIH1cblxuICBzZXQgc2lnbmVkQnkoc2lnbmVyOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX3NpZ25lZEJ5ID0gc2lnbmVyO1xuICB9XG5cbiAgZ2V0IHNpZ25lZEJ5KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmVkQnk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhbGdvIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2FsZ29zZGsuVHJhbnNhY3Rpb259IHR4XG4gICAqL1xuXG4gIHNldEFsZ29UcmFuc2FjdGlvbih0eDogYWxnb3Nkay5UcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB1bmRlcmxheWluZyBhbGdvIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyB7YWxnb3Nkay5UcmFuc2FjdGlvbn1cbiAgICovXG5cbiAgZ2V0QWxnb1RyYW5zYWN0aW9uKCk6IGFsZ29zZGsuVHJhbnNhY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9hbGdvVHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICBlc3RpbWF0ZVNpemUoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uZXN0aW1hdGVTaXplKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogVWludDhBcnJheSB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uICYmIHRoaXMuX3NpZ25lZFRyYW5zYWN0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLl9zaWduZWRUcmFuc2FjdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFsZ29zZGsuZW5jb2RlVW5zaWduZWRUcmFuc2FjdGlvbih0aGlzLl9hbGdvVHJhbnNhY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX2FsZ29UcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udHhJRCgpLFxuICAgICAgdHlwZTogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnR5cGU/LnRvU3RyaW5nKCksXG4gICAgICBmcm9tOiBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLmZyb20ucHVibGljS2V5KSxcbiAgICAgIGZlZTogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmZlZSxcbiAgICAgIGZpcnN0Um91bmQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5maXJzdFJvdW5kLFxuICAgICAgbGFzdFJvdW5kOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24ubGFzdFJvdW5kLFxuICAgICAgbm90ZTogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLm5vdGUsXG4gICAgICB0b2tlbklkOiB0aGlzLl9hbGdvVHJhbnNhY3Rpb24/LmFzc2V0SW5kZXgsXG4gICAgICBnZW5lc2lzSUQ6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5nZW5lc2lzSUQsXG4gICAgICBnZW5lc2lzSGFzaDogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmdlbmVzaXNIYXNoLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICB9O1xuICAgIGlmICh0aGlzLl9hbGdvVHJhbnNhY3Rpb24uY2xvc2VSZW1haW5kZXJUbykge1xuICAgICAgcmVzdWx0LmNsb3NlUmVtYWluZGVyVG8gPSBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLmNsb3NlUmVtYWluZGVyVG8ucHVibGljS2V5KTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIHJlc3VsdC50byA9IGFsZ29zZGsuZW5jb2RlQWRkcmVzcyh0aGlzLl9hbGdvVHJhbnNhY3Rpb24udG8ucHVibGljS2V5KTtcbiAgICAgIHJlc3VsdC5hbW91bnQgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uYW1vdW50LnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbikge1xuICAgICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24ubm9uUGFydGljaXBhdGlvbikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVLZXkgJiZcbiAgICAgICAgICB0aGlzLl9hbGdvVHJhbnNhY3Rpb24uc2VsZWN0aW9uS2V5ICYmXG4gICAgICAgICAgdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVGaXJzdCAmJlxuICAgICAgICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlTGFzdCAmJlxuICAgICAgICAgIHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlS2V5RGlsdXRpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVzdWx0LnZvdGVLZXkgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUtleS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgICAgcmVzdWx0LnNlbGVjdGlvbktleSA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5zZWxlY3Rpb25LZXkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICAgIHJlc3VsdC52b3RlRmlyc3QgPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24udm90ZUZpcnN0O1xuICAgICAgICAgIHJlc3VsdC52b3RlTGFzdCA9IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi52b3RlTGFzdDtcbiAgICAgICAgICByZXN1bHQudm90ZUtleURpbHV0aW9uID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnZvdGVLZXlEaWx1dGlvbjtcbiAgICAgICAgICBpZiAodGhpcy5fYWxnb1RyYW5zYWN0aW9uLnN0YXRlUHJvb2ZLZXkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5zdGF0ZVByb29mS2V5ID0gdGhpcy5fYWxnb1RyYW5zYWN0aW9uLnN0YXRlUHJvb2ZLZXkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0Lm5vblBhcnRpY2lwYXRpb24gPSB0aGlzLl9hbGdvVHJhbnNhY3Rpb24ubm9uUGFydGljaXBhdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlc3VsdC50eXBlID09PSAnYXhmZXInICYmIHJlc3VsdC50byAmJiByZXN1bHQuYW1vdW50KSB7XG4gICAgICByZXN1bHQudHhUeXBlID0gdXRpbHMuZ2V0VG9rZW5UeFR5cGUocmVzdWx0LmFtb3VudCwgcmVzdWx0LmZyb20sIHJlc3VsdC50bywgcmVzdWx0LmNsb3NlUmVtYWluZGVyVG8pO1xuICAgICAgcmVzdWx0LnRva2VuTmFtZSA9IHRoaXMuX2NvaW5Db25maWcuc3VmZml4O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hbGdvVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlNlbmQpIHtcbiAgICAgIHRoaXMuX291dHB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLnRvLnB1YmxpY0tleSksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuX2FsZ29UcmFuc2FjdGlvbi5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBhZGRyZXNzOiBhbGdvc2RrLmVuY29kZUFkZHJlc3ModGhpcy5fYWxnb1RyYW5zYWN0aW9uLmZyb20ucHVibGljS2V5KSxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5fYWxnb1RyYW5zYWN0aW9uLmFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
2
|
+
import BigNumber from 'bignumber.js';
|
|
3
|
+
import algosdk from 'algosdk';
|
|
4
|
+
import { Transaction } from './transaction';
|
|
5
|
+
import { KeyPair } from './keyPair';
|
|
6
|
+
import { BaseAddress, BaseFee, BaseKey, BaseTransactionBuilder, TransactionType } from '@bitgo-beta/sdk-core';
|
|
7
|
+
export declare abstract class TransactionBuilder extends BaseTransactionBuilder {
|
|
8
|
+
protected _transaction: Transaction;
|
|
9
|
+
protected _keyPairs: KeyPair[];
|
|
10
|
+
protected _fee: number;
|
|
11
|
+
protected _isFlatFee: boolean;
|
|
12
|
+
protected _sender: string;
|
|
13
|
+
protected _genesisHash: string;
|
|
14
|
+
protected _genesisId: string;
|
|
15
|
+
protected _firstRound: number;
|
|
16
|
+
protected _lastRound: number;
|
|
17
|
+
protected _lease?: Uint8Array;
|
|
18
|
+
protected _note?: Uint8Array;
|
|
19
|
+
protected _reKeyTo?: string;
|
|
20
|
+
protected _suggestedParams: algosdk.SuggestedParams;
|
|
21
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
22
|
+
/**
|
|
23
|
+
* Sets the fee.
|
|
24
|
+
*
|
|
25
|
+
* The minimum fee is 1000 microalgos.
|
|
26
|
+
*
|
|
27
|
+
* @param {BaseFee} feeObj The amount to pay to the fee sink denoted in microalgos
|
|
28
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
29
|
+
*
|
|
30
|
+
* @see https://developer.algorand.org/docs/reference/transactions/
|
|
31
|
+
*/
|
|
32
|
+
fee(feeObj: BaseFee): this;
|
|
33
|
+
/**
|
|
34
|
+
* Sets whether the fee is a flat fee.
|
|
35
|
+
*
|
|
36
|
+
* A flat fee is the fee for the entire transaction whereas a normal fee
|
|
37
|
+
* is a fee for every byte in the transaction.
|
|
38
|
+
*
|
|
39
|
+
* @param {boolean} isFlatFee Whether the fee should be specified as a flat fee.
|
|
40
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
41
|
+
*/
|
|
42
|
+
isFlatFee(isFlatFee: boolean): this;
|
|
43
|
+
/**
|
|
44
|
+
* Sets the transaction sender.
|
|
45
|
+
*
|
|
46
|
+
* @param {BaseAddress} sender The sender account
|
|
47
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
48
|
+
*
|
|
49
|
+
* @see https://developer.algorand.org/docs/reference/transactions/
|
|
50
|
+
*/
|
|
51
|
+
sender(sender: BaseAddress): this;
|
|
52
|
+
/**
|
|
53
|
+
* Sets the genesis id.
|
|
54
|
+
*
|
|
55
|
+
* @param {string} genesisId The genesis id.
|
|
56
|
+
* @example "mainnet-v1.0"
|
|
57
|
+
*
|
|
58
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
59
|
+
*
|
|
60
|
+
* @see https://developer.algorand.org/docs/reference/transactions/
|
|
61
|
+
*/
|
|
62
|
+
genesisId(genesisId: string): this;
|
|
63
|
+
/**
|
|
64
|
+
* Sets the genesis hash.
|
|
65
|
+
*
|
|
66
|
+
* The genesis hash must be base64 encoded.
|
|
67
|
+
*
|
|
68
|
+
* @param {string} genesisHash The genesis hash.
|
|
69
|
+
* @example "wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8="
|
|
70
|
+
*
|
|
71
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
72
|
+
*
|
|
73
|
+
* @see https://developer.algorand.org/docs/reference/transactions/
|
|
74
|
+
*/
|
|
75
|
+
genesisHash(genesisHash: string): this;
|
|
76
|
+
/**
|
|
77
|
+
* Sets the genesis id and hash to mainnet.
|
|
78
|
+
*
|
|
79
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
80
|
+
*
|
|
81
|
+
* @see https://developer.algorand.org/docs/reference/algorand-networks/mainnet/#genesis-id
|
|
82
|
+
* @see https://developer.algorand.org/docs/reference/algorand-networks/mainnet/#genesis-hash
|
|
83
|
+
*/
|
|
84
|
+
mainnet(): this;
|
|
85
|
+
/**
|
|
86
|
+
* Sets the genesis id and hash to testnet.
|
|
87
|
+
*
|
|
88
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
89
|
+
*
|
|
90
|
+
* @see https://developer.algorand.org/docs/reference/algorand-networks/testnet/#genesis-id
|
|
91
|
+
* @see https://developer.algorand.org/docs/reference/algorand-networks/testnet/#genesis-hash
|
|
92
|
+
*/
|
|
93
|
+
testnet(): this;
|
|
94
|
+
/**
|
|
95
|
+
* Sets the genesis id and hash to betanet.
|
|
96
|
+
*
|
|
97
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
98
|
+
*
|
|
99
|
+
* @see https://developer.algorand.org/docs/reference/algorand-networks/betanet/#genesis-id
|
|
100
|
+
* @see https://developer.algorand.org/docs/reference/algorand-networks/betanet/#genesis-hash
|
|
101
|
+
*/
|
|
102
|
+
betanet(): this;
|
|
103
|
+
/**
|
|
104
|
+
* Sets the first round.
|
|
105
|
+
*
|
|
106
|
+
* @param {number} round The first protocol round on which this txn is valid.
|
|
107
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
108
|
+
*
|
|
109
|
+
* @see https://developer.algorand.org/docs/reference/transactions/
|
|
110
|
+
*/
|
|
111
|
+
firstRound(round: number): this;
|
|
112
|
+
/**
|
|
113
|
+
* Sets the last round.
|
|
114
|
+
*
|
|
115
|
+
* @param {number} round The first protocol round on which this txn is valid.
|
|
116
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
117
|
+
*
|
|
118
|
+
* @see https://developer.algorand.org/docs/reference/transactions/
|
|
119
|
+
*/
|
|
120
|
+
lastRound(round: number): this;
|
|
121
|
+
/**
|
|
122
|
+
* Sets the lease on the transaction.
|
|
123
|
+
*
|
|
124
|
+
* A lease is a mutex on the transaction that prevents any other transaction
|
|
125
|
+
* from being sent with the same lease until the prior transaction's last
|
|
126
|
+
* round has passed.
|
|
127
|
+
*
|
|
128
|
+
* @param {Uint8Array} lease The lease to put the transaction.
|
|
129
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
130
|
+
*
|
|
131
|
+
* @see https://developer.algorand.org/docs/reference/transactions/
|
|
132
|
+
*/
|
|
133
|
+
lease(lease: Uint8Array): this;
|
|
134
|
+
/**
|
|
135
|
+
* Sets the note for the transaction.
|
|
136
|
+
*
|
|
137
|
+
* @param {Uint8Array} note Arbitrary data for sender to store.
|
|
138
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
139
|
+
*
|
|
140
|
+
* @see https://developer.algorand.org/docs/reference/transactions/
|
|
141
|
+
*/
|
|
142
|
+
note(note: Uint8Array): this;
|
|
143
|
+
/**
|
|
144
|
+
* Sets the authorized address.
|
|
145
|
+
*
|
|
146
|
+
* The authorized asset will be used to authorize all future transactions.
|
|
147
|
+
*
|
|
148
|
+
* @param {BaseAddress} authorizer The address to delegate authorization authority to.
|
|
149
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
150
|
+
*
|
|
151
|
+
* @see https://developer.algorand.org/docs/reference/transactions/
|
|
152
|
+
*/
|
|
153
|
+
reKeyTo(authorizer: BaseAddress): this;
|
|
154
|
+
/** @inheritdoc */
|
|
155
|
+
validateAddress({ address }: BaseAddress): void;
|
|
156
|
+
/** @inheritdoc */
|
|
157
|
+
protected buildImplementation(): Promise<Transaction>;
|
|
158
|
+
/**
|
|
159
|
+
* Builds the algorand transaction.
|
|
160
|
+
*/
|
|
161
|
+
protected abstract buildAlgoTxn(): algosdk.Transaction;
|
|
162
|
+
/**
|
|
163
|
+
* The transaction type.
|
|
164
|
+
*/
|
|
165
|
+
protected abstract get transactionType(): TransactionType;
|
|
166
|
+
/** @inheritdoc */
|
|
167
|
+
protected fromImplementation(rawTransaction: Uint8Array | string): Transaction;
|
|
168
|
+
/** @inheritdoc */
|
|
169
|
+
protected signImplementation({ key }: BaseKey): Transaction;
|
|
170
|
+
numberOfSigners(num: number): this;
|
|
171
|
+
setSigners(addrs: string | string[]): this;
|
|
172
|
+
/**
|
|
173
|
+
* Sets the number of signers required to sign the transaction.
|
|
174
|
+
*
|
|
175
|
+
* The number of signers cannot be set to a negative value.
|
|
176
|
+
*
|
|
177
|
+
* @param {number} n The number of signers.
|
|
178
|
+
* @returns {TransactionBuilder} This transaction builder.
|
|
179
|
+
*/
|
|
180
|
+
numberOfRequiredSigners(n: number): this;
|
|
181
|
+
/**
|
|
182
|
+
* @inheritdoc
|
|
183
|
+
* @see https://developer.algorand.org/docs/features/accounts/#transformation-private-key-to-base64-private-key
|
|
184
|
+
*/
|
|
185
|
+
validateKey({ key }: BaseKey): void;
|
|
186
|
+
/** @inheritdoc */
|
|
187
|
+
validateRawTransaction(rawTransaction: Uint8Array | string): void;
|
|
188
|
+
/** @inheritdoc */
|
|
189
|
+
validateTransaction(_: Transaction): void;
|
|
190
|
+
private validateBaseFields;
|
|
191
|
+
/** @inheritdoc */
|
|
192
|
+
validateValue(value: BigNumber): void;
|
|
193
|
+
/** @inheritdoc */
|
|
194
|
+
protected get transaction(): Transaction;
|
|
195
|
+
/** @inheritdoc */
|
|
196
|
+
protected set transaction(transaction: Transaction);
|
|
197
|
+
/**
|
|
198
|
+
* Convenience method to retrieve the algosdk suggested parameters.
|
|
199
|
+
*
|
|
200
|
+
* @returns {algosdk.SuggestedParams} The algosdk suggested parameters.
|
|
201
|
+
*/
|
|
202
|
+
protected get suggestedParams(): algosdk.SuggestedParams;
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":"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"}
|