@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.

Files changed (66) hide show
  1. package/README.md +1 -1
  2. package/dist/account.d.ts +4 -5
  3. package/dist/account.d.ts.map +1 -1
  4. package/dist/configs.d.ts.map +1 -1
  5. package/dist/configs.global.js +1 -1
  6. package/dist/configs.global.js.map +1 -1
  7. package/dist/configs.js +1 -1
  8. package/dist/configs.js.map +1 -1
  9. package/dist/configs.mjs +1 -1
  10. package/dist/configs.mjs.map +1 -1
  11. package/dist/index.global.js +596 -797
  12. package/dist/index.global.js.map +1 -1
  13. package/dist/index.js +633 -825
  14. package/dist/index.js.map +1 -1
  15. package/dist/index.mjs +451 -648
  16. package/dist/index.mjs.map +1 -1
  17. package/dist/predicate/predicate.d.ts +18 -11
  18. package/dist/predicate/predicate.d.ts.map +1 -1
  19. package/dist/providers/__generated__/operations.d.ts +329 -911
  20. package/dist/providers/__generated__/operations.d.ts.map +1 -1
  21. package/dist/providers/coin-quantity.d.ts +1 -1
  22. package/dist/providers/coin-quantity.d.ts.map +1 -1
  23. package/dist/providers/coin.d.ts +1 -2
  24. package/dist/providers/coin.d.ts.map +1 -1
  25. package/dist/providers/message.d.ts +1 -6
  26. package/dist/providers/message.d.ts.map +1 -1
  27. package/dist/providers/provider.d.ts +27 -37
  28. package/dist/providers/provider.d.ts.map +1 -1
  29. package/dist/providers/transaction-request/create-transaction-request.d.ts.map +1 -1
  30. package/dist/providers/transaction-request/helpers.d.ts +10 -0
  31. package/dist/providers/transaction-request/helpers.d.ts.map +1 -0
  32. package/dist/providers/transaction-request/index.d.ts +1 -0
  33. package/dist/providers/transaction-request/index.d.ts.map +1 -1
  34. package/dist/providers/transaction-request/input.d.ts +2 -2
  35. package/dist/providers/transaction-request/input.d.ts.map +1 -1
  36. package/dist/providers/transaction-request/script-transaction-request.d.ts.map +1 -1
  37. package/dist/providers/transaction-request/transaction-request.d.ts +7 -6
  38. package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
  39. package/dist/providers/transaction-request/utils.d.ts +0 -3
  40. package/dist/providers/transaction-request/utils.d.ts.map +1 -1
  41. package/dist/providers/transaction-response/transaction-response.d.ts.map +1 -1
  42. package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts +0 -2
  43. package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts.map +1 -1
  44. package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts +2 -3
  45. package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts.map +1 -1
  46. package/dist/providers/transaction-summary/get-transaction-summary.d.ts.map +1 -1
  47. package/dist/providers/utils/gas.d.ts +2 -8
  48. package/dist/providers/utils/gas.d.ts.map +1 -1
  49. package/dist/test-utils/index.d.ts +1 -0
  50. package/dist/test-utils/index.d.ts.map +1 -1
  51. package/dist/test-utils/launchNode.d.ts.map +1 -1
  52. package/dist/test-utils/resources.d.ts +4 -0
  53. package/dist/test-utils/resources.d.ts.map +1 -0
  54. package/dist/test-utils/seedTestWallet.d.ts +1 -1
  55. package/dist/test-utils/seedTestWallet.d.ts.map +1 -1
  56. package/dist/test-utils/transactionRequest.d.ts +5 -0
  57. package/dist/test-utils/transactionRequest.d.ts.map +1 -0
  58. package/dist/test-utils.global.js +1085 -1547
  59. package/dist/test-utils.global.js.map +1 -1
  60. package/dist/test-utils.js +608 -804
  61. package/dist/test-utils.js.map +1 -1
  62. package/dist/test-utils.mjs +442 -641
  63. package/dist/test-utils.mjs.map +1 -1
  64. package/dist/wallet/base-wallet-unlocked.d.ts +2 -2
  65. package/dist/wallet/base-wallet-unlocked.d.ts.map +1 -1
  66. 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 bn18 } from "@fuel-ts/math";
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 max;
45
+ let max2;
47
46
  if (Array.isArray(coinQuantityLike)) {
48
47
  amount = coinQuantityLike[0];
49
48
  assetId = coinQuantityLike[1] ?? BaseAssetId;
50
- max = coinQuantityLike[2] ?? void 0;
49
+ max2 = coinQuantityLike[2] ?? void 0;
51
50
  } else {
52
51
  amount = coinQuantityLike.amount;
53
52
  assetId = coinQuantityLike.assetId ?? BaseAssetId;
54
- max = coinQuantityLike.max ?? void 0;
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: max ? bn(max) : void 0
59
+ max: max2 ? bn(max2) : void 0
61
60
  };
