@algorandfoundation/algokit-utils 6.0.0-beta.3 → 6.0.0-beta.4
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/account/account.d.ts +33 -1
- package/account/account.d.ts.map +1 -1
- package/account/account.js +63 -0
- package/account/account.js.map +1 -1
- package/account/account.mjs +62 -1
- package/account/account.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +4 -0
- package/index.js.map +1 -1
- package/index.mjs +2 -1
- package/index.mjs.map +1 -1
- package/package.json +1 -1
- package/testing/fixtures/algorand-fixture.d.ts.map +1 -1
- package/testing/fixtures/algorand-fixture.js +15 -2
- package/testing/fixtures/algorand-fixture.js.map +1 -1
- package/testing/fixtures/algorand-fixture.mjs +15 -2
- package/testing/fixtures/algorand-fixture.mjs.map +1 -1
- package/types/account-manager.d.ts +211 -0
- package/types/account-manager.d.ts.map +1 -0
- package/types/account-manager.js +265 -0
- package/types/account-manager.js.map +1 -0
- package/types/account-manager.mjs +263 -0
- package/types/account-manager.mjs.map +1 -0
- package/types/account.d.ts +19 -0
- package/types/account.d.ts.map +1 -1
- package/types/account.js.map +1 -1
- package/types/account.mjs.map +1 -1
- package/types/algorand-client.d.ts +183 -0
- package/types/algorand-client.d.ts.map +1 -0
- package/types/algorand-client.js +296 -0
- package/types/algorand-client.js.map +1 -0
- package/types/algorand-client.mjs +291 -0
- package/types/algorand-client.mjs.map +1 -0
- package/types/client-manager.d.ts +99 -0
- package/types/client-manager.d.ts.map +1 -0
- package/types/client-manager.js +99 -0
- package/types/client-manager.js.map +1 -0
- package/types/client-manager.mjs +97 -0
- package/types/client-manager.mjs.map +1 -0
- package/types/composer.d.ts +331 -0
- package/types/composer.d.ts.map +1 -0
- package/types/composer.js +446 -0
- package/types/composer.js.map +1 -0
- package/types/composer.mjs +444 -0
- package/types/composer.mjs.map +1 -0
- package/types/network-client.d.ts +2 -2
- package/types/network-client.d.ts.map +1 -1
- package/types/testing.d.ts +8 -2
- package/types/testing.d.ts.map +1 -1
- package/types/transaction.d.ts +4 -0
- package/types/transaction.d.ts.map +1 -1
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var algosdk = require('algosdk');
|
|
4
|
+
var transaction = require('../transaction/transaction.js');
|
|
5
|
+
|
|
6
|
+
var isTransactionWithSigner = algosdk.isTransactionWithSigner;
|
|
7
|
+
var encodeAddress = algosdk.encodeAddress;
|
|
8
|
+
/** AlgoKit Composer helps you compose and execute transactions as a transaction group.
|
|
9
|
+
*
|
|
10
|
+
* Note: this class is a new Beta feature and may be subject to change.
|
|
11
|
+
*
|
|
12
|
+
* @beta
|
|
13
|
+
*/
|
|
14
|
+
class AlgokitComposer {
|
|
15
|
+
/**
|
|
16
|
+
* Create an `AlgoKitComposer`.
|
|
17
|
+
* @param params The configuration for this composer
|
|
18
|
+
*/
|
|
19
|
+
constructor(params) {
|
|
20
|
+
/** The ATC used to compose the group */
|
|
21
|
+
this.atc = new algosdk.AtomicTransactionComposer();
|
|
22
|
+
/** Map of txid to ABI method */
|
|
23
|
+
this.txnMethodMap = new Map();
|
|
24
|
+
/** Transactions that have not yet been composed */
|
|
25
|
+
this.txns = [];
|
|
26
|
+
/** The default transaction validity window */
|
|
27
|
+
this.defaultValidityWindow = 10;
|
|
28
|
+
this.algod = params.algod;
|
|
29
|
+
const defaultGetSuggestedParams = () => params.algod.getTransactionParams().do();
|
|
30
|
+
this.getSuggestedParams = params.getSuggestedParams ?? defaultGetSuggestedParams;
|
|
31
|
+
this.getSigner = params.getSigner;
|
|
32
|
+
this.defaultValidityWindow = params.defaultValidityWindow ?? this.defaultValidityWindow;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Add a payment transaction to the transaction group.
|
|
36
|
+
* @param params The payment transaction parameters
|
|
37
|
+
* @returns The composer so you can chain method calls
|
|
38
|
+
*/
|
|
39
|
+
addPayment(params) {
|
|
40
|
+
this.txns.push({ ...params, type: 'pay' });
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Add an asset create transaction to the transaction group.
|
|
45
|
+
* @param params The asset create transaction parameters
|
|
46
|
+
* @returns The composer so you can chain method calls
|
|
47
|
+
*/
|
|
48
|
+
addAssetCreate(params) {
|
|
49
|
+
this.txns.push({ ...params, type: 'assetCreate' });
|
|
50
|
+
return this;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Add an asset config transaction to the transaction group.
|
|
54
|
+
* @param params The asset config transaction parameters
|
|
55
|
+
* @returns The composer so you can chain method calls
|
|
56
|
+
*/
|
|
57
|
+
addAssetConfig(params) {
|
|
58
|
+
this.txns.push({ ...params, type: 'assetConfig' });
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Add an asset freeze transaction to the transaction group.
|
|
63
|
+
* @param params The asset freeze transaction parameters
|
|
64
|
+
* @returns The composer so you can chain method calls
|
|
65
|
+
*/
|
|
66
|
+
addAssetFreeze(params) {
|
|
67
|
+
this.txns.push({ ...params, type: 'assetFreeze' });
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Add an asset destroy transaction to the transaction group.
|
|
72
|
+
* @param params The asset destroy transaction parameters
|
|
73
|
+
* @returns The composer so you can chain method calls
|
|
74
|
+
*/
|
|
75
|
+
addAssetDestroy(params) {
|
|
76
|
+
this.txns.push({ ...params, type: 'assetDestroy' });
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Add an asset transfer transaction to the transaction group.
|
|
81
|
+
* @param params The asset transfer transaction parameters
|
|
82
|
+
* @returns The composer so you can chain method calls
|
|
83
|
+
*/
|
|
84
|
+
addAssetTransfer(params) {
|
|
85
|
+
this.txns.push({ ...params, type: 'assetTransfer' });
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Add an asset opt-in transaction to the transaction group.
|
|
90
|
+
* @param params The asset opt-in transaction parameters
|
|
91
|
+
* @returns The composer so you can chain method calls
|
|
92
|
+
*/
|
|
93
|
+
addAssetOptIn(params) {
|
|
94
|
+
this.txns.push({ ...params, type: 'assetOptIn' });
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Add an application call transaction to the transaction group.
|
|
99
|
+
*
|
|
100
|
+
* Note: we recommend using app clients to make it easier to make app calls.
|
|
101
|
+
* @param params The application call transaction parameters
|
|
102
|
+
* @returns The composer so you can chain method calls
|
|
103
|
+
*/
|
|
104
|
+
addAppCall(params) {
|
|
105
|
+
this.txns.push({ ...params, type: 'appCall' });
|
|
106
|
+
return this;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Add an ABI method application call transaction to the transaction group.
|
|
110
|
+
*
|
|
111
|
+
* Note: we recommend using app clients to make it easier to make app calls.
|
|
112
|
+
* @param params The ABI method application call transaction parameters
|
|
113
|
+
* @returns The composer so you can chain method calls
|
|
114
|
+
*/
|
|
115
|
+
addMethodCall(params) {
|
|
116
|
+
this.txns.push({ ...params, type: 'methodCall' });
|
|
117
|
+
return this;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Add an online key registration transaction to the transaction group.
|
|
121
|
+
* @param params The online key registration transaction parameters
|
|
122
|
+
* @returns The composer so you can chain method calls
|
|
123
|
+
*/
|
|
124
|
+
addOnlineKeyRegistration(params) {
|
|
125
|
+
this.txns.push({ ...params, type: 'keyReg' });
|
|
126
|
+
return this;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Add the transactions within an `AtomicTransactionComposer` to the transaction group.
|
|
130
|
+
* @param atc The `AtomicTransactionComposer` to build transactions from and add to the group
|
|
131
|
+
* @returns The composer so you can chain method calls
|
|
132
|
+
*/
|
|
133
|
+
addAtc(atc) {
|
|
134
|
+
this.txns.push({ atc, type: 'atc' });
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
137
|
+
buildAtc(atc) {
|
|
138
|
+
const group = atc.buildGroup();
|
|
139
|
+
const txnWithSigners = group.map((ts) => {
|
|
140
|
+
ts.txn.group = undefined;
|
|
141
|
+
return ts;
|
|
142
|
+
});
|
|
143
|
+
const method = atc['methodCalls'].get(group.length - 1);
|
|
144
|
+
if (method)
|
|
145
|
+
this.txnMethodMap.set(txnWithSigners.at(-1).txn.txID(), method);
|
|
146
|
+
return txnWithSigners;
|
|
147
|
+
}
|
|
148
|
+
commonTxnBuildStep(params, txn, suggestedParams) {
|
|
149
|
+
if (params.lease)
|
|
150
|
+
txn.addLease(transaction.encodeLease(params.lease));
|
|
151
|
+
if (params.rekeyTo)
|
|
152
|
+
txn.addRekey(params.rekeyTo);
|
|
153
|
+
if (params.note)
|
|
154
|
+
txn.note = transaction.encodeTransactionNote(params.note);
|
|
155
|
+
if (params.firstValidRound) {
|
|
156
|
+
txn.firstRound = Number(params.firstValidRound);
|
|
157
|
+
}
|
|
158
|
+
if (params.lastValidRound) {
|
|
159
|
+
txn.lastRound = Number(params.lastValidRound);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
txn.lastRound = txn.firstRound + (params.validityWindow ?? this.defaultValidityWindow);
|
|
163
|
+
}
|
|
164
|
+
if (params.staticFee !== undefined && params.extraFee !== undefined) {
|
|
165
|
+
throw Error('Cannot set both staticFee and extraFee');
|
|
166
|
+
}
|
|
167
|
+
if (params.staticFee !== undefined) {
|
|
168
|
+
txn.fee = params.staticFee.microAlgos;
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
txn.fee = txn.estimateSize() * suggestedParams.fee || algosdk.ALGORAND_MIN_TX_FEE;
|
|
172
|
+
if (params.extraFee)
|
|
173
|
+
txn.fee += params.extraFee.microAlgos;
|
|
174
|
+
}
|
|
175
|
+
txn.flatFee = true;
|
|
176
|
+
if (params.maxFee !== undefined && txn.fee > params.maxFee.microAlgos) {
|
|
177
|
+
throw Error(`Transaction fee ${txn.fee} is greater than maxFee ${params.maxFee}`);
|
|
178
|
+
}
|
|
179
|
+
return txn;
|
|
180
|
+
}
|
|
181
|
+
async buildMethodCall(params, suggestedParams) {
|
|
182
|
+
const methodArgs = [];
|
|
183
|
+
const isAbiValue = (x) => {
|
|
184
|
+
if (Array.isArray(x))
|
|
185
|
+
return x.length == 0 || x.every(isAbiValue);
|
|
186
|
+
return ['boolean', 'number', 'bigint', 'string', 'Uint8Array'].includes(typeof x);
|
|
187
|
+
};
|
|
188
|
+
for (const arg of params.args ?? []) {
|
|
189
|
+
if (isAbiValue(arg)) {
|
|
190
|
+
methodArgs.push(arg);
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
if (isTransactionWithSigner(arg)) {
|
|
194
|
+
methodArgs.push(arg);
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
if ('method' in arg) {
|
|
198
|
+
const tempTxnWithSigners = await this.buildMethodCall(arg, suggestedParams);
|
|
199
|
+
methodArgs.push(...tempTxnWithSigners);
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
const txn = await arg;
|
|
203
|
+
methodArgs.push({
|
|
204
|
+
txn,
|
|
205
|
+
signer: params.signer
|
|
206
|
+
? 'signer' in params.signer
|
|
207
|
+
? params.signer.signer
|
|
208
|
+
: params.signer
|
|
209
|
+
: this.getSigner(encodeAddress(txn.from.publicKey)),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
const methodAtc = new algosdk.AtomicTransactionComposer();
|
|
213
|
+
methodAtc.addMethodCall({
|
|
214
|
+
...params,
|
|
215
|
+
appID: Number(params.appId || 0),
|
|
216
|
+
suggestedParams,
|
|
217
|
+
signer: params.signer ? ('signer' in params.signer ? params.signer.signer : params.signer) : this.getSigner(params.sender),
|
|
218
|
+
methodArgs: methodArgs,
|
|
219
|
+
// note, lease, and rekeyTo are set in the common build step
|
|
220
|
+
note: undefined,
|
|
221
|
+
lease: undefined,
|
|
222
|
+
rekeyTo: undefined,
|
|
223
|
+
});
|
|
224
|
+
// Run the actual method call txn through the common build step to set fees and validity rounds
|
|
225
|
+
const group = methodAtc.buildGroup();
|
|
226
|
+
const methodIdx = group.length - 1;
|
|
227
|
+
group[methodIdx].txn = this.commonTxnBuildStep(params, group[methodIdx].txn, suggestedParams);
|
|
228
|
+
return this.buildAtc(methodAtc);
|
|
229
|
+
}
|
|
230
|
+
buildPayment(params, suggestedParams) {
|
|
231
|
+
const txn = algosdk.makePaymentTxnWithSuggestedParamsFromObject({
|
|
232
|
+
from: params.sender,
|
|
233
|
+
to: params.receiver,
|
|
234
|
+
amount: params.amount.microAlgos,
|
|
235
|
+
closeRemainderTo: params.closeRemainderTo,
|
|
236
|
+
suggestedParams,
|
|
237
|
+
});
|
|
238
|
+
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
239
|
+
}
|
|
240
|
+
buildAssetCreate(params, suggestedParams) {
|
|
241
|
+
const txn = algosdk.makeAssetCreateTxnWithSuggestedParamsFromObject({
|
|
242
|
+
from: params.sender,
|
|
243
|
+
total: params.total,
|
|
244
|
+
decimals: params.decimals ?? 0,
|
|
245
|
+
assetName: params.assetName,
|
|
246
|
+
unitName: params.unitName,
|
|
247
|
+
assetURL: params.url,
|
|
248
|
+
defaultFrozen: params.defaultFrozen ?? false,
|
|
249
|
+
assetMetadataHash: params.metadataHash,
|
|
250
|
+
manager: params.manager,
|
|
251
|
+
reserve: params.reserve,
|
|
252
|
+
freeze: params.freeze,
|
|
253
|
+
clawback: params.clawback,
|
|
254
|
+
suggestedParams,
|
|
255
|
+
});
|
|
256
|
+
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
257
|
+
}
|
|
258
|
+
buildAssetConfig(params, suggestedParams) {
|
|
259
|
+
const txn = algosdk.makeAssetConfigTxnWithSuggestedParamsFromObject({
|
|
260
|
+
from: params.sender,
|
|
261
|
+
assetIndex: Number(params.assetId),
|
|
262
|
+
suggestedParams,
|
|
263
|
+
manager: params.manager,
|
|
264
|
+
reserve: params.reserve,
|
|
265
|
+
freeze: params.freeze,
|
|
266
|
+
clawback: params.clawback,
|
|
267
|
+
strictEmptyAddressChecking: false,
|
|
268
|
+
});
|
|
269
|
+
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
270
|
+
}
|
|
271
|
+
buildAssetDestroy(params, suggestedParams) {
|
|
272
|
+
const txn = algosdk.makeAssetDestroyTxnWithSuggestedParamsFromObject({
|
|
273
|
+
from: params.sender,
|
|
274
|
+
assetIndex: Number(params.assetId),
|
|
275
|
+
suggestedParams,
|
|
276
|
+
});
|
|
277
|
+
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
278
|
+
}
|
|
279
|
+
buildAssetFreeze(params, suggestedParams) {
|
|
280
|
+
const txn = algosdk.makeAssetFreezeTxnWithSuggestedParamsFromObject({
|
|
281
|
+
from: params.sender,
|
|
282
|
+
assetIndex: Number(params.assetId),
|
|
283
|
+
freezeTarget: params.account,
|
|
284
|
+
freezeState: params.frozen,
|
|
285
|
+
suggestedParams,
|
|
286
|
+
});
|
|
287
|
+
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
288
|
+
}
|
|
289
|
+
buildAssetTransfer(params, suggestedParams) {
|
|
290
|
+
const txn = algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject({
|
|
291
|
+
from: params.sender,
|
|
292
|
+
to: params.receiver,
|
|
293
|
+
assetIndex: Number(params.assetId),
|
|
294
|
+
amount: params.amount,
|
|
295
|
+
suggestedParams,
|
|
296
|
+
closeRemainderTo: params.closeAssetTo,
|
|
297
|
+
revocationTarget: params.clawbackTarget,
|
|
298
|
+
});
|
|
299
|
+
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
300
|
+
}
|
|
301
|
+
buildAppCall(params, suggestedParams) {
|
|
302
|
+
const sdkParams = {
|
|
303
|
+
from: params.sender,
|
|
304
|
+
suggestedParams,
|
|
305
|
+
onComplete: params.onComplete,
|
|
306
|
+
approvalProgram: params.approvalProgram,
|
|
307
|
+
clearProgram: params.clearProgram,
|
|
308
|
+
appArgs: params.args,
|
|
309
|
+
accounts: params.accountReferences,
|
|
310
|
+
foreignApps: params.appReferences?.map((x) => Number(x)),
|
|
311
|
+
foreignAssets: params.assetReferences?.map((x) => Number(x)),
|
|
312
|
+
extraPages: params.extraPages,
|
|
313
|
+
numLocalInts: params.schema?.localUints || 0,
|
|
314
|
+
numLocalByteSlices: params.schema?.localByteSlices || 0,
|
|
315
|
+
numGlobalInts: params.schema?.globalUints || 0,
|
|
316
|
+
numGlobalByteSlices: params.schema?.globalByteSlices || 0,
|
|
317
|
+
};
|
|
318
|
+
let txn;
|
|
319
|
+
const onComplete = params.onComplete || algosdk.OnApplicationComplete.NoOpOC;
|
|
320
|
+
if (!params.appId) {
|
|
321
|
+
if (params.approvalProgram === undefined || params.clearProgram === undefined) {
|
|
322
|
+
throw new Error('approvalProgram and clearProgram are required for application creation');
|
|
323
|
+
}
|
|
324
|
+
txn = algosdk.makeApplicationCreateTxnFromObject({
|
|
325
|
+
...sdkParams,
|
|
326
|
+
onComplete,
|
|
327
|
+
approvalProgram: params.approvalProgram,
|
|
328
|
+
clearProgram: params.clearProgram,
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
txn = algosdk.makeApplicationCallTxnFromObject({ ...sdkParams, onComplete, appIndex: Number(params.appId || 0) });
|
|
332
|
+
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
333
|
+
}
|
|
334
|
+
buildKeyReg(params, suggestedParams) {
|
|
335
|
+
const txn = algosdk.makeKeyRegistrationTxnWithSuggestedParams(params.sender, undefined, params.voteKey, params.selectionKey, Number(params.voteFirst), Number(params.voteLast), Number(params.voteKeyDilution), suggestedParams, undefined, false, params.stateProofKey);
|
|
336
|
+
return this.commonTxnBuildStep(params, txn, suggestedParams);
|
|
337
|
+
}
|
|
338
|
+
async buildTxn(txn, suggestedParams) {
|
|
339
|
+
if (txn.type === 'txnWithSigner') {
|
|
340
|
+
return [txn];
|
|
341
|
+
}
|
|
342
|
+
if (txn.type === 'atc') {
|
|
343
|
+
return this.buildAtc(txn.atc);
|
|
344
|
+
}
|
|
345
|
+
if (txn.type === 'methodCall') {
|
|
346
|
+
return await this.buildMethodCall(txn, suggestedParams);
|
|
347
|
+
}
|
|
348
|
+
const signer = txn.signer ? ('signer' in txn.signer ? txn.signer.signer : txn.signer) : this.getSigner(txn.sender);
|
|
349
|
+
switch (txn.type) {
|
|
350
|
+
case 'pay': {
|
|
351
|
+
const payment = this.buildPayment(txn, suggestedParams);
|
|
352
|
+
return [{ txn: payment, signer }];
|
|
353
|
+
}
|
|
354
|
+
case 'assetCreate': {
|
|
355
|
+
const assetCreate = this.buildAssetCreate(txn, suggestedParams);
|
|
356
|
+
return [{ txn: assetCreate, signer }];
|
|
357
|
+
}
|
|
358
|
+
case 'appCall': {
|
|
359
|
+
const appCall = this.buildAppCall(txn, suggestedParams);
|
|
360
|
+
return [{ txn: appCall, signer }];
|
|
361
|
+
}
|
|
362
|
+
case 'assetConfig': {
|
|
363
|
+
const assetConfig = this.buildAssetConfig(txn, suggestedParams);
|
|
364
|
+
return [{ txn: assetConfig, signer }];
|
|
365
|
+
}
|
|
366
|
+
case 'assetDestroy': {
|
|
367
|
+
const assetDestroy = this.buildAssetDestroy(txn, suggestedParams);
|
|
368
|
+
return [{ txn: assetDestroy, signer }];
|
|
369
|
+
}
|
|
370
|
+
case 'assetFreeze': {
|
|
371
|
+
const assetFreeze = this.buildAssetFreeze(txn, suggestedParams);
|
|
372
|
+
return [{ txn: assetFreeze, signer }];
|
|
373
|
+
}
|
|
374
|
+
case 'assetTransfer': {
|
|
375
|
+
const assetTransfer = this.buildAssetTransfer(txn, suggestedParams);
|
|
376
|
+
return [{ txn: assetTransfer, signer }];
|
|
377
|
+
}
|
|
378
|
+
case 'assetOptIn': {
|
|
379
|
+
const assetTransfer = this.buildAssetTransfer({ ...txn, receiver: txn.sender, amount: 0n }, suggestedParams);
|
|
380
|
+
return [{ txn: assetTransfer, signer }];
|
|
381
|
+
}
|
|
382
|
+
case 'keyReg': {
|
|
383
|
+
const keyReg = this.buildKeyReg(txn, suggestedParams);
|
|
384
|
+
return [{ txn: keyReg, signer }];
|
|
385
|
+
}
|
|
386
|
+
default:
|
|
387
|
+
throw Error(`Unsupported txn type`);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Compose all of the transactions in a single atomic transaction group and an atomic transaction composer.
|
|
392
|
+
*
|
|
393
|
+
* You can then use the transactions standalone, or use the composer to execute or simulate the transactions.
|
|
394
|
+
* @returns The built atomic transaction composer and the transactions
|
|
395
|
+
*/
|
|
396
|
+
async build() {
|
|
397
|
+
if (this.atc.getStatus() === algosdk.AtomicTransactionComposerStatus.BUILDING) {
|
|
398
|
+
const suggestedParams = await this.getSuggestedParams();
|
|
399
|
+
const txnWithSigners = [];
|
|
400
|
+
for (const txn of this.txns) {
|
|
401
|
+
txnWithSigners.push(...(await this.buildTxn(txn, suggestedParams)));
|
|
402
|
+
}
|
|
403
|
+
txnWithSigners.forEach((ts) => {
|
|
404
|
+
this.atc.addTransaction(ts);
|
|
405
|
+
});
|
|
406
|
+
const methodCalls = new Map();
|
|
407
|
+
txnWithSigners.forEach((ts, idx) => {
|
|
408
|
+
const method = this.txnMethodMap.get(ts.txn.txID());
|
|
409
|
+
if (method)
|
|
410
|
+
methodCalls.set(idx, method);
|
|
411
|
+
});
|
|
412
|
+
this.atc['methodCalls'] = methodCalls;
|
|
413
|
+
}
|
|
414
|
+
return { atc: this.atc, transactions: this.atc.buildGroup() };
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Rebuild the group, discarding any previously built transactions.
|
|
418
|
+
* This will potentially cause new signers and suggested params to be used if the callbacks return a new value compared to the first build.
|
|
419
|
+
* @returns The newly built atomic transaction composer and the transactions
|
|
420
|
+
*/
|
|
421
|
+
async rebuild() {
|
|
422
|
+
this.atc = new algosdk.AtomicTransactionComposer();
|
|
423
|
+
return await this.build();
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Compose the atomic transaction group and send it to the network
|
|
427
|
+
* @param params The parameters to control execution with
|
|
428
|
+
* @returns The execution result
|
|
429
|
+
*/
|
|
430
|
+
async execute(params) {
|
|
431
|
+
const group = (await this.build()).transactions;
|
|
432
|
+
let waitRounds = params?.maxRoundsToWaitForConfirmation;
|
|
433
|
+
if (waitRounds === undefined) {
|
|
434
|
+
const lastRound = group.reduce((max, txn) => Math.max(txn.txn.lastRound, max), 0);
|
|
435
|
+
const { firstRound } = await this.getSuggestedParams();
|
|
436
|
+
waitRounds = lastRound - firstRound + 1;
|
|
437
|
+
}
|
|
438
|
+
return await transaction.sendAtomicTransactionComposer({
|
|
439
|
+
atc: this.atc,
|
|
440
|
+
sendParams: { suppressLog: params?.suppressLog, maxRoundsToWaitForConfirmation: waitRounds },
|
|
441
|
+
}, this.algod);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
module.exports = AlgokitComposer;
|
|
446
|
+
//# sourceMappingURL=composer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composer.js","sources":["../../src/types/composer.ts"],"sourcesContent":[null],"names":["encodeLease","encodeTransactionNote","sendAtomicTransactionComposer"],"mappings":"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"}
|