@fuel-ts/account 0.0.0-rc-2021-20240418170033 → 0.0.0-rc-2037-20240418195040
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.
Potentially problematic release.
This version of @fuel-ts/account might be problematic. Click here for more details.
- package/README.md +1 -1
- package/dist/account.d.ts +4 -5
- package/dist/account.d.ts.map +1 -1
- package/dist/configs.d.ts.map +1 -1
- package/dist/configs.global.js +1 -1
- package/dist/configs.global.js.map +1 -1
- package/dist/configs.js +1 -1
- package/dist/configs.js.map +1 -1
- package/dist/configs.mjs +1 -1
- package/dist/configs.mjs.map +1 -1
- package/dist/index.global.js +596 -797
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +633 -825
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +451 -648
- package/dist/index.mjs.map +1 -1
- package/dist/predicate/predicate.d.ts +18 -11
- package/dist/predicate/predicate.d.ts.map +1 -1
- package/dist/providers/__generated__/operations.d.ts +329 -911
- package/dist/providers/__generated__/operations.d.ts.map +1 -1
- package/dist/providers/coin-quantity.d.ts +1 -1
- package/dist/providers/coin-quantity.d.ts.map +1 -1
- package/dist/providers/coin.d.ts +1 -2
- package/dist/providers/coin.d.ts.map +1 -1
- package/dist/providers/message.d.ts +1 -6
- package/dist/providers/message.d.ts.map +1 -1
- package/dist/providers/provider.d.ts +27 -37
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/transaction-request/create-transaction-request.d.ts.map +1 -1
- package/dist/providers/transaction-request/helpers.d.ts +10 -0
- package/dist/providers/transaction-request/helpers.d.ts.map +1 -0
- package/dist/providers/transaction-request/index.d.ts +1 -0
- package/dist/providers/transaction-request/index.d.ts.map +1 -1
- package/dist/providers/transaction-request/input.d.ts +2 -2
- package/dist/providers/transaction-request/input.d.ts.map +1 -1
- package/dist/providers/transaction-request/script-transaction-request.d.ts.map +1 -1
- package/dist/providers/transaction-request/transaction-request.d.ts +7 -6
- package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
- package/dist/providers/transaction-request/utils.d.ts +0 -3
- package/dist/providers/transaction-request/utils.d.ts.map +1 -1
- package/dist/providers/transaction-response/transaction-response.d.ts.map +1 -1
- package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts +0 -2
- package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts.map +1 -1
- package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts +2 -3
- package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts.map +1 -1
- package/dist/providers/transaction-summary/get-transaction-summary.d.ts.map +1 -1
- package/dist/providers/utils/gas.d.ts +2 -8
- package/dist/providers/utils/gas.d.ts.map +1 -1
- package/dist/test-utils/index.d.ts +1 -0
- package/dist/test-utils/index.d.ts.map +1 -1
- package/dist/test-utils/launchNode.d.ts.map +1 -1
- package/dist/test-utils/resources.d.ts +4 -0
- package/dist/test-utils/resources.d.ts.map +1 -0
- package/dist/test-utils/seedTestWallet.d.ts +1 -1
- package/dist/test-utils/seedTestWallet.d.ts.map +1 -1
- package/dist/test-utils/transactionRequest.d.ts +5 -0
- package/dist/test-utils/transactionRequest.d.ts.map +1 -0
- package/dist/test-utils.global.js +1085 -1547
- package/dist/test-utils.global.js.map +1 -1
- package/dist/test-utils.js +608 -804
- package/dist/test-utils.js.map +1 -1
- package/dist/test-utils.mjs +442 -641
- package/dist/test-utils.mjs.map +1 -1
- package/dist/wallet/base-wallet-unlocked.d.ts +2 -2
- package/dist/wallet/base-wallet-unlocked.d.ts.map +1 -1
- package/package.json +16 -16
package/dist/index.mjs
CHANGED
@@ -32,9 +32,8 @@ import { Address as Address3 } from "@fuel-ts/address";
|
|
32
32
|
import { BaseAssetId as BaseAssetId3 } from "@fuel-ts/address/configs";
|
33
33
|
import { ErrorCode as ErrorCode15, FuelError as FuelError15 } from "@fuel-ts/errors";
|
34
34
|
import { AbstractAccount } from "@fuel-ts/interfaces";
|
35
|
-
import { bn as
|
35
|
+
import { bn as bn17 } from "@fuel-ts/math";
|
36
36
|
import { arrayify as arrayify14 } from "@fuel-ts/utils";
|
37
|
-
import { clone as clone4 } from "ramda";
|
38
37
|
|
39
38
|
// src/providers/coin-quantity.ts
|
40
39
|
import { BaseAssetId } from "@fuel-ts/address/configs";
|
@@ -43,24 +42,24 @@ import { hexlify } from "@fuel-ts/utils";
|
|
43
42
|
var coinQuantityfy = (coinQuantityLike) => {
|
44
43
|
let assetId;
|
45
44
|
let amount;
|
46
|
-
let
|
45
|
+
let max2;
|
47
46
|
if (Array.isArray(coinQuantityLike)) {
|
48
47
|
amount = coinQuantityLike[0];
|
49
48
|
assetId = coinQuantityLike[1] ?? BaseAssetId;
|
50
|
-
|
49
|
+
max2 = coinQuantityLike[2] ?? void 0;
|
51
50
|
} else {
|
52
51
|
amount = coinQuantityLike.amount;
|
53
52
|
assetId = coinQuantityLike.assetId ?? BaseAssetId;
|
54
|
-
|
53
|
+
max2 = coinQuantityLike.max ?? void 0;
|
55
54
|
}
|
56
55
|
const bnAmount = bn(amount);
|
57
56
|
return {
|
58
57
|
assetId: hexlify(assetId),
|
59
58
|
amount: bnAmount.lt(1) ? bn(1) : bnAmount,
|
60
|
-
max:
|
59
|
+
max: max2 ? bn(max2) : void 0
|
61
60
|
};
|
62
61
|
};
|
63
|
-
var
|
62
|
+
var addAmountToAsset = (params) => {
|
64
63
|
const { amount, assetId } = params;
|
65
64
|
const coinQuantities = [...params.coinQuantities];
|
66
65
|
const assetIdx = coinQuantities.findIndex((coinQuantity) => coinQuantity.assetId === assetId);
|
@@ -75,7 +74,7 @@ var addAmountToCoinQuantities = (params) => {
|
|
75
74
|
// src/providers/provider.ts
|
76
75
|
import { Address as Address2 } from "@fuel-ts/address";
|
77
76
|
import { ErrorCode as ErrorCode13, FuelError as FuelError13 } from "@fuel-ts/errors";
|
78
|
-
import { BN, bn as
|
77
|
+
import { BN, bn as bn15, max } from "@fuel-ts/math";
|
79
78
|
import {
|
80
79
|
InputType as InputType7,
|
81
80
|
TransactionType as TransactionType8,
|
@@ -93,10 +92,14 @@ import { clone as clone3 } from "ramda";
|
|
93
92
|
import gql from "graphql-tag";
|
94
93
|
var ReceiptFragmentFragmentDoc = gql`
|
95
94
|
fragment receiptFragment on Receipt {
|
96
|
-
|
95
|
+
contract {
|
96
|
+
id
|
97
|
+
}
|
97
98
|
pc
|
98
99
|
is
|
99
|
-
to
|
100
|
+
to {
|
101
|
+
id
|
102
|
+
}
|
100
103
|
toAddress
|
101
104
|
amount
|
102
105
|
assetId
|
@@ -134,16 +137,10 @@ var TransactionStatusFragmentFragmentDoc = gql`
|
|
134
137
|
id
|
135
138
|
}
|
136
139
|
time
|
137
|
-
receipts {
|
138
|
-
...receiptFragment
|
139
|
-
}
|
140
140
|
programState {
|
141
141
|
returnType
|
142
142
|
data
|
143
143
|
}
|
144
|
-
receipts {
|
145
|
-
...receiptFragment
|
146
|
-
}
|
147
144
|
}
|
148
145
|
... on FailureStatus {
|
149
146
|
block {
|
@@ -151,24 +148,26 @@ var TransactionStatusFragmentFragmentDoc = gql`
|
|
151
148
|
}
|
152
149
|
time
|
153
150
|
reason
|
154
|
-
receipts {
|
155
|
-
...receiptFragment
|
156
|
-
}
|
157
151
|
}
|
158
152
|
... on SqueezedOutStatus {
|
159
153
|
reason
|
160
154
|
}
|
161
155
|
}
|
162
|
-
|
156
|
+
`;
|
163
157
|
var TransactionFragmentFragmentDoc = gql`
|
164
158
|
fragment transactionFragment on Transaction {
|
165
159
|
id
|
166
160
|
rawPayload
|
161
|
+
gasPrice
|
162
|
+
receipts {
|
163
|
+
...receiptFragment
|
164
|
+
}
|
167
165
|
status {
|
168
166
|
...transactionStatusFragment
|
169
167
|
}
|
170
168
|
}
|
171
|
-
${
|
169
|
+
${ReceiptFragmentFragmentDoc}
|
170
|
+
${TransactionStatusFragmentFragmentDoc}`;
|
172
171
|
var InputEstimatePredicatesFragmentFragmentDoc = gql`
|
173
172
|
fragment inputEstimatePredicatesFragment on Input {
|
174
173
|
... on InputCoin {
|
@@ -186,46 +185,6 @@ var TransactionEstimatePredicatesFragmentFragmentDoc = gql`
|
|
186
185
|
}
|
187
186
|
}
|
188
187
|
${InputEstimatePredicatesFragmentFragmentDoc}`;
|
189
|
-
var DryRunFailureStatusFragmentFragmentDoc = gql`
|
190
|
-
fragment dryRunFailureStatusFragment on DryRunFailureStatus {
|
191
|
-
reason
|
192
|
-
programState {
|
193
|
-
returnType
|
194
|
-
data
|
195
|
-
}
|
196
|
-
}
|
197
|
-
`;
|
198
|
-
var DryRunSuccessStatusFragmentFragmentDoc = gql`
|
199
|
-
fragment dryRunSuccessStatusFragment on DryRunSuccessStatus {
|
200
|
-
programState {
|
201
|
-
returnType
|
202
|
-
data
|
203
|
-
}
|
204
|
-
}
|
205
|
-
`;
|
206
|
-
var DryRunTransactionStatusFragmentFragmentDoc = gql`
|
207
|
-
fragment dryRunTransactionStatusFragment on DryRunTransactionStatus {
|
208
|
-
... on DryRunFailureStatus {
|
209
|
-
...dryRunFailureStatusFragment
|
210
|
-
}
|
211
|
-
... on DryRunSuccessStatus {
|
212
|
-
...dryRunSuccessStatusFragment
|
213
|
-
}
|
214
|
-
}
|
215
|
-
${DryRunFailureStatusFragmentFragmentDoc}
|
216
|
-
${DryRunSuccessStatusFragmentFragmentDoc}`;
|
217
|
-
var DryRunTransactionExecutionStatusFragmentFragmentDoc = gql`
|
218
|
-
fragment dryRunTransactionExecutionStatusFragment on DryRunTransactionExecutionStatus {
|
219
|
-
id
|
220
|
-
status {
|
221
|
-
...dryRunTransactionStatusFragment
|
222
|
-
}
|
223
|
-
receipts {
|
224
|
-
...receiptFragment
|
225
|
-
}
|
226
|
-
}
|
227
|
-
${DryRunTransactionStatusFragmentFragmentDoc}
|
228
|
-
${ReceiptFragmentFragmentDoc}`;
|
229
188
|
var CoinFragmentFragmentDoc = gql`
|
230
189
|
fragment coinFragment on Coin {
|
231
190
|
__typename
|
@@ -233,6 +192,7 @@ var CoinFragmentFragmentDoc = gql`
|
|
233
192
|
owner
|
234
193
|
amount
|
235
194
|
assetId
|
195
|
+
maturity
|
236
196
|
blockCreated
|
237
197
|
txCreatedIdx
|
238
198
|
}
|
@@ -271,32 +231,26 @@ var MessageProofFragmentFragmentDoc = gql`
|
|
271
231
|
messageBlockHeader {
|
272
232
|
id
|
273
233
|
daHeight
|
274
|
-
consensusParametersVersion
|
275
|
-
stateTransitionBytecodeVersion
|
276
234
|
transactionsCount
|
277
|
-
messageReceiptCount
|
278
235
|
transactionsRoot
|
279
|
-
messageOutboxRoot
|
280
|
-
eventInboxRoot
|
281
236
|
height
|
282
237
|
prevRoot
|
283
238
|
time
|
284
239
|
applicationHash
|
240
|
+
messageReceiptRoot
|
241
|
+
messageReceiptCount
|
285
242
|
}
|
286
243
|
commitBlockHeader {
|
287
244
|
id
|
288
245
|
daHeight
|
289
|
-
consensusParametersVersion
|
290
|
-
stateTransitionBytecodeVersion
|
291
246
|
transactionsCount
|
292
|
-
messageReceiptCount
|
293
247
|
transactionsRoot
|
294
|
-
messageOutboxRoot
|
295
|
-
eventInboxRoot
|
296
248
|
height
|
297
249
|
prevRoot
|
298
250
|
time
|
299
251
|
applicationHash
|
252
|
+
messageReceiptRoot
|
253
|
+
messageReceiptCount
|
300
254
|
}
|
301
255
|
sender
|
302
256
|
recipient
|
@@ -315,8 +269,8 @@ var BalanceFragmentFragmentDoc = gql`
|
|
315
269
|
var BlockFragmentFragmentDoc = gql`
|
316
270
|
fragment blockFragment on Block {
|
317
271
|
id
|
318
|
-
height
|
319
272
|
header {
|
273
|
+
height
|
320
274
|
time
|
321
275
|
}
|
322
276
|
transactions {
|
@@ -374,11 +328,6 @@ var DependentCostFragmentFragmentDoc = gql`
|
|
374
328
|
`;
|
375
329
|
var GasCostsFragmentFragmentDoc = gql`
|
376
330
|
fragment GasCostsFragment on GasCosts {
|
377
|
-
version {
|
378
|
-
... on Version {
|
379
|
-
value
|
380
|
-
}
|
381
|
-
}
|
382
331
|
add
|
383
332
|
addi
|
384
333
|
aloc
|
@@ -391,6 +340,7 @@ var GasCostsFragmentFragmentDoc = gql`
|
|
391
340
|
cb
|
392
341
|
cfei
|
393
342
|
cfsi
|
343
|
+
croo
|
394
344
|
div
|
395
345
|
divi
|
396
346
|
ecr1
|
@@ -473,9 +423,6 @@ var GasCostsFragmentFragmentDoc = gql`
|
|
473
423
|
ccp {
|
474
424
|
...DependentCostFragment
|
475
425
|
}
|
476
|
-
croo {
|
477
|
-
...DependentCostFragment
|
478
|
-
}
|
479
426
|
csiz {
|
480
427
|
...DependentCostFragment
|
481
428
|
}
|
@@ -535,11 +482,6 @@ var GasCostsFragmentFragmentDoc = gql`
|
|
535
482
|
${DependentCostFragmentFragmentDoc}`;
|
536
483
|
var ConsensusParametersFragmentFragmentDoc = gql`
|
537
484
|
fragment consensusParametersFragment on ConsensusParameters {
|
538
|
-
version {
|
539
|
-
... on Version {
|
540
|
-
value
|
541
|
-
}
|
542
|
-
}
|
543
485
|
txParams {
|
544
486
|
...TxParametersFragment
|
545
487
|
}
|
@@ -599,9 +541,18 @@ var NodeInfoFragmentFragmentDoc = gql`
|
|
599
541
|
fragment nodeInfoFragment on NodeInfo {
|
600
542
|
utxoValidation
|
601
543
|
vmBacktrace
|
544
|
+
minGasPrice
|
602
545
|
maxTx
|
603
546
|
maxDepth
|
604
547
|
nodeVersion
|
548
|
+
peers {
|
549
|
+
id
|
550
|
+
addresses
|
551
|
+
clientVersion
|
552
|
+
blockHeight
|
553
|
+
lastHeartbeatMs
|
554
|
+
appScore
|
555
|
+
}
|
605
556
|
}
|
606
557
|
`;
|
607
558
|
var GetVersionDocument = gql`
|
@@ -636,9 +587,13 @@ var GetTransactionWithReceiptsDocument = gql`
|
|
636
587
|
query getTransactionWithReceipts($transactionId: TransactionId!) {
|
637
588
|
transaction(id: $transactionId) {
|
638
589
|
...transactionFragment
|
590
|
+
receipts {
|
591
|
+
...receiptFragment
|
592
|
+
}
|
639
593
|
}
|
640
594
|
}
|
641
|
-
${TransactionFragmentFragmentDoc}
|
595
|
+
${TransactionFragmentFragmentDoc}
|
596
|
+
${ReceiptFragmentFragmentDoc}`;
|
642
597
|
var GetTransactionsDocument = gql`
|
643
598
|
query getTransactions($after: String, $before: String, $first: Int, $last: Int) {
|
644
599
|
transactions(after: $after, before: $before, first: $first, last: $last) {
|
@@ -766,20 +721,6 @@ var GetBalanceDocument = gql`
|
|
766
721
|
}
|
767
722
|
}
|
768
723
|
${BalanceFragmentFragmentDoc}`;
|
769
|
-
var GetLatestGasPriceDocument = gql`
|
770
|
-
query getLatestGasPrice {
|
771
|
-
latestGasPrice {
|
772
|
-
gasPrice
|
773
|
-
}
|
774
|
-
}
|
775
|
-
`;
|
776
|
-
var EstimateGasPriceDocument = gql`
|
777
|
-
query estimateGasPrice($blockHorizon: U32!) {
|
778
|
-
estimateGasPrice(blockHorizon: $blockHorizon) {
|
779
|
-
gasPrice
|
780
|
-
}
|
781
|
-
}
|
782
|
-
`;
|
783
724
|
var GetBalancesDocument = gql`
|
784
725
|
query getBalances($filter: BalanceFilterInput!, $after: String, $before: String, $first: Int, $last: Int) {
|
785
726
|
balances(
|
@@ -834,12 +775,12 @@ var GetMessageStatusDocument = gql`
|
|
834
775
|
}
|
835
776
|
`;
|
836
777
|
var DryRunDocument = gql`
|
837
|
-
mutation dryRun($
|
838
|
-
dryRun(
|
839
|
-
...
|
778
|
+
mutation dryRun($encodedTransaction: HexString!, $utxoValidation: Boolean) {
|
779
|
+
dryRun(tx: $encodedTransaction, utxoValidation: $utxoValidation) {
|
780
|
+
...receiptFragment
|
840
781
|
}
|
841
782
|
}
|
842
|
-
${
|
783
|
+
${ReceiptFragmentFragmentDoc}`;
|
843
784
|
var SubmitDocument = gql`
|
844
785
|
mutation submit($encodedTransaction: HexString!) {
|
845
786
|
submit(tx: $encodedTransaction) {
|
@@ -922,12 +863,6 @@ function getSdk(requester) {
|
|
922
863
|
getBalance(variables, options) {
|
923
864
|
return requester(GetBalanceDocument, variables, options);
|
924
865
|
},
|
925
|
-
getLatestGasPrice(variables, options) {
|
926
|
-
return requester(GetLatestGasPriceDocument, variables, options);
|
927
|
-
},
|
928
|
-
estimateGasPrice(variables, options) {
|
929
|
-
return requester(EstimateGasPriceDocument, variables, options);
|
930
|
-
},
|
931
866
|
getBalances(variables, options) {
|
932
867
|
return requester(GetBalancesDocument, variables, options);
|
933
868
|
},
|
@@ -1121,9 +1056,10 @@ var inputify = (value) => {
|
|
1121
1056
|
txIndex: toNumber(arrayify(value.txPointer).slice(8, 16))
|
1122
1057
|
},
|
1123
1058
|
witnessIndex: value.witnessIndex,
|
1059
|
+
maturity: value.maturity ?? 0,
|
1124
1060
|
predicateGasUsed: bn2(value.predicateGasUsed),
|
1125
|
-
predicateLength:
|
1126
|
-
predicateDataLength:
|
1061
|
+
predicateLength: predicate.length,
|
1062
|
+
predicateDataLength: predicateData.length,
|
1127
1063
|
predicate: hexlify3(predicate),
|
1128
1064
|
predicateData: hexlify3(predicateData)
|
1129
1065
|
};
|
@@ -1154,8 +1090,8 @@ var inputify = (value) => {
|
|
1154
1090
|
nonce: hexlify3(value.nonce),
|
1155
1091
|
witnessIndex: value.witnessIndex,
|
1156
1092
|
predicateGasUsed: bn2(value.predicateGasUsed),
|
1157
|
-
predicateLength:
|
1158
|
-
predicateDataLength:
|
1093
|
+
predicateLength: predicate.length,
|
1094
|
+
predicateDataLength: predicateData.length,
|
1159
1095
|
predicate: hexlify3(predicate),
|
1160
1096
|
predicateData: hexlify3(predicateData),
|
1161
1097
|
data: hexlify3(data),
|
@@ -1237,7 +1173,7 @@ import { bn as bn7 } from "@fuel-ts/math";
|
|
1237
1173
|
import {
|
1238
1174
|
PolicyType,
|
1239
1175
|
TransactionCoder,
|
1240
|
-
InputType as
|
1176
|
+
InputType as InputType3,
|
1241
1177
|
OutputType as OutputType2,
|
1242
1178
|
TransactionType
|
1243
1179
|
} from "@fuel-ts/transactions";
|
@@ -1285,8 +1221,8 @@ function assembleReceiptByType(receipt) {
|
|
1285
1221
|
case "CALL" /* Call */: {
|
1286
1222
|
const callReceipt = {
|
1287
1223
|
type: ReceiptType.Call,
|
1288
|
-
from: hexOrZero(receipt.id
|
1289
|
-
to: hexOrZero(receipt?.to),
|
1224
|
+
from: hexOrZero(receipt.contract?.id),
|
1225
|
+
to: hexOrZero(receipt?.to?.id),
|
1290
1226
|
amount: bn4(receipt.amount),
|
1291
1227
|
assetId: hexOrZero(receipt.assetId),
|
1292
1228
|
gas: bn4(receipt.gas),
|
@@ -1300,7 +1236,7 @@ function assembleReceiptByType(receipt) {
|
|
1300
1236
|
case "RETURN" /* Return */: {
|
1301
1237
|
const returnReceipt = {
|
1302
1238
|
type: ReceiptType.Return,
|
1303
|
-
id: hexOrZero(receipt.id
|
1239
|
+
id: hexOrZero(receipt.contract?.id),
|
1304
1240
|
val: bn4(receipt.val),
|
1305
1241
|
pc: bn4(receipt.pc),
|
1306
1242
|
is: bn4(receipt.is)
|
@@ -1310,7 +1246,7 @@ function assembleReceiptByType(receipt) {
|
|
1310
1246
|
case "RETURN_DATA" /* ReturnData */: {
|
1311
1247
|
const returnDataReceipt = {
|
1312
1248
|
type: ReceiptType.ReturnData,
|
1313
|
-
id: hexOrZero(receipt.id
|
1249
|
+
id: hexOrZero(receipt.contract?.id),
|
1314
1250
|
ptr: bn4(receipt.ptr),
|
1315
1251
|
len: bn4(receipt.len),
|
1316
1252
|
digest: hexOrZero(receipt.digest),
|
@@ -1322,7 +1258,7 @@ function assembleReceiptByType(receipt) {
|
|
1322
1258
|
case "PANIC" /* Panic */: {
|
1323
1259
|
const panicReceipt = {
|
1324
1260
|
type: ReceiptType.Panic,
|
1325
|
-
id: hexOrZero(receipt.id),
|
1261
|
+
id: hexOrZero(receipt.contract?.id),
|
1326
1262
|
reason: bn4(receipt.reason),
|
1327
1263
|
pc: bn4(receipt.pc),
|
1328
1264
|
is: bn4(receipt.is),
|
@@ -1333,7 +1269,7 @@ function assembleReceiptByType(receipt) {
|
|
1333
1269
|
case "REVERT" /* Revert */: {
|
1334
1270
|
const revertReceipt = {
|
1335
1271
|
type: ReceiptType.Revert,
|
1336
|
-
id: hexOrZero(receipt.id
|
1272
|
+
id: hexOrZero(receipt.contract?.id),
|
1337
1273
|
val: bn4(receipt.ra),
|
1338
1274
|
pc: bn4(receipt.pc),
|
1339
1275
|
is: bn4(receipt.is)
|
@@ -1343,7 +1279,7 @@ function assembleReceiptByType(receipt) {
|
|
1343
1279
|
case "LOG" /* Log */: {
|
1344
1280
|
const logReceipt = {
|
1345
1281
|
type: ReceiptType.Log,
|
1346
|
-
id: hexOrZero(receipt.id
|
1282
|
+
id: hexOrZero(receipt.contract?.id),
|
1347
1283
|
val0: bn4(receipt.ra),
|
1348
1284
|
val1: bn4(receipt.rb),
|
1349
1285
|
val2: bn4(receipt.rc),
|
@@ -1356,7 +1292,7 @@ function assembleReceiptByType(receipt) {
|
|
1356
1292
|
case "LOG_DATA" /* LogData */: {
|
1357
1293
|
const logDataReceipt = {
|
1358
1294
|
type: ReceiptType.LogData,
|
1359
|
-
id: hexOrZero(receipt.id
|
1295
|
+
id: hexOrZero(receipt.contract?.id),
|
1360
1296
|
val0: bn4(receipt.ra),
|
1361
1297
|
val1: bn4(receipt.rb),
|
1362
1298
|
ptr: bn4(receipt.ptr),
|
@@ -1370,8 +1306,8 @@ function assembleReceiptByType(receipt) {
|
|
1370
1306
|
case "TRANSFER" /* Transfer */: {
|
1371
1307
|
const transferReceipt = {
|
1372
1308
|
type: ReceiptType.Transfer,
|
1373
|
-
from: hexOrZero(receipt.id
|
1374
|
-
to: hexOrZero(receipt.toAddress || receipt?.to),
|
1309
|
+
from: hexOrZero(receipt.contract?.id),
|
1310
|
+
to: hexOrZero(receipt.toAddress || receipt?.to?.id),
|
1375
1311
|
amount: bn4(receipt.amount),
|
1376
1312
|
assetId: hexOrZero(receipt.assetId),
|
1377
1313
|
pc: bn4(receipt.pc),
|
@@ -1382,8 +1318,8 @@ function assembleReceiptByType(receipt) {
|
|
1382
1318
|
case "TRANSFER_OUT" /* TransferOut */: {
|
1383
1319
|
const transferOutReceipt = {
|
1384
1320
|
type: ReceiptType.TransferOut,
|
1385
|
-
from: hexOrZero(receipt.id
|
1386
|
-
to: hexOrZero(receipt.toAddress || receipt.to),
|
1321
|
+
from: hexOrZero(receipt.contract?.id),
|
1322
|
+
to: hexOrZero(receipt.toAddress || receipt.to?.id),
|
1387
1323
|
amount: bn4(receipt.amount),
|
1388
1324
|
assetId: hexOrZero(receipt.assetId),
|
1389
1325
|
pc: bn4(receipt.pc),
|
@@ -1426,7 +1362,7 @@ function assembleReceiptByType(receipt) {
|
|
1426
1362
|
return receiptMessageOut;
|
1427
1363
|
}
|
1428
1364
|
case "MINT" /* Mint */: {
|
1429
|
-
const contractId = hexOrZero(receipt.id
|
1365
|
+
const contractId = hexOrZero(receipt.contract?.id);
|
1430
1366
|
const subId = hexOrZero(receipt.subId);
|
1431
1367
|
const assetId = ReceiptMintCoder.getAssetId(contractId, subId);
|
1432
1368
|
const mintReceipt = {
|
@@ -1441,7 +1377,7 @@ function assembleReceiptByType(receipt) {
|
|
1441
1377
|
return mintReceipt;
|
1442
1378
|
}
|
1443
1379
|
case "BURN" /* Burn */: {
|
1444
|
-
const contractId = hexOrZero(receipt.id
|
1380
|
+
const contractId = hexOrZero(receipt.contract?.id);
|
1445
1381
|
const subId = hexOrZero(receipt.subId);
|
1446
1382
|
const assetId = ReceiptBurnCoder.getAssetId(contractId, subId);
|
1447
1383
|
const burnReceipt = {
|
@@ -1526,6 +1462,7 @@ var buildBlockExplorerUrl = (options = {}) => {
|
|
1526
1462
|
import { bn as bn5 } from "@fuel-ts/math";
|
1527
1463
|
import { ReceiptType as ReceiptType2 } from "@fuel-ts/transactions";
|
1528
1464
|
import { arrayify as arrayify3 } from "@fuel-ts/utils";
|
1465
|
+
var calculatePriceWithFactor = (gas, gasPrice, priceFactor) => bn5(Math.ceil(gas.mul(gasPrice).toNumber() / priceFactor.toNumber()));
|
1529
1466
|
var getGasUsedFromReceipts = (receipts) => {
|
1530
1467
|
const scriptResult = receipts.filter(
|
1531
1468
|
(receipt) => receipt.type === ReceiptType2.ScriptResult
|
@@ -1546,28 +1483,18 @@ function resolveGasDependentCosts(byteSize, gasDependentCost) {
|
|
1546
1483
|
}
|
1547
1484
|
function gasUsedByInputs(inputs, txBytesSize, gasCosts) {
|
1548
1485
|
const witnessCache = [];
|
1549
|
-
const
|
1550
|
-
const isCoinOrMessage = "owner" in input || "sender" in input;
|
1551
|
-
if (isCoinOrMessage) {
|
1552
|
-
if ("predicate" in input && input.predicate && input.predicate !== "0x") {
|
1553
|
-
return true;
|
1554
|
-
}
|
1555
|
-
if (!witnessCache.includes(input.witnessIndex)) {
|
1556
|
-
witnessCache.push(input.witnessIndex);
|
1557
|
-
return true;
|
1558
|
-
}
|
1559
|
-
}
|
1560
|
-
return false;
|
1561
|
-
});
|
1562
|
-
const vmInitializationCost = resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization);
|
1563
|
-
const totalGas = chargeableInputs.reduce((total, input) => {
|
1486
|
+
const totalGas = inputs.reduce((total, input) => {
|
1564
1487
|
if ("predicate" in input && input.predicate && input.predicate !== "0x") {
|
1565
1488
|
return total.add(
|
1566
|
-
|
1489
|
+
resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization).add(resolveGasDependentCosts(arrayify3(input.predicate).length, gasCosts.contractRoot)).add(bn5(input.predicateGasUsed))
|
1567
1490
|
);
|
1568
1491
|
}
|
1569
|
-
|
1570
|
-
|
1492
|
+
if ("witnessIndex" in input && !witnessCache.includes(input.witnessIndex)) {
|
1493
|
+
witnessCache.push(input.witnessIndex);
|
1494
|
+
return total.add(gasCosts.ecr1);
|
1495
|
+
}
|
1496
|
+
return total;
|
1497
|
+
}, bn5());
|
1571
1498
|
return totalGas;
|
1572
1499
|
}
|
1573
1500
|
function getMinGas(params) {
|
@@ -1579,20 +1506,12 @@ function getMinGas(params) {
|
|
1579
1506
|
return minGas;
|
1580
1507
|
}
|
1581
1508
|
function getMaxGas(params) {
|
1582
|
-
const {
|
1583
|
-
gasPerByte,
|
1584
|
-
witnessesLength,
|
1585
|
-
witnessLimit,
|
1586
|
-
minGas,
|
1587
|
-
gasLimit = bn5(0),
|
1588
|
-
maxGasPerTx
|
1589
|
-
} = params;
|
1509
|
+
const { gasPerByte, witnessesLength, witnessLimit, minGas, gasLimit = bn5(0) } = params;
|
1590
1510
|
let remainingAllowedWitnessGas = bn5(0);
|
1591
1511
|
if (witnessLimit?.gt(0) && witnessLimit.gte(witnessesLength)) {
|
1592
1512
|
remainingAllowedWitnessGas = bn5(witnessLimit).sub(witnessesLength).mul(gasPerByte);
|
1593
1513
|
}
|
1594
|
-
|
1595
|
-
return maxGas.gte(maxGasPerTx) ? maxGasPerTx : maxGas;
|
1514
|
+
return remainingAllowedWitnessGas.add(minGas).add(gasLimit);
|
1596
1515
|
}
|
1597
1516
|
function calculateMetadataGasForTxCreate({
|
1598
1517
|
gasCosts,
|
@@ -1614,10 +1533,6 @@ function calculateMetadataGasForTxScript({
|
|
1614
1533
|
}) {
|
1615
1534
|
return resolveGasDependentCosts(txBytesSize, gasCosts.s256);
|
1616
1535
|
}
|
1617
|
-
var calculateGasFee = (params) => {
|
1618
|
-
const { gas, gasPrice, priceFactor, tip } = params;
|
1619
|
-
return gas.mul(gasPrice).div(priceFactor).add(tip);
|
1620
|
-
};
|
1621
1536
|
|
1622
1537
|
// src/providers/utils/json.ts
|
1623
1538
|
import { hexlify as hexlify5 } from "@fuel-ts/utils";
|
@@ -1761,6 +1676,28 @@ var NoWitnessByOwnerError = class extends Error {
|
|
1761
1676
|
name = "NoWitnessByOwnerError";
|
1762
1677
|
};
|
1763
1678
|
|
1679
|
+
// src/providers/transaction-request/helpers.ts
|
1680
|
+
import { InputType as InputType2 } from "@fuel-ts/transactions";
|
1681
|
+
var isRequestInputCoin = (input) => input.type === InputType2.Coin;
|
1682
|
+
var isRequestInputMessage = (input) => input.type === InputType2.Message;
|
1683
|
+
var isRequestInputResource = (input) => isRequestInputCoin(input) || isRequestInputMessage(input);
|
1684
|
+
var getRequestInputResourceOwner = (input) => isRequestInputCoin(input) ? input.owner : input.recipient;
|
1685
|
+
var isRequestInputResourceFromOwner = (input, owner) => getRequestInputResourceOwner(input) === owner.toB256();
|
1686
|
+
var cacheResources = (resources) => resources.reduce(
|
1687
|
+
(cache2, resource) => {
|
1688
|
+
if (isCoin(resource)) {
|
1689
|
+
cache2.utxos.push(resource.id);
|
1690
|
+
} else {
|
1691
|
+
cache2.messages.push(resource.nonce);
|
1692
|
+
}
|
1693
|
+
return cache2;
|
1694
|
+
},
|
1695
|
+
{
|
1696
|
+
utxos: [],
|
1697
|
+
messages: []
|
1698
|
+
}
|
1699
|
+
);
|
1700
|
+
|
1764
1701
|
// src/providers/transaction-request/witness.ts
|
1765
1702
|
import { arrayify as arrayify4, hexlify as hexlify6 } from "@fuel-ts/utils";
|
1766
1703
|
var witnessify = (value) => {
|
@@ -1774,7 +1711,7 @@ var witnessify = (value) => {
|
|
1774
1711
|
// src/providers/transaction-request/transaction-request.ts
|
1775
1712
|
var BaseTransactionRequest = class {
|
1776
1713
|
/** Gas price for transaction */
|
1777
|
-
|
1714
|
+
gasPrice;
|
1778
1715
|
/** Block until which tx cannot be included */
|
1779
1716
|
maturity;
|
1780
1717
|
/** The maximum fee payable by this transaction using BASE_ASSET. */
|
@@ -1793,7 +1730,7 @@ var BaseTransactionRequest = class {
|
|
1793
1730
|
* @param baseTransactionRequest - Optional object containing properties to initialize the transaction request.
|
1794
1731
|
*/
|
1795
1732
|
constructor({
|
1796
|
-
|
1733
|
+
gasPrice,
|
1797
1734
|
maturity,
|
1798
1735
|
maxFee,
|
1799
1736
|
witnessLimit,
|
@@ -1801,7 +1738,7 @@ var BaseTransactionRequest = class {
|
|
1801
1738
|
outputs,
|
1802
1739
|
witnesses
|
1803
1740
|
} = {}) {
|
1804
|
-
this.
|
1741
|
+
this.gasPrice = bn7(gasPrice);
|
1805
1742
|
this.maturity = maturity ?? 0;
|
1806
1743
|
this.witnessLimit = witnessLimit ? bn7(witnessLimit) : void 0;
|
1807
1744
|
this.maxFee = maxFee ? bn7(maxFee) : void 0;
|
@@ -1812,9 +1749,9 @@ var BaseTransactionRequest = class {
|
|
1812
1749
|
static getPolicyMeta(req) {
|
1813
1750
|
let policyTypes = 0;
|
1814
1751
|
const policies = [];
|
1815
|
-
if (req.
|
1816
|
-
policyTypes += PolicyType.
|
1817
|
-
policies.push({ data: req.
|
1752
|
+
if (req.gasPrice) {
|
1753
|
+
policyTypes += PolicyType.GasPrice;
|
1754
|
+
policies.push({ data: req.gasPrice, type: PolicyType.GasPrice });
|
1818
1755
|
}
|
1819
1756
|
if (req.witnessLimit) {
|
1820
1757
|
policyTypes += PolicyType.WitnessLimit;
|
@@ -1951,7 +1888,7 @@ var BaseTransactionRequest = class {
|
|
1951
1888
|
*/
|
1952
1889
|
getCoinInputs() {
|
1953
1890
|
return this.inputs.filter(
|
1954
|
-
(input) => input.type ===
|
1891
|
+
(input) => input.type === InputType3.Coin
|
1955
1892
|
);
|
1956
1893
|
}
|
1957
1894
|
/**
|
@@ -1983,9 +1920,9 @@ var BaseTransactionRequest = class {
|
|
1983
1920
|
const ownerAddress = addressify(owner);
|
1984
1921
|
const found = this.inputs.find((input) => {
|
1985
1922
|
switch (input.type) {
|
1986
|
-
case
|
1923
|
+
case InputType3.Coin:
|
1987
1924
|
return hexlify7(input.owner) === ownerAddress.toB256();
|
1988
|
-
case
|
1925
|
+
case InputType3.Message:
|
1989
1926
|
return hexlify7(input.recipient) === ownerAddress.toB256();
|
1990
1927
|
default:
|
1991
1928
|
return false;
|
@@ -2002,9 +1939,9 @@ var BaseTransactionRequest = class {
|
|
2002
1939
|
* @param predicateData - Predicate data bytes.
|
2003
1940
|
*/
|
2004
1941
|
addCoinInput(coin) {
|
2005
|
-
const { assetId, owner, amount } = coin;
|
1942
|
+
const { assetId, owner, amount, id, predicate } = coin;
|
2006
1943
|
let witnessIndex;
|
2007
|
-
if (
|
1944
|
+
if (predicate) {
|
2008
1945
|
witnessIndex = 0;
|
2009
1946
|
} else {
|
2010
1947
|
witnessIndex = this.getCoinInputWitnessIndexByOwner(owner);
|
@@ -2013,13 +1950,14 @@ var BaseTransactionRequest = class {
|
|
2013
1950
|
}
|
2014
1951
|
}
|
2015
1952
|
const input = {
|
2016
|
-
|
2017
|
-
type:
|
1953
|
+
id,
|
1954
|
+
type: InputType3.Coin,
|
2018
1955
|
owner: owner.toB256(),
|
2019
1956
|
amount,
|
2020
1957
|
assetId,
|
2021
1958
|
txPointer: "0x00000000000000000000000000000000",
|
2022
|
-
witnessIndex
|
1959
|
+
witnessIndex,
|
1960
|
+
predicate
|
2023
1961
|
};
|
2024
1962
|
this.pushInput(input);
|
2025
1963
|
this.addChangeOutput(owner, assetId);
|
@@ -2033,10 +1971,10 @@ var BaseTransactionRequest = class {
|
|
2033
1971
|
* @param predicateData - Predicate data bytes.
|
2034
1972
|
*/
|
2035
1973
|
addMessageInput(message) {
|
2036
|
-
const { recipient, sender, amount } = message;
|
1974
|
+
const { recipient, sender, amount, predicate, nonce } = message;
|
2037
1975
|
const assetId = BaseAssetId2;
|
2038
1976
|
let witnessIndex;
|
2039
|
-
if (
|
1977
|
+
if (predicate) {
|
2040
1978
|
witnessIndex = 0;
|
2041
1979
|
} else {
|
2042
1980
|
witnessIndex = this.getCoinInputWitnessIndexByOwner(recipient);
|
@@ -2045,12 +1983,13 @@ var BaseTransactionRequest = class {
|
|
2045
1983
|
}
|
2046
1984
|
}
|
2047
1985
|
const input = {
|
2048
|
-
|
2049
|
-
type:
|
1986
|
+
nonce,
|
1987
|
+
type: InputType3.Message,
|
2050
1988
|
sender: sender.toB256(),
|
2051
1989
|
recipient: recipient.toB256(),
|
2052
1990
|
amount,
|
2053
|
-
witnessIndex
|
1991
|
+
witnessIndex,
|
1992
|
+
predicate
|
2054
1993
|
};
|
2055
1994
|
this.pushInput(input);
|
2056
1995
|
this.addChangeOutput(recipient, assetId);
|
@@ -2160,7 +2099,7 @@ var BaseTransactionRequest = class {
|
|
2160
2099
|
}
|
2161
2100
|
calculateMaxGas(chainInfo, minGas) {
|
2162
2101
|
const { consensusParameters } = chainInfo;
|
2163
|
-
const { gasPerByte
|
2102
|
+
const { gasPerByte } = consensusParameters;
|
2164
2103
|
const witnessesLength = this.toTransaction().witnesses.reduce(
|
2165
2104
|
(acc, wit) => acc + wit.dataLength,
|
2166
2105
|
0
|
@@ -2169,8 +2108,7 @@ var BaseTransactionRequest = class {
|
|
2169
2108
|
gasPerByte,
|
2170
2109
|
minGas,
|
2171
2110
|
witnessesLength,
|
2172
|
-
witnessLimit: this.witnessLimit
|
2173
|
-
maxGasPerTx
|
2111
|
+
witnessLimit: this.witnessLimit
|
2174
2112
|
});
|
2175
2113
|
}
|
2176
2114
|
/**
|
@@ -2188,20 +2126,17 @@ var BaseTransactionRequest = class {
|
|
2188
2126
|
});
|
2189
2127
|
const updateAssetInput = (assetId, quantity) => {
|
2190
2128
|
const assetInput = findAssetInput(assetId);
|
2191
|
-
let usedQuantity = quantity;
|
2192
|
-
if (assetId === BaseAssetId2) {
|
2193
|
-
usedQuantity = bn7("1000000000000000000");
|
2194
|
-
}
|
2195
2129
|
if (assetInput && "assetId" in assetInput) {
|
2196
2130
|
assetInput.id = hexlify7(randomBytes(UTXO_ID_LEN2));
|
2197
|
-
assetInput.amount =
|
2131
|
+
assetInput.amount = quantity;
|
2198
2132
|
} else {
|
2199
2133
|
this.addResources([
|
2200
2134
|
{
|
2201
2135
|
id: hexlify7(randomBytes(UTXO_ID_LEN2)),
|
2202
|
-
amount:
|
2136
|
+
amount: quantity,
|
2203
2137
|
assetId,
|
2204
2138
|
owner: resourcesOwner || Address.fromRandom(),
|
2139
|
+
maturity: 0,
|
2205
2140
|
blockCreated: bn7(1),
|
2206
2141
|
txCreatedIdx: bn7(1)
|
2207
2142
|
}
|
@@ -2233,16 +2168,20 @@ var BaseTransactionRequest = class {
|
|
2233
2168
|
toJSON() {
|
2234
2169
|
return normalizeJSON(this);
|
2235
2170
|
}
|
2236
|
-
|
2171
|
+
removeWitness(index) {
|
2172
|
+
this.witnesses.splice(index, 1);
|
2173
|
+
this.adjustWitnessIndexes(index);
|
2174
|
+
}
|
2175
|
+
updatePredicateInputs(inputs) {
|
2237
2176
|
this.inputs.forEach((i) => {
|
2238
2177
|
let correspondingInput;
|
2239
2178
|
switch (i.type) {
|
2240
|
-
case
|
2241
|
-
correspondingInput = inputs.find((x) => x.type ===
|
2179
|
+
case InputType3.Coin:
|
2180
|
+
correspondingInput = inputs.find((x) => x.type === InputType3.Coin && x.owner === i.owner);
|
2242
2181
|
break;
|
2243
|
-
case
|
2182
|
+
case InputType3.Message:
|
2244
2183
|
correspondingInput = inputs.find(
|
2245
|
-
(x) => x.type ===
|
2184
|
+
(x) => x.type === InputType3.Message && x.sender === i.sender
|
2246
2185
|
);
|
2247
2186
|
break;
|
2248
2187
|
default:
|
@@ -2255,12 +2194,10 @@ var BaseTransactionRequest = class {
|
|
2255
2194
|
}
|
2256
2195
|
});
|
2257
2196
|
}
|
2258
|
-
|
2259
|
-
this.inputs.forEach((input) => {
|
2260
|
-
if (
|
2261
|
-
input.
|
2262
|
-
BaseTransactionRequest.getPolicyMeta(this).policies.length
|
2263
|
-
);
|
2197
|
+
adjustWitnessIndexes(removedIndex) {
|
2198
|
+
this.inputs.filter(isRequestInputResource).forEach((input) => {
|
2199
|
+
if (input.witnessIndex > removedIndex) {
|
2200
|
+
input.witnessIndex -= 1;
|
2264
2201
|
}
|
2265
2202
|
});
|
2266
2203
|
}
|
@@ -2276,7 +2213,7 @@ import { arrayify as arrayify6, hexlify as hexlify9 } from "@fuel-ts/utils";
|
|
2276
2213
|
import { ZeroBytes32 as ZeroBytes325 } from "@fuel-ts/address/configs";
|
2277
2214
|
import { uint64ToBytesBE, sha256 } from "@fuel-ts/hasher";
|
2278
2215
|
import { bn as bn8 } from "@fuel-ts/math";
|
2279
|
-
import { TransactionType as TransactionType2, InputType as
|
2216
|
+
import { TransactionType as TransactionType2, InputType as InputType4, OutputType as OutputType3, TransactionCoder as TransactionCoder2 } from "@fuel-ts/transactions";
|
2280
2217
|
import { concat as concat2 } from "@fuel-ts/utils";
|
2281
2218
|
import { clone as clone2 } from "ramda";
|
2282
2219
|
function hashTransaction(transactionRequest, chainId) {
|
@@ -2287,7 +2224,7 @@ function hashTransaction(transactionRequest, chainId) {
|
|
2287
2224
|
transaction.inputs = transaction.inputs.map((input) => {
|
2288
2225
|
const inputClone = clone2(input);
|
2289
2226
|
switch (inputClone.type) {
|
2290
|
-
case
|
2227
|
+
case InputType4.Coin: {
|
2291
2228
|
inputClone.txPointer = {
|
2292
2229
|
blockHeight: 0,
|
2293
2230
|
txIndex: 0
|
@@ -2295,11 +2232,11 @@ function hashTransaction(transactionRequest, chainId) {
|
|
2295
2232
|
inputClone.predicateGasUsed = bn8(0);
|
2296
2233
|
return inputClone;
|
2297
2234
|
}
|
2298
|
-
case
|
2235
|
+
case InputType4.Message: {
|
2299
2236
|
inputClone.predicateGasUsed = bn8(0);
|
2300
2237
|
return inputClone;
|
2301
2238
|
}
|
2302
|
-
case
|
2239
|
+
case InputType4.Contract: {
|
2303
2240
|
inputClone.txPointer = {
|
2304
2241
|
blockHeight: 0,
|
2305
2242
|
txIndex: 0
|
@@ -2410,8 +2347,9 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
|
|
2410
2347
|
return {
|
2411
2348
|
type: TransactionType3.Create,
|
2412
2349
|
...baseTransaction,
|
2350
|
+
bytecodeLength: baseTransaction.witnesses[bytecodeWitnessIndex].dataLength / 4,
|
2413
2351
|
bytecodeWitnessIndex,
|
2414
|
-
storageSlotsCount:
|
2352
|
+
storageSlotsCount: storageSlots.length,
|
2415
2353
|
salt: this.salt ? hexlify9(this.salt) : ZeroBytes326,
|
2416
2354
|
storageSlots
|
2417
2355
|
};
|
@@ -2464,7 +2402,7 @@ import { Interface } from "@fuel-ts/abi-coder";
|
|
2464
2402
|
import { addressify as addressify2 } from "@fuel-ts/address";
|
2465
2403
|
import { ZeroBytes32 as ZeroBytes327 } from "@fuel-ts/address/configs";
|
2466
2404
|
import { bn as bn10 } from "@fuel-ts/math";
|
2467
|
-
import { InputType as
|
2405
|
+
import { InputType as InputType5, OutputType as OutputType5, TransactionType as TransactionType4 } from "@fuel-ts/transactions";
|
2468
2406
|
import { arrayify as arrayify8, hexlify as hexlify10 } from "@fuel-ts/utils";
|
2469
2407
|
|
2470
2408
|
// src/providers/transaction-request/scripts.ts
|
@@ -2534,8 +2472,8 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2534
2472
|
type: TransactionType4.Script,
|
2535
2473
|
scriptGasLimit: this.gasLimit,
|
2536
2474
|
...super.getBaseTransaction(),
|
2537
|
-
scriptLength:
|
2538
|
-
scriptDataLength:
|
2475
|
+
scriptLength: script.length,
|
2476
|
+
scriptDataLength: scriptData.length,
|
2539
2477
|
receiptsRoot: ZeroBytes327,
|
2540
2478
|
script: hexlify10(script),
|
2541
2479
|
scriptData: hexlify10(scriptData)
|
@@ -2548,7 +2486,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2548
2486
|
*/
|
2549
2487
|
getContractInputs() {
|
2550
2488
|
return this.inputs.filter(
|
2551
|
-
(input) => input.type ===
|
2489
|
+
(input) => input.type === InputType5.Contract
|
2552
2490
|
);
|
2553
2491
|
}
|
2554
2492
|
/**
|
@@ -2599,7 +2537,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2599
2537
|
}
|
2600
2538
|
calculateMaxGas(chainInfo, minGas) {
|
2601
2539
|
const { consensusParameters } = chainInfo;
|
2602
|
-
const { gasPerByte
|
2540
|
+
const { gasPerByte } = consensusParameters;
|
2603
2541
|
const witnessesLength = this.toTransaction().witnesses.reduce(
|
2604
2542
|
(acc, wit) => acc + wit.dataLength,
|
2605
2543
|
0
|
@@ -2609,8 +2547,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2609
2547
|
minGas,
|
2610
2548
|
witnessesLength,
|
2611
2549
|
witnessLimit: this.witnessLimit,
|
2612
|
-
gasLimit: this.gasLimit
|
2613
|
-
maxGasPerTx
|
2550
|
+
gasLimit: this.gasLimit
|
2614
2551
|
});
|
2615
2552
|
}
|
2616
2553
|
/**
|
@@ -2625,7 +2562,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2625
2562
|
return this;
|
2626
2563
|
}
|
2627
2564
|
const inputIndex = super.pushInput({
|
2628
|
-
type:
|
2565
|
+
type: InputType5.Contract,
|
2629
2566
|
contractId: contractAddress.toB256(),
|
2630
2567
|
txPointer: "0x00000000000000000000000000000000"
|
2631
2568
|
});
|
@@ -2667,7 +2604,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
2667
2604
|
|
2668
2605
|
// src/providers/transaction-request/utils.ts
|
2669
2606
|
import { ErrorCode as ErrorCode8, FuelError as FuelError8 } from "@fuel-ts/errors";
|
2670
|
-
import { TransactionType as TransactionType5
|
2607
|
+
import { TransactionType as TransactionType5 } from "@fuel-ts/transactions";
|
2671
2608
|
var transactionRequestify = (obj) => {
|
2672
2609
|
if (obj instanceof ScriptTransactionRequest || obj instanceof CreateTransactionRequest) {
|
2673
2610
|
return obj;
|
@@ -2685,31 +2622,14 @@ var transactionRequestify = (obj) => {
|
|
2685
2622
|
}
|
2686
2623
|
}
|
2687
2624
|
};
|
2688
|
-
var cacheTxInputsFromOwner = (inputs, owner) => inputs.reduce(
|
2689
|
-
(acc, input) => {
|
2690
|
-
if (input.type === InputType5.Coin && input.owner === owner) {
|
2691
|
-
acc.utxos.push(input.id);
|
2692
|
-
}
|
2693
|
-
if (input.type === InputType5.Message && input.recipient === owner) {
|
2694
|
-
acc.messages.push(input.nonce);
|
2695
|
-
}
|
2696
|
-
return acc;
|
2697
|
-
},
|
2698
|
-
{
|
2699
|
-
utxos: [],
|
2700
|
-
messages: []
|
2701
|
-
}
|
2702
|
-
);
|
2703
2625
|
|
2704
2626
|
// src/providers/transaction-response/transaction-response.ts
|
2705
2627
|
import { ErrorCode as ErrorCode12, FuelError as FuelError12 } from "@fuel-ts/errors";
|
2706
|
-
import { bn as
|
2628
|
+
import { bn as bn14 } from "@fuel-ts/math";
|
2707
2629
|
import { TransactionCoder as TransactionCoder4 } from "@fuel-ts/transactions";
|
2708
2630
|
import { arrayify as arrayify10 } from "@fuel-ts/utils";
|
2709
2631
|
|
2710
2632
|
// src/providers/transaction-summary/assemble-transaction-summary.ts
|
2711
|
-
import { bn as bn14 } from "@fuel-ts/math";
|
2712
|
-
import { PolicyType as PolicyType3 } from "@fuel-ts/transactions";
|
2713
2633
|
import { DateTime, hexlify as hexlify11 } from "@fuel-ts/utils";
|
2714
2634
|
|
2715
2635
|
// src/providers/transaction-summary/calculate-transaction-fee.ts
|
@@ -2718,10 +2638,9 @@ import { PolicyType as PolicyType2, TransactionCoder as TransactionCoder3, Trans
|
|
2718
2638
|
import { arrayify as arrayify9 } from "@fuel-ts/utils";
|
2719
2639
|
var calculateTransactionFee = (params) => {
|
2720
2640
|
const {
|
2721
|
-
|
2641
|
+
gasUsed,
|
2722
2642
|
rawPayload,
|
2723
|
-
|
2724
|
-
consensusParameters: { gasCosts, feeParams, maxGasPerTx }
|
2643
|
+
consensusParameters: { gasCosts, feeParams }
|
2725
2644
|
} = params;
|
2726
2645
|
const gasPerByte = bn11(feeParams.gasPerByte);
|
2727
2646
|
const gasPriceFactor = bn11(feeParams.gasPriceFactor);
|
@@ -2731,7 +2650,8 @@ var calculateTransactionFee = (params) => {
|
|
2731
2650
|
return {
|
2732
2651
|
fee: bn11(0),
|
2733
2652
|
minFee: bn11(0),
|
2734
|
-
maxFee: bn11(0)
|
2653
|
+
maxFee: bn11(0),
|
2654
|
+
feeFromGasUsed: bn11(0)
|
2735
2655
|
};
|
2736
2656
|
}
|
2737
2657
|
const { type, witnesses, inputs, policies } = transaction;
|
@@ -2763,6 +2683,7 @@ var calculateTransactionFee = (params) => {
|
|
2763
2683
|
metadataGas,
|
2764
2684
|
txBytesSize: transactionBytes.length
|
2765
2685
|
});
|
2686
|
+
const gasPrice = bn11(policies.find((policy) => policy.type === PolicyType2.GasPrice)?.data);
|
2766
2687
|
const witnessLimit = policies.find((policy) => policy.type === PolicyType2.WitnessLimit)?.data;
|
2767
2688
|
const witnessesLength = witnesses.reduce((acc, wit) => acc + wit.dataLength, 0);
|
2768
2689
|
const maxGas = getMaxGas({
|
@@ -2770,25 +2691,17 @@ var calculateTransactionFee = (params) => {
|
|
2770
2691
|
minGas,
|
2771
2692
|
witnessesLength,
|
2772
2693
|
gasLimit,
|
2773
|
-
witnessLimit
|
2774
|
-
maxGasPerTx
|
2775
|
-
});
|
2776
|
-
const minFee = calculateGasFee({
|
2777
|
-
gasPrice,
|
2778
|
-
gas: minGas,
|
2779
|
-
priceFactor: gasPriceFactor,
|
2780
|
-
tip
|
2781
|
-
});
|
2782
|
-
const maxFee = calculateGasFee({
|
2783
|
-
gasPrice,
|
2784
|
-
gas: maxGas,
|
2785
|
-
priceFactor: gasPriceFactor,
|
2786
|
-
tip
|
2694
|
+
witnessLimit
|
2787
2695
|
});
|
2696
|
+
const feeFromGasUsed = calculatePriceWithFactor(gasUsed, gasPrice, gasPriceFactor);
|
2697
|
+
const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor);
|
2698
|
+
const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor);
|
2699
|
+
const fee = minFee.add(feeFromGasUsed);
|
2788
2700
|
return {
|
2701
|
+
fee,
|
2789
2702
|
minFee,
|
2790
2703
|
maxFee,
|
2791
|
-
|
2704
|
+
feeFromGasUsed
|
2792
2705
|
};
|
2793
2706
|
};
|
2794
2707
|
|
@@ -3402,9 +3315,7 @@ function assembleTransactionSummary(params) {
|
|
3402
3315
|
gqlTransactionStatus,
|
3403
3316
|
abiMap = {},
|
3404
3317
|
maxInputs,
|
3405
|
-
gasCosts
|
3406
|
-
maxGasPerTx,
|
3407
|
-
gasPrice
|
3318
|
+
gasCosts
|
3408
3319
|
} = params;
|
3409
3320
|
const gasUsed = getGasUsedFromReceipts(receipts);
|
3410
3321
|
const rawPayload = hexlify11(transactionBytes);
|
@@ -3418,14 +3329,11 @@ function assembleTransactionSummary(params) {
|
|
3418
3329
|
maxInputs
|
3419
3330
|
});
|
3420
3331
|
const typeName = getTransactionTypeName(transaction.type);
|
3421
|
-
const tip = bn14(transaction.policies?.find((policy) => policy.type === PolicyType3.Tip)?.data);
|
3422
3332
|
const { fee } = calculateTransactionFee({
|
3423
|
-
|
3333
|
+
gasUsed,
|
3424
3334
|
rawPayload,
|
3425
|
-
tip,
|
3426
3335
|
consensusParameters: {
|
3427
3336
|
gasCosts,
|
3428
|
-
maxGasPerTx,
|
3429
3337
|
feeParams: {
|
3430
3338
|
gasPerByte,
|
3431
3339
|
gasPriceFactor
|
@@ -3485,7 +3393,7 @@ var TransactionResponse = class {
|
|
3485
3393
|
/** Current provider */
|
3486
3394
|
provider;
|
3487
3395
|
/** Gas used on the transaction */
|
3488
|
-
gasUsed =
|
3396
|
+
gasUsed = bn14(0);
|
3489
3397
|
/** The graphql Transaction with receipts object. */
|
3490
3398
|
gqlTransaction;
|
3491
3399
|
abis;
|
@@ -3563,13 +3471,8 @@ var TransactionResponse = class {
|
|
3563
3471
|
const decodedTransaction = this.decodeTransaction(
|
3564
3472
|
transaction
|
3565
3473
|
);
|
3566
|
-
|
3567
|
-
|
3568
|
-
txReceipts = transaction.status.receipts;
|
3569
|
-
}
|
3570
|
-
const receipts = txReceipts.map(processGqlReceipt) || [];
|
3571
|
-
const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = this.provider.getGasConfig();
|
3572
|
-
const gasPrice = await this.provider.getLatestGasPrice();
|
3474
|
+
const receipts = transaction.receipts?.map(processGqlReceipt) || [];
|
3475
|
+
const { gasPerByte, gasPriceFactor, gasCosts } = this.provider.getGasConfig();
|
3573
3476
|
const maxInputs = this.provider.getChain().consensusParameters.maxInputs;
|
3574
3477
|
const transactionSummary = assembleTransactionSummary({
|
3575
3478
|
id: this.id,
|
@@ -3581,9 +3484,7 @@ var TransactionResponse = class {
|
|
3581
3484
|
gasPriceFactor,
|
3582
3485
|
abiMap: contractsAbiMap,
|
3583
3486
|
maxInputs,
|
3584
|
-
gasCosts
|
3585
|
-
maxGasPerTx,
|
3586
|
-
gasPrice
|
3487
|
+
gasCosts
|
3587
3488
|
});
|
3588
3489
|
return transactionSummary;
|
3589
3490
|
}
|
@@ -3710,29 +3611,29 @@ var processGqlChain = (chain) => {
|
|
3710
3611
|
const { contractParams, feeParams, predicateParams, scriptParams, txParams, gasCosts } = consensusParameters;
|
3711
3612
|
return {
|
3712
3613
|
name,
|
3713
|
-
baseChainHeight:
|
3614
|
+
baseChainHeight: bn15(daHeight),
|
3714
3615
|
consensusParameters: {
|
3715
|
-
contractMaxSize:
|
3716
|
-
maxInputs:
|
3717
|
-
maxOutputs:
|
3718
|
-
maxWitnesses:
|
3719
|
-
maxGasPerTx:
|
3720
|
-
maxScriptLength:
|
3721
|
-
maxScriptDataLength:
|
3722
|
-
maxStorageSlots:
|
3723
|
-
maxPredicateLength:
|
3724
|
-
maxPredicateDataLength:
|
3725
|
-
maxGasPerPredicate:
|
3726
|
-
gasPriceFactor:
|
3727
|
-
gasPerByte:
|
3728
|
-
maxMessageDataLength:
|
3729
|
-
chainId:
|
3616
|
+
contractMaxSize: bn15(contractParams.contractMaxSize),
|
3617
|
+
maxInputs: bn15(txParams.maxInputs),
|
3618
|
+
maxOutputs: bn15(txParams.maxOutputs),
|
3619
|
+
maxWitnesses: bn15(txParams.maxWitnesses),
|
3620
|
+
maxGasPerTx: bn15(txParams.maxGasPerTx),
|
3621
|
+
maxScriptLength: bn15(scriptParams.maxScriptLength),
|
3622
|
+
maxScriptDataLength: bn15(scriptParams.maxScriptDataLength),
|
3623
|
+
maxStorageSlots: bn15(contractParams.maxStorageSlots),
|
3624
|
+
maxPredicateLength: bn15(predicateParams.maxPredicateLength),
|
3625
|
+
maxPredicateDataLength: bn15(predicateParams.maxPredicateDataLength),
|
3626
|
+
maxGasPerPredicate: bn15(predicateParams.maxGasPerPredicate),
|
3627
|
+
gasPriceFactor: bn15(feeParams.gasPriceFactor),
|
3628
|
+
gasPerByte: bn15(feeParams.gasPerByte),
|
3629
|
+
maxMessageDataLength: bn15(predicateParams.maxMessageDataLength),
|
3630
|
+
chainId: bn15(consensusParameters.chainId),
|
3730
3631
|
gasCosts
|
3731
3632
|
},
|
3732
3633
|
gasCosts,
|
3733
3634
|
latestBlock: {
|
3734
3635
|
id: latestBlock.id,
|
3735
|
-
height:
|
3636
|
+
height: bn15(latestBlock.header.height),
|
3736
3637
|
time: latestBlock.header.time,
|
3737
3638
|
transactions: latestBlock.transactions.map((i) => ({
|
3738
3639
|
id: i.id
|
@@ -3826,8 +3727,10 @@ var _Provider = class {
|
|
3826
3727
|
* Returns some helpful parameters related to gas fees.
|
3827
3728
|
*/
|
3828
3729
|
getGasConfig() {
|
3730
|
+
const { minGasPrice } = this.getNode();
|
3829
3731
|
const { maxGasPerTx, maxGasPerPredicate, gasPriceFactor, gasPerByte, gasCosts } = this.getChain().consensusParameters;
|
3830
3732
|
return {
|
3733
|
+
minGasPrice,
|
3831
3734
|
maxGasPerTx,
|
3832
3735
|
maxGasPerPredicate,
|
3833
3736
|
gasPriceFactor,
|
@@ -3925,7 +3828,7 @@ var _Provider = class {
|
|
3925
3828
|
*/
|
3926
3829
|
async getBlockNumber() {
|
3927
3830
|
const { chain } = await this.operations.getChain();
|
3928
|
-
return
|
3831
|
+
return bn15(chain.latestBlock.header.height, 10);
|
3929
3832
|
}
|
3930
3833
|
/**
|
3931
3834
|
* Returns the chain information.
|
@@ -3935,11 +3838,13 @@ var _Provider = class {
|
|
3935
3838
|
async fetchNode() {
|
3936
3839
|
const { nodeInfo } = await this.operations.getNodeInfo();
|
3937
3840
|
const processedNodeInfo = {
|
3938
|
-
maxDepth:
|
3939
|
-
maxTx:
|
3841
|
+
maxDepth: bn15(nodeInfo.maxDepth),
|
3842
|
+
maxTx: bn15(nodeInfo.maxTx),
|
3843
|
+
minGasPrice: bn15(nodeInfo.minGasPrice),
|
3940
3844
|
nodeVersion: nodeInfo.nodeVersion,
|
3941
3845
|
utxoValidation: nodeInfo.utxoValidation,
|
3942
|
-
vmBacktrace: nodeInfo.vmBacktrace
|
3846
|
+
vmBacktrace: nodeInfo.vmBacktrace,
|
3847
|
+
peers: nodeInfo.peers
|
3943
3848
|
};
|
3944
3849
|
_Provider.nodeInfoCache[this.url] = processedNodeInfo;
|
3945
3850
|
return processedNodeInfo;
|
@@ -4025,13 +3930,14 @@ var _Provider = class {
|
|
4025
3930
|
return this.estimateTxDependencies(transactionRequest);
|
4026
3931
|
}
|
4027
3932
|
const encodedTransaction = hexlify12(transactionRequest.toTransactionBytes());
|
4028
|
-
const { dryRun:
|
4029
|
-
|
3933
|
+
const { dryRun: gqlReceipts } = await this.operations.dryRun({
|
3934
|
+
encodedTransaction,
|
4030
3935
|
utxoValidation: utxoValidation || false
|
4031
3936
|
});
|
4032
|
-
const
|
4033
|
-
|
4034
|
-
|
3937
|
+
const receipts = gqlReceipts.map(processGqlReceipt);
|
3938
|
+
return {
|
3939
|
+
receipts
|
3940
|
+
};
|
4035
3941
|
}
|
4036
3942
|
/**
|
4037
3943
|
* Verifies whether enough gas is available to complete transaction.
|
@@ -4057,7 +3963,7 @@ var _Provider = class {
|
|
4057
3963
|
} = response;
|
4058
3964
|
if (inputs) {
|
4059
3965
|
inputs.forEach((input, index) => {
|
4060
|
-
if ("predicateGasUsed" in input &&
|
3966
|
+
if ("predicateGasUsed" in input && bn15(input.predicateGasUsed).gt(0)) {
|
4061
3967
|
transactionRequest.inputs[index].predicateGasUsed = input.predicateGasUsed;
|
4062
3968
|
}
|
4063
3969
|
});
|
@@ -4070,6 +3976,9 @@ var _Provider = class {
|
|
4070
3976
|
* If there are missing variable outputs,
|
4071
3977
|
* `addVariableOutputs` is called on the transaction.
|
4072
3978
|
*
|
3979
|
+
* @privateRemarks
|
3980
|
+
* TODO: Investigate support for missing contract IDs
|
3981
|
+
* TODO: Add support for missing output messages
|
4073
3982
|
*
|
4074
3983
|
* @param transactionRequest - The transaction request object.
|
4075
3984
|
* @returns A promise.
|
@@ -4082,19 +3991,16 @@ var _Provider = class {
|
|
4082
3991
|
missingContractIds: []
|
4083
3992
|
};
|
4084
3993
|
}
|
3994
|
+
await this.estimatePredicates(transactionRequest);
|
4085
3995
|
let receipts = [];
|
4086
3996
|
const missingContractIds = [];
|
4087
3997
|
let outputVariables = 0;
|
4088
|
-
let dryrunStatus;
|
4089
3998
|
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
4090
|
-
const {
|
4091
|
-
|
4092
|
-
} = await this.operations.dryRun({
|
4093
|
-
encodedTransactions: [hexlify12(transactionRequest.toTransactionBytes())],
|
3999
|
+
const { dryRun: gqlReceipts } = await this.operations.dryRun({
|
4000
|
+
encodedTransaction: hexlify12(transactionRequest.toTransactionBytes()),
|
4094
4001
|
utxoValidation: false
|
4095
4002
|
});
|
4096
|
-
receipts =
|
4097
|
-
dryrunStatus = status;
|
4003
|
+
receipts = gqlReceipts.map(processGqlReceipt);
|
4098
4004
|
const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(receipts);
|
4099
4005
|
const hasMissingOutputs = missingOutputVariables.length !== 0 || missingOutputContractIds.length !== 0;
|
4100
4006
|
if (hasMissingOutputs) {
|
@@ -4104,10 +4010,6 @@ var _Provider = class {
|
|
4104
4010
|
transactionRequest.addContractInputAndOutput(Address2.fromString(contractId));
|
4105
4011
|
missingContractIds.push(contractId);
|
4106
4012
|
});
|
4107
|
-
const { maxFee } = await this.estimateTxGasAndFee({
|
4108
|
-
transactionRequest
|
4109
|
-
});
|
4110
|
-
transactionRequest.maxFee = maxFee;
|
4111
4013
|
} else {
|
4112
4014
|
break;
|
4113
4015
|
}
|
@@ -4115,139 +4017,37 @@ var _Provider = class {
|
|
4115
4017
|
return {
|
4116
4018
|
receipts,
|
4117
4019
|
outputVariables,
|
4118
|
-
missingContractIds
|
4119
|
-
dryrunStatus
|
4020
|
+
missingContractIds
|
4120
4021
|
};
|
4121
4022
|
}
|
4122
|
-
/**
|
4123
|
-
* Dry runs multiple transactions and checks for missing dependencies in batches.
|
4124
|
-
*
|
4125
|
-
* Transactions are dry run in batches. After each dry run, transactions requiring
|
4126
|
-
* further modifications are identified. The method iteratively updates these transactions
|
4127
|
-
* and performs subsequent dry runs until all dependencies for each transaction are satisfied.
|
4128
|
-
*
|
4129
|
-
* @param transactionRequests - Array of transaction request objects.
|
4130
|
-
* @returns A promise that resolves to an array of results for each transaction.
|
4131
|
-
*/
|
4132
|
-
async estimateMultipleTxDependencies(transactionRequests) {
|
4133
|
-
const results = transactionRequests.map(() => ({
|
4134
|
-
receipts: [],
|
4135
|
-
outputVariables: 0,
|
4136
|
-
missingContractIds: [],
|
4137
|
-
dryrunStatus: void 0
|
4138
|
-
}));
|
4139
|
-
const allRequests = clone3(transactionRequests);
|
4140
|
-
const serializedTransactionsMap = /* @__PURE__ */ new Map();
|
4141
|
-
allRequests.forEach((req, index) => {
|
4142
|
-
if (req.type === TransactionType8.Script) {
|
4143
|
-
serializedTransactionsMap.set(index, hexlify12(req.toTransactionBytes()));
|
4144
|
-
}
|
4145
|
-
});
|
4146
|
-
let transactionsToProcess = Array.from(serializedTransactionsMap.keys());
|
4147
|
-
let attempt = 0;
|
4148
|
-
while (transactionsToProcess.length > 0 && attempt < MAX_RETRIES) {
|
4149
|
-
const encodedTransactions = transactionsToProcess.map(
|
4150
|
-
(index) => serializedTransactionsMap.get(index)
|
4151
|
-
);
|
4152
|
-
const dryRunResults = await this.operations.dryRun({
|
4153
|
-
encodedTransactions,
|
4154
|
-
utxoValidation: false
|
4155
|
-
});
|
4156
|
-
const nextRoundTransactions = [];
|
4157
|
-
for (let i = 0; i < dryRunResults.dryRun.length; i++) {
|
4158
|
-
const currentResultIndex = transactionsToProcess[i];
|
4159
|
-
const { receipts: rawReceipts, status } = dryRunResults.dryRun[i];
|
4160
|
-
results[currentResultIndex].receipts = rawReceipts.map(processGqlReceipt);
|
4161
|
-
results[currentResultIndex].dryrunStatus = status;
|
4162
|
-
const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(
|
4163
|
-
results[currentResultIndex].receipts
|
4164
|
-
);
|
4165
|
-
const hasMissingOutputs = missingOutputVariables.length > 0 || missingOutputContractIds.length > 0;
|
4166
|
-
const requestToProcess = allRequests[currentResultIndex];
|
4167
|
-
if (hasMissingOutputs && requestToProcess?.type === TransactionType8.Script) {
|
4168
|
-
results[currentResultIndex].outputVariables += missingOutputVariables.length;
|
4169
|
-
requestToProcess.addVariableOutputs(missingOutputVariables.length);
|
4170
|
-
missingOutputContractIds.forEach(({ contractId }) => {
|
4171
|
-
requestToProcess.addContractInputAndOutput(Address2.fromString(contractId));
|
4172
|
-
results[currentResultIndex].missingContractIds.push(contractId);
|
4173
|
-
});
|
4174
|
-
const { maxFee } = await this.estimateTxGasAndFee({
|
4175
|
-
transactionRequest: requestToProcess
|
4176
|
-
});
|
4177
|
-
requestToProcess.maxFee = maxFee;
|
4178
|
-
serializedTransactionsMap.set(
|
4179
|
-
currentResultIndex,
|
4180
|
-
hexlify12(requestToProcess.toTransactionBytes())
|
4181
|
-
);
|
4182
|
-
nextRoundTransactions.push(currentResultIndex);
|
4183
|
-
allRequests[currentResultIndex] = requestToProcess;
|
4184
|
-
}
|
4185
|
-
}
|
4186
|
-
transactionsToProcess = nextRoundTransactions;
|
4187
|
-
attempt += 1;
|
4188
|
-
}
|
4189
|
-
return results;
|
4190
|
-
}
|
4191
|
-
async dryRunMultipleTransactions(transactionRequests, { utxoValidation, estimateTxDependencies = true } = {}) {
|
4192
|
-
if (estimateTxDependencies) {
|
4193
|
-
return this.estimateMultipleTxDependencies(transactionRequests);
|
4194
|
-
}
|
4195
|
-
const encodedTransactions = transactionRequests.map((tx) => hexlify12(tx.toTransactionBytes()));
|
4196
|
-
const { dryRun: dryRunStatuses } = await this.operations.dryRun({
|
4197
|
-
encodedTransactions,
|
4198
|
-
utxoValidation: utxoValidation || false
|
4199
|
-
});
|
4200
|
-
const results = dryRunStatuses.map(({ receipts: rawReceipts, status }) => {
|
4201
|
-
const receipts = rawReceipts.map(processGqlReceipt);
|
4202
|
-
return { receipts, dryrunStatus: status };
|
4203
|
-
});
|
4204
|
-
return results;
|
4205
|
-
}
|
4206
4023
|
/**
|
4207
4024
|
* Estimates the transaction gas and fee based on the provided transaction request.
|
4208
4025
|
* @param transactionRequest - The transaction request object.
|
4209
4026
|
* @returns An object containing the estimated minimum gas, minimum fee, maximum gas, and maximum fee.
|
4210
4027
|
*/
|
4211
|
-
|
4028
|
+
estimateTxGasAndFee(params) {
|
4212
4029
|
const { transactionRequest } = params;
|
4213
|
-
|
4030
|
+
const { gasPriceFactor, minGasPrice, maxGasPerTx } = this.getGasConfig();
|
4214
4031
|
const chainInfo = this.getChain();
|
4215
|
-
const
|
4032
|
+
const gasPrice = transactionRequest.gasPrice.eq(0) ? minGasPrice : transactionRequest.gasPrice;
|
4033
|
+
transactionRequest.gasPrice = gasPrice;
|
4216
4034
|
const minGas = transactionRequest.calculateMinGas(chainInfo);
|
4217
|
-
|
4218
|
-
gasPrice = await this.estimateGasPrice(10);
|
4219
|
-
}
|
4220
|
-
const minFee = calculateGasFee({
|
4221
|
-
gasPrice: bn16(gasPrice),
|
4222
|
-
gas: minGas,
|
4223
|
-
priceFactor: gasPriceFactor,
|
4224
|
-
tip: transactionRequest.tip
|
4225
|
-
}).add(1);
|
4226
|
-
let gasLimit = bn16(0);
|
4035
|
+
const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
|
4227
4036
|
if (transactionRequest.type === TransactionType8.Script) {
|
4228
|
-
gasLimit = transactionRequest.gasLimit;
|
4229
4037
|
if (transactionRequest.gasLimit.eq(0)) {
|
4230
4038
|
transactionRequest.gasLimit = minGas;
|
4231
4039
|
transactionRequest.gasLimit = maxGasPerTx.sub(
|
4232
4040
|
transactionRequest.calculateMaxGas(chainInfo, minGas)
|
4233
4041
|
);
|
4234
|
-
gasLimit = transactionRequest.gasLimit;
|
4235
4042
|
}
|
4236
4043
|
}
|
4237
4044
|
const maxGas = transactionRequest.calculateMaxGas(chainInfo, minGas);
|
4238
|
-
const maxFee =
|
4239
|
-
gasPrice: bn16(gasPrice),
|
4240
|
-
gas: maxGas,
|
4241
|
-
priceFactor: gasPriceFactor,
|
4242
|
-
tip: transactionRequest.tip
|
4243
|
-
}).add(1);
|
4045
|
+
const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
|
4244
4046
|
return {
|
4245
4047
|
minGas,
|
4246
4048
|
minFee,
|
4247
4049
|
maxGas,
|
4248
|
-
maxFee
|
4249
|
-
gasPrice,
|
4250
|
-
gasLimit
|
4050
|
+
maxFee
|
4251
4051
|
};
|
4252
4052
|
}
|
4253
4053
|
/**
|
@@ -4265,17 +4065,15 @@ var _Provider = class {
|
|
4265
4065
|
if (estimateTxDependencies) {
|
4266
4066
|
return this.estimateTxDependencies(transactionRequest);
|
4267
4067
|
}
|
4268
|
-
const
|
4269
|
-
const { dryRun:
|
4270
|
-
|
4068
|
+
const encodedTransaction = hexlify12(transactionRequest.toTransactionBytes());
|
4069
|
+
const { dryRun: gqlReceipts } = await this.operations.dryRun({
|
4070
|
+
encodedTransaction,
|
4271
4071
|
utxoValidation: true
|
4272
4072
|
});
|
4273
|
-
const
|
4274
|
-
|
4275
|
-
|
4276
|
-
|
4277
|
-
});
|
4278
|
-
return { receipts: callResult[0].receipts };
|
4073
|
+
const receipts = gqlReceipts.map(processGqlReceipt);
|
4074
|
+
return {
|
4075
|
+
receipts
|
4076
|
+
};
|
4279
4077
|
}
|
4280
4078
|
/**
|
4281
4079
|
* Returns a transaction cost to enable user
|
@@ -4292,79 +4090,77 @@ var _Provider = class {
|
|
4292
4090
|
* @param tolerance - The tolerance to add on top of the gasUsed.
|
4293
4091
|
* @returns A promise that resolves to the transaction cost object.
|
4294
4092
|
*/
|
4295
|
-
async getTransactionCost(transactionRequestLike,
|
4093
|
+
async getTransactionCost(transactionRequestLike, forwardingQuantities = [], {
|
4094
|
+
estimateTxDependencies = true,
|
4095
|
+
estimatePredicates = true,
|
4096
|
+
resourcesOwner,
|
4097
|
+
signatureCallback
|
4098
|
+
} = {}) {
|
4296
4099
|
const txRequestClone = clone3(transactionRequestify(transactionRequestLike));
|
4100
|
+
const { minGasPrice } = this.getGasConfig();
|
4101
|
+
const setGasPrice = max(txRequestClone.gasPrice, minGasPrice);
|
4297
4102
|
const isScriptTransaction = txRequestClone.type === TransactionType8.Script;
|
4298
4103
|
const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
|
4299
|
-
const allQuantities = mergeQuantities(coinOutputsQuantities,
|
4104
|
+
const allQuantities = mergeQuantities(coinOutputsQuantities, forwardingQuantities);
|
4300
4105
|
txRequestClone.fundWithFakeUtxos(allQuantities, resourcesOwner?.address);
|
4301
|
-
txRequestClone.maxFee = bn16(0);
|
4302
4106
|
if (isScriptTransaction) {
|
4303
|
-
txRequestClone.gasLimit =
|
4107
|
+
txRequestClone.gasLimit = bn15(0);
|
4304
4108
|
}
|
4305
|
-
if (
|
4306
|
-
resourcesOwner
|
4109
|
+
if (estimatePredicates) {
|
4110
|
+
if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
|
4111
|
+
resourcesOwner.populateTransactionPredicateData(txRequestClone);
|
4112
|
+
}
|
4113
|
+
await this.estimatePredicates(txRequestClone);
|
4307
4114
|
}
|
4308
|
-
const signedRequest = clone3(txRequestClone);
|
4309
|
-
let addedSignatures = 0;
|
4310
4115
|
if (signatureCallback && isScriptTransaction) {
|
4311
|
-
|
4312
|
-
await signatureCallback(signedRequest);
|
4313
|
-
addedSignatures = signedRequest.witnesses.length - lengthBefore;
|
4116
|
+
await signatureCallback(txRequestClone);
|
4314
4117
|
}
|
4315
|
-
|
4316
|
-
|
4317
|
-
transactionRequest: signedRequest
|
4118
|
+
let { maxFee, maxGas, minFee, minGas } = this.estimateTxGasAndFee({
|
4119
|
+
transactionRequest: txRequestClone
|
4318
4120
|
});
|
4319
4121
|
let receipts = [];
|
4320
4122
|
let missingContractIds = [];
|
4321
4123
|
let outputVariables = 0;
|
4322
|
-
let gasUsed =
|
4323
|
-
|
4324
|
-
|
4325
|
-
if (isScriptTransaction) {
|
4326
|
-
txRequestClone.gasLimit = gasLimit;
|
4327
|
-
if (signatureCallback) {
|
4328
|
-
await signatureCallback(txRequestClone);
|
4329
|
-
}
|
4124
|
+
let gasUsed = bn15(0);
|
4125
|
+
if (isScriptTransaction && estimateTxDependencies) {
|
4126
|
+
txRequestClone.gasPrice = bn15(0);
|
4330
4127
|
const result = await this.estimateTxDependencies(txRequestClone);
|
4331
4128
|
receipts = result.receipts;
|
4332
4129
|
outputVariables = result.outputVariables;
|
4333
4130
|
missingContractIds = result.missingContractIds;
|
4334
4131
|
gasUsed = isScriptTransaction ? getGasUsedFromReceipts(receipts) : gasUsed;
|
4335
4132
|
txRequestClone.gasLimit = gasUsed;
|
4336
|
-
|
4337
|
-
|
4338
|
-
|
4133
|
+
txRequestClone.gasPrice = setGasPrice;
|
4134
|
+
({ maxFee, maxGas, minFee, minGas } = this.estimateTxGasAndFee({
|
4135
|
+
transactionRequest: txRequestClone
|
4339
4136
|
}));
|
4340
4137
|
}
|
4341
4138
|
return {
|
4342
4139
|
requiredQuantities: allQuantities,
|
4343
4140
|
receipts,
|
4344
4141
|
gasUsed,
|
4345
|
-
|
4142
|
+
minGasPrice,
|
4143
|
+
gasPrice: setGasPrice,
|
4346
4144
|
minGas,
|
4347
4145
|
maxGas,
|
4348
4146
|
minFee,
|
4349
4147
|
maxFee,
|
4148
|
+
estimatedInputs: txRequestClone.inputs,
|
4350
4149
|
outputVariables,
|
4351
|
-
missingContractIds
|
4352
|
-
addedSignatures,
|
4353
|
-
estimatedPredicates: txRequestClone.inputs
|
4150
|
+
missingContractIds
|
4354
4151
|
};
|
4355
4152
|
}
|
4356
|
-
async getResourcesForTransaction(owner, transactionRequestLike,
|
4153
|
+
async getResourcesForTransaction(owner, transactionRequestLike, forwardingQuantities = []) {
|
4357
4154
|
const ownerAddress = Address2.fromAddressOrString(owner);
|
4358
4155
|
const transactionRequest = transactionRequestify(clone3(transactionRequestLike));
|
4359
|
-
const transactionCost = await this.getTransactionCost(transactionRequest,
|
4360
|
-
quantitiesToContract
|
4361
|
-
});
|
4156
|
+
const transactionCost = await this.getTransactionCost(transactionRequest, forwardingQuantities);
|
4362
4157
|
transactionRequest.addResources(
|
4363
4158
|
await this.getResourcesToSpend(ownerAddress, transactionCost.requiredQuantities)
|
4364
4159
|
);
|
4365
|
-
const { requiredQuantities, ...txCost } = await this.getTransactionCost(
|
4366
|
-
|
4367
|
-
|
4160
|
+
const { requiredQuantities, ...txCost } = await this.getTransactionCost(
|
4161
|
+
transactionRequest,
|
4162
|
+
forwardingQuantities
|
4163
|
+
);
|
4368
4164
|
const resources = await this.getResourcesToSpend(ownerAddress, requiredQuantities);
|
4369
4165
|
return {
|
4370
4166
|
resources,
|
@@ -4386,10 +4182,11 @@ var _Provider = class {
|
|
4386
4182
|
return coins.map((coin) => ({
|
4387
4183
|
id: coin.utxoId,
|
4388
4184
|
assetId: coin.assetId,
|
4389
|
-
amount:
|
4185
|
+
amount: bn15(coin.amount),
|
4390
4186
|
owner: Address2.fromAddressOrString(coin.owner),
|
4391
|
-
|
4392
|
-
|
4187
|
+
maturity: bn15(coin.maturity).toNumber(),
|
4188
|
+
blockCreated: bn15(coin.blockCreated),
|
4189
|
+
txCreatedIdx: bn15(coin.txCreatedIdx)
|
4393
4190
|
}));
|
4394
4191
|
}
|
4395
4192
|
/**
|
@@ -4426,9 +4223,9 @@ var _Provider = class {
|
|
4426
4223
|
switch (coin.__typename) {
|
4427
4224
|
case "MessageCoin":
|
4428
4225
|
return {
|
4429
|
-
amount:
|
4226
|
+
amount: bn15(coin.amount),
|
4430
4227
|
assetId: coin.assetId,
|
4431
|
-
daHeight:
|
4228
|
+
daHeight: bn15(coin.daHeight),
|
4432
4229
|
sender: Address2.fromAddressOrString(coin.sender),
|
4433
4230
|
recipient: Address2.fromAddressOrString(coin.recipient),
|
4434
4231
|
nonce: coin.nonce
|
@@ -4436,11 +4233,12 @@ var _Provider = class {
|
|
4436
4233
|
case "Coin":
|
4437
4234
|
return {
|
4438
4235
|
id: coin.utxoId,
|
4439
|
-
amount:
|
4236
|
+
amount: bn15(coin.amount),
|
4440
4237
|
assetId: coin.assetId,
|
4441
4238
|
owner: Address2.fromAddressOrString(coin.owner),
|
4442
|
-
|
4443
|
-
|
4239
|
+
maturity: bn15(coin.maturity).toNumber(),
|
4240
|
+
blockCreated: bn15(coin.blockCreated),
|
4241
|
+
txCreatedIdx: bn15(coin.txCreatedIdx)
|
4444
4242
|
};
|
4445
4243
|
default:
|
4446
4244
|
return null;
|
@@ -4457,13 +4255,13 @@ var _Provider = class {
|
|
4457
4255
|
async getBlock(idOrHeight) {
|
4458
4256
|
let variables;
|
4459
4257
|
if (typeof idOrHeight === "number") {
|
4460
|
-
variables = { height:
|
4258
|
+
variables = { height: bn15(idOrHeight).toString(10) };
|
4461
4259
|
} else if (idOrHeight === "latest") {
|
4462
4260
|
variables = { height: (await this.getBlockNumber()).toString(10) };
|
4463
4261
|
} else if (idOrHeight.length === 66) {
|
4464
4262
|
variables = { blockId: idOrHeight };
|
4465
4263
|
} else {
|
4466
|
-
variables = { blockId:
|
4264
|
+
variables = { blockId: bn15(idOrHeight).toString(10) };
|
4467
4265
|
}
|
4468
4266
|
const { block } = await this.operations.getBlock(variables);
|
4469
4267
|
if (!block) {
|
@@ -4471,7 +4269,7 @@ var _Provider = class {
|
|
4471
4269
|
}
|
4472
4270
|
return {
|
4473
4271
|
id: block.id,
|
4474
|
-
height:
|
4272
|
+
height: bn15(block.header.height),
|
4475
4273
|
time: block.header.time,
|
4476
4274
|
transactionIds: block.transactions.map((tx) => tx.id)
|
4477
4275
|
};
|
@@ -4486,7 +4284,7 @@ var _Provider = class {
|
|
4486
4284
|
const { blocks: fetchedData } = await this.operations.getBlocks(params);
|
4487
4285
|
const blocks = fetchedData.edges.map(({ node: block }) => ({
|
4488
4286
|
id: block.id,
|
4489
|
-
height:
|
4287
|
+
height: bn15(block.header.height),
|
4490
4288
|
time: block.header.time,
|
4491
4289
|
transactionIds: block.transactions.map((tx) => tx.id)
|
4492
4290
|
}));
|
@@ -4501,7 +4299,7 @@ var _Provider = class {
|
|
4501
4299
|
async getBlockWithTransactions(idOrHeight) {
|
4502
4300
|
let variables;
|
4503
4301
|
if (typeof idOrHeight === "number") {
|
4504
|
-
variables = { blockHeight:
|
4302
|
+
variables = { blockHeight: bn15(idOrHeight).toString(10) };
|
4505
4303
|
} else if (idOrHeight === "latest") {
|
4506
4304
|
variables = { blockHeight: (await this.getBlockNumber()).toString() };
|
4507
4305
|
} else {
|
@@ -4513,7 +4311,7 @@ var _Provider = class {
|
|
4513
4311
|
}
|
4514
4312
|
return {
|
4515
4313
|
id: block.id,
|
4516
|
-
height:
|
4314
|
+
height: bn15(block.header.height, 10),
|
4517
4315
|
time: block.header.time,
|
4518
4316
|
transactionIds: block.transactions.map((tx) => tx.id),
|
4519
4317
|
transactions: block.transactions.map(
|
@@ -4562,7 +4360,7 @@ var _Provider = class {
|
|
4562
4360
|
contract: Address2.fromAddressOrString(contractId).toB256(),
|
4563
4361
|
asset: hexlify12(assetId)
|
4564
4362
|
});
|
4565
|
-
return
|
4363
|
+
return bn15(contractBalance.amount, 10);
|
4566
4364
|
}
|
4567
4365
|
/**
|
4568
4366
|
* Returns the balance for the given owner for the given asset ID.
|
@@ -4576,7 +4374,7 @@ var _Provider = class {
|
|
4576
4374
|
owner: Address2.fromAddressOrString(owner).toB256(),
|
4577
4375
|
assetId: hexlify12(assetId)
|
4578
4376
|
});
|
4579
|
-
return
|
4377
|
+
return bn15(balance.amount, 10);
|
4580
4378
|
}
|
4581
4379
|
/**
|
4582
4380
|
* Returns balances for the given owner.
|
@@ -4594,7 +4392,7 @@ var _Provider = class {
|
|
4594
4392
|
const balances = result.balances.edges.map((edge) => edge.node);
|
4595
4393
|
return balances.map((balance) => ({
|
4596
4394
|
assetId: balance.assetId,
|
4597
|
-
amount:
|
4395
|
+
amount: bn15(balance.amount)
|
4598
4396
|
}));
|
4599
4397
|
}
|
4600
4398
|
/**
|
@@ -4616,15 +4414,15 @@ var _Provider = class {
|
|
4616
4414
|
sender: message.sender,
|
4617
4415
|
recipient: message.recipient,
|
4618
4416
|
nonce: message.nonce,
|
4619
|
-
amount:
|
4417
|
+
amount: bn15(message.amount),
|
4620
4418
|
data: message.data
|
4621
4419
|
}),
|
4622
4420
|
sender: Address2.fromAddressOrString(message.sender),
|
4623
4421
|
recipient: Address2.fromAddressOrString(message.recipient),
|
4624
4422
|
nonce: message.nonce,
|
4625
|
-
amount:
|
4423
|
+
amount: bn15(message.amount),
|
4626
4424
|
data: InputMessageCoder.decodeData(message.data),
|
4627
|
-
daHeight:
|
4425
|
+
daHeight: bn15(message.daHeight)
|
4628
4426
|
}));
|
4629
4427
|
}
|
4630
4428
|
/**
|
@@ -4677,60 +4475,44 @@ var _Provider = class {
|
|
4677
4475
|
} = result.messageProof;
|
4678
4476
|
return {
|
4679
4477
|
messageProof: {
|
4680
|
-
proofIndex:
|
4478
|
+
proofIndex: bn15(messageProof.proofIndex),
|
4681
4479
|
proofSet: messageProof.proofSet
|
4682
4480
|
},
|
4683
4481
|
blockProof: {
|
4684
|
-
proofIndex:
|
4482
|
+
proofIndex: bn15(blockProof.proofIndex),
|
4685
4483
|
proofSet: blockProof.proofSet
|
4686
4484
|
},
|
4687
4485
|
messageBlockHeader: {
|
4688
4486
|
id: messageBlockHeader.id,
|
4689
|
-
daHeight:
|
4690
|
-
transactionsCount:
|
4487
|
+
daHeight: bn15(messageBlockHeader.daHeight),
|
4488
|
+
transactionsCount: bn15(messageBlockHeader.transactionsCount),
|
4691
4489
|
transactionsRoot: messageBlockHeader.transactionsRoot,
|
4692
|
-
height:
|
4490
|
+
height: bn15(messageBlockHeader.height),
|
4693
4491
|
prevRoot: messageBlockHeader.prevRoot,
|
4694
4492
|
time: messageBlockHeader.time,
|
4695
4493
|
applicationHash: messageBlockHeader.applicationHash,
|
4696
|
-
|
4697
|
-
|
4698
|
-
consensusParametersVersion: messageBlockHeader.consensusParametersVersion,
|
4699
|
-
eventInboxRoot: messageBlockHeader.eventInboxRoot,
|
4700
|
-
stateTransitionBytecodeVersion: messageBlockHeader.stateTransitionBytecodeVersion
|
4494
|
+
messageReceiptRoot: messageBlockHeader.messageReceiptRoot,
|
4495
|
+
messageReceiptCount: bn15(messageBlockHeader.messageReceiptCount)
|
4701
4496
|
},
|
4702
4497
|
commitBlockHeader: {
|
4703
4498
|
id: commitBlockHeader.id,
|
4704
|
-
daHeight:
|
4705
|
-
transactionsCount:
|
4499
|
+
daHeight: bn15(commitBlockHeader.daHeight),
|
4500
|
+
transactionsCount: bn15(commitBlockHeader.transactionsCount),
|
4706
4501
|
transactionsRoot: commitBlockHeader.transactionsRoot,
|
4707
|
-
height:
|
4502
|
+
height: bn15(commitBlockHeader.height),
|
4708
4503
|
prevRoot: commitBlockHeader.prevRoot,
|
4709
4504
|
time: commitBlockHeader.time,
|
4710
4505
|
applicationHash: commitBlockHeader.applicationHash,
|
4711
|
-
|
4712
|
-
|
4713
|
-
consensusParametersVersion: commitBlockHeader.consensusParametersVersion,
|
4714
|
-
eventInboxRoot: commitBlockHeader.eventInboxRoot,
|
4715
|
-
stateTransitionBytecodeVersion: commitBlockHeader.stateTransitionBytecodeVersion
|
4506
|
+
messageReceiptRoot: commitBlockHeader.messageReceiptRoot,
|
4507
|
+
messageReceiptCount: bn15(commitBlockHeader.messageReceiptCount)
|
4716
4508
|
},
|
4717
4509
|
sender: Address2.fromAddressOrString(sender),
|
4718
4510
|
recipient: Address2.fromAddressOrString(recipient),
|
4719
4511
|
nonce,
|
4720
|
-
amount:
|
4512
|
+
amount: bn15(amount),
|
4721
4513
|
data
|
4722
4514
|
};
|
4723
4515
|
}
|
4724
|
-
async getLatestGasPrice() {
|
4725
|
-
const { latestGasPrice } = await this.operations.getLatestGasPrice();
|
4726
|
-
return bn16(latestGasPrice.gasPrice);
|
4727
|
-
}
|
4728
|
-
async estimateGasPrice(blockHorizon) {
|
4729
|
-
const { estimateGasPrice } = await this.operations.estimateGasPrice({
|
4730
|
-
blockHorizon: String(blockHorizon)
|
4731
|
-
});
|
4732
|
-
return bn16(estimateGasPrice.gasPrice);
|
4733
|
-
}
|
4734
4516
|
/**
|
4735
4517
|
* Returns Message Proof for given transaction id and the message id from MessageOut receipt.
|
4736
4518
|
*
|
@@ -4750,10 +4532,10 @@ var _Provider = class {
|
|
4750
4532
|
*/
|
4751
4533
|
async produceBlocks(amount, startTime) {
|
4752
4534
|
const { produceBlocks: latestBlockHeight } = await this.operations.produceBlocks({
|
4753
|
-
blocksToProduce:
|
4535
|
+
blocksToProduce: bn15(amount).toString(10),
|
4754
4536
|
startTimestamp: startTime ? DateTime2.fromUnixMilliseconds(startTime).toTai64() : void 0
|
4755
4537
|
});
|
4756
|
-
return
|
4538
|
+
return bn15(latestBlockHeight);
|
4757
4539
|
}
|
4758
4540
|
// eslint-disable-next-line @typescript-eslint/require-await
|
4759
4541
|
async getTransactionResponse(transactionId) {
|
@@ -4777,7 +4559,7 @@ __publicField(Provider, "nodeInfoCache", {});
|
|
4777
4559
|
|
4778
4560
|
// src/providers/transaction-summary/get-transaction-summary.ts
|
4779
4561
|
import { ErrorCode as ErrorCode14, FuelError as FuelError14 } from "@fuel-ts/errors";
|
4780
|
-
import { bn as
|
4562
|
+
import { bn as bn16 } from "@fuel-ts/math";
|
4781
4563
|
import { TransactionCoder as TransactionCoder6 } from "@fuel-ts/transactions";
|
4782
4564
|
import { arrayify as arrayify12 } from "@fuel-ts/utils";
|
4783
4565
|
async function getTransactionSummary(params) {
|
@@ -4795,28 +4577,21 @@ async function getTransactionSummary(params) {
|
|
4795
4577
|
arrayify12(gqlTransaction.rawPayload),
|
4796
4578
|
0
|
4797
4579
|
);
|
4798
|
-
|
4799
|
-
if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
|
4800
|
-
txReceipts = gqlTransaction.status.receipts;
|
4801
|
-
}
|
4802
|
-
const receipts = txReceipts.map(processGqlReceipt);
|
4580
|
+
const receipts = gqlTransaction.receipts?.map(processGqlReceipt) || [];
|
4803
4581
|
const {
|
4804
|
-
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts
|
4582
|
+
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
|
4805
4583
|
} = provider.getChain();
|
4806
|
-
const gasPrice = await provider.getLatestGasPrice();
|
4807
4584
|
const transactionInfo = assembleTransactionSummary({
|
4808
4585
|
id: gqlTransaction.id,
|
4809
4586
|
receipts,
|
4810
4587
|
transaction: decodedTransaction,
|
4811
4588
|
transactionBytes: arrayify12(gqlTransaction.rawPayload),
|
4812
4589
|
gqlTransactionStatus: gqlTransaction.status,
|
4813
|
-
gasPerByte:
|
4814
|
-
gasPriceFactor:
|
4590
|
+
gasPerByte: bn16(gasPerByte),
|
4591
|
+
gasPriceFactor: bn16(gasPriceFactor),
|
4815
4592
|
abiMap,
|
4816
4593
|
maxInputs,
|
4817
|
-
gasCosts
|
4818
|
-
maxGasPerTx,
|
4819
|
-
gasPrice
|
4594
|
+
gasCosts
|
4820
4595
|
});
|
4821
4596
|
return {
|
4822
4597
|
gqlTransaction,
|
@@ -4826,11 +4601,10 @@ async function getTransactionSummary(params) {
|
|
4826
4601
|
async function getTransactionSummaryFromRequest(params) {
|
4827
4602
|
const { provider, transactionRequest, abiMap } = params;
|
4828
4603
|
const { receipts } = await provider.call(transactionRequest);
|
4829
|
-
const { gasPerByte, gasPriceFactor, gasCosts
|
4604
|
+
const { gasPerByte, gasPriceFactor, gasCosts } = provider.getGasConfig();
|
4830
4605
|
const maxInputs = provider.getChain().consensusParameters.maxInputs;
|
4831
4606
|
const transaction = transactionRequest.toTransaction();
|
4832
4607
|
const transactionBytes = transactionRequest.toTransactionBytes();
|
4833
|
-
const gasPrice = await provider.getLatestGasPrice();
|
4834
4608
|
const transactionSummary = assembleTransactionSummary({
|
4835
4609
|
receipts,
|
4836
4610
|
transaction,
|
@@ -4839,9 +4613,7 @@ async function getTransactionSummaryFromRequest(params) {
|
|
4839
4613
|
gasPerByte,
|
4840
4614
|
gasPriceFactor,
|
4841
4615
|
maxInputs,
|
4842
|
-
gasCosts
|
4843
|
-
maxGasPerTx,
|
4844
|
-
gasPrice
|
4616
|
+
gasCosts
|
4845
4617
|
});
|
4846
4618
|
return transactionSummary;
|
4847
4619
|
}
|
@@ -4850,18 +4622,13 @@ async function getTransactionsSummaries(params) {
|
|
4850
4622
|
const { transactionsByOwner } = await provider.operations.getTransactionsByOwner(filters);
|
4851
4623
|
const { edges, pageInfo } = transactionsByOwner;
|
4852
4624
|
const {
|
4853
|
-
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts
|
4625
|
+
consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
|
4854
4626
|
} = provider.getChain();
|
4855
|
-
const gasPrice = await provider.getLatestGasPrice();
|
4856
4627
|
const transactions = edges.map((edge) => {
|
4857
4628
|
const { node: gqlTransaction } = edge;
|
4858
|
-
const { id, rawPayload, status } = gqlTransaction;
|
4629
|
+
const { id, rawPayload, receipts: gqlReceipts, status } = gqlTransaction;
|
4859
4630
|
const [decodedTransaction] = new TransactionCoder6().decode(arrayify12(rawPayload), 0);
|
4860
|
-
|
4861
|
-
if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
|
4862
|
-
txReceipts = gqlTransaction.status.receipts;
|
4863
|
-
}
|
4864
|
-
const receipts = txReceipts.map(processGqlReceipt);
|
4631
|
+
const receipts = gqlReceipts?.map(processGqlReceipt) || [];
|
4865
4632
|
const transactionSummary = assembleTransactionSummary({
|
4866
4633
|
id,
|
4867
4634
|
receipts,
|
@@ -4872,9 +4639,7 @@ async function getTransactionsSummaries(params) {
|
|
4872
4639
|
gasPerByte,
|
4873
4640
|
gasPriceFactor,
|
4874
4641
|
maxInputs,
|
4875
|
-
gasCosts
|
4876
|
-
maxGasPerTx,
|
4877
|
-
gasPrice
|
4642
|
+
gasCosts
|
4878
4643
|
});
|
4879
4644
|
const output = {
|
4880
4645
|
gqlTransaction,
|
@@ -5206,33 +4971,36 @@ var Account = class extends AbstractAccount {
|
|
5206
4971
|
* @param fee - The estimated transaction fee.
|
5207
4972
|
* @returns A promise that resolves when the resources are added to the transaction.
|
5208
4973
|
*/
|
5209
|
-
async fund(request,
|
5210
|
-
const
|
5211
|
-
|
5212
|
-
const requiredQuantitiesWithFee = addAmountToCoinQuantities({
|
5213
|
-
amount: bn18(fee),
|
4974
|
+
async fund(request, coinQuantities, fee) {
|
4975
|
+
const updatedQuantities = addAmountToAsset({
|
4976
|
+
amount: bn17(fee),
|
5214
4977
|
assetId: BaseAssetId3,
|
5215
|
-
coinQuantities
|
4978
|
+
coinQuantities
|
5216
4979
|
});
|
5217
4980
|
const quantitiesDict = {};
|
5218
|
-
|
4981
|
+
updatedQuantities.forEach(({ amount, assetId }) => {
|
5219
4982
|
quantitiesDict[assetId] = {
|
5220
4983
|
required: amount,
|
5221
|
-
owned:
|
4984
|
+
owned: bn17(0)
|
5222
4985
|
};
|
5223
4986
|
});
|
5224
|
-
|
4987
|
+
const cachedUtxos = [];
|
4988
|
+
const cachedMessages = [];
|
4989
|
+
const owner = this.address.toB256();
|
4990
|
+
request.inputs.forEach((input) => {
|
5225
4991
|
const isResource = "amount" in input;
|
5226
4992
|
if (isResource) {
|
5227
4993
|
const isCoin2 = "owner" in input;
|
5228
4994
|
if (isCoin2) {
|
5229
4995
|
const assetId = String(input.assetId);
|
5230
|
-
if (quantitiesDict[assetId]) {
|
5231
|
-
const amount =
|
4996
|
+
if (input.owner === owner && quantitiesDict[assetId]) {
|
4997
|
+
const amount = bn17(input.amount);
|
5232
4998
|
quantitiesDict[assetId].owned = quantitiesDict[assetId].owned.add(amount);
|
4999
|
+
cachedUtxos.push(input.id);
|
5233
5000
|
}
|
5234
|
-
} else if (input.amount && quantitiesDict[BaseAssetId3]) {
|
5001
|
+
} else if (input.recipient === owner && input.amount && quantitiesDict[BaseAssetId3]) {
|
5235
5002
|
quantitiesDict[BaseAssetId3].owned = quantitiesDict[BaseAssetId3].owned.add(input.amount);
|
5003
|
+
cachedMessages.push(input.nonce);
|
5236
5004
|
}
|
5237
5005
|
}
|
5238
5006
|
});
|
@@ -5247,23 +5015,12 @@ var Account = class extends AbstractAccount {
|
|
5247
5015
|
});
|
5248
5016
|
const needsToBeFunded = missingQuantities.length;
|
5249
5017
|
if (needsToBeFunded) {
|
5250
|
-
const
|
5251
|
-
|
5252
|
-
|
5253
|
-
|
5254
|
-
|
5255
|
-
txRequest.updatePredicateGasUsed(estimatedPredicates);
|
5256
|
-
const requestToBeReEstimate = clone4(txRequest);
|
5257
|
-
if (addedSignatures) {
|
5258
|
-
Array.from({ length: addedSignatures }).forEach(
|
5259
|
-
() => requestToBeReEstimate.addEmptyWitness()
|
5260
|
-
);
|
5018
|
+
const resources = await this.getResourcesToSpend(missingQuantities, {
|
5019
|
+
messages: cachedMessages,
|
5020
|
+
utxos: cachedUtxos
|
5021
|
+
});
|
5022
|
+
request.addResources(resources);
|
5261
5023
|
}
|
5262
|
-
const { maxFee } = await this.provider.estimateTxGasAndFee({
|
5263
|
-
transactionRequest: requestToBeReEstimate
|
5264
|
-
});
|
5265
|
-
txRequest.maxFee = maxFee;
|
5266
|
-
return txRequest;
|
5267
5024
|
}
|
5268
5025
|
/**
|
5269
5026
|
* A helper that creates a transfer transaction request and returns it.
|
@@ -5271,25 +5028,28 @@ var Account = class extends AbstractAccount {
|
|
5271
5028
|
* @param destination - The address of the destination.
|
5272
5029
|
* @param amount - The amount of coins to transfer.
|
5273
5030
|
* @param assetId - The asset ID of the coins to transfer.
|
5274
|
-
* @param txParams - The transaction parameters (gasLimit,
|
5031
|
+
* @param txParams - The transaction parameters (gasLimit, gasPrice, maturity).
|
5275
5032
|
* @returns A promise that resolves to the prepared transaction request.
|
5276
5033
|
*/
|
5277
5034
|
async createTransfer(destination, amount, assetId = BaseAssetId3, txParams = {}) {
|
5278
|
-
const
|
5035
|
+
const { minGasPrice } = this.provider.getGasConfig();
|
5036
|
+
const params = { gasPrice: minGasPrice, ...txParams };
|
5037
|
+
const request = new ScriptTransactionRequest(params);
|
5279
5038
|
request.addCoinOutput(Address3.fromAddressOrString(destination), amount, assetId);
|
5280
|
-
const
|
5039
|
+
const { maxFee, requiredQuantities, gasUsed, estimatedInputs } = await this.provider.getTransactionCost(request, [], {
|
5281
5040
|
estimateTxDependencies: true,
|
5282
5041
|
resourcesOwner: this
|
5283
5042
|
});
|
5284
|
-
|
5285
|
-
|
5286
|
-
|
5287
|
-
|
5288
|
-
|
5289
|
-
|
5290
|
-
|
5291
|
-
|
5292
|
-
await this.fund(request,
|
5043
|
+
request.gasPrice = bn17(txParams.gasPrice ?? minGasPrice);
|
5044
|
+
request.gasLimit = bn17(txParams.gasLimit ?? gasUsed);
|
5045
|
+
this.validateGas({
|
5046
|
+
gasUsed,
|
5047
|
+
gasPrice: request.gasPrice,
|
5048
|
+
gasLimit: request.gasLimit,
|
5049
|
+
minGasPrice
|
5050
|
+
});
|
5051
|
+
await this.fund(request, requiredQuantities, maxFee);
|
5052
|
+
request.updatePredicateInputs(estimatedInputs);
|
5293
5053
|
return request;
|
5294
5054
|
}
|
5295
5055
|
/**
|
@@ -5302,7 +5062,7 @@ var Account = class extends AbstractAccount {
|
|
5302
5062
|
* @returns A promise that resolves to the transaction response.
|
5303
5063
|
*/
|
5304
5064
|
async transfer(destination, amount, assetId = BaseAssetId3, txParams = {}) {
|
5305
|
-
if (
|
5065
|
+
if (bn17(amount).lte(0)) {
|
5306
5066
|
throw new FuelError15(
|
5307
5067
|
ErrorCode15.INVALID_TRANSFER_AMOUNT,
|
5308
5068
|
"Transfer amount must be a positive number."
|
@@ -5321,37 +5081,38 @@ var Account = class extends AbstractAccount {
|
|
5321
5081
|
* @returns A promise that resolves to the transaction response.
|
5322
5082
|
*/
|
5323
5083
|
async transferToContract(contractId, amount, assetId = BaseAssetId3, txParams = {}) {
|
5324
|
-
if (
|
5084
|
+
if (bn17(amount).lte(0)) {
|
5325
5085
|
throw new FuelError15(
|
5326
5086
|
ErrorCode15.INVALID_TRANSFER_AMOUNT,
|
5327
5087
|
"Transfer amount must be a positive number."
|
5328
5088
|
);
|
5329
5089
|
}
|
5330
5090
|
const contractAddress = Address3.fromAddressOrString(contractId);
|
5091
|
+
const { minGasPrice } = this.provider.getGasConfig();
|
5092
|
+
const params = { gasPrice: minGasPrice, ...txParams };
|
5331
5093
|
const { script, scriptData } = await assembleTransferToContractScript({
|
5332
5094
|
hexlifiedContractId: contractAddress.toB256(),
|
5333
|
-
amountToTransfer:
|
5095
|
+
amountToTransfer: bn17(amount),
|
5334
5096
|
assetId
|
5335
5097
|
});
|
5336
5098
|
const request = new ScriptTransactionRequest({
|
5337
|
-
...
|
5099
|
+
...params,
|
5338
5100
|
script,
|
5339
5101
|
scriptData
|
5340
5102
|
});
|
5341
5103
|
request.addContractInputAndOutput(contractAddress);
|
5342
|
-
const
|
5343
|
-
|
5344
|
-
|
5104
|
+
const { maxFee, requiredQuantities, gasUsed } = await this.provider.getTransactionCost(
|
5105
|
+
request,
|
5106
|
+
[{ amount: bn17(amount), assetId: String(assetId) }]
|
5107
|
+
);
|
5108
|
+
request.gasLimit = bn17(params.gasLimit ?? gasUsed);
|
5109
|
+
this.validateGas({
|
5110
|
+
gasUsed,
|
5111
|
+
gasPrice: request.gasPrice,
|
5112
|
+
gasLimit: request.gasLimit,
|
5113
|
+
minGasPrice
|
5345
5114
|
});
|
5346
|
-
|
5347
|
-
this.validateGas({
|
5348
|
-
gasUsed: txCost.gasUsed,
|
5349
|
-
gasLimit: request.gasLimit
|
5350
|
-
});
|
5351
|
-
}
|
5352
|
-
request.gasLimit = txCost.gasUsed;
|
5353
|
-
request.maxFee = txCost.maxFee;
|
5354
|
-
await this.fund(request, txCost);
|
5115
|
+
await this.fund(request, requiredQuantities, maxFee);
|
5355
5116
|
return this.sendTransaction(request);
|
5356
5117
|
}
|
5357
5118
|
/**
|
@@ -5363,31 +5124,34 @@ var Account = class extends AbstractAccount {
|
|
5363
5124
|
* @returns A promise that resolves to the transaction response.
|
5364
5125
|
*/
|
5365
5126
|
async withdrawToBaseLayer(recipient, amount, txParams = {}) {
|
5127
|
+
const { minGasPrice } = this.provider.getGasConfig();
|
5366
5128
|
const recipientAddress = Address3.fromAddressOrString(recipient);
|
5367
5129
|
const recipientDataArray = arrayify14(
|
5368
5130
|
"0x".concat(recipientAddress.toHexString().substring(2).padStart(64, "0"))
|
5369
5131
|
);
|
5370
5132
|
const amountDataArray = arrayify14(
|
5371
|
-
"0x".concat(
|
5133
|
+
"0x".concat(bn17(amount).toHex().substring(2).padStart(16, "0"))
|
5372
5134
|
);
|
5373
5135
|
const script = new Uint8Array([
|
5374
5136
|
...arrayify14(withdrawScript.bytes),
|
5375
5137
|
...recipientDataArray,
|
5376
5138
|
...amountDataArray
|
5377
5139
|
]);
|
5378
|
-
const params = { script, ...txParams };
|
5140
|
+
const params = { script, gasPrice: minGasPrice, ...txParams };
|
5379
5141
|
const request = new ScriptTransactionRequest(params);
|
5380
|
-
const
|
5381
|
-
const
|
5382
|
-
|
5383
|
-
|
5384
|
-
|
5385
|
-
|
5386
|
-
|
5387
|
-
|
5388
|
-
|
5389
|
-
|
5390
|
-
|
5142
|
+
const forwardingQuantities = [{ amount: bn17(amount), assetId: BaseAssetId3 }];
|
5143
|
+
const { requiredQuantities, maxFee, gasUsed } = await this.provider.getTransactionCost(
|
5144
|
+
request,
|
5145
|
+
forwardingQuantities
|
5146
|
+
);
|
5147
|
+
request.gasLimit = bn17(params.gasLimit ?? gasUsed);
|
5148
|
+
this.validateGas({
|
5149
|
+
gasUsed,
|
5150
|
+
gasPrice: request.gasPrice,
|
5151
|
+
gasLimit: request.gasLimit,
|
5152
|
+
minGasPrice
|
5153
|
+
});
|
5154
|
+
await this.fund(request, requiredQuantities, maxFee);
|
5391
5155
|
return this.sendTransaction(request);
|
5392
5156
|
}
|
5393
5157
|
async signMessage(message) {
|
@@ -5445,7 +5209,18 @@ var Account = class extends AbstractAccount {
|
|
5445
5209
|
}
|
5446
5210
|
return this.provider.simulate(transactionRequest, { estimateTxDependencies: false });
|
5447
5211
|
}
|
5448
|
-
validateGas({
|
5212
|
+
validateGas({
|
5213
|
+
gasUsed,
|
5214
|
+
gasPrice,
|
5215
|
+
gasLimit,
|
5216
|
+
minGasPrice
|
5217
|
+
}) {
|
5218
|
+
if (minGasPrice.gt(gasPrice)) {
|
5219
|
+
throw new FuelError15(
|
5220
|
+
ErrorCode15.GAS_PRICE_TOO_LOW,
|
5221
|
+
`Gas price '${gasPrice}' is lower than the required: '${minGasPrice}'.`
|
5222
|
+
);
|
5223
|
+
}
|
5449
5224
|
if (gasUsed.gt(gasLimit)) {
|
5450
5225
|
throw new FuelError15(
|
5451
5226
|
ErrorCode15.GAS_LIMIT_TOO_LOW,
|
@@ -5741,7 +5516,7 @@ var BaseWalletUnlocked = class extends Account {
|
|
5741
5516
|
* @param transactionRequestLike - The transaction request to send.
|
5742
5517
|
* @returns A promise that resolves to the TransactionResponse object.
|
5743
5518
|
*/
|
5744
|
-
async sendTransaction(transactionRequestLike, { estimateTxDependencies =
|
5519
|
+
async sendTransaction(transactionRequestLike, { estimateTxDependencies = true, awaitExecution } = {}) {
|
5745
5520
|
const transactionRequest = transactionRequestify(transactionRequestLike);
|
5746
5521
|
if (estimateTxDependencies) {
|
5747
5522
|
await this.provider.estimateTxDependencies(transactionRequest);
|
@@ -5782,7 +5557,7 @@ __publicField(BaseWalletUnlocked, "defaultPath", "m/44'/1179993420'/0'/0/0");
|
|
5782
5557
|
// src/hdwallet/hdwallet.ts
|
5783
5558
|
import { ErrorCode as ErrorCode19, FuelError as FuelError19 } from "@fuel-ts/errors";
|
5784
5559
|
import { sha256 as sha2564 } from "@fuel-ts/hasher";
|
5785
|
-
import { bn as
|
5560
|
+
import { bn as bn18, toBytes as toBytes2, toHex } from "@fuel-ts/math";
|
5786
5561
|
import { arrayify as arrayify18, hexlify as hexlify17, concat as concat5 } from "@fuel-ts/utils";
|
5787
5562
|
import { toBeHex, dataSlice as dataSlice2, encodeBase58 as encodeBase582, decodeBase58, computeHmac as computeHmac2, ripemd160 } from "ethers";
|
5788
5563
|
|
@@ -8254,7 +8029,7 @@ var HDWallet = class {
|
|
8254
8029
|
const IR = bytes.slice(32);
|
8255
8030
|
if (privateKey) {
|
8256
8031
|
const N = "0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141";
|
8257
|
-
const ki =
|
8032
|
+
const ki = bn18(IL).add(privateKey).mod(N).toBytes(32);
|
8258
8033
|
return new HDWallet({
|
8259
8034
|
privateKey: ki,
|
8260
8035
|
chainCode: IR,
|
@@ -8943,7 +8718,7 @@ import {
|
|
8943
8718
|
import { Address as Address9 } from "@fuel-ts/address";
|
8944
8719
|
import { BaseAssetId as BaseAssetId4 } from "@fuel-ts/address/configs";
|
8945
8720
|
import { ErrorCode as ErrorCode24, FuelError as FuelError24 } from "@fuel-ts/errors";
|
8946
|
-
import { ByteArrayCoder
|
8721
|
+
import { ByteArrayCoder } from "@fuel-ts/transactions";
|
8947
8722
|
import { arrayify as arrayify20, hexlify as hexlify19 } from "@fuel-ts/utils";
|
8948
8723
|
|
8949
8724
|
// src/predicate/utils/getPredicateRoot.ts
|
@@ -9002,10 +8777,15 @@ var Predicate = class extends Account {
|
|
9002
8777
|
populateTransactionPredicateData(transactionRequestLike) {
|
9003
8778
|
const request = transactionRequestify(transactionRequestLike);
|
9004
8779
|
const { policies } = BaseTransactionRequest.getPolicyMeta(request);
|
9005
|
-
|
9006
|
-
|
9007
|
-
|
9008
|
-
|
8780
|
+
const placeholderIndex = this.getIndexFromPlaceholderWitness(request);
|
8781
|
+
if (placeholderIndex !== -1) {
|
8782
|
+
request.removeWitness(placeholderIndex);
|
8783
|
+
}
|
8784
|
+
request.inputs.filter(isRequestInputResource).forEach((input) => {
|
8785
|
+
if (isRequestInputResourceFromOwner(input, this.address)) {
|
8786
|
+
input.predicate = this.bytes;
|
8787
|
+
input.predicateData = this.getPredicateData(policies.length);
|
8788
|
+
input.witnessIndex = 0;
|
9009
8789
|
}
|
9010
8790
|
});
|
9011
8791
|
return request;
|
@@ -9020,7 +8800,8 @@ var Predicate = class extends Account {
|
|
9020
8800
|
* @returns A promise that resolves to the prepared transaction request.
|
9021
8801
|
*/
|
9022
8802
|
async createTransfer(destination, amount, assetId = BaseAssetId4, txParams = {}) {
|
9023
|
-
|
8803
|
+
const request = await super.createTransfer(destination, amount, assetId, txParams);
|
8804
|
+
return this.populateTransactionPredicateData(request);
|
9024
8805
|
}
|
9025
8806
|
/**
|
9026
8807
|
* Sends a transaction with the populated predicate data.
|
@@ -9028,9 +8809,9 @@ var Predicate = class extends Account {
|
|
9028
8809
|
* @param transactionRequestLike - The transaction request-like object.
|
9029
8810
|
* @returns A promise that resolves to the transaction response.
|
9030
8811
|
*/
|
9031
|
-
sendTransaction(transactionRequestLike) {
|
9032
|
-
const transactionRequest =
|
9033
|
-
return super.sendTransaction(transactionRequest,
|
8812
|
+
sendTransaction(transactionRequestLike, options) {
|
8813
|
+
const transactionRequest = this.populateTransactionPredicateData(transactionRequestLike);
|
8814
|
+
return super.sendTransaction(transactionRequest, options);
|
9034
8815
|
}
|
9035
8816
|
/**
|
9036
8817
|
* Simulates a transaction with the populated predicate data.
|
@@ -9039,8 +8820,22 @@ var Predicate = class extends Account {
|
|
9039
8820
|
* @returns A promise that resolves to the call result.
|
9040
8821
|
*/
|
9041
8822
|
simulateTransaction(transactionRequestLike) {
|
9042
|
-
const transactionRequest =
|
9043
|
-
return super.simulateTransaction(transactionRequest
|
8823
|
+
const transactionRequest = this.populateTransactionPredicateData(transactionRequestLike);
|
8824
|
+
return super.simulateTransaction(transactionRequest);
|
8825
|
+
}
|
8826
|
+
/**
|
8827
|
+
* Retrieves resources satisfying the spend query for the account.
|
8828
|
+
*
|
8829
|
+
* @param quantities - Coins to retrieve.
|
8830
|
+
* @param excludedIds - IDs of resources to be excluded from the query.
|
8831
|
+
* @returns A promise that resolves to an array of Resources.
|
8832
|
+
*/
|
8833
|
+
async getResourcesToSpend(quantities, excludedIds) {
|
8834
|
+
const resources = await super.getResourcesToSpend(quantities, excludedIds);
|
8835
|
+
return resources.map((resource) => ({
|
8836
|
+
...resource,
|
8837
|
+
predicate: hexlify19(this.bytes)
|
8838
|
+
}));
|
9044
8839
|
}
|
9045
8840
|
getPredicateData(policiesLength) {
|
9046
8841
|
if (!this.predicateData.length) {
|
@@ -9086,25 +8881,6 @@ var Predicate = class extends Account {
|
|
9086
8881
|
predicateInterface: abiInterface
|
9087
8882
|
};
|
9088
8883
|
}
|
9089
|
-
/**
|
9090
|
-
* Retrieves resources satisfying the spend query for the account.
|
9091
|
-
*
|
9092
|
-
* @param quantities - IDs of coins to exclude.
|
9093
|
-
* @param excludedIds - IDs of resources to be excluded from the query.
|
9094
|
-
* @returns A promise that resolves to an array of Resources.
|
9095
|
-
*/
|
9096
|
-
async getResourcesToSpend(quantities, excludedIds) {
|
9097
|
-
const resources = await this.provider.getResourcesToSpend(
|
9098
|
-
this.address,
|
9099
|
-
quantities,
|
9100
|
-
excludedIds
|
9101
|
-
);
|
9102
|
-
return resources.map((resource) => ({
|
9103
|
-
...resource,
|
9104
|
-
predicate: hexlify19(this.bytes),
|
9105
|
-
paddPredicateData: (policiesLength) => hexlify19(this.getPredicateData(policiesLength))
|
9106
|
-
}));
|
9107
|
-
}
|
9108
8884
|
/**
|
9109
8885
|
* Sets the configurable constants for the predicate.
|
9110
8886
|
*
|
@@ -9140,6 +8916,28 @@ var Predicate = class extends Account {
|
|
9140
8916
|
}
|
9141
8917
|
return mutatedBytes;
|
9142
8918
|
}
|
8919
|
+
/**
|
8920
|
+
* Returns the index of the witness placeholder that was added to this predicate.
|
8921
|
+
* If no witness placeholder was added, it returns -1.
|
8922
|
+
* @param request - The transaction request.
|
8923
|
+
* @returns The index of the witness placeholder, or -1 if there is no witness placeholder.
|
8924
|
+
*/
|
8925
|
+
getIndexFromPlaceholderWitness(request) {
|
8926
|
+
const predicateInputs = request.inputs.filter(isRequestInputResource).filter((input) => isRequestInputResourceFromOwner(input, this.address));
|
8927
|
+
let index = -1;
|
8928
|
+
const hasEmptyPredicateInputs = predicateInputs.find((input) => !input.predicate);
|
8929
|
+
if (hasEmptyPredicateInputs) {
|
8930
|
+
index = hasEmptyPredicateInputs.witnessIndex;
|
8931
|
+
const allInputsAreEmpty = predicateInputs.every((input) => !input.predicate);
|
8932
|
+
if (!allInputsAreEmpty) {
|
8933
|
+
const wasFilledInputAddedFirst = !!predicateInputs[0]?.predicate;
|
8934
|
+
if (wasFilledInputAddedFirst) {
|
8935
|
+
index = -1;
|
8936
|
+
}
|
8937
|
+
}
|
8938
|
+
}
|
8939
|
+
return index;
|
8940
|
+
}
|
9143
8941
|
};
|
9144
8942
|
|
9145
8943
|
// src/connectors/fuel.ts
|
@@ -9853,7 +9651,7 @@ export {
|
|
9853
9651
|
WalletLocked,
|
9854
9652
|
WalletManager,
|
9855
9653
|
WalletUnlocked,
|
9856
|
-
|
9654
|
+
addAmountToAsset,
|
9857
9655
|
addOperation,
|
9858
9656
|
assemblePanicError,
|
9859
9657
|
assembleReceiptByType,
|
@@ -9862,10 +9660,10 @@ export {
|
|
9862
9660
|
assets,
|
9863
9661
|
buildBlockExplorerUrl,
|
9864
9662
|
cacheFor,
|
9865
|
-
|
9866
|
-
calculateGasFee,
|
9663
|
+
cacheResources,
|
9867
9664
|
calculateMetadataGasForTxCreate,
|
9868
9665
|
calculateMetadataGasForTxScript,
|
9666
|
+
calculatePriceWithFactor,
|
9869
9667
|
calculateTransactionFee,
|
9870
9668
|
coinQuantityfy,
|
9871
9669
|
deferPromise,
|
@@ -9909,6 +9707,7 @@ export {
|
|
9909
9707
|
getReceiptsMessageOut,
|
9910
9708
|
getReceiptsTransferOut,
|
9911
9709
|
getReceiptsWithMissingData,
|
9710
|
+
getRequestInputResourceOwner,
|
9912
9711
|
getTransactionStatusName,
|
9913
9712
|
getTransactionSummary,
|
9914
9713
|
getTransactionSummaryFromRequest,
|
@@ -9922,6 +9721,10 @@ export {
|
|
9922
9721
|
isMessage,
|
9923
9722
|
isRawCoin,
|
9924
9723
|
isRawMessage,
|
9724
|
+
isRequestInputCoin,
|
9725
|
+
isRequestInputMessage,
|
9726
|
+
isRequestInputResource,
|
9727
|
+
isRequestInputResourceFromOwner,
|
9925
9728
|
isType,
|
9926
9729
|
isTypeCreate,
|
9927
9730
|
isTypeMint,
|