62
61
  };
63
- var addAmountToCoinQuantities = (params) => {
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 bn16 } from "@fuel-ts/math";
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
- id
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
- ${ReceiptFragmentFragmentDoc}`;
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
- ${TransactionStatusFragmentFragmentDoc}`;
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($encodedTransactions: [HexString!]!, $utxoValidation: Boolean) {
838
- dryRun(txs: $encodedTransactions, utxoValidation: $utxoValidation) {
839
- ...dryRunTransactionExecutionStatusFragment
778
+ mutation dryRun($encodedTransaction: HexString!, $utxoValidation: Boolean) {
779
+ dryRun(tx: $encodedTransaction, utxoValidation: $utxoValidation) {
780
+ ...receiptFragment
840
781
  }
841
782
  }
842
- ${DryRunTransactionExecutionStatusFragmentFragmentDoc}`;
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: bn2(predicate.length),
1126
- predicateDataLength: bn2(predicateData.length),
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: bn2(predicate.length),
1158
- predicateDataLength: bn2(predicateData.length),
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 InputType2,
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 || receipt.contractId),
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 || receipt.contractId),
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 || receipt.contractId),
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 || receipt.contractId),
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 || receipt.contractId),
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 || receipt.contractId),
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 || receipt.contractId),
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 || receipt.contractId),
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 || receipt.contractId);
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 || receipt.contractId);
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 chargeableInputs = inputs.filter((input) => {
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
- vmInitializationCost.add(resolveGasDependentCosts(arrayify3(input.predicate).length, gasCosts.contractRoot)).add(bn5(input.predicateGasUsed))
1489
+ resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization).add(resolveGasDependentCosts(arrayify3(input.predicate).length, gasCosts.contractRoot)).add(bn5(input.predicateGasUsed))
1567
1490
  );
1568
1491
  }
1569
- return total.add(gasCosts.ecr1);
1570
- }, bn5(0));
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
- const maxGas = remainingAllowedWitnessGas.add(minGas).add(gasLimit);
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
- tip;
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
- tip,
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.tip = bn7(tip);
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.tip) {
1816
- policyTypes += PolicyType.Tip;
1817
- policies.push({ data: req.tip, type: PolicyType.Tip });
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 === InputType2.Coin
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 InputType2.Coin:
1923
+ case InputType3.Coin:
1987
1924
  return hexlify7(input.owner) === ownerAddress.toB256();
1988
- case InputType2.Message:
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 (coin.predicate) {
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
- ...coin,
2017
- type: InputType2.Coin,
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 (message.predicate) {
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
- ...message,
2049
- type: InputType2.Message,
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, maxGasPerTx } = consensusParameters;
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 = usedQuantity;
2131
+ assetInput.amount = quantity;
2198
2132
  } else {
2199
2133
  this.addResources([
2200
2134
  {
2201
2135
  id: hexlify7(randomBytes(UTXO_ID_LEN2)),
2202
- amount: usedQuantity,
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
- updatePredicateGasUsed(inputs) {
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 InputType2.Coin:
2241
- correspondingInput = inputs.find((x) => x.type === InputType2.Coin && x.owner === i.owner);
2179
+ case InputType3.Coin:
2180
+ correspondingInput = inputs.find((x) => x.type === InputType3.Coin && x.owner === i.owner);
2242
2181
  break;
2243
- case InputType2.Message:
2182
+ case InputType3.Message:
2244
2183
  correspondingInput = inputs.find(
2245
- (x) => x.type === InputType2.Message && x.sender === i.sender
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
- shiftPredicateData() {
2259
- this.inputs.forEach((input) => {
2260
- if ("predicateData" in input && "paddPredicateData" in input && typeof input.paddPredicateData === "function") {
2261
- input.predicateData = input.paddPredicateData(
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 InputType3, OutputType as OutputType3, TransactionCoder as TransactionCoder2 } from "@fuel-ts/transactions";
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 InputType3.Coin: {
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 InputType3.Message: {
2235
+ case InputType4.Message: {
2299
2236
  inputClone.predicateGasUsed = bn8(0);
2300
2237
  return inputClone;
2301
2238
  }
2302
- case InputType3.Contract: {
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: bn9(storageSlots.length),
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 InputType4, OutputType as OutputType5, TransactionType as TransactionType4 } from "@fuel-ts/transactions";
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: bn10(script.length),
2538
- scriptDataLength: bn10(scriptData.length),
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 === InputType4.Contract
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, maxGasPerTx } = consensusParameters;
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: InputType4.Contract,
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, InputType as InputType5 } from "@fuel-ts/transactions";
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 bn15 } from "@fuel-ts/math";
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
- gasPrice,
2641
+ gasUsed,
2722
2642
  rawPayload,
2723
- tip,
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
- fee: maxFee
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
- gasPrice,
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 = bn15(0);
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
- let txReceipts = [];
3567
- if (transaction?.status && "receipts" in transaction.status) {
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: bn16(daHeight),
3614
+ baseChainHeight: bn15(daHeight),
3714
3615
  consensusParameters: {
3715
- contractMaxSize: bn16(contractParams.contractMaxSize),
3716
- maxInputs: bn16(txParams.maxInputs),
3717
- maxOutputs: bn16(txParams.maxOutputs),
3718
- maxWitnesses: bn16(txParams.maxWitnesses),
3719
- maxGasPerTx: bn16(txParams.maxGasPerTx),
3720
- maxScriptLength: bn16(scriptParams.maxScriptLength),
3721
- maxScriptDataLength: bn16(scriptParams.maxScriptDataLength),
3722
- maxStorageSlots: bn16(contractParams.maxStorageSlots),
3723
- maxPredicateLength: bn16(predicateParams.maxPredicateLength),
3724
- maxPredicateDataLength: bn16(predicateParams.maxPredicateDataLength),
3725
- maxGasPerPredicate: bn16(predicateParams.maxGasPerPredicate),
3726
- gasPriceFactor: bn16(feeParams.gasPriceFactor),
3727
- gasPerByte: bn16(feeParams.gasPerByte),
3728
- maxMessageDataLength: bn16(predicateParams.maxMessageDataLength),
3729
- chainId: bn16(consensusParameters.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: bn16(latestBlock.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 bn16(chain.latestBlock.height, 10);
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: bn16(nodeInfo.maxDepth),
3939
- maxTx: bn16(nodeInfo.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: dryRunStatuses } = await this.operations.dryRun({
4029
- encodedTransactions: encodedTransaction,
3933
+ const { dryRun: gqlReceipts } = await this.operations.dryRun({
3934
+ encodedTransaction,
4030
3935
  utxoValidation: utxoValidation || false
4031
3936
  });
4032
- const [{ receipts: rawReceipts, status }] = dryRunStatuses;
4033
- const receipts = rawReceipts.map(processGqlReceipt);
4034
- return { receipts, dryrunStatus: status };
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 && bn16(input.predicateGasUsed).gt(0)) {
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
- dryRun: [{ receipts: rawReceipts, status }]
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 = rawReceipts.map(processGqlReceipt);
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
- async estimateTxGasAndFee(params) {
4028
+ estimateTxGasAndFee(params) {
4212
4029
  const { transactionRequest } = params;
4213
- let { gasPrice } = params;
4030
+ const { gasPriceFactor, minGasPrice, maxGasPerTx } = this.getGasConfig();
4214
4031
  const chainInfo = this.getChain();
4215
- const { gasPriceFactor, maxGasPerTx } = this.getGasConfig();
4032
+ const gasPrice = transactionRequest.gasPrice.eq(0) ? minGasPrice : transactionRequest.gasPrice;
4033
+ transactionRequest.gasPrice = gasPrice;
4216
4034
  const minGas = transactionRequest.calculateMinGas(chainInfo);
4217
- if (!gasPrice) {
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 = calculateGasFee({
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 encodedTransactions = [hexlify12(transactionRequest.toTransactionBytes())];
4269
- const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4270
- encodedTransactions,
4068
+ const encodedTransaction = hexlify12(transactionRequest.toTransactionBytes());
4069
+ const { dryRun: gqlReceipts } = await this.operations.dryRun({
4070
+ encodedTransaction,
4271
4071
  utxoValidation: true
4272
4072
  });
4273
- const callResult = dryRunStatuses.map((dryRunStatus) => {
4274
- const { id, receipts, status } = dryRunStatus;
4275
- const processedReceipts = receipts.map(processGqlReceipt);
4276
- return { id, receipts: processedReceipts, status };
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, { resourcesOwner, signatureCallback, quantitiesToContract = [] } = {}) {
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, quantitiesToContract);
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 = bn16(0);
4107
+ txRequestClone.gasLimit = bn15(0);
4304
4108
  }
4305
- if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
4306
- resourcesOwner.populateTransactionPredicateData(txRequestClone);
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
- const lengthBefore = signedRequest.witnesses.length;
4312
- await signatureCallback(signedRequest);
4313
- addedSignatures = signedRequest.witnesses.length - lengthBefore;
4116
+ await signatureCallback(txRequestClone);
4314
4117
  }
4315
- await this.estimatePredicates(signedRequest);
4316
- let { maxFee, maxGas, minFee, minGas, gasPrice, gasLimit } = await this.estimateTxGasAndFee({
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 = bn16(0);
4323
- txRequestClone.updatePredicateGasUsed(signedRequest.inputs);
4324
- txRequestClone.maxFee = maxFee;
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
- ({ maxFee, maxGas, minFee, minGas, gasPrice } = await this.estimateTxGasAndFee({
4337
- transactionRequest: txRequestClone,
4338
- gasPrice
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
- gasPrice,
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, quantitiesToContract = []) {
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(transactionRequest, {
4366
- quantitiesToContract
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: bn16(coin.amount),
4185
+ amount: bn15(coin.amount),
4390
4186
  owner: Address2.fromAddressOrString(coin.owner),
4391
- blockCreated: bn16(coin.blockCreated),
4392
- txCreatedIdx: bn16(coin.txCreatedIdx)
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: bn16(coin.amount),
4226
+ amount: bn15(coin.amount),
4430
4227
  assetId: coin.assetId,
4431
- daHeight: bn16(coin.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: bn16(coin.amount),
4236
+ amount: bn15(coin.amount),
4440
4237
  assetId: coin.assetId,
4441
4238
  owner: Address2.fromAddressOrString(coin.owner),
4442
- blockCreated: bn16(coin.blockCreated),
4443
- txCreatedIdx: bn16(coin.txCreatedIdx)
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: bn16(idOrHeight).toString(10) };
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: bn16(idOrHeight).toString(10) };
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: bn16(block.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: bn16(block.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: bn16(idOrHeight).toString(10) };
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: bn16(block.height, 10),
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 bn16(contractBalance.amount, 10);
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 bn16(balance.amount, 10);
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: bn16(balance.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: bn16(message.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: bn16(message.amount),
4423
+ amount: bn15(message.amount),
4626
4424
  data: InputMessageCoder.decodeData(message.data),
4627
- daHeight: bn16(message.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: bn16(messageProof.proofIndex),
4478
+ proofIndex: bn15(messageProof.proofIndex),
4681
4479
  proofSet: messageProof.proofSet
4682
4480
  },
4683
4481
  blockProof: {
4684
- proofIndex: bn16(blockProof.proofIndex),
4482
+ proofIndex: bn15(blockProof.proofIndex),
4685
4483
  proofSet: blockProof.proofSet
4686
4484
  },
4687
4485
  messageBlockHeader: {
4688
4486
  id: messageBlockHeader.id,
4689
- daHeight: bn16(messageBlockHeader.daHeight),
4690
- transactionsCount: bn16(messageBlockHeader.transactionsCount),
4487
+ daHeight: bn15(messageBlockHeader.daHeight),
4488
+ transactionsCount: bn15(messageBlockHeader.transactionsCount),
4691
4489
  transactionsRoot: messageBlockHeader.transactionsRoot,
4692
- height: bn16(messageBlockHeader.height),
4490
+ height: bn15(messageBlockHeader.height),
4693
4491
  prevRoot: messageBlockHeader.prevRoot,
4694
4492
  time: messageBlockHeader.time,
4695
4493
  applicationHash: messageBlockHeader.applicationHash,
4696
- messageReceiptCount: bn16(messageBlockHeader.messageReceiptCount),
4697
- messageOutboxRoot: messageBlockHeader.messageOutboxRoot,
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: bn16(commitBlockHeader.daHeight),
4705
- transactionsCount: bn16(commitBlockHeader.transactionsCount),
4499
+ daHeight: bn15(commitBlockHeader.daHeight),
4500
+ transactionsCount: bn15(commitBlockHeader.transactionsCount),
4706
4501
  transactionsRoot: commitBlockHeader.transactionsRoot,
4707
- height: bn16(commitBlockHeader.height),
4502
+ height: bn15(commitBlockHeader.height),
4708
4503
  prevRoot: commitBlockHeader.prevRoot,
4709
4504
  time: commitBlockHeader.time,
4710
4505
  applicationHash: commitBlockHeader.applicationHash,
4711
- messageReceiptCount: bn16(commitBlockHeader.messageReceiptCount),
4712
- messageOutboxRoot: commitBlockHeader.messageOutboxRoot,
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: bn16(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: bn16(amount).toString(10),
4535
+ blocksToProduce: bn15(amount).toString(10),
4754
4536
  startTimestamp: startTime ? DateTime2.fromUnixMilliseconds(startTime).toTai64() : void 0
4755
4537
  });
4756
- return bn16(latestBlockHeight);
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 bn17 } from "@fuel-ts/math";
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
- let txReceipts = [];
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, maxGasPerTx }
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: bn17(gasPerByte),
4814
- gasPriceFactor: bn17(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, maxGasPerTx } = provider.getGasConfig();
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, maxGasPerTx }
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
- let txReceipts = [];
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, params) {
5210
- const { addedSignatures, estimatedPredicates, maxFee: fee, requiredQuantities } = params;
5211
- const txRequest = request;
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: requiredQuantities
4978
+ coinQuantities
5216
4979
  });
5217
4980
  const quantitiesDict = {};
5218
- requiredQuantitiesWithFee.forEach(({ amount, assetId }) => {
4981
+ updatedQuantities.forEach(({ amount, assetId }) => {
5219
4982
  quantitiesDict[assetId] = {
5220
4983
  required: amount,
5221
- owned: bn18(0)
4984
+ owned: bn17(0)
5222
4985
  };
5223
4986
  });
5224
- txRequest.inputs.forEach((input) => {
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 = bn18(input.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 excludedIds = cacheTxInputsFromOwner(txRequest.inputs, this.address.toB256());
5251
- const resources = await this.getResourcesToSpend(missingQuantities, excludedIds);
5252
- txRequest.addResources(resources);
5253
- }
5254
- txRequest.shiftPredicateData();
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, tip, maturity, maxFee, witnessLimit).
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 request = new ScriptTransactionRequest(txParams);
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 txCost = await this.provider.getTransactionCost(request, {
5039
+ const { maxFee, requiredQuantities, gasUsed, estimatedInputs } = await this.provider.getTransactionCost(request, [], {
5281
5040
  estimateTxDependencies: true,
5282
5041
  resourcesOwner: this
5283
5042
  });
5284
- if ("gasLimit" in txParams) {
5285
- this.validateGas({
5286
- gasUsed: txCost.gasUsed,
5287
- gasLimit: request.gasLimit
5288
- });
5289
- }
5290
- request.gasLimit = txCost.gasUsed;
5291
- request.maxFee = txCost.maxFee;
5292
- await this.fund(request, txCost);
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 (bn18(amount).lte(0)) {
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 (bn18(amount).lte(0)) {
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: bn18(amount),
5095
+ amountToTransfer: bn17(amount),
5334
5096
  assetId
5335
5097
  });
5336
5098
  const request = new ScriptTransactionRequest({
5337
- ...txParams,
5099
+ ...params,
5338
5100
  script,
5339
5101
  scriptData
5340
5102
  });
5341
5103
  request.addContractInputAndOutput(contractAddress);
5342
- const txCost = await this.provider.getTransactionCost(request, {
5343
- resourcesOwner: this,
5344
- quantitiesToContract: [{ amount: bn18(amount), assetId: String(assetId) }]
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
- if (txParams.gasLimit) {
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(bn18(amount).toHex().substring(2).padStart(16, "0"))
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 quantitiesToContract = [{ amount: bn18(amount), assetId: BaseAssetId3 }];
5381
- const txCost = await this.provider.getTransactionCost(request, { quantitiesToContract });
5382
- if (txParams.gasLimit) {
5383
- this.validateGas({
5384
- gasUsed: txCost.gasUsed,
5385
- gasLimit: request.gasLimit
5386
- });
5387
- }
5388
- request.maxFee = txCost.maxFee;
5389
- request.gasLimit = txCost.gasUsed;
5390
- await this.fund(request, txCost);
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({ gasUsed, gasLimit }) {
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 = false, awaitExecution } = {}) {
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 bn19, toBytes as toBytes2, toHex } from "@fuel-ts/math";
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 = bn19(IL).add(privateKey).mod(N).toBytes(32);
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, InputType as InputType8 } from "@fuel-ts/transactions";
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
- request.inputs?.forEach((input) => {
9006
- if (input.type === InputType8.Coin && hexlify19(input.owner) === this.address.toB256()) {
9007
- input.predicate = hexlify19(this.bytes);
9008
- input.predicateData = hexlify19(this.getPredicateData(policies.length));
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
- return super.createTransfer(destination, amount, assetId, txParams);
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 = transactionRequestify(transactionRequestLike);
9033
- return super.sendTransaction(transactionRequest, { estimateTxDependencies: false });
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 = transactionRequestify(transactionRequestLike);
9043
- return super.simulateTransaction(transactionRequest, { estimateTxDependencies: false });
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
- addAmountToCoinQuantities,
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
- cacheTxInputsFromOwner,
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,