@fuel-ts/account 0.0.0-rc-2034-20240411123358 → 0.0.0-rc-2021-20240411141803

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 (54) hide show
  1. package/README.md +1 -1
  2. package/dist/account.d.ts +5 -4
  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 +819 -568
  12. package/dist/index.global.js.map +1 -1
  13. package/dist/index.js +805 -572
  14. package/dist/index.js.map +1 -1
  15. package/dist/index.mjs +639 -407
  16. package/dist/index.mjs.map +1 -1
  17. package/dist/predicate/predicate.d.ts +10 -2
  18. package/dist/predicate/predicate.d.ts.map +1 -1
  19. package/dist/providers/__generated__/operations.d.ts +888 -322
  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 +4 -2
  24. package/dist/providers/coin.d.ts.map +1 -1
  25. package/dist/providers/fuel-graphql-subscriber.d.ts.map +1 -1
  26. package/dist/providers/message.d.ts +3 -1
  27. package/dist/providers/message.d.ts.map +1 -1
  28. package/dist/providers/provider.d.ts +37 -30
  29. package/dist/providers/provider.d.ts.map +1 -1
  30. package/dist/providers/transaction-request/create-transaction-request.d.ts.map +1 -1
  31. package/dist/providers/transaction-request/input.d.ts +2 -2
  32. package/dist/providers/transaction-request/input.d.ts.map +1 -1
  33. package/dist/providers/transaction-request/script-transaction-request.d.ts.map +1 -1
  34. package/dist/providers/transaction-request/transaction-request.d.ts +8 -25
  35. package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
  36. package/dist/providers/transaction-request/utils.d.ts +3 -0
  37. package/dist/providers/transaction-request/utils.d.ts.map +1 -1
  38. package/dist/providers/transaction-response/transaction-response.d.ts.map +1 -1
  39. package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts +2 -0
  40. package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts.map +1 -1
  41. package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts +3 -2
  42. package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts.map +1 -1
  43. package/dist/providers/transaction-summary/get-transaction-summary.d.ts.map +1 -1
  44. package/dist/providers/utils/gas.d.ts +8 -2
  45. package/dist/providers/utils/gas.d.ts.map +1 -1
  46. package/dist/test-utils/launchNode.d.ts.map +1 -1
  47. package/dist/test-utils.global.js +1535 -1067
  48. package/dist/test-utils.global.js.map +1 -1
  49. package/dist/test-utils.js +780 -565
  50. package/dist/test-utils.js.map +1 -1
  51. package/dist/test-utils.mjs +631 -416
  52. package/dist/test-utils.mjs.map +1 -1
  53. package/dist/wallet/base-wallet-unlocked.d.ts.map +1 -1
  54. package/package.json +17 -17
package/dist/index.js CHANGED
@@ -95,7 +95,7 @@ __export(src_exports, {
95
95
  WalletLocked: () => WalletLocked,
96
96
  WalletManager: () => WalletManager,
97
97
  WalletUnlocked: () => WalletUnlocked,
98
- addAmountToAsset: () => addAmountToAsset,
98
+ addAmountToCoinQuantities: () => addAmountToCoinQuantities,
99
99
  addOperation: () => addOperation,
100
100
  assemblePanicError: () => assemblePanicError,
101
101
  assembleReceiptByType: () => assembleReceiptByType,
@@ -104,9 +104,10 @@ __export(src_exports, {
104
104
  assets: () => assets,
105
105
  buildBlockExplorerUrl: () => buildBlockExplorerUrl,
106
106
  cacheFor: () => cacheFor,
107
+ cacheTxInputsFromOwner: () => cacheTxInputsFromOwner,
108
+ calculateGasFee: () => calculateGasFee,
107
109
  calculateMetadataGasForTxCreate: () => calculateMetadataGasForTxCreate,
108
110
  calculateMetadataGasForTxScript: () => calculateMetadataGasForTxScript,
109
- calculatePriceWithFactor: () => calculatePriceWithFactor,
110
111
  calculateTransactionFee: () => calculateTransactionFee,
111
112
  coinQuantityfy: () => coinQuantityfy,
112
113
  deferPromise: () => deferPromise,
@@ -187,8 +188,9 @@ var import_address4 = require("@fuel-ts/address");
187
188
  var import_configs12 = require("@fuel-ts/address/configs");
188
189
  var import_errors16 = require("@fuel-ts/errors");
189
190
  var import_interfaces = require("@fuel-ts/interfaces");
190
- var import_math18 = require("@fuel-ts/math");
191
- var import_utils28 = require("@fuel-ts/utils");
191
+ var import_math19 = require("@fuel-ts/math");
192
+ var import_utils27 = require("@fuel-ts/utils");
193
+ var import_ramda4 = require("ramda");
192
194
 
193
195
  // src/providers/coin-quantity.ts
194
196
  var import_configs = require("@fuel-ts/address/configs");
@@ -197,24 +199,24 @@ var import_utils = require("@fuel-ts/utils");
197
199
  var coinQuantityfy = (coinQuantityLike) => {
198
200
  let assetId;
199
201
  let amount;
200
- let max2;
202
+ let max;
201
203
  if (Array.isArray(coinQuantityLike)) {
202
204
  amount = coinQuantityLike[0];
203
205
  assetId = coinQuantityLike[1] ?? import_configs.BaseAssetId;
204
- max2 = coinQuantityLike[2] ?? void 0;
206
+ max = coinQuantityLike[2] ?? void 0;
205
207
  } else {
206
208
  amount = coinQuantityLike.amount;
207
209
  assetId = coinQuantityLike.assetId ?? import_configs.BaseAssetId;
208
- max2 = coinQuantityLike.max ?? void 0;
210
+ max = coinQuantityLike.max ?? void 0;
209
211
  }
210
212
  const bnAmount = (0, import_math.bn)(amount);
211
213
  return {
212
214
  assetId: (0, import_utils.hexlify)(assetId),
213
215
  amount: bnAmount.lt(1) ? (0, import_math.bn)(1) : bnAmount,
214
- max: max2 ? (0, import_math.bn)(max2) : void 0
216
+ max: max ? (0, import_math.bn)(max) : void 0
215
217
  };
216
218
  };
217
- var addAmountToAsset = (params) => {
219
+ var addAmountToCoinQuantities = (params) => {
218
220
  const { amount, assetId } = params;
219
221
  const coinQuantities = [...params.coinQuantities];
220
222
  const assetIdx = coinQuantities.findIndex((coinQuantity) => coinQuantity.assetId === assetId);
@@ -229,12 +231,12 @@ var addAmountToAsset = (params) => {
229
231
  // src/providers/provider.ts
230
232
  var import_address3 = require("@fuel-ts/address");
231
233
  var import_errors14 = require("@fuel-ts/errors");
232
- var import_math15 = require("@fuel-ts/math");
233
- var import_transactions18 = require("@fuel-ts/transactions");
234
- var import_utils23 = require("@fuel-ts/utils");
234
+ var import_math16 = require("@fuel-ts/math");
235
+ var import_transactions19 = require("@fuel-ts/transactions");
236
+ var import_utils22 = require("@fuel-ts/utils");
235
237
  var import_versions = require("@fuel-ts/versions");
236
- var import_utils24 = require("@noble/curves/abstract/utils");
237
- var import_ethers = require("ethers");
238
+ var import_utils23 = require("@noble/curves/abstract/utils");
239
+ var import_ethers2 = require("ethers");
238
240
  var import_graphql_request = require("graphql-request");
239
241
  var import_ramda3 = require("ramda");
240
242
 
@@ -242,14 +244,10 @@ var import_ramda3 = require("ramda");
242
244
  var import_graphql_tag = __toESM(require("graphql-tag"));
243
245
  var ReceiptFragmentFragmentDoc = import_graphql_tag.default`
244
246
  fragment receiptFragment on Receipt {
245
- contract {
246
- id
247
- }
247
+ id
248
248
  pc
249
249
  is
250
- to {
251
- id
252
- }
250
+ to
253
251
  toAddress
254
252
  amount
255
253
  assetId
@@ -287,10 +285,16 @@ var TransactionStatusFragmentFragmentDoc = import_graphql_tag.default`
287
285
  id
288
286
  }
289
287
  time
288
+ receipts {
289
+ ...receiptFragment
290
+ }
290
291
  programState {
291
292
  returnType
292
293
  data
293
294
  }
295
+ receipts {
296
+ ...receiptFragment
297
+ }
294
298
  }
295
299
  ... on FailureStatus {
296
300
  block {
@@ -298,26 +302,24 @@ var TransactionStatusFragmentFragmentDoc = import_graphql_tag.default`
298
302
  }
299
303
  time
300
304
  reason
305
+ receipts {
306
+ ...receiptFragment
307
+ }
301
308
  }
302
309
  ... on SqueezedOutStatus {
303
310
  reason
304
311
  }
305
312
  }
306
- `;
313
+ ${ReceiptFragmentFragmentDoc}`;
307
314
  var TransactionFragmentFragmentDoc = import_graphql_tag.default`
308
315
  fragment transactionFragment on Transaction {
309
316
  id
310
317
  rawPayload
311
- gasPrice
312
- receipts {
313
- ...receiptFragment
314
- }
315
318
  status {
316
319
  ...transactionStatusFragment
317
320
  }
318
321
  }
319
- ${ReceiptFragmentFragmentDoc}
320
- ${TransactionStatusFragmentFragmentDoc}`;
322
+ ${TransactionStatusFragmentFragmentDoc}`;
321
323
  var InputEstimatePredicatesFragmentFragmentDoc = import_graphql_tag.default`
322
324
  fragment inputEstimatePredicatesFragment on Input {
323
325
  ... on InputCoin {
@@ -335,6 +337,46 @@ var TransactionEstimatePredicatesFragmentFragmentDoc = import_graphql_tag.defaul
335
337
  }
336
338
  }
337
339
  ${InputEstimatePredicatesFragmentFragmentDoc}`;
340
+ var DryRunFailureStatusFragmentFragmentDoc = import_graphql_tag.default`
341
+ fragment dryRunFailureStatusFragment on DryRunFailureStatus {
342
+ reason
343
+ programState {
344
+ returnType
345
+ data
346
+ }
347
+ }
348
+ `;
349
+ var DryRunSuccessStatusFragmentFragmentDoc = import_graphql_tag.default`
350
+ fragment dryRunSuccessStatusFragment on DryRunSuccessStatus {
351
+ programState {
352
+ returnType
353
+ data
354
+ }
355
+ }
356
+ `;
357
+ var DryRunTransactionStatusFragmentFragmentDoc = import_graphql_tag.default`
358
+ fragment dryRunTransactionStatusFragment on DryRunTransactionStatus {
359
+ ... on DryRunFailureStatus {
360
+ ...dryRunFailureStatusFragment
361
+ }
362
+ ... on DryRunSuccessStatus {
363
+ ...dryRunSuccessStatusFragment
364
+ }
365
+ }
366
+ ${DryRunFailureStatusFragmentFragmentDoc}
367
+ ${DryRunSuccessStatusFragmentFragmentDoc}`;
368
+ var DryRunTransactionExecutionStatusFragmentFragmentDoc = import_graphql_tag.default`
369
+ fragment dryRunTransactionExecutionStatusFragment on DryRunTransactionExecutionStatus {
370
+ id
371
+ status {
372
+ ...dryRunTransactionStatusFragment
373
+ }
374
+ receipts {
375
+ ...receiptFragment
376
+ }
377
+ }
378
+ ${DryRunTransactionStatusFragmentFragmentDoc}
379
+ ${ReceiptFragmentFragmentDoc}`;
338
380
  var CoinFragmentFragmentDoc = import_graphql_tag.default`
339
381
  fragment coinFragment on Coin {
340
382
  __typename
@@ -342,7 +384,6 @@ var CoinFragmentFragmentDoc = import_graphql_tag.default`
342
384
  owner
343
385
  amount
344
386
  assetId
345
- maturity
346
387
  blockCreated
347
388
  txCreatedIdx
348
389
  }
@@ -387,7 +428,6 @@ var MessageProofFragmentFragmentDoc = import_graphql_tag.default`
387
428
  prevRoot
388
429
  time
389
430
  applicationHash
390
- messageReceiptRoot
391
431
  messageReceiptCount
392
432
  }
393
433
  commitBlockHeader {
@@ -399,7 +439,6 @@ var MessageProofFragmentFragmentDoc = import_graphql_tag.default`
399
439
  prevRoot
400
440
  time
401
441
  applicationHash
402
- messageReceiptRoot
403
442
  messageReceiptCount
404
443
  }
405
444
  sender
@@ -419,8 +458,8 @@ var BalanceFragmentFragmentDoc = import_graphql_tag.default`
419
458
  var BlockFragmentFragmentDoc = import_graphql_tag.default`
420
459
  fragment blockFragment on Block {
421
460
  id
461
+ height
422
462
  header {
423
- height
424
463
  time
425
464
  }
426
465
  transactions {
@@ -478,6 +517,11 @@ var DependentCostFragmentFragmentDoc = import_graphql_tag.default`
478
517
  `;
479
518
  var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
480
519
  fragment GasCostsFragment on GasCosts {
520
+ version {
521
+ ... on Version {
522
+ value
523
+ }
524
+ }
481
525
  add
482
526
  addi
483
527
  aloc
@@ -490,7 +534,6 @@ var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
490
534
  cb
491
535
  cfei
492
536
  cfsi
493
- croo
494
537
  div
495
538
  divi
496
539
  ecr1
@@ -573,6 +616,9 @@ var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
573
616
  ccp {
574
617
  ...DependentCostFragment
575
618
  }
619
+ croo {
620
+ ...DependentCostFragment
621
+ }
576
622
  csiz {
577
623
  ...DependentCostFragment
578
624
  }
@@ -632,6 +678,11 @@ var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
632
678
  ${DependentCostFragmentFragmentDoc}`;
633
679
  var ConsensusParametersFragmentFragmentDoc = import_graphql_tag.default`
634
680
  fragment consensusParametersFragment on ConsensusParameters {
681
+ version {
682
+ ... on Version {
683
+ value
684
+ }
685
+ }
635
686
  txParams {
636
687
  ...TxParametersFragment
637
688
  }
@@ -691,18 +742,9 @@ var NodeInfoFragmentFragmentDoc = import_graphql_tag.default`
691
742
  fragment nodeInfoFragment on NodeInfo {
692
743
  utxoValidation
693
744
  vmBacktrace
694
- minGasPrice
695
745
  maxTx
696
746
  maxDepth
697
747
  nodeVersion
698
- peers {
699
- id
700
- addresses
701
- clientVersion
702
- blockHeight
703
- lastHeartbeatMs
704
- appScore
705
- }
706
748
  }
707
749
  `;
708
750
  var GetVersionDocument = import_graphql_tag.default`
@@ -737,13 +779,9 @@ var GetTransactionWithReceiptsDocument = import_graphql_tag.default`
737
779
  query getTransactionWithReceipts($transactionId: TransactionId!) {
738
780
  transaction(id: $transactionId) {
739
781
  ...transactionFragment
740
- receipts {
741
- ...receiptFragment
742
- }
743
782
  }
744
783
  }
745
- ${TransactionFragmentFragmentDoc}
746
- ${ReceiptFragmentFragmentDoc}`;
784
+ ${TransactionFragmentFragmentDoc}`;
747
785
  var GetTransactionsDocument = import_graphql_tag.default`
748
786
  query getTransactions($after: String, $before: String, $first: Int, $last: Int) {
749
787
  transactions(after: $after, before: $before, first: $first, last: $last) {
@@ -871,6 +909,20 @@ var GetBalanceDocument = import_graphql_tag.default`
871
909
  }
872
910
  }
873
911
  ${BalanceFragmentFragmentDoc}`;
912
+ var GetLatestGasPriceDocument = import_graphql_tag.default`
913
+ query getLatestGasPrice {
914
+ latestGasPrice {
915
+ gasPrice
916
+ }
917
+ }
918
+ `;
919
+ var EstimateGasPriceDocument = import_graphql_tag.default`
920
+ query estimateGasPrice($blockHorizon: U32!) {
921
+ estimateGasPrice(blockHorizon: $blockHorizon) {
922
+ gasPrice
923
+ }
924
+ }
925
+ `;
874
926
  var GetBalancesDocument = import_graphql_tag.default`
875
927
  query getBalances($filter: BalanceFilterInput!, $after: String, $before: String, $first: Int, $last: Int) {
876
928
  balances(
@@ -925,12 +977,12 @@ var GetMessageStatusDocument = import_graphql_tag.default`
925
977
  }
926
978
  `;
927
979
  var DryRunDocument = import_graphql_tag.default`
928
- mutation dryRun($encodedTransaction: HexString!, $utxoValidation: Boolean) {
929
- dryRun(tx: $encodedTransaction, utxoValidation: $utxoValidation) {
930
- ...receiptFragment
980
+ mutation dryRun($encodedTransactions: [HexString!]!, $utxoValidation: Boolean) {
981
+ dryRun(txs: $encodedTransactions, utxoValidation: $utxoValidation) {
982
+ ...dryRunTransactionExecutionStatusFragment
931
983
  }
932
984
  }
933
- ${ReceiptFragmentFragmentDoc}`;
985
+ ${DryRunTransactionExecutionStatusFragmentFragmentDoc}`;
934
986
  var SubmitDocument = import_graphql_tag.default`
935
987
  mutation submit($encodedTransaction: HexString!) {
936
988
  submit(tx: $encodedTransaction) {
@@ -1013,6 +1065,12 @@ function getSdk(requester) {
1013
1065
  getBalance(variables, options) {
1014
1066
  return requester(GetBalanceDocument, variables, options);
1015
1067
  },
1068
+ getLatestGasPrice(variables, options) {
1069
+ return requester(GetLatestGasPriceDocument, variables, options);
1070
+ },
1071
+ estimateGasPrice(variables, options) {
1072
+ return requester(EstimateGasPriceDocument, variables, options);
1073
+ },
1016
1074
  getBalances(variables, options) {
1017
1075
  return requester(GetBalancesDocument, variables, options);
1018
1076
  },
@@ -1082,11 +1140,14 @@ var _FuelGraphqlSubscriber = class {
1082
1140
  let data;
1083
1141
  let errors;
1084
1142
  try {
1085
- ({ data, errors } = JSON.parse(text.replace(/^data:/, "")));
1143
+ const sanitizedText = text.replace(/\s/g, "");
1144
+ ({ data, errors } = JSON.parse(sanitizedText.replace(/^data:/, "")));
1086
1145
  } catch (e) {
1087
1146
  throw new import_errors.FuelError(
1088
1147
  import_errors.ErrorCode.STREAM_PARSING_ERROR,
1089
- `Error while parsing stream data response: ${text}`
1148
+ `Error while parsing stream data response: ${text}
1149
+
1150
+ Thrown error: ${e}`
1090
1151
  );
1091
1152
  }
1092
1153
  if (Array.isArray(errors)) {
@@ -1173,7 +1234,6 @@ var MemoryCache = class {
1173
1234
  };
1174
1235
 
1175
1236
  // src/providers/transaction-request/input.ts
1176
- var import_abi_coder = require("@fuel-ts/abi-coder");
1177
1237
  var import_configs2 = require("@fuel-ts/address/configs");
1178
1238
  var import_errors3 = require("@fuel-ts/errors");
1179
1239
  var import_math2 = require("@fuel-ts/math");
@@ -1187,8 +1247,8 @@ var inputify = (value) => {
1187
1247
  const predicateData = (0, import_utils3.arrayify)(value.predicateData ?? "0x");
1188
1248
  return {
1189
1249
  type: import_transactions.InputType.Coin,
1190
- txID: (0, import_utils3.hexlify)((0, import_utils3.arrayify)(value.id).slice(0, import_abi_coder.BYTES_32)),
1191
- outputIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.id).slice(import_abi_coder.BYTES_32, import_abi_coder.UTXO_ID_LEN)),
1250
+ txID: (0, import_utils3.hexlify)((0, import_utils3.arrayify)(value.id).slice(0, 32)),
1251
+ outputIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.id).slice(32, 34)),
1192
1252
  owner: (0, import_utils3.hexlify)(value.owner),
1193
1253
  amount: (0, import_math2.bn)(value.amount),
1194
1254
  assetId: (0, import_utils3.hexlify)(value.assetId),
@@ -1197,10 +1257,9 @@ var inputify = (value) => {
1197
1257
  txIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.txPointer).slice(8, 16))
1198
1258
  },
1199
1259
  witnessIndex: value.witnessIndex,
1200
- maturity: value.maturity ?? 0,
1201
1260
  predicateGasUsed: (0, import_math2.bn)(value.predicateGasUsed),
1202
- predicateLength: predicate.length,
1203
- predicateDataLength: predicateData.length,
1261
+ predicateLength: (0, import_math2.bn)(predicate.length),
1262
+ predicateDataLength: (0, import_math2.bn)(predicateData.length),
1204
1263
  predicate: (0, import_utils3.hexlify)(predicate),
1205
1264
  predicateData: (0, import_utils3.hexlify)(predicateData)
1206
1265
  };
@@ -1231,8 +1290,8 @@ var inputify = (value) => {
1231
1290
  nonce: (0, import_utils3.hexlify)(value.nonce),
1232
1291
  witnessIndex: value.witnessIndex,
1233
1292
  predicateGasUsed: (0, import_math2.bn)(value.predicateGasUsed),
1234
- predicateLength: predicate.length,
1235
- predicateDataLength: predicateData.length,
1293
+ predicateLength: (0, import_math2.bn)(predicate.length),
1294
+ predicateDataLength: (0, import_math2.bn)(predicateData.length),
1236
1295
  predicate: (0, import_utils3.hexlify)(predicate),
1237
1296
  predicateData: (0, import_utils3.hexlify)(predicateData),
1238
1297
  data: (0, import_utils3.hexlify)(data),
@@ -1306,13 +1365,12 @@ var outputify = (value) => {
1306
1365
  };
1307
1366
 
1308
1367
  // src/providers/transaction-request/transaction-request.ts
1309
- var import_abi_coder2 = require("@fuel-ts/abi-coder");
1310
1368
  var import_address = require("@fuel-ts/address");
1311
1369
  var import_configs7 = require("@fuel-ts/address/configs");
1312
- var import_crypto = require("@fuel-ts/crypto");
1313
1370
  var import_math7 = require("@fuel-ts/math");
1314
1371
  var import_transactions6 = require("@fuel-ts/transactions");
1315
1372
  var import_utils9 = require("@fuel-ts/utils");
1373
+ var import_ethers = require("ethers");
1316
1374
 
1317
1375
  // src/providers/resource.ts
1318
1376
  var isRawCoin = (resource) => "utxoId" in resource;
@@ -1351,8 +1409,8 @@ function assembleReceiptByType(receipt) {
1351
1409
  case "CALL" /* Call */: {
1352
1410
  const callReceipt = {
1353
1411
  type: import_transactions3.ReceiptType.Call,
1354
- from: hexOrZero(receipt.contract?.id),
1355
- to: hexOrZero(receipt?.to?.id),
1412
+ from: hexOrZero(receipt.id || receipt.contractId),
1413
+ to: hexOrZero(receipt?.to),
1356
1414
  amount: (0, import_math4.bn)(receipt.amount),
1357
1415
  assetId: hexOrZero(receipt.assetId),
1358
1416
  gas: (0, import_math4.bn)(receipt.gas),
@@ -1366,7 +1424,7 @@ function assembleReceiptByType(receipt) {
1366
1424
  case "RETURN" /* Return */: {
1367
1425
  const returnReceipt = {
1368
1426
  type: import_transactions3.ReceiptType.Return,
1369
- id: hexOrZero(receipt.contract?.id),
1427
+ id: hexOrZero(receipt.id || receipt.contractId),
1370
1428
  val: (0, import_math4.bn)(receipt.val),
1371
1429
  pc: (0, import_math4.bn)(receipt.pc),
1372
1430
  is: (0, import_math4.bn)(receipt.is)
@@ -1376,7 +1434,7 @@ function assembleReceiptByType(receipt) {
1376
1434
  case "RETURN_DATA" /* ReturnData */: {
1377
1435
  const returnDataReceipt = {
1378
1436
  type: import_transactions3.ReceiptType.ReturnData,
1379
- id: hexOrZero(receipt.contract?.id),
1437
+ id: hexOrZero(receipt.id || receipt.contractId),
1380
1438
  ptr: (0, import_math4.bn)(receipt.ptr),
1381
1439
  len: (0, import_math4.bn)(receipt.len),
1382
1440
  digest: hexOrZero(receipt.digest),
@@ -1388,7 +1446,7 @@ function assembleReceiptByType(receipt) {
1388
1446
  case "PANIC" /* Panic */: {
1389
1447
  const panicReceipt = {
1390
1448
  type: import_transactions3.ReceiptType.Panic,
1391
- id: hexOrZero(receipt.contract?.id),
1449
+ id: hexOrZero(receipt.id),
1392
1450
  reason: (0, import_math4.bn)(receipt.reason),
1393
1451
  pc: (0, import_math4.bn)(receipt.pc),
1394
1452
  is: (0, import_math4.bn)(receipt.is),
@@ -1399,7 +1457,7 @@ function assembleReceiptByType(receipt) {
1399
1457
  case "REVERT" /* Revert */: {
1400
1458
  const revertReceipt = {
1401
1459
  type: import_transactions3.ReceiptType.Revert,
1402
- id: hexOrZero(receipt.contract?.id),
1460
+ id: hexOrZero(receipt.id || receipt.contractId),
1403
1461
  val: (0, import_math4.bn)(receipt.ra),
1404
1462
  pc: (0, import_math4.bn)(receipt.pc),
1405
1463
  is: (0, import_math4.bn)(receipt.is)
@@ -1409,7 +1467,7 @@ function assembleReceiptByType(receipt) {
1409
1467
  case "LOG" /* Log */: {
1410
1468
  const logReceipt = {
1411
1469
  type: import_transactions3.ReceiptType.Log,
1412
- id: hexOrZero(receipt.contract?.id),
1470
+ id: hexOrZero(receipt.id || receipt.contractId),
1413
1471
  val0: (0, import_math4.bn)(receipt.ra),
1414
1472
  val1: (0, import_math4.bn)(receipt.rb),
1415
1473
  val2: (0, import_math4.bn)(receipt.rc),
@@ -1422,7 +1480,7 @@ function assembleReceiptByType(receipt) {
1422
1480
  case "LOG_DATA" /* LogData */: {
1423
1481
  const logDataReceipt = {
1424
1482
  type: import_transactions3.ReceiptType.LogData,
1425
- id: hexOrZero(receipt.contract?.id),
1483
+ id: hexOrZero(receipt.id || receipt.contractId),
1426
1484
  val0: (0, import_math4.bn)(receipt.ra),
1427
1485
  val1: (0, import_math4.bn)(receipt.rb),
1428
1486
  ptr: (0, import_math4.bn)(receipt.ptr),
@@ -1436,8 +1494,8 @@ function assembleReceiptByType(receipt) {
1436
1494
  case "TRANSFER" /* Transfer */: {
1437
1495
  const transferReceipt = {
1438
1496
  type: import_transactions3.ReceiptType.Transfer,
1439
- from: hexOrZero(receipt.contract?.id),
1440
- to: hexOrZero(receipt.toAddress || receipt?.to?.id),
1497
+ from: hexOrZero(receipt.id || receipt.contractId),
1498
+ to: hexOrZero(receipt.toAddress || receipt?.to),
1441
1499
  amount: (0, import_math4.bn)(receipt.amount),
1442
1500
  assetId: hexOrZero(receipt.assetId),
1443
1501
  pc: (0, import_math4.bn)(receipt.pc),
@@ -1448,8 +1506,8 @@ function assembleReceiptByType(receipt) {
1448
1506
  case "TRANSFER_OUT" /* TransferOut */: {
1449
1507
  const transferOutReceipt = {
1450
1508
  type: import_transactions3.ReceiptType.TransferOut,
1451
- from: hexOrZero(receipt.contract?.id),
1452
- to: hexOrZero(receipt.toAddress || receipt.to?.id),
1509
+ from: hexOrZero(receipt.id || receipt.contractId),
1510
+ to: hexOrZero(receipt.toAddress || receipt.to),
1453
1511
  amount: (0, import_math4.bn)(receipt.amount),
1454
1512
  assetId: hexOrZero(receipt.assetId),
1455
1513
  pc: (0, import_math4.bn)(receipt.pc),
@@ -1492,7 +1550,7 @@ function assembleReceiptByType(receipt) {
1492
1550
  return receiptMessageOut;
1493
1551
  }
1494
1552
  case "MINT" /* Mint */: {
1495
- const contractId = hexOrZero(receipt.contract?.id);
1553
+ const contractId = hexOrZero(receipt.id || receipt.contractId);
1496
1554
  const subId = hexOrZero(receipt.subId);
1497
1555
  const assetId = import_transactions3.ReceiptMintCoder.getAssetId(contractId, subId);
1498
1556
  const mintReceipt = {
@@ -1507,7 +1565,7 @@ function assembleReceiptByType(receipt) {
1507
1565
  return mintReceipt;
1508
1566
  }
1509
1567
  case "BURN" /* Burn */: {
1510
- const contractId = hexOrZero(receipt.contract?.id);
1568
+ const contractId = hexOrZero(receipt.id || receipt.contractId);
1511
1569
  const subId = hexOrZero(receipt.subId);
1512
1570
  const assetId = import_transactions3.ReceiptBurnCoder.getAssetId(contractId, subId);
1513
1571
  const burnReceipt = {
@@ -1592,7 +1650,6 @@ var buildBlockExplorerUrl = (options = {}) => {
1592
1650
  var import_math5 = require("@fuel-ts/math");
1593
1651
  var import_transactions4 = require("@fuel-ts/transactions");
1594
1652
  var import_utils6 = require("@fuel-ts/utils");
1595
- var calculatePriceWithFactor = (gas, gasPrice, priceFactor) => (0, import_math5.bn)(Math.ceil(gas.mul(gasPrice).toNumber() / priceFactor.toNumber()));
1596
1653
  var getGasUsedFromReceipts = (receipts) => {
1597
1654
  const scriptResult = receipts.filter(
1598
1655
  (receipt) => receipt.type === import_transactions4.ReceiptType.ScriptResult
@@ -1613,18 +1670,28 @@ function resolveGasDependentCosts(byteSize, gasDependentCost) {
1613
1670
  }
1614
1671
  function gasUsedByInputs(inputs, txBytesSize, gasCosts) {
1615
1672
  const witnessCache = [];
1616
- const totalGas = inputs.reduce((total, input) => {
1673
+ const chargeableInputs = inputs.filter((input) => {
1674
+ const isCoinOrMessage = "owner" in input || "sender" in input;
1675
+ if (isCoinOrMessage) {
1676
+ if ("predicate" in input && input.predicate && input.predicate !== "0x") {
1677
+ return true;
1678
+ }
1679
+ if (!witnessCache.includes(input.witnessIndex)) {
1680
+ witnessCache.push(input.witnessIndex);
1681
+ return true;
1682
+ }
1683
+ }
1684
+ return false;
1685
+ });
1686
+ const vmInitializationCost = resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization);
1687
+ const totalGas = chargeableInputs.reduce((total, input) => {
1617
1688
  if ("predicate" in input && input.predicate && input.predicate !== "0x") {
1618
1689
  return total.add(
1619
- resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization).add(resolveGasDependentCosts((0, import_utils6.arrayify)(input.predicate).length, gasCosts.contractRoot)).add((0, import_math5.bn)(input.predicateGasUsed))
1690
+ vmInitializationCost.add(resolveGasDependentCosts((0, import_utils6.arrayify)(input.predicate).length, gasCosts.contractRoot)).add((0, import_math5.bn)(input.predicateGasUsed))
1620
1691
  );
1621
1692
  }
1622
- if ("witnessIndex" in input && !witnessCache.includes(input.witnessIndex)) {
1623
- witnessCache.push(input.witnessIndex);
1624
- return total.add(gasCosts.ecr1);
1625
- }
1626
- return total;
1627
- }, (0, import_math5.bn)());
1693
+ return total.add(gasCosts.ecr1);
1694
+ }, (0, import_math5.bn)(0));
1628
1695
  return totalGas;
1629
1696
  }
1630
1697
  function getMinGas(params) {
@@ -1636,12 +1703,20 @@ function getMinGas(params) {
1636
1703
  return minGas;
1637
1704
  }
1638
1705
  function getMaxGas(params) {
1639
- const { gasPerByte, witnessesLength, witnessLimit, minGas, gasLimit = (0, import_math5.bn)(0) } = params;
1706
+ const {
1707
+ gasPerByte,
1708
+ witnessesLength,
1709
+ witnessLimit,
1710
+ minGas,
1711
+ gasLimit = (0, import_math5.bn)(0),
1712
+ maxGasPerTx
1713
+ } = params;
1640
1714
  let remainingAllowedWitnessGas = (0, import_math5.bn)(0);
1641
1715
  if (witnessLimit?.gt(0) && witnessLimit.gte(witnessesLength)) {
1642
1716
  remainingAllowedWitnessGas = (0, import_math5.bn)(witnessLimit).sub(witnessesLength).mul(gasPerByte);
1643
1717
  }
1644
- return remainingAllowedWitnessGas.add(minGas).add(gasLimit);
1718
+ const maxGas = remainingAllowedWitnessGas.add(minGas).add(gasLimit);
1719
+ return maxGas.gte(maxGasPerTx) ? maxGasPerTx : maxGas;
1645
1720
  }
1646
1721
  function calculateMetadataGasForTxCreate({
1647
1722
  gasCosts,
@@ -1663,6 +1738,10 @@ function calculateMetadataGasForTxScript({
1663
1738
  }) {
1664
1739
  return resolveGasDependentCosts(txBytesSize, gasCosts.s256);
1665
1740
  }
1741
+ var calculateGasFee = (params) => {
1742
+ const { gas, gasPrice, priceFactor, tip } = params;
1743
+ return gas.mul(gasPrice).div(priceFactor).add(tip);
1744
+ };
1666
1745
 
1667
1746
  // src/providers/utils/json.ts
1668
1747
  var import_utils7 = require("@fuel-ts/utils");
@@ -1811,7 +1890,7 @@ var witnessify = (value) => {
1811
1890
  // src/providers/transaction-request/transaction-request.ts
1812
1891
  var BaseTransactionRequest = class {
1813
1892
  /** Gas price for transaction */
1814
- gasPrice;
1893
+ tip;
1815
1894
  /** Block until which tx cannot be included */
1816
1895
  maturity;
1817
1896
  /** The maximum fee payable by this transaction using BASE_ASSET. */
@@ -1830,7 +1909,7 @@ var BaseTransactionRequest = class {
1830
1909
  * @param baseTransactionRequest - Optional object containing properties to initialize the transaction request.
1831
1910
  */
1832
1911
  constructor({
1833
- gasPrice,
1912
+ tip,
1834
1913
  maturity,
1835
1914
  maxFee,
1836
1915
  witnessLimit,
@@ -1838,7 +1917,7 @@ var BaseTransactionRequest = class {
1838
1917
  outputs,
1839
1918
  witnesses
1840
1919
  } = {}) {
1841
- this.gasPrice = (0, import_math7.bn)(gasPrice);
1920
+ this.tip = (0, import_math7.bn)(tip);
1842
1921
  this.maturity = maturity ?? 0;
1843
1922
  this.witnessLimit = witnessLimit ? (0, import_math7.bn)(witnessLimit) : void 0;
1844
1923
  this.maxFee = maxFee ? (0, import_math7.bn)(maxFee) : void 0;
@@ -1849,9 +1928,9 @@ var BaseTransactionRequest = class {
1849
1928
  static getPolicyMeta(req) {
1850
1929
  let policyTypes = 0;
1851
1930
  const policies = [];
1852
- if (req.gasPrice) {
1853
- policyTypes += import_transactions6.PolicyType.GasPrice;
1854
- policies.push({ data: req.gasPrice, type: import_transactions6.PolicyType.GasPrice });
1931
+ if (req.tip) {
1932
+ policyTypes += import_transactions6.PolicyType.Tip;
1933
+ policies.push({ data: req.tip, type: import_transactions6.PolicyType.Tip });
1855
1934
  }
1856
1935
  if (req.witnessLimit) {
1857
1936
  policyTypes += import_transactions6.PolicyType.WitnessLimit;
@@ -2038,10 +2117,10 @@ var BaseTransactionRequest = class {
2038
2117
  * @param predicate - Predicate bytes.
2039
2118
  * @param predicateData - Predicate data bytes.
2040
2119
  */
2041
- addCoinInput(coin, predicate) {
2120
+ addCoinInput(coin) {
2042
2121
  const { assetId, owner, amount } = coin;
2043
2122
  let witnessIndex;
2044
- if (predicate) {
2123
+ if (coin.predicate) {
2045
2124
  witnessIndex = 0;
2046
2125
  } else {
2047
2126
  witnessIndex = this.getCoinInputWitnessIndexByOwner(owner);
@@ -2056,8 +2135,7 @@ var BaseTransactionRequest = class {
2056
2135
  amount,
2057
2136
  assetId,
2058
2137
  txPointer: "0x00000000000000000000000000000000",
2059
- witnessIndex,
2060
- predicate: predicate?.bytes
2138
+ witnessIndex
2061
2139
  };
2062
2140
  this.pushInput(input);
2063
2141
  this.addChangeOutput(owner, assetId);
@@ -2070,11 +2148,11 @@ var BaseTransactionRequest = class {
2070
2148
  * @param predicate - Predicate bytes.
2071
2149
  * @param predicateData - Predicate data bytes.
2072
2150
  */
2073
- addMessageInput(message, predicate) {
2151
+ addMessageInput(message) {
2074
2152
  const { recipient, sender, amount } = message;
2075
2153
  const assetId = import_configs7.BaseAssetId;
2076
2154
  let witnessIndex;
2077
- if (predicate) {
2155
+ if (message.predicate) {
2078
2156
  witnessIndex = 0;
2079
2157
  } else {
2080
2158
  witnessIndex = this.getCoinInputWitnessIndexByOwner(recipient);
@@ -2088,8 +2166,7 @@ var BaseTransactionRequest = class {
2088
2166
  sender: sender.toB256(),
2089
2167
  recipient: recipient.toB256(),
2090
2168
  amount,
2091
- witnessIndex,
2092
- predicate: predicate?.bytes
2169
+ witnessIndex
2093
2170
  };
2094
2171
  this.pushInput(input);
2095
2172
  this.addChangeOutput(recipient, assetId);
@@ -2120,32 +2197,6 @@ var BaseTransactionRequest = class {
2120
2197
  resources.forEach((resource) => this.addResource(resource));
2121
2198
  return this;
2122
2199
  }
2123
- /**
2124
- * Adds multiple resources to the transaction by adding coin/message inputs and change
2125
- * outputs from the related assetIds.
2126
- *
2127
- * @param resources - The resources to add.
2128
- * @returns This transaction.
2129
- */
2130
- addPredicateResource(resource, predicate) {
2131
- if (isCoin(resource)) {
2132
- this.addCoinInput(resource, predicate);
2133
- } else {
2134
- this.addMessageInput(resource, predicate);
2135
- }
2136
- return this;
2137
- }
2138
- /**
2139
- * Adds multiple predicate coin/message inputs to the transaction and change outputs
2140
- * from the related assetIds.
2141
- *
2142
- * @param resources - The resources to add.
2143
- * @returns This transaction.
2144
- */
2145
- addPredicateResources(resources, predicate) {
2146
- resources.forEach((resource) => this.addPredicateResource(resource, predicate));
2147
- return this;
2148
- }
2149
2200
  /**
2150
2201
  * Adds a coin output to the transaction.
2151
2202
  *
@@ -2225,7 +2276,7 @@ var BaseTransactionRequest = class {
2225
2276
  }
2226
2277
  calculateMaxGas(chainInfo, minGas) {
2227
2278
  const { consensusParameters } = chainInfo;
2228
- const { gasPerByte } = consensusParameters;
2279
+ const { gasPerByte, maxGasPerTx } = consensusParameters;
2229
2280
  const witnessesLength = this.toTransaction().witnesses.reduce(
2230
2281
  (acc, wit) => acc + wit.dataLength,
2231
2282
  0
@@ -2234,7 +2285,8 @@ var BaseTransactionRequest = class {
2234
2285
  gasPerByte,
2235
2286
  minGas,
2236
2287
  witnessesLength,
2237
- witnessLimit: this.witnessLimit
2288
+ witnessLimit: this.witnessLimit,
2289
+ maxGasPerTx
2238
2290
  });
2239
2291
  }
2240
2292
  /**
@@ -2252,17 +2304,20 @@ var BaseTransactionRequest = class {
2252
2304
  });
2253
2305
  const updateAssetInput = (assetId, quantity) => {
2254
2306
  const assetInput = findAssetInput(assetId);
2307
+ let usedQuantity = quantity;
2308
+ if (assetId === import_configs7.BaseAssetId) {
2309
+ usedQuantity = (0, import_math7.bn)("1000000000000000000");
2310
+ }
2255
2311
  if (assetInput && "assetId" in assetInput) {
2256
- assetInput.id = (0, import_utils9.hexlify)((0, import_crypto.randomBytes)(import_abi_coder2.UTXO_ID_LEN));
2257
- assetInput.amount = quantity;
2312
+ assetInput.id = (0, import_utils9.hexlify)((0, import_ethers.randomBytes)(34));
2313
+ assetInput.amount = usedQuantity;
2258
2314
  } else {
2259
2315
  this.addResources([
2260
2316
  {
2261
- id: (0, import_utils9.hexlify)((0, import_crypto.randomBytes)(import_abi_coder2.UTXO_ID_LEN)),
2262
- amount: quantity,
2317
+ id: (0, import_utils9.hexlify)((0, import_ethers.randomBytes)(34)),
2318
+ amount: usedQuantity,
2263
2319
  assetId,
2264
2320
  owner: resourcesOwner || import_address.Address.fromRandom(),
2265
- maturity: 0,
2266
2321
  blockCreated: (0, import_math7.bn)(1),
2267
2322
  txCreatedIdx: (0, import_math7.bn)(1)
2268
2323
  }
@@ -2294,7 +2349,7 @@ var BaseTransactionRequest = class {
2294
2349
  toJSON() {
2295
2350
  return normalizeJSON(this);
2296
2351
  }
2297
- updatePredicateInputs(inputs) {
2352
+ updatePredicateGasUsed(inputs) {
2298
2353
  this.inputs.forEach((i) => {
2299
2354
  let correspondingInput;
2300
2355
  switch (i.type) {
@@ -2316,6 +2371,15 @@ var BaseTransactionRequest = class {
2316
2371
  }
2317
2372
  });
2318
2373
  }
2374
+ shiftPredicateData() {
2375
+ this.inputs.forEach((input) => {
2376
+ if ("predicateData" in input && "paddPredicateData" in input && typeof input.paddPredicateData === "function") {
2377
+ input.predicateData = input.paddPredicateData(
2378
+ BaseTransactionRequest.getPolicyMeta(this).policies.length
2379
+ );
2380
+ }
2381
+ });
2382
+ }
2319
2383
  };
2320
2384
 
2321
2385
  // src/providers/transaction-request/create-transaction-request.ts
@@ -2462,9 +2526,8 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2462
2526
  return {
2463
2527
  type: import_transactions8.TransactionType.Create,
2464
2528
  ...baseTransaction,
2465
- bytecodeLength: baseTransaction.witnesses[bytecodeWitnessIndex].dataLength / 4,
2466
2529
  bytecodeWitnessIndex,
2467
- storageSlotsCount: storageSlots.length,
2530
+ storageSlotsCount: (0, import_math9.bn)(storageSlots.length),
2468
2531
  salt: this.salt ? (0, import_utils13.hexlify)(this.salt) : import_configs9.ZeroBytes32,
2469
2532
  storageSlots
2470
2533
  };
@@ -2513,7 +2576,7 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2513
2576
  };
2514
2577
 
2515
2578
  // src/providers/transaction-request/script-transaction-request.ts
2516
- var import_abi_coder3 = require("@fuel-ts/abi-coder");
2579
+ var import_abi_coder = require("@fuel-ts/abi-coder");
2517
2580
  var import_address2 = require("@fuel-ts/address");
2518
2581
  var import_configs10 = require("@fuel-ts/address/configs");
2519
2582
  var import_math10 = require("@fuel-ts/math");
@@ -2587,8 +2650,8 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2587
2650
  type: import_transactions9.TransactionType.Script,
2588
2651
  scriptGasLimit: this.gasLimit,
2589
2652
  ...super.getBaseTransaction(),
2590
- scriptLength: script.length,
2591
- scriptDataLength: scriptData.length,
2653
+ scriptLength: (0, import_math10.bn)(script.length),
2654
+ scriptDataLength: (0, import_math10.bn)(scriptData.length),
2592
2655
  receiptsRoot: import_configs10.ZeroBytes32,
2593
2656
  script: (0, import_utils15.hexlify)(script),
2594
2657
  scriptData: (0, import_utils15.hexlify)(scriptData)
@@ -2652,7 +2715,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2652
2715
  }
2653
2716
  calculateMaxGas(chainInfo, minGas) {
2654
2717
  const { consensusParameters } = chainInfo;
2655
- const { gasPerByte } = consensusParameters;
2718
+ const { gasPerByte, maxGasPerTx } = consensusParameters;
2656
2719
  const witnessesLength = this.toTransaction().witnesses.reduce(
2657
2720
  (acc, wit) => acc + wit.dataLength,
2658
2721
  0
@@ -2662,7 +2725,8 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2662
2725
  minGas,
2663
2726
  witnessesLength,
2664
2727
  witnessLimit: this.witnessLimit,
2665
- gasLimit: this.gasLimit
2728
+ gasLimit: this.gasLimit,
2729
+ maxGasPerTx
2666
2730
  });
2667
2731
  }
2668
2732
  /**
@@ -2705,7 +2769,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2705
2769
  * @returns The current instance of the `ScriptTransactionRequest`.
2706
2770
  */
2707
2771
  setData(abi, args) {
2708
- const abiInterface = new import_abi_coder3.Interface(abi);
2772
+ const abiInterface = new import_abi_coder.Interface(abi);
2709
2773
  this.scriptData = abiInterface.functions.main.encodeArguments(args);
2710
2774
  return this;
2711
2775
  }
@@ -2737,15 +2801,32 @@ var transactionRequestify = (obj) => {
2737
2801
  }
2738
2802
  }
2739
2803
  };
2804
+ var cacheTxInputsFromOwner = (inputs, owner) => inputs.reduce(
2805
+ (acc, input) => {
2806
+ if (input.type === import_transactions10.InputType.Coin && input.owner === owner) {
2807
+ acc.utxos.push(input.id);
2808
+ }
2809
+ if (input.type === import_transactions10.InputType.Message && input.recipient === owner) {
2810
+ acc.messages.push(input.nonce);
2811
+ }
2812
+ return acc;
2813
+ },
2814
+ {
2815
+ utxos: [],
2816
+ messages: []
2817
+ }
2818
+ );
2740
2819
 
2741
2820
  // src/providers/transaction-response/transaction-response.ts
2742
2821
  var import_errors13 = require("@fuel-ts/errors");
2743
- var import_math14 = require("@fuel-ts/math");
2744
- var import_transactions17 = require("@fuel-ts/transactions");
2745
- var import_utils21 = require("@fuel-ts/utils");
2822
+ var import_math15 = require("@fuel-ts/math");
2823
+ var import_transactions18 = require("@fuel-ts/transactions");
2824
+ var import_utils20 = require("@fuel-ts/utils");
2746
2825
 
2747
2826
  // src/providers/transaction-summary/assemble-transaction-summary.ts
2748
- var import_utils19 = require("@fuel-ts/utils");
2827
+ var import_math14 = require("@fuel-ts/math");
2828
+ var import_transactions16 = require("@fuel-ts/transactions");
2829
+ var import_utils18 = require("@fuel-ts/utils");
2749
2830
 
2750
2831
  // src/providers/transaction-summary/calculate-transaction-fee.ts
2751
2832
  var import_math11 = require("@fuel-ts/math");
@@ -2753,9 +2834,10 @@ var import_transactions11 = require("@fuel-ts/transactions");
2753
2834
  var import_utils16 = require("@fuel-ts/utils");
2754
2835
  var calculateTransactionFee = (params) => {
2755
2836
  const {
2756
- gasUsed,
2837
+ gasPrice,
2757
2838
  rawPayload,
2758
- consensusParameters: { gasCosts, feeParams }
2839
+ tip,
2840
+ consensusParameters: { gasCosts, feeParams, maxGasPerTx }
2759
2841
  } = params;
2760
2842
  const gasPerByte = (0, import_math11.bn)(feeParams.gasPerByte);
2761
2843
  const gasPriceFactor = (0, import_math11.bn)(feeParams.gasPriceFactor);
@@ -2765,8 +2847,7 @@ var calculateTransactionFee = (params) => {
2765
2847
  return {
2766
2848
  fee: (0, import_math11.bn)(0),
2767
2849
  minFee: (0, import_math11.bn)(0),
2768
- maxFee: (0, import_math11.bn)(0),
2769
- feeFromGasUsed: (0, import_math11.bn)(0)
2850
+ maxFee: (0, import_math11.bn)(0)
2770
2851
  };
2771
2852
  }
2772
2853
  const { type, witnesses, inputs, policies } = transaction;
@@ -2798,7 +2879,6 @@ var calculateTransactionFee = (params) => {
2798
2879
  metadataGas,
2799
2880
  txBytesSize: transactionBytes.length
2800
2881
  });
2801
- const gasPrice = (0, import_math11.bn)(policies.find((policy) => policy.type === import_transactions11.PolicyType.GasPrice)?.data);
2802
2882
  const witnessLimit = policies.find((policy) => policy.type === import_transactions11.PolicyType.WitnessLimit)?.data;
2803
2883
  const witnessesLength = witnesses.reduce((acc, wit) => acc + wit.dataLength, 0);
2804
2884
  const maxGas = getMaxGas({
@@ -2806,17 +2886,25 @@ var calculateTransactionFee = (params) => {
2806
2886
  minGas,
2807
2887
  witnessesLength,
2808
2888
  gasLimit,
2809
- witnessLimit
2889
+ witnessLimit,
2890
+ maxGasPerTx
2891
+ });
2892
+ const minFee = calculateGasFee({
2893
+ gasPrice,
2894
+ gas: minGas,
2895
+ priceFactor: gasPriceFactor,
2896
+ tip
2897
+ });
2898
+ const maxFee = calculateGasFee({
2899
+ gasPrice,
2900
+ gas: maxGas,
2901
+ priceFactor: gasPriceFactor,
2902
+ tip
2810
2903
  });
2811
- const feeFromGasUsed = calculatePriceWithFactor(gasUsed, gasPrice, gasPriceFactor);
2812
- const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor);
2813
- const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor);
2814
- const fee = minFee.add(feeFromGasUsed);
2815
2904
  return {
2816
- fee,
2817
2905
  minFee,
2818
2906
  maxFee,
2819
- feeFromGasUsed
2907
+ fee: maxFee
2820
2908
  };
2821
2909
  };
2822
2910
 
@@ -2827,17 +2915,17 @@ var import_math13 = require("@fuel-ts/math");
2827
2915
  var import_transactions14 = require("@fuel-ts/transactions");
2828
2916
 
2829
2917
  // src/providers/transaction-summary/call.ts
2830
- var import_abi_coder4 = require("@fuel-ts/abi-coder");
2918
+ var import_abi_coder2 = require("@fuel-ts/abi-coder");
2831
2919
  var import_math12 = require("@fuel-ts/math");
2832
2920
  var getFunctionCall = ({ abi, receipt, rawPayload, maxInputs }) => {
2833
- const abiInterface = new import_abi_coder4.Interface(abi);
2921
+ const abiInterface = new import_abi_coder2.Interface(abi);
2834
2922
  const callFunctionSelector = receipt.param1.toHex(8);
2835
2923
  const functionFragment = abiInterface.getFunction(callFunctionSelector);
2836
2924
  const inputs = functionFragment.jsonFn.inputs;
2837
2925
  let encodedArgs;
2838
2926
  if (functionFragment.isInputDataPointer) {
2839
2927
  if (rawPayload) {
2840
- const argsOffset = (0, import_math12.bn)(receipt.param2).sub((0, import_abi_coder4.calculateVmTxMemory)({ maxInputs: maxInputs.toNumber() })).toNumber();
2928
+ const argsOffset = (0, import_math12.bn)(receipt.param2).sub((0, import_abi_coder2.calculateVmTxMemory)({ maxInputs: maxInputs.toNumber() })).toNumber();
2841
2929
  encodedArgs = `0x${rawPayload.slice(2).slice(argsOffset * 2)}`;
2842
2930
  }
2843
2931
  } else {
@@ -3430,10 +3518,12 @@ function assembleTransactionSummary(params) {
3430
3518
  gqlTransactionStatus,
3431
3519
  abiMap = {},
3432
3520
  maxInputs,
3433
- gasCosts
3521
+ gasCosts,
3522
+ maxGasPerTx,
3523
+ gasPrice
3434
3524
  } = params;
3435
3525
  const gasUsed = getGasUsedFromReceipts(receipts);
3436
- const rawPayload = (0, import_utils19.hexlify)(transactionBytes);
3526
+ const rawPayload = (0, import_utils18.hexlify)(transactionBytes);
3437
3527
  const operations = getOperations({
3438
3528
  transactionType: transaction.type,
3439
3529
  inputs: transaction.inputs || [],
@@ -3444,11 +3534,14 @@ function assembleTransactionSummary(params) {
3444
3534
  maxInputs
3445
3535
  });
3446
3536
  const typeName = getTransactionTypeName(transaction.type);
3537
+ const tip = (0, import_math14.bn)(transaction.policies?.find((policy) => policy.type === import_transactions16.PolicyType.Tip)?.data);
3447
3538
  const { fee } = calculateTransactionFee({
3448
- gasUsed,
3539
+ gasPrice,
3449
3540
  rawPayload,
3541
+ tip,
3450
3542
  consensusParameters: {
3451
3543
  gasCosts,
3544
+ maxGasPerTx,
3452
3545
  feeParams: {
3453
3546
  gasPerByte,
3454
3547
  gasPriceFactor
@@ -3460,7 +3553,7 @@ function assembleTransactionSummary(params) {
3460
3553
  const burnedAssets = extractBurnedAssetsFromReceipts(receipts);
3461
3554
  let date;
3462
3555
  if (time) {
3463
- date = import_utils19.DateTime.fromTai64(time);
3556
+ date = import_utils18.DateTime.fromTai64(time);
3464
3557
  }
3465
3558
  const transactionSummary = {
3466
3559
  id,
@@ -3487,13 +3580,13 @@ function assembleTransactionSummary(params) {
3487
3580
  }
3488
3581
 
3489
3582
  // src/providers/transaction-response/getDecodedLogs.ts
3490
- var import_abi_coder5 = require("@fuel-ts/abi-coder");
3491
- var import_transactions16 = require("@fuel-ts/transactions");
3583
+ var import_abi_coder3 = require("@fuel-ts/abi-coder");
3584
+ var import_transactions17 = require("@fuel-ts/transactions");
3492
3585
  function getDecodedLogs(receipts, mainAbi, externalAbis = {}) {
3493
3586
  return receipts.reduce((logs, receipt) => {
3494
- if (receipt.type === import_transactions16.ReceiptType.LogData || receipt.type === import_transactions16.ReceiptType.Log) {
3495
- const interfaceToUse = new import_abi_coder5.Interface(externalAbis[receipt.id] || mainAbi);
3496
- const data = receipt.type === import_transactions16.ReceiptType.Log ? new import_abi_coder5.BigNumberCoder("u64").encode(receipt.val0) : receipt.data;
3587
+ if (receipt.type === import_transactions17.ReceiptType.LogData || receipt.type === import_transactions17.ReceiptType.Log) {
3588
+ const interfaceToUse = new import_abi_coder3.Interface(externalAbis[receipt.id] || mainAbi);
3589
+ const data = receipt.type === import_transactions17.ReceiptType.Log ? new import_abi_coder3.BigNumberCoder("u64").encode(receipt.val0) : receipt.data;
3497
3590
  const [decodedLog] = interfaceToUse.decodeLog(data, receipt.val1.toNumber());
3498
3591
  logs.push(decodedLog);
3499
3592
  }
@@ -3508,7 +3601,7 @@ var TransactionResponse = class {
3508
3601
  /** Current provider */
3509
3602
  provider;
3510
3603
  /** Gas used on the transaction */
3511
- gasUsed = (0, import_math14.bn)(0);
3604
+ gasUsed = (0, import_math15.bn)(0);
3512
3605
  /** The graphql Transaction with receipts object. */
3513
3606
  gqlTransaction;
3514
3607
  abis;
@@ -3566,8 +3659,8 @@ var TransactionResponse = class {
3566
3659
  * @returns The decoded transaction.
3567
3660
  */
3568
3661
  decodeTransaction(transactionWithReceipts) {
3569
- return new import_transactions17.TransactionCoder().decode(
3570
- (0, import_utils21.arrayify)(transactionWithReceipts.rawPayload),
3662
+ return new import_transactions18.TransactionCoder().decode(
3663
+ (0, import_utils20.arrayify)(transactionWithReceipts.rawPayload),
3571
3664
  0
3572
3665
  )?.[0];
3573
3666
  }
@@ -3586,20 +3679,27 @@ var TransactionResponse = class {
3586
3679
  const decodedTransaction = this.decodeTransaction(
3587
3680
  transaction
3588
3681
  );
3589
- const receipts = transaction.receipts?.map(processGqlReceipt) || [];
3590
- const { gasPerByte, gasPriceFactor, gasCosts } = this.provider.getGasConfig();
3682
+ let txReceipts = [];
3683
+ if (transaction?.status && "receipts" in transaction.status) {
3684
+ txReceipts = transaction.status.receipts;
3685
+ }
3686
+ const receipts = txReceipts.map(processGqlReceipt) || [];
3687
+ const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = this.provider.getGasConfig();
3688
+ const gasPrice = await this.provider.getLatestGasPrice();
3591
3689
  const maxInputs = this.provider.getChain().consensusParameters.maxInputs;
3592
3690
  const transactionSummary = assembleTransactionSummary({
3593
3691
  id: this.id,
3594
3692
  receipts,
3595
3693
  transaction: decodedTransaction,
3596
- transactionBytes: (0, import_utils21.arrayify)(transaction.rawPayload),
3694
+ transactionBytes: (0, import_utils20.arrayify)(transaction.rawPayload),
3597
3695
  gqlTransactionStatus: transaction.status,
3598
3696
  gasPerByte,
3599
3697
  gasPriceFactor,
3600
3698
  abiMap: contractsAbiMap,
3601
3699
  maxInputs,
3602
- gasCosts
3700
+ gasCosts,
3701
+ maxGasPerTx,
3702
+ gasPrice
3603
3703
  });
3604
3704
  return transactionSummary;
3605
3705
  }
@@ -3726,29 +3826,29 @@ var processGqlChain = (chain) => {
3726
3826
  const { contractParams, feeParams, predicateParams, scriptParams, txParams, gasCosts } = consensusParameters;
3727
3827
  return {
3728
3828
  name,
3729
- baseChainHeight: (0, import_math15.bn)(daHeight),
3829
+ baseChainHeight: (0, import_math16.bn)(daHeight),
3730
3830
  consensusParameters: {
3731
- contractMaxSize: (0, import_math15.bn)(contractParams.contractMaxSize),
3732
- maxInputs: (0, import_math15.bn)(txParams.maxInputs),
3733
- maxOutputs: (0, import_math15.bn)(txParams.maxOutputs),
3734
- maxWitnesses: (0, import_math15.bn)(txParams.maxWitnesses),
3735
- maxGasPerTx: (0, import_math15.bn)(txParams.maxGasPerTx),
3736
- maxScriptLength: (0, import_math15.bn)(scriptParams.maxScriptLength),
3737
- maxScriptDataLength: (0, import_math15.bn)(scriptParams.maxScriptDataLength),
3738
- maxStorageSlots: (0, import_math15.bn)(contractParams.maxStorageSlots),
3739
- maxPredicateLength: (0, import_math15.bn)(predicateParams.maxPredicateLength),
3740
- maxPredicateDataLength: (0, import_math15.bn)(predicateParams.maxPredicateDataLength),
3741
- maxGasPerPredicate: (0, import_math15.bn)(predicateParams.maxGasPerPredicate),
3742
- gasPriceFactor: (0, import_math15.bn)(feeParams.gasPriceFactor),
3743
- gasPerByte: (0, import_math15.bn)(feeParams.gasPerByte),
3744
- maxMessageDataLength: (0, import_math15.bn)(predicateParams.maxMessageDataLength),
3745
- chainId: (0, import_math15.bn)(consensusParameters.chainId),
3831
+ contractMaxSize: (0, import_math16.bn)(contractParams.contractMaxSize),
3832
+ maxInputs: (0, import_math16.bn)(txParams.maxInputs),
3833
+ maxOutputs: (0, import_math16.bn)(txParams.maxOutputs),
3834
+ maxWitnesses: (0, import_math16.bn)(txParams.maxWitnesses),
3835
+ maxGasPerTx: (0, import_math16.bn)(txParams.maxGasPerTx),
3836
+ maxScriptLength: (0, import_math16.bn)(scriptParams.maxScriptLength),
3837
+ maxScriptDataLength: (0, import_math16.bn)(scriptParams.maxScriptDataLength),
3838
+ maxStorageSlots: (0, import_math16.bn)(contractParams.maxStorageSlots),
3839
+ maxPredicateLength: (0, import_math16.bn)(predicateParams.maxPredicateLength),
3840
+ maxPredicateDataLength: (0, import_math16.bn)(predicateParams.maxPredicateDataLength),
3841
+ maxGasPerPredicate: (0, import_math16.bn)(predicateParams.maxGasPerPredicate),
3842
+ gasPriceFactor: (0, import_math16.bn)(feeParams.gasPriceFactor),
3843
+ gasPerByte: (0, import_math16.bn)(feeParams.gasPerByte),
3844
+ maxMessageDataLength: (0, import_math16.bn)(predicateParams.maxMessageDataLength),
3845
+ chainId: (0, import_math16.bn)(consensusParameters.chainId),
3746
3846
  gasCosts
3747
3847
  },
3748
3848
  gasCosts,
3749
3849
  latestBlock: {
3750
3850
  id: latestBlock.id,
3751
- height: (0, import_math15.bn)(latestBlock.header.height),
3851
+ height: (0, import_math16.bn)(latestBlock.height),
3752
3852
  time: latestBlock.header.time,
3753
3853
  transactions: latestBlock.transactions.map((i) => ({
3754
3854
  id: i.id
@@ -3842,10 +3942,8 @@ var _Provider = class {
3842
3942
  * Returns some helpful parameters related to gas fees.
3843
3943
  */
3844
3944
  getGasConfig() {
3845
- const { minGasPrice } = this.getNode();
3846
3945
  const { maxGasPerTx, maxGasPerPredicate, gasPriceFactor, gasPerByte, gasCosts } = this.getChain().consensusParameters;
3847
3946
  return {
3848
- minGasPrice,
3849
3947
  maxGasPerTx,
3850
3948
  maxGasPerPredicate,
3851
3949
  gasPriceFactor,
@@ -3933,7 +4031,7 @@ var _Provider = class {
3933
4031
  name,
3934
4032
  consensusParameters: { chainId }
3935
4033
  } = await this.getChain();
3936
- const network = new import_ethers.Network(name, chainId.toNumber());
4034
+ const network = new import_ethers2.Network(name, chainId.toNumber());
3937
4035
  return Promise.resolve(network);
3938
4036
  }
3939
4037
  /**
@@ -3943,7 +4041,7 @@ var _Provider = class {
3943
4041
  */
3944
4042
  async getBlockNumber() {
3945
4043
  const { chain } = await this.operations.getChain();
3946
- return (0, import_math15.bn)(chain.latestBlock.header.height, 10);
4044
+ return (0, import_math16.bn)(chain.latestBlock.height, 10);
3947
4045
  }
3948
4046
  /**
3949
4047
  * Returns the chain information.
@@ -3953,13 +4051,11 @@ var _Provider = class {
3953
4051
  async fetchNode() {
3954
4052
  const { nodeInfo } = await this.operations.getNodeInfo();
3955
4053
  const processedNodeInfo = {
3956
- maxDepth: (0, import_math15.bn)(nodeInfo.maxDepth),
3957
- maxTx: (0, import_math15.bn)(nodeInfo.maxTx),
3958
- minGasPrice: (0, import_math15.bn)(nodeInfo.minGasPrice),
4054
+ maxDepth: (0, import_math16.bn)(nodeInfo.maxDepth),
4055
+ maxTx: (0, import_math16.bn)(nodeInfo.maxTx),
3959
4056
  nodeVersion: nodeInfo.nodeVersion,
3960
4057
  utxoValidation: nodeInfo.utxoValidation,
3961
- vmBacktrace: nodeInfo.vmBacktrace,
3962
- peers: nodeInfo.peers
4058
+ vmBacktrace: nodeInfo.vmBacktrace
3963
4059
  };
3964
4060
  _Provider.nodeInfoCache[this.url] = processedNodeInfo;
3965
4061
  return processedNodeInfo;
@@ -4001,9 +4097,9 @@ var _Provider = class {
4001
4097
  if (estimateTxDependencies) {
4002
4098
  await this.estimateTxDependencies(transactionRequest);
4003
4099
  }
4004
- const encodedTransaction = (0, import_utils23.hexlify)(transactionRequest.toTransactionBytes());
4100
+ const encodedTransaction = (0, import_utils22.hexlify)(transactionRequest.toTransactionBytes());
4005
4101
  let abis;
4006
- if (transactionRequest.type === import_transactions18.TransactionType.Script) {
4102
+ if (transactionRequest.type === import_transactions19.TransactionType.Script) {
4007
4103
  abis = transactionRequest.abis;
4008
4104
  }
4009
4105
  if (awaitExecution) {
@@ -4044,15 +4140,14 @@ var _Provider = class {
4044
4140
  if (estimateTxDependencies) {
4045
4141
  return this.estimateTxDependencies(transactionRequest);
4046
4142
  }
4047
- const encodedTransaction = (0, import_utils23.hexlify)(transactionRequest.toTransactionBytes());
4048
- const { dryRun: gqlReceipts } = await this.operations.dryRun({
4049
- encodedTransaction,
4143
+ const encodedTransaction = (0, import_utils22.hexlify)(transactionRequest.toTransactionBytes());
4144
+ const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4145
+ encodedTransactions: encodedTransaction,
4050
4146
  utxoValidation: utxoValidation || false
4051
4147
  });
4052
- const receipts = gqlReceipts.map(processGqlReceipt);
4053
- return {
4054
- receipts
4055
- };
4148
+ const [{ receipts: rawReceipts, status }] = dryRunStatuses;
4149
+ const receipts = rawReceipts.map(processGqlReceipt);
4150
+ return { receipts, dryrunStatus: status };
4056
4151
  }
4057
4152
  /**
4058
4153
  * Verifies whether enough gas is available to complete transaction.
@@ -4063,13 +4158,13 @@ var _Provider = class {
4063
4158
  async estimatePredicates(transactionRequest) {
4064
4159
  const shouldEstimatePredicates = Boolean(
4065
4160
  transactionRequest.inputs.find(
4066
- (input) => "predicate" in input && input.predicate && !(0, import_utils24.equalBytes)((0, import_utils23.arrayify)(input.predicate), (0, import_utils23.arrayify)("0x")) && new import_math15.BN(input.predicateGasUsed).isZero()
4161
+ (input) => "predicate" in input && input.predicate && !(0, import_utils23.equalBytes)((0, import_utils22.arrayify)(input.predicate), (0, import_utils22.arrayify)("0x")) && new import_math16.BN(input.predicateGasUsed).isZero()
4067
4162
  )
4068
4163
  );
4069
4164
  if (!shouldEstimatePredicates) {
4070
4165
  return transactionRequest;
4071
4166
  }
4072
- const encodedTransaction = (0, import_utils23.hexlify)(transactionRequest.toTransactionBytes());
4167
+ const encodedTransaction = (0, import_utils22.hexlify)(transactionRequest.toTransactionBytes());
4073
4168
  const response = await this.operations.estimatePredicates({
4074
4169
  encodedTransaction
4075
4170
  });
@@ -4078,7 +4173,7 @@ var _Provider = class {
4078
4173
  } = response;
4079
4174
  if (inputs) {
4080
4175
  inputs.forEach((input, index) => {
4081
- if ("predicateGasUsed" in input && (0, import_math15.bn)(input.predicateGasUsed).gt(0)) {
4176
+ if ("predicateGasUsed" in input && (0, import_math16.bn)(input.predicateGasUsed).gt(0)) {
4082
4177
  transactionRequest.inputs[index].predicateGasUsed = input.predicateGasUsed;
4083
4178
  }
4084
4179
  });
@@ -4091,31 +4186,31 @@ var _Provider = class {
4091
4186
  * If there are missing variable outputs,
4092
4187
  * `addVariableOutputs` is called on the transaction.
4093
4188
  *
4094
- * @privateRemarks
4095
- * TODO: Investigate support for missing contract IDs
4096
- * TODO: Add support for missing output messages
4097
4189
  *
4098
4190
  * @param transactionRequest - The transaction request object.
4099
4191
  * @returns A promise.
4100
4192
  */
4101
4193
  async estimateTxDependencies(transactionRequest) {
4102
- if (transactionRequest.type === import_transactions18.TransactionType.Create) {
4194
+ if (transactionRequest.type === import_transactions19.TransactionType.Create) {
4103
4195
  return {
4104
4196
  receipts: [],
4105
4197
  outputVariables: 0,
4106
4198
  missingContractIds: []
4107
4199
  };
4108
4200
  }
4109
- await this.estimatePredicates(transactionRequest);
4110
4201
  let receipts = [];
4111
4202
  const missingContractIds = [];
4112
4203
  let outputVariables = 0;
4204
+ let dryrunStatus;
4113
4205
  for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
4114
- const { dryRun: gqlReceipts } = await this.operations.dryRun({
4115
- encodedTransaction: (0, import_utils23.hexlify)(transactionRequest.toTransactionBytes()),
4206
+ const {
4207
+ dryRun: [{ receipts: rawReceipts, status }]
4208
+ } = await this.operations.dryRun({
4209
+ encodedTransactions: [(0, import_utils22.hexlify)(transactionRequest.toTransactionBytes())],
4116
4210
  utxoValidation: false
4117
4211
  });
4118
- receipts = gqlReceipts.map(processGqlReceipt);
4212
+ receipts = rawReceipts.map(processGqlReceipt);
4213
+ dryrunStatus = status;
4119
4214
  const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(receipts);
4120
4215
  const hasMissingOutputs = missingOutputVariables.length !== 0 || missingOutputContractIds.length !== 0;
4121
4216
  if (hasMissingOutputs) {
@@ -4125,6 +4220,11 @@ var _Provider = class {
4125
4220
  transactionRequest.addContractInputAndOutput(import_address3.Address.fromString(contractId));
4126
4221
  missingContractIds.push(contractId);
4127
4222
  });
4223
+ const { maxFee } = await this.estimateTxGasAndFee({
4224
+ transactionRequest,
4225
+ optimizeGas: false
4226
+ });
4227
+ transactionRequest.maxFee = maxFee;
4128
4228
  } else {
4129
4229
  break;
4130
4230
  }
@@ -4132,37 +4232,133 @@ var _Provider = class {
4132
4232
  return {
4133
4233
  receipts,
4134
4234
  outputVariables,
4135
- missingContractIds
4235
+ missingContractIds,
4236
+ dryrunStatus
4136
4237
  };
4137
4238
  }
4138
4239
  /**
4139
- * Estimates the transaction gas and fee based on the provided transaction request.
4140
- * @param transactionRequest - The transaction request object.
4141
- * @returns An object containing the estimated minimum gas, minimum fee, maximum gas, and maximum fee.
4240
+ * Dry runs multiple transactions and checks for missing dependencies in batches.
4241
+ *
4242
+ * Transactions are dry run in batches. After each dry run, transactions requiring
4243
+ * further modifications are identified. The method iteratively updates these transactions
4244
+ * and performs subsequent dry runs until all dependencies for each transaction are satisfied.
4245
+ *
4246
+ * @param transactionRequests - Array of transaction request objects.
4247
+ * @returns A promise that resolves to an array of results for each transaction.
4142
4248
  */
4143
- estimateTxGasAndFee(params) {
4144
- const { transactionRequest } = params;
4145
- const { gasPriceFactor, minGasPrice, maxGasPerTx } = this.getGasConfig();
4249
+ async estimateMultipleTxDependencies(transactionRequests) {
4250
+ const results = transactionRequests.map(() => ({
4251
+ receipts: [],
4252
+ outputVariables: 0,
4253
+ missingContractIds: [],
4254
+ dryrunStatus: void 0
4255
+ }));
4256
+ const allRequests = (0, import_ramda3.clone)(transactionRequests);
4257
+ const serializedTransactionsMap = /* @__PURE__ */ new Map();
4258
+ allRequests.forEach((req, index) => {
4259
+ if (req.type === import_transactions19.TransactionType.Script) {
4260
+ serializedTransactionsMap.set(index, (0, import_utils22.hexlify)(req.toTransactionBytes()));
4261
+ }
4262
+ });
4263
+ let transactionsToProcess = Array.from(serializedTransactionsMap.keys());
4264
+ let attempt = 0;
4265
+ while (transactionsToProcess.length > 0 && attempt < MAX_RETRIES) {
4266
+ const encodedTransactions = transactionsToProcess.map(
4267
+ (index) => serializedTransactionsMap.get(index)
4268
+ );
4269
+ const dryRunResults = await this.operations.dryRun({
4270
+ encodedTransactions,
4271
+ utxoValidation: false
4272
+ });
4273
+ const nextRoundTransactions = [];
4274
+ for (let i = 0; i < dryRunResults.dryRun.length; i++) {
4275
+ const currentResultIndex = transactionsToProcess[i];
4276
+ const { receipts: rawReceipts, status } = dryRunResults.dryRun[i];
4277
+ results[currentResultIndex].receipts = rawReceipts.map(processGqlReceipt);
4278
+ results[currentResultIndex].dryrunStatus = status;
4279
+ const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(
4280
+ results[currentResultIndex].receipts
4281
+ );
4282
+ const hasMissingOutputs = missingOutputVariables.length > 0 || missingOutputContractIds.length > 0;
4283
+ const requestToProcess = allRequests[currentResultIndex];
4284
+ if (hasMissingOutputs && requestToProcess?.type === import_transactions19.TransactionType.Script) {
4285
+ results[currentResultIndex].outputVariables += missingOutputVariables.length;
4286
+ requestToProcess.addVariableOutputs(missingOutputVariables.length);
4287
+ missingOutputContractIds.forEach(({ contractId }) => {
4288
+ requestToProcess.addContractInputAndOutput(import_address3.Address.fromString(contractId));
4289
+ results[currentResultIndex].missingContractIds.push(contractId);
4290
+ });
4291
+ const { maxFee } = await this.estimateTxGasAndFee({
4292
+ transactionRequest: requestToProcess,
4293
+ optimizeGas: false
4294
+ });
4295
+ requestToProcess.maxFee = maxFee;
4296
+ serializedTransactionsMap.set(
4297
+ currentResultIndex,
4298
+ (0, import_utils22.hexlify)(requestToProcess.toTransactionBytes())
4299
+ );
4300
+ nextRoundTransactions.push(currentResultIndex);
4301
+ allRequests[currentResultIndex] = requestToProcess;
4302
+ }
4303
+ }
4304
+ transactionsToProcess = nextRoundTransactions;
4305
+ attempt += 1;
4306
+ }
4307
+ return results;
4308
+ }
4309
+ async dryRunMultipleTransactions(transactionRequests, { utxoValidation, estimateTxDependencies = true } = {}) {
4310
+ if (estimateTxDependencies) {
4311
+ return this.estimateMultipleTxDependencies(transactionRequests);
4312
+ }
4313
+ const encodedTransactions = transactionRequests.map((tx) => (0, import_utils22.hexlify)(tx.toTransactionBytes()));
4314
+ const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4315
+ encodedTransactions,
4316
+ utxoValidation: utxoValidation || false
4317
+ });
4318
+ const results = dryRunStatuses.map(({ receipts: rawReceipts, status }) => {
4319
+ const receipts = rawReceipts.map(processGqlReceipt);
4320
+ return { receipts, dryrunStatus: status };
4321
+ });
4322
+ return results;
4323
+ }
4324
+ async estimateTxGasAndFee(params) {
4325
+ const { transactionRequest, optimizeGas = true } = params;
4326
+ let { gasPrice } = params;
4146
4327
  const chainInfo = this.getChain();
4147
- const gasPrice = transactionRequest.gasPrice.eq(0) ? minGasPrice : transactionRequest.gasPrice;
4148
- transactionRequest.gasPrice = gasPrice;
4328
+ const { gasPriceFactor } = this.getGasConfig();
4149
4329
  const minGas = transactionRequest.calculateMinGas(chainInfo);
4150
- const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
4151
- if (transactionRequest.type === import_transactions18.TransactionType.Script) {
4152
- if (transactionRequest.gasLimit.eq(0)) {
4330
+ if (!gasPrice) {
4331
+ gasPrice = await this.estimateGasPrice(10);
4332
+ }
4333
+ const minFee = calculateGasFee({
4334
+ gasPrice: (0, import_math16.bn)(gasPrice),
4335
+ gas: minGas,
4336
+ priceFactor: gasPriceFactor,
4337
+ tip: transactionRequest.tip
4338
+ }).add(1);
4339
+ let gasLimit = (0, import_math16.bn)(0);
4340
+ if (transactionRequest.type === import_transactions19.TransactionType.Script) {
4341
+ gasLimit = transactionRequest.gasLimit;
4342
+ if (!optimizeGas) {
4153
4343
  transactionRequest.gasLimit = minGas;
4154
- transactionRequest.gasLimit = maxGasPerTx.sub(
4155
- transactionRequest.calculateMaxGas(chainInfo, minGas)
4156
- );
4344
+ gasLimit = transactionRequest.calculateMaxGas(chainInfo, minGas);
4345
+ transactionRequest.gasLimit = gasLimit;
4157
4346
  }
4158
4347
  }
4159
4348
  const maxGas = transactionRequest.calculateMaxGas(chainInfo, minGas);
4160
- const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
4349
+ const maxFee = calculateGasFee({
4350
+ gasPrice: (0, import_math16.bn)(gasPrice),
4351
+ gas: maxGas,
4352
+ priceFactor: gasPriceFactor,
4353
+ tip: transactionRequest.tip
4354
+ }).add(1);
4161
4355
  return {
4162
4356
  minGas,
4163
4357
  minFee,
4164
4358
  maxGas,
4165
- maxFee
4359
+ maxFee,
4360
+ gasPrice,
4361
+ gasLimit
4166
4362
  };
4167
4363
  }
4168
4364
  /**
@@ -4180,15 +4376,17 @@ var _Provider = class {
4180
4376
  if (estimateTxDependencies) {
4181
4377
  return this.estimateTxDependencies(transactionRequest);
4182
4378
  }
4183
- const encodedTransaction = (0, import_utils23.hexlify)(transactionRequest.toTransactionBytes());
4184
- const { dryRun: gqlReceipts } = await this.operations.dryRun({
4185
- encodedTransaction,
4379
+ const encodedTransactions = [(0, import_utils22.hexlify)(transactionRequest.toTransactionBytes())];
4380
+ const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4381
+ encodedTransactions,
4186
4382
  utxoValidation: true
4187
4383
  });
4188
- const receipts = gqlReceipts.map(processGqlReceipt);
4189
- return {
4190
- receipts
4191
- };
4384
+ const callResult = dryRunStatuses.map((dryRunStatus) => {
4385
+ const { id, receipts, status } = dryRunStatus;
4386
+ const processedReceipts = receipts.map(processGqlReceipt);
4387
+ return { id, receipts: processedReceipts, status };
4388
+ });
4389
+ return { receipts: callResult[0].receipts };
4192
4390
  }
4193
4391
  /**
4194
4392
  * Returns a transaction cost to enable user
@@ -4205,77 +4403,80 @@ var _Provider = class {
4205
4403
  * @param tolerance - The tolerance to add on top of the gasUsed.
4206
4404
  * @returns A promise that resolves to the transaction cost object.
4207
4405
  */
4208
- async getTransactionCost(transactionRequestLike, forwardingQuantities = [], {
4209
- estimateTxDependencies = true,
4210
- estimatePredicates = true,
4211
- resourcesOwner,
4212
- signatureCallback
4213
- } = {}) {
4406
+ async getTransactionCost(transactionRequestLike, { resourcesOwner, signatureCallback, quantitiesToContract = [] } = {}) {
4214
4407
  const txRequestClone = (0, import_ramda3.clone)(transactionRequestify(transactionRequestLike));
4215
- const { minGasPrice } = this.getGasConfig();
4216
- const setGasPrice = (0, import_math15.max)(txRequestClone.gasPrice, minGasPrice);
4217
- const isScriptTransaction = txRequestClone.type === import_transactions18.TransactionType.Script;
4408
+ const isScriptTransaction = txRequestClone.type === import_transactions19.TransactionType.Script;
4218
4409
  const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
4219
- const allQuantities = mergeQuantities(coinOutputsQuantities, forwardingQuantities);
4410
+ const allQuantities = mergeQuantities(coinOutputsQuantities, quantitiesToContract);
4220
4411
  txRequestClone.fundWithFakeUtxos(allQuantities, resourcesOwner?.address);
4412
+ txRequestClone.maxFee = (0, import_math16.bn)(0);
4221
4413
  if (isScriptTransaction) {
4222
- txRequestClone.gasLimit = (0, import_math15.bn)(0);
4414
+ txRequestClone.gasLimit = (0, import_math16.bn)(0);
4223
4415
  }
4224
- if (estimatePredicates) {
4225
- if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
4226
- resourcesOwner.populateTransactionPredicateData(txRequestClone);
4227
- }
4228
- await this.estimatePredicates(txRequestClone);
4416
+ if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
4417
+ resourcesOwner.populateTransactionPredicateData(txRequestClone);
4229
4418
  }
4419
+ const signedRequest = (0, import_ramda3.clone)(txRequestClone);
4420
+ let addedSignatures = 0;
4230
4421
  if (signatureCallback && isScriptTransaction) {
4231
- await signatureCallback(txRequestClone);
4232
- }
4233
- let { maxFee, maxGas, minFee, minGas } = this.estimateTxGasAndFee({
4234
- transactionRequest: txRequestClone
4422
+ const lengthBefore = signedRequest.witnesses.length;
4423
+ await signatureCallback(signedRequest);
4424
+ addedSignatures = signedRequest.witnesses.length - lengthBefore;
4425
+ }
4426
+ await this.estimatePredicates(signedRequest);
4427
+ let { maxFee, maxGas, minFee, minGas, gasPrice, gasLimit } = await this.estimateTxGasAndFee({
4428
+ transactionRequest: signedRequest,
4429
+ optimizeGas: false
4235
4430
  });
4431
+ txRequestClone.maxFee = maxFee;
4236
4432
  let receipts = [];
4237
4433
  let missingContractIds = [];
4238
4434
  let outputVariables = 0;
4239
- let gasUsed = (0, import_math15.bn)(0);
4240
- if (isScriptTransaction && estimateTxDependencies) {
4241
- txRequestClone.gasPrice = (0, import_math15.bn)(0);
4435
+ let gasUsed = (0, import_math16.bn)(0);
4436
+ txRequestClone.updatePredicateGasUsed(signedRequest.inputs);
4437
+ if (isScriptTransaction) {
4438
+ if (signatureCallback) {
4439
+ await signatureCallback(txRequestClone);
4440
+ }
4441
+ txRequestClone.gasLimit = gasLimit;
4242
4442
  const result = await this.estimateTxDependencies(txRequestClone);
4243
4443
  receipts = result.receipts;
4244
4444
  outputVariables = result.outputVariables;
4245
4445
  missingContractIds = result.missingContractIds;
4246
- gasUsed = isScriptTransaction ? getGasUsedFromReceipts(receipts) : gasUsed;
4446
+ gasUsed = getGasUsedFromReceipts(receipts);
4247
4447
  txRequestClone.gasLimit = gasUsed;
4248
- txRequestClone.gasPrice = setGasPrice;
4249
- ({ maxFee, maxGas, minFee, minGas } = this.estimateTxGasAndFee({
4250
- transactionRequest: txRequestClone
4448
+ ({ maxFee, maxGas, minFee, minGas, gasPrice } = await this.estimateTxGasAndFee({
4449
+ transactionRequest: txRequestClone,
4450
+ gasPrice
4251
4451
  }));
4252
4452
  }
4253
4453
  return {
4254
4454
  requiredQuantities: allQuantities,
4255
4455
  receipts,
4256
4456
  gasUsed,
4257
- minGasPrice,
4258
- gasPrice: setGasPrice,
4457
+ gasPrice,
4259
4458
  minGas,
4260
4459
  maxGas,
4261
4460
  minFee,
4262
4461
  maxFee,
4263
- estimatedInputs: txRequestClone.inputs,
4264
4462
  outputVariables,
4265
- missingContractIds
4463
+ missingContractIds,
4464
+ addedSignatures,
4465
+ estimatedPredicates: txRequestClone.inputs
4266
4466
  };
4267
4467
  }
4268
- async getResourcesForTransaction(owner, transactionRequestLike, forwardingQuantities = []) {
4468
+ async getResourcesForTransaction(owner, transactionRequestLike, quantitiesToContract = []) {
4269
4469
  const ownerAddress = import_address3.Address.fromAddressOrString(owner);
4270
4470
  const transactionRequest = transactionRequestify((0, import_ramda3.clone)(transactionRequestLike));
4271
- const transactionCost = await this.getTransactionCost(transactionRequest, forwardingQuantities);
4471
+ const transactionCost = await this.getTransactionCost(transactionRequest, {
4472
+ quantitiesToContract
4473
+ });
4272
4474
  transactionRequest.addResources(
4273
4475
  await this.getResourcesToSpend(ownerAddress, transactionCost.requiredQuantities)
4274
4476
  );
4275
- const { requiredQuantities, ...txCost } = await this.getTransactionCost(
4276
- transactionRequest,
4277
- forwardingQuantities
4278
- );
4477
+ const { requiredQuantities, ...txCost } = await this.getTransactionCost(transactionRequest, {
4478
+ quantitiesToContract
4479
+ });
4279
4480
  const resources = await this.getResourcesToSpend(ownerAddress, requiredQuantities);
4280
4481
  return {
4281
4482
  resources,
@@ -4291,17 +4492,16 @@ var _Provider = class {
4291
4492
  const result = await this.operations.getCoins({
4292
4493
  first: 10,
4293
4494
  ...paginationArgs,
4294
- filter: { owner: ownerAddress.toB256(), assetId: assetId && (0, import_utils23.hexlify)(assetId) }
4495
+ filter: { owner: ownerAddress.toB256(), assetId: assetId && (0, import_utils22.hexlify)(assetId) }
4295
4496
  });
4296
4497
  const coins = result.coins.edges.map((edge) => edge.node);
4297
4498
  return coins.map((coin) => ({
4298
4499
  id: coin.utxoId,
4299
4500
  assetId: coin.assetId,
4300
- amount: (0, import_math15.bn)(coin.amount),
4501
+ amount: (0, import_math16.bn)(coin.amount),
4301
4502
  owner: import_address3.Address.fromAddressOrString(coin.owner),
4302
- maturity: (0, import_math15.bn)(coin.maturity).toNumber(),
4303
- blockCreated: (0, import_math15.bn)(coin.blockCreated),
4304
- txCreatedIdx: (0, import_math15.bn)(coin.txCreatedIdx)
4503
+ blockCreated: (0, import_math16.bn)(coin.blockCreated),
4504
+ txCreatedIdx: (0, import_math16.bn)(coin.txCreatedIdx)
4305
4505
  }));
4306
4506
  }
4307
4507
  /**
@@ -4315,19 +4515,19 @@ var _Provider = class {
4315
4515
  async getResourcesToSpend(owner, quantities, excludedIds) {
4316
4516
  const ownerAddress = import_address3.Address.fromAddressOrString(owner);
4317
4517
  const excludeInput = {
4318
- messages: excludedIds?.messages?.map((nonce) => (0, import_utils23.hexlify)(nonce)) || [],
4319
- utxos: excludedIds?.utxos?.map((id) => (0, import_utils23.hexlify)(id)) || []
4518
+ messages: excludedIds?.messages?.map((nonce) => (0, import_utils22.hexlify)(nonce)) || [],
4519
+ utxos: excludedIds?.utxos?.map((id) => (0, import_utils22.hexlify)(id)) || []
4320
4520
  };
4321
4521
  if (this.cache) {
4322
4522
  const uniqueUtxos = new Set(
4323
- excludeInput.utxos.concat(this.cache?.getActiveData().map((id) => (0, import_utils23.hexlify)(id)))
4523
+ excludeInput.utxos.concat(this.cache?.getActiveData().map((id) => (0, import_utils22.hexlify)(id)))
4324
4524
  );
4325
4525
  excludeInput.utxos = Array.from(uniqueUtxos);
4326
4526
  }
4327
4527
  const coinsQuery = {
4328
4528
  owner: ownerAddress.toB256(),
4329
4529
  queryPerAsset: quantities.map(coinQuantityfy).map(({ assetId, amount, max: maxPerAsset }) => ({
4330
- assetId: (0, import_utils23.hexlify)(assetId),
4530
+ assetId: (0, import_utils22.hexlify)(assetId),
4331
4531
  amount: amount.toString(10),
4332
4532
  max: maxPerAsset ? maxPerAsset.toString(10) : void 0
4333
4533
  })),
@@ -4338,9 +4538,9 @@ var _Provider = class {
4338
4538
  switch (coin.__typename) {
4339
4539
  case "MessageCoin":
4340
4540
  return {
4341
- amount: (0, import_math15.bn)(coin.amount),
4541
+ amount: (0, import_math16.bn)(coin.amount),
4342
4542
  assetId: coin.assetId,
4343
- daHeight: (0, import_math15.bn)(coin.daHeight),
4543
+ daHeight: (0, import_math16.bn)(coin.daHeight),
4344
4544
  sender: import_address3.Address.fromAddressOrString(coin.sender),
4345
4545
  recipient: import_address3.Address.fromAddressOrString(coin.recipient),
4346
4546
  nonce: coin.nonce
@@ -4348,12 +4548,11 @@ var _Provider = class {
4348
4548
  case "Coin":
4349
4549
  return {
4350
4550
  id: coin.utxoId,
4351
- amount: (0, import_math15.bn)(coin.amount),
4551
+ amount: (0, import_math16.bn)(coin.amount),
4352
4552
  assetId: coin.assetId,
4353
4553
  owner: import_address3.Address.fromAddressOrString(coin.owner),
4354
- maturity: (0, import_math15.bn)(coin.maturity).toNumber(),
4355
- blockCreated: (0, import_math15.bn)(coin.blockCreated),
4356
- txCreatedIdx: (0, import_math15.bn)(coin.txCreatedIdx)
4554
+ blockCreated: (0, import_math16.bn)(coin.blockCreated),
4555
+ txCreatedIdx: (0, import_math16.bn)(coin.txCreatedIdx)
4357
4556
  };
4358
4557
  default:
4359
4558
  return null;
@@ -4370,13 +4569,13 @@ var _Provider = class {
4370
4569
  async getBlock(idOrHeight) {
4371
4570
  let variables;
4372
4571
  if (typeof idOrHeight === "number") {
4373
- variables = { height: (0, import_math15.bn)(idOrHeight).toString(10) };
4572
+ variables = { height: (0, import_math16.bn)(idOrHeight).toString(10) };
4374
4573
  } else if (idOrHeight === "latest") {
4375
4574
  variables = { height: (await this.getBlockNumber()).toString(10) };
4376
4575
  } else if (idOrHeight.length === 66) {
4377
4576
  variables = { blockId: idOrHeight };
4378
4577
  } else {
4379
- variables = { blockId: (0, import_math15.bn)(idOrHeight).toString(10) };
4578
+ variables = { blockId: (0, import_math16.bn)(idOrHeight).toString(10) };
4380
4579
  }
4381
4580
  const { block } = await this.operations.getBlock(variables);
4382
4581
  if (!block) {
@@ -4384,7 +4583,7 @@ var _Provider = class {
4384
4583
  }
4385
4584
  return {
4386
4585
  id: block.id,
4387
- height: (0, import_math15.bn)(block.header.height),
4586
+ height: (0, import_math16.bn)(block.height),
4388
4587
  time: block.header.time,
4389
4588
  transactionIds: block.transactions.map((tx) => tx.id)
4390
4589
  };
@@ -4399,7 +4598,7 @@ var _Provider = class {
4399
4598
  const { blocks: fetchedData } = await this.operations.getBlocks(params);
4400
4599
  const blocks = fetchedData.edges.map(({ node: block }) => ({
4401
4600
  id: block.id,
4402
- height: (0, import_math15.bn)(block.header.height),
4601
+ height: (0, import_math16.bn)(block.height),
4403
4602
  time: block.header.time,
4404
4603
  transactionIds: block.transactions.map((tx) => tx.id)
4405
4604
  }));
@@ -4414,7 +4613,7 @@ var _Provider = class {
4414
4613
  async getBlockWithTransactions(idOrHeight) {
4415
4614
  let variables;
4416
4615
  if (typeof idOrHeight === "number") {
4417
- variables = { blockHeight: (0, import_math15.bn)(idOrHeight).toString(10) };
4616
+ variables = { blockHeight: (0, import_math16.bn)(idOrHeight).toString(10) };
4418
4617
  } else if (idOrHeight === "latest") {
4419
4618
  variables = { blockHeight: (await this.getBlockNumber()).toString() };
4420
4619
  } else {
@@ -4426,11 +4625,11 @@ var _Provider = class {
4426
4625
  }
4427
4626
  return {
4428
4627
  id: block.id,
4429
- height: (0, import_math15.bn)(block.header.height, 10),
4628
+ height: (0, import_math16.bn)(block.height, 10),
4430
4629
  time: block.header.time,
4431
4630
  transactionIds: block.transactions.map((tx) => tx.id),
4432
4631
  transactions: block.transactions.map(
4433
- (tx) => new import_transactions18.TransactionCoder().decode((0, import_utils23.arrayify)(tx.rawPayload), 0)?.[0]
4632
+ (tx) => new import_transactions19.TransactionCoder().decode((0, import_utils22.arrayify)(tx.rawPayload), 0)?.[0]
4434
4633
  )
4435
4634
  };
4436
4635
  }
@@ -4445,8 +4644,8 @@ var _Provider = class {
4445
4644
  if (!transaction) {
4446
4645
  return null;
4447
4646
  }
4448
- return new import_transactions18.TransactionCoder().decode(
4449
- (0, import_utils23.arrayify)(transaction.rawPayload),
4647
+ return new import_transactions19.TransactionCoder().decode(
4648
+ (0, import_utils22.arrayify)(transaction.rawPayload),
4450
4649
  0
4451
4650
  )?.[0];
4452
4651
  }
@@ -4473,9 +4672,9 @@ var _Provider = class {
4473
4672
  async getContractBalance(contractId, assetId) {
4474
4673
  const { contractBalance } = await this.operations.getContractBalance({
4475
4674
  contract: import_address3.Address.fromAddressOrString(contractId).toB256(),
4476
- asset: (0, import_utils23.hexlify)(assetId)
4675
+ asset: (0, import_utils22.hexlify)(assetId)
4477
4676
  });
4478
- return (0, import_math15.bn)(contractBalance.amount, 10);
4677
+ return (0, import_math16.bn)(contractBalance.amount, 10);
4479
4678
  }
4480
4679
  /**
4481
4680
  * Returns the balance for the given owner for the given asset ID.
@@ -4487,9 +4686,9 @@ var _Provider = class {
4487
4686
  async getBalance(owner, assetId) {
4488
4687
  const { balance } = await this.operations.getBalance({
4489
4688
  owner: import_address3.Address.fromAddressOrString(owner).toB256(),
4490
- assetId: (0, import_utils23.hexlify)(assetId)
4689
+ assetId: (0, import_utils22.hexlify)(assetId)
4491
4690
  });
4492
- return (0, import_math15.bn)(balance.amount, 10);
4691
+ return (0, import_math16.bn)(balance.amount, 10);
4493
4692
  }
4494
4693
  /**
4495
4694
  * Returns balances for the given owner.
@@ -4507,7 +4706,7 @@ var _Provider = class {
4507
4706
  const balances = result.balances.edges.map((edge) => edge.node);
4508
4707
  return balances.map((balance) => ({
4509
4708
  assetId: balance.assetId,
4510
- amount: (0, import_math15.bn)(balance.amount)
4709
+ amount: (0, import_math16.bn)(balance.amount)
4511
4710
  }));
4512
4711
  }
4513
4712
  /**
@@ -4525,19 +4724,19 @@ var _Provider = class {
4525
4724
  });
4526
4725
  const messages = result.messages.edges.map((edge) => edge.node);
4527
4726
  return messages.map((message) => ({
4528
- messageId: import_transactions18.InputMessageCoder.getMessageId({
4727
+ messageId: import_transactions19.InputMessageCoder.getMessageId({
4529
4728
  sender: message.sender,
4530
4729
  recipient: message.recipient,
4531
4730
  nonce: message.nonce,
4532
- amount: (0, import_math15.bn)(message.amount),
4731
+ amount: (0, import_math16.bn)(message.amount),
4533
4732
  data: message.data
4534
4733
  }),
4535
4734
  sender: import_address3.Address.fromAddressOrString(message.sender),
4536
4735
  recipient: import_address3.Address.fromAddressOrString(message.recipient),
4537
4736
  nonce: message.nonce,
4538
- amount: (0, import_math15.bn)(message.amount),
4539
- data: import_transactions18.InputMessageCoder.decodeData(message.data),
4540
- daHeight: (0, import_math15.bn)(message.daHeight)
4737
+ amount: (0, import_math16.bn)(message.amount),
4738
+ data: import_transactions19.InputMessageCoder.decodeData(message.data),
4739
+ daHeight: (0, import_math16.bn)(message.daHeight)
4541
4740
  }));
4542
4741
  }
4543
4742
  /**
@@ -4590,44 +4789,52 @@ var _Provider = class {
4590
4789
  } = result.messageProof;
4591
4790
  return {
4592
4791
  messageProof: {
4593
- proofIndex: (0, import_math15.bn)(messageProof.proofIndex),
4792
+ proofIndex: (0, import_math16.bn)(messageProof.proofIndex),
4594
4793
  proofSet: messageProof.proofSet
4595
4794
  },
4596
4795
  blockProof: {
4597
- proofIndex: (0, import_math15.bn)(blockProof.proofIndex),
4796
+ proofIndex: (0, import_math16.bn)(blockProof.proofIndex),
4598
4797
  proofSet: blockProof.proofSet
4599
4798
  },
4600
4799
  messageBlockHeader: {
4601
4800
  id: messageBlockHeader.id,
4602
- daHeight: (0, import_math15.bn)(messageBlockHeader.daHeight),
4603
- transactionsCount: (0, import_math15.bn)(messageBlockHeader.transactionsCount),
4801
+ daHeight: (0, import_math16.bn)(messageBlockHeader.daHeight),
4802
+ transactionsCount: (0, import_math16.bn)(messageBlockHeader.transactionsCount),
4604
4803
  transactionsRoot: messageBlockHeader.transactionsRoot,
4605
- height: (0, import_math15.bn)(messageBlockHeader.height),
4804
+ height: (0, import_math16.bn)(messageBlockHeader.height),
4606
4805
  prevRoot: messageBlockHeader.prevRoot,
4607
4806
  time: messageBlockHeader.time,
4608
4807
  applicationHash: messageBlockHeader.applicationHash,
4609
- messageReceiptRoot: messageBlockHeader.messageReceiptRoot,
4610
- messageReceiptCount: (0, import_math15.bn)(messageBlockHeader.messageReceiptCount)
4808
+ messageReceiptCount: (0, import_math16.bn)(messageBlockHeader.messageReceiptCount)
4611
4809
  },
4612
4810
  commitBlockHeader: {
4613
4811
  id: commitBlockHeader.id,
4614
- daHeight: (0, import_math15.bn)(commitBlockHeader.daHeight),
4615
- transactionsCount: (0, import_math15.bn)(commitBlockHeader.transactionsCount),
4812
+ daHeight: (0, import_math16.bn)(commitBlockHeader.daHeight),
4813
+ transactionsCount: (0, import_math16.bn)(commitBlockHeader.transactionsCount),
4616
4814
  transactionsRoot: commitBlockHeader.transactionsRoot,
4617
- height: (0, import_math15.bn)(commitBlockHeader.height),
4815
+ height: (0, import_math16.bn)(commitBlockHeader.height),
4618
4816
  prevRoot: commitBlockHeader.prevRoot,
4619
4817
  time: commitBlockHeader.time,
4620
4818
  applicationHash: commitBlockHeader.applicationHash,
4621
- messageReceiptRoot: commitBlockHeader.messageReceiptRoot,
4622
- messageReceiptCount: (0, import_math15.bn)(commitBlockHeader.messageReceiptCount)
4819
+ messageReceiptCount: (0, import_math16.bn)(commitBlockHeader.messageReceiptCount)
4623
4820
  },
4624
4821
  sender: import_address3.Address.fromAddressOrString(sender),
4625
4822
  recipient: import_address3.Address.fromAddressOrString(recipient),
4626
4823
  nonce,
4627
- amount: (0, import_math15.bn)(amount),
4824
+ amount: (0, import_math16.bn)(amount),
4628
4825
  data
4629
4826
  };
4630
4827
  }
4828
+ async getLatestGasPrice() {
4829
+ const { latestGasPrice } = await this.operations.getLatestGasPrice();
4830
+ return (0, import_math16.bn)(latestGasPrice.gasPrice);
4831
+ }
4832
+ async estimateGasPrice(blockHorizon) {
4833
+ const { estimateGasPrice } = await this.operations.estimateGasPrice({
4834
+ blockHorizon: String(blockHorizon)
4835
+ });
4836
+ return (0, import_math16.bn)(estimateGasPrice.gasPrice);
4837
+ }
4631
4838
  /**
4632
4839
  * Returns Message Proof for given transaction id and the message id from MessageOut receipt.
4633
4840
  *
@@ -4647,10 +4854,10 @@ var _Provider = class {
4647
4854
  */
4648
4855
  async produceBlocks(amount, startTime) {
4649
4856
  const { produceBlocks: latestBlockHeight } = await this.operations.produceBlocks({
4650
- blocksToProduce: (0, import_math15.bn)(amount).toString(10),
4651
- startTimestamp: startTime ? import_utils23.DateTime.fromUnixMilliseconds(startTime).toTai64() : void 0
4857
+ blocksToProduce: (0, import_math16.bn)(amount).toString(10),
4858
+ startTimestamp: startTime ? import_utils22.DateTime.fromUnixMilliseconds(startTime).toTai64() : void 0
4652
4859
  });
4653
- return (0, import_math15.bn)(latestBlockHeight);
4860
+ return (0, import_math16.bn)(latestBlockHeight);
4654
4861
  }
4655
4862
  // eslint-disable-next-line @typescript-eslint/require-await
4656
4863
  async getTransactionResponse(transactionId) {
@@ -4664,7 +4871,7 @@ cacheInputs_fn = function(inputs) {
4664
4871
  return;
4665
4872
  }
4666
4873
  inputs.forEach((input) => {
4667
- if (input.type === import_transactions18.InputType.Coin) {
4874
+ if (input.type === import_transactions19.InputType.Coin) {
4668
4875
  this.cache?.set(input.id);
4669
4876
  }
4670
4877
  });
@@ -4674,9 +4881,9 @@ __publicField(Provider, "nodeInfoCache", {});
4674
4881
 
4675
4882
  // src/providers/transaction-summary/get-transaction-summary.ts
4676
4883
  var import_errors15 = require("@fuel-ts/errors");
4677
- var import_math16 = require("@fuel-ts/math");
4678
- var import_transactions19 = require("@fuel-ts/transactions");
4679
- var import_utils26 = require("@fuel-ts/utils");
4884
+ var import_math17 = require("@fuel-ts/math");
4885
+ var import_transactions20 = require("@fuel-ts/transactions");
4886
+ var import_utils25 = require("@fuel-ts/utils");
4680
4887
  async function getTransactionSummary(params) {
4681
4888
  const { id, provider, abiMap } = params;
4682
4889
  const { transaction: gqlTransaction } = await provider.operations.getTransactionWithReceipts({
@@ -4688,25 +4895,32 @@ async function getTransactionSummary(params) {
4688
4895
  `Transaction not found for given id: ${id}.`
4689
4896
  );
4690
4897
  }
4691
- const [decodedTransaction] = new import_transactions19.TransactionCoder().decode(
4692
- (0, import_utils26.arrayify)(gqlTransaction.rawPayload),
4898
+ const [decodedTransaction] = new import_transactions20.TransactionCoder().decode(
4899
+ (0, import_utils25.arrayify)(gqlTransaction.rawPayload),
4693
4900
  0
4694
4901
  );
4695
- const receipts = gqlTransaction.receipts?.map(processGqlReceipt) || [];
4902
+ let txReceipts = [];
4903
+ if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
4904
+ txReceipts = gqlTransaction.status.receipts;
4905
+ }
4906
+ const receipts = txReceipts.map(processGqlReceipt);
4696
4907
  const {
4697
- consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
4908
+ consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts, maxGasPerTx }
4698
4909
  } = provider.getChain();
4910
+ const gasPrice = await provider.getLatestGasPrice();
4699
4911
  const transactionInfo = assembleTransactionSummary({
4700
4912
  id: gqlTransaction.id,
4701
4913
  receipts,
4702
4914
  transaction: decodedTransaction,
4703
- transactionBytes: (0, import_utils26.arrayify)(gqlTransaction.rawPayload),
4915
+ transactionBytes: (0, import_utils25.arrayify)(gqlTransaction.rawPayload),
4704
4916
  gqlTransactionStatus: gqlTransaction.status,
4705
- gasPerByte: (0, import_math16.bn)(gasPerByte),
4706
- gasPriceFactor: (0, import_math16.bn)(gasPriceFactor),
4917
+ gasPerByte: (0, import_math17.bn)(gasPerByte),
4918
+ gasPriceFactor: (0, import_math17.bn)(gasPriceFactor),
4707
4919
  abiMap,
4708
4920
  maxInputs,
4709
- gasCosts
4921
+ gasCosts,
4922
+ maxGasPerTx,
4923
+ gasPrice
4710
4924
  });
4711
4925
  return {
4712
4926
  gqlTransaction,
@@ -4716,10 +4930,11 @@ async function getTransactionSummary(params) {
4716
4930
  async function getTransactionSummaryFromRequest(params) {
4717
4931
  const { provider, transactionRequest, abiMap } = params;
4718
4932
  const { receipts } = await provider.call(transactionRequest);
4719
- const { gasPerByte, gasPriceFactor, gasCosts } = provider.getGasConfig();
4933
+ const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = provider.getGasConfig();
4720
4934
  const maxInputs = provider.getChain().consensusParameters.maxInputs;
4721
4935
  const transaction = transactionRequest.toTransaction();
4722
4936
  const transactionBytes = transactionRequest.toTransactionBytes();
4937
+ const gasPrice = await provider.getLatestGasPrice();
4723
4938
  const transactionSummary = assembleTransactionSummary({
4724
4939
  receipts,
4725
4940
  transaction,
@@ -4728,7 +4943,9 @@ async function getTransactionSummaryFromRequest(params) {
4728
4943
  gasPerByte,
4729
4944
  gasPriceFactor,
4730
4945
  maxInputs,
4731
- gasCosts
4946
+ gasCosts,
4947
+ maxGasPerTx,
4948
+ gasPrice
4732
4949
  });
4733
4950
  return transactionSummary;
4734
4951
  }
@@ -4737,24 +4954,31 @@ async function getTransactionsSummaries(params) {
4737
4954
  const { transactionsByOwner } = await provider.operations.getTransactionsByOwner(filters);
4738
4955
  const { edges, pageInfo } = transactionsByOwner;
4739
4956
  const {
4740
- consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
4957
+ consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts, maxGasPerTx }
4741
4958
  } = provider.getChain();
4959
+ const gasPrice = await provider.getLatestGasPrice();
4742
4960
  const transactions = edges.map((edge) => {
4743
4961
  const { node: gqlTransaction } = edge;
4744
- const { id, rawPayload, receipts: gqlReceipts, status } = gqlTransaction;
4745
- const [decodedTransaction] = new import_transactions19.TransactionCoder().decode((0, import_utils26.arrayify)(rawPayload), 0);
4746
- const receipts = gqlReceipts?.map(processGqlReceipt) || [];
4962
+ const { id, rawPayload, status } = gqlTransaction;
4963
+ const [decodedTransaction] = new import_transactions20.TransactionCoder().decode((0, import_utils25.arrayify)(rawPayload), 0);
4964
+ let txReceipts = [];
4965
+ if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
4966
+ txReceipts = gqlTransaction.status.receipts;
4967
+ }
4968
+ const receipts = txReceipts.map(processGqlReceipt);
4747
4969
  const transactionSummary = assembleTransactionSummary({
4748
4970
  id,
4749
4971
  receipts,
4750
4972
  transaction: decodedTransaction,
4751
- transactionBytes: (0, import_utils26.arrayify)(rawPayload),
4973
+ transactionBytes: (0, import_utils25.arrayify)(rawPayload),
4752
4974
  gqlTransactionStatus: status,
4753
4975
  abiMap,
4754
4976
  gasPerByte,
4755
4977
  gasPriceFactor,
4756
4978
  maxInputs,
4757
- gasCosts
4979
+ gasCosts,
4980
+ maxGasPerTx,
4981
+ gasPrice
4758
4982
  });
4759
4983
  const output = {
4760
4984
  gqlTransaction,
@@ -4890,18 +5114,18 @@ var assets = [
4890
5114
  ];
4891
5115
 
4892
5116
  // src/utils/formatTransferToContractScriptData.ts
4893
- var import_abi_coder6 = require("@fuel-ts/abi-coder");
4894
- var import_math17 = require("@fuel-ts/math");
4895
- var import_utils27 = require("@fuel-ts/utils");
5117
+ var import_abi_coder4 = require("@fuel-ts/abi-coder");
5118
+ var import_math18 = require("@fuel-ts/math");
5119
+ var import_utils26 = require("@fuel-ts/utils");
4896
5120
  var asm = __toESM(require("@fuels/vm-asm"));
4897
5121
  var formatTransferToContractScriptData = (params) => {
4898
5122
  const { assetId, amountToTransfer, hexlifiedContractId } = params;
4899
- const numberCoder = new import_abi_coder6.BigNumberCoder("u64");
4900
- const encoded = numberCoder.encode(new import_math17.BN(amountToTransfer).toNumber());
5123
+ const numberCoder = new import_abi_coder4.BigNumberCoder("u64");
5124
+ const encoded = numberCoder.encode(new import_math18.BN(amountToTransfer).toNumber());
4901
5125
  const scriptData = Uint8Array.from([
4902
- ...(0, import_utils27.arrayify)(hexlifiedContractId),
5126
+ ...(0, import_utils26.arrayify)(hexlifiedContractId),
4903
5127
  ...encoded,
4904
- ...(0, import_utils27.arrayify)(assetId)
5128
+ ...(0, import_utils26.arrayify)(assetId)
4905
5129
  ]);
4906
5130
  return scriptData;
4907
5131
  };
@@ -5086,36 +5310,33 @@ var Account = class extends import_interfaces.AbstractAccount {
5086
5310
  * @param fee - The estimated transaction fee.
5087
5311
  * @returns A promise that resolves when the resources are added to the transaction.
5088
5312
  */
5089
- async fund(request, coinQuantities, fee) {
5090
- const updatedQuantities = addAmountToAsset({
5091
- amount: (0, import_math18.bn)(fee),
5313
+ async fund(request, params) {
5314
+ const { addedSignatures, estimatedPredicates, maxFee: fee, requiredQuantities } = params;
5315
+ const txRequest = request;
5316
+ const requiredQuantitiesWithFee = addAmountToCoinQuantities({
5317
+ amount: (0, import_math19.bn)(fee),
5092
5318
  assetId: import_configs12.BaseAssetId,
5093
- coinQuantities
5319
+ coinQuantities: requiredQuantities
5094
5320
  });
5095
5321
  const quantitiesDict = {};
5096
- updatedQuantities.forEach(({ amount, assetId }) => {
5322
+ requiredQuantitiesWithFee.forEach(({ amount, assetId }) => {
5097
5323
  quantitiesDict[assetId] = {
5098
5324
  required: amount,
5099
- owned: (0, import_math18.bn)(0)
5325
+ owned: (0, import_math19.bn)(0)
5100
5326
  };
5101
5327
  });
5102
- const cachedUtxos = [];
5103
- const cachedMessages = [];
5104
- const owner = this.address.toB256();
5105
- request.inputs.forEach((input) => {
5328
+ txRequest.inputs.forEach((input) => {
5106
5329
  const isResource = "amount" in input;
5107
5330
  if (isResource) {
5108
5331
  const isCoin2 = "owner" in input;
5109
5332
  if (isCoin2) {
5110
5333
  const assetId = String(input.assetId);
5111
- if (input.owner === owner && quantitiesDict[assetId]) {
5112
- const amount = (0, import_math18.bn)(input.amount);
5334
+ if (quantitiesDict[assetId]) {
5335
+ const amount = (0, import_math19.bn)(input.amount);
5113
5336
  quantitiesDict[assetId].owned = quantitiesDict[assetId].owned.add(amount);
5114
- cachedUtxos.push(input.id);
5115
5337
  }
5116
- } else if (input.recipient === owner && input.amount && quantitiesDict[import_configs12.BaseAssetId]) {
5338
+ } else if (input.amount && quantitiesDict[import_configs12.BaseAssetId]) {
5117
5339
  quantitiesDict[import_configs12.BaseAssetId].owned = quantitiesDict[import_configs12.BaseAssetId].owned.add(input.amount);
5118
- cachedMessages.push(input.nonce);
5119
5340
  }
5120
5341
  }
5121
5342
  });
@@ -5130,12 +5351,23 @@ var Account = class extends import_interfaces.AbstractAccount {
5130
5351
  });
5131
5352
  const needsToBeFunded = missingQuantities.length;
5132
5353
  if (needsToBeFunded) {
5133
- const resources = await this.getResourcesToSpend(missingQuantities, {
5134
- messages: cachedMessages,
5135
- utxos: cachedUtxos
5136
- });
5137
- request.addResources(resources);
5354
+ const excludedIds = cacheTxInputsFromOwner(txRequest.inputs, this.address.toB256());
5355
+ const resources = await this.getResourcesToSpend(missingQuantities, excludedIds);
5356
+ txRequest.addResources(resources);
5357
+ }
5358
+ txRequest.shiftPredicateData();
5359
+ txRequest.updatePredicateGasUsed(estimatedPredicates);
5360
+ const requestToBeReEstimate = (0, import_ramda4.clone)(txRequest);
5361
+ if (addedSignatures) {
5362
+ Array.from({ length: addedSignatures }).forEach(
5363
+ () => requestToBeReEstimate.addEmptyWitness()
5364
+ );
5138
5365
  }
5366
+ const { maxFee } = await this.provider.estimateTxGasAndFee({
5367
+ transactionRequest: requestToBeReEstimate
5368
+ });
5369
+ txRequest.maxFee = maxFee;
5370
+ return txRequest;
5139
5371
  }
5140
5372
  /**
5141
5373
  * A helper that creates a transfer transaction request and returns it.
@@ -5143,28 +5375,25 @@ var Account = class extends import_interfaces.AbstractAccount {
5143
5375
  * @param destination - The address of the destination.
5144
5376
  * @param amount - The amount of coins to transfer.
5145
5377
  * @param assetId - The asset ID of the coins to transfer.
5146
- * @param txParams - The transaction parameters (gasLimit, gasPrice, maturity).
5378
+ * @param txParams - The transaction parameters (gasLimit, tip, maturity, maxFee, witnessLimit).
5147
5379
  * @returns A promise that resolves to the prepared transaction request.
5148
5380
  */
5149
5381
  async createTransfer(destination, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
5150
- const { minGasPrice } = this.provider.getGasConfig();
5151
- const params = { gasPrice: minGasPrice, ...txParams };
5152
- const request = new ScriptTransactionRequest(params);
5382
+ const request = new ScriptTransactionRequest(txParams);
5153
5383
  request.addCoinOutput(import_address4.Address.fromAddressOrString(destination), amount, assetId);
5154
- const { maxFee, requiredQuantities, gasUsed, estimatedInputs } = await this.provider.getTransactionCost(request, [], {
5384
+ const txCost = await this.provider.getTransactionCost(request, {
5155
5385
  estimateTxDependencies: true,
5156
5386
  resourcesOwner: this
5157
5387
  });
5158
- request.gasPrice = (0, import_math18.bn)(txParams.gasPrice ?? minGasPrice);
5159
- request.gasLimit = (0, import_math18.bn)(txParams.gasLimit ?? gasUsed);
5160
- this.validateGas({
5161
- gasUsed,
5162
- gasPrice: request.gasPrice,
5163
- gasLimit: request.gasLimit,
5164
- minGasPrice
5165
- });
5166
- await this.fund(request, requiredQuantities, maxFee);
5167
- request.updatePredicateInputs(estimatedInputs);
5388
+ if ("gasLimit" in txParams) {
5389
+ this.validateGas({
5390
+ gasUsed: txCost.gasUsed,
5391
+ gasLimit: request.gasLimit
5392
+ });
5393
+ }
5394
+ request.gasLimit = txCost.gasUsed;
5395
+ request.maxFee = txCost.maxFee;
5396
+ await this.fund(request, txCost);
5168
5397
  return request;
5169
5398
  }
5170
5399
  /**
@@ -5177,7 +5406,7 @@ var Account = class extends import_interfaces.AbstractAccount {
5177
5406
  * @returns A promise that resolves to the transaction response.
5178
5407
  */
5179
5408
  async transfer(destination, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
5180
- if ((0, import_math18.bn)(amount).lte(0)) {
5409
+ if ((0, import_math19.bn)(amount).lte(0)) {
5181
5410
  throw new import_errors16.FuelError(
5182
5411
  import_errors16.ErrorCode.INVALID_TRANSFER_AMOUNT,
5183
5412
  "Transfer amount must be a positive number."
@@ -5196,38 +5425,37 @@ var Account = class extends import_interfaces.AbstractAccount {
5196
5425
  * @returns A promise that resolves to the transaction response.
5197
5426
  */
5198
5427
  async transferToContract(contractId, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
5199
- if ((0, import_math18.bn)(amount).lte(0)) {
5428
+ if ((0, import_math19.bn)(amount).lte(0)) {
5200
5429
  throw new import_errors16.FuelError(
5201
5430
  import_errors16.ErrorCode.INVALID_TRANSFER_AMOUNT,
5202
5431
  "Transfer amount must be a positive number."
5203
5432
  );
5204
5433
  }
5205
5434
  const contractAddress = import_address4.Address.fromAddressOrString(contractId);
5206
- const { minGasPrice } = this.provider.getGasConfig();
5207
- const params = { gasPrice: minGasPrice, ...txParams };
5208
5435
  const { script, scriptData } = await assembleTransferToContractScript({
5209
5436
  hexlifiedContractId: contractAddress.toB256(),
5210
- amountToTransfer: (0, import_math18.bn)(amount),
5437
+ amountToTransfer: (0, import_math19.bn)(amount),
5211
5438
  assetId
5212
5439
  });
5213
5440
  const request = new ScriptTransactionRequest({
5214
- ...params,
5441
+ ...txParams,
5215
5442
  script,
5216
5443
  scriptData
5217
5444
  });
5218
5445
  request.addContractInputAndOutput(contractAddress);
5219
- const { maxFee, requiredQuantities, gasUsed } = await this.provider.getTransactionCost(
5220
- request,
5221
- [{ amount: (0, import_math18.bn)(amount), assetId: String(assetId) }]
5222
- );
5223
- request.gasLimit = (0, import_math18.bn)(params.gasLimit ?? gasUsed);
5224
- this.validateGas({
5225
- gasUsed,
5226
- gasPrice: request.gasPrice,
5227
- gasLimit: request.gasLimit,
5228
- minGasPrice
5446
+ const txCost = await this.provider.getTransactionCost(request, {
5447
+ resourcesOwner: this,
5448
+ quantitiesToContract: [{ amount: (0, import_math19.bn)(amount), assetId: String(assetId) }]
5229
5449
  });
5230
- await this.fund(request, requiredQuantities, maxFee);
5450
+ if (txParams.gasLimit) {
5451
+ this.validateGas({
5452
+ gasUsed: txCost.gasUsed,
5453
+ gasLimit: request.gasLimit
5454
+ });
5455
+ }
5456
+ request.gasLimit = txCost.gasUsed;
5457
+ request.maxFee = txCost.maxFee;
5458
+ await this.fund(request, txCost);
5231
5459
  return this.sendTransaction(request);
5232
5460
  }
5233
5461
  /**
@@ -5239,34 +5467,31 @@ var Account = class extends import_interfaces.AbstractAccount {
5239
5467
  * @returns A promise that resolves to the transaction response.
5240
5468
  */
5241
5469
  async withdrawToBaseLayer(recipient, amount, txParams = {}) {
5242
- const { minGasPrice } = this.provider.getGasConfig();
5243
5470
  const recipientAddress = import_address4.Address.fromAddressOrString(recipient);
5244
- const recipientDataArray = (0, import_utils28.arrayify)(
5471
+ const recipientDataArray = (0, import_utils27.arrayify)(
5245
5472
  "0x".concat(recipientAddress.toHexString().substring(2).padStart(64, "0"))
5246
5473
  );
5247
- const amountDataArray = (0, import_utils28.arrayify)(
5248
- "0x".concat((0, import_math18.bn)(amount).toHex().substring(2).padStart(16, "0"))
5474
+ const amountDataArray = (0, import_utils27.arrayify)(
5475
+ "0x".concat((0, import_math19.bn)(amount).toHex().substring(2).padStart(16, "0"))
5249
5476
  );
5250
5477
  const script = new Uint8Array([
5251
- ...(0, import_utils28.arrayify)(withdrawScript.bytes),
5478
+ ...(0, import_utils27.arrayify)(withdrawScript.bytes),
5252
5479
  ...recipientDataArray,
5253
5480
  ...amountDataArray
5254
5481
  ]);
5255
- const params = { script, gasPrice: minGasPrice, ...txParams };
5482
+ const params = { script, ...txParams };
5256
5483
  const request = new ScriptTransactionRequest(params);
5257
- const forwardingQuantities = [{ amount: (0, import_math18.bn)(amount), assetId: import_configs12.BaseAssetId }];
5258
- const { requiredQuantities, maxFee, gasUsed } = await this.provider.getTransactionCost(
5259
- request,
5260
- forwardingQuantities
5261
- );
5262
- request.gasLimit = (0, import_math18.bn)(params.gasLimit ?? gasUsed);
5263
- this.validateGas({
5264
- gasUsed,
5265
- gasPrice: request.gasPrice,
5266
- gasLimit: request.gasLimit,
5267
- minGasPrice
5268
- });
5269
- await this.fund(request, requiredQuantities, maxFee);
5484
+ const quantitiesToContract = [{ amount: (0, import_math19.bn)(amount), assetId: import_configs12.BaseAssetId }];
5485
+ const txCost = await this.provider.getTransactionCost(request, { quantitiesToContract });
5486
+ if (txParams.gasLimit) {
5487
+ this.validateGas({
5488
+ gasUsed: txCost.gasUsed,
5489
+ gasLimit: request.gasLimit
5490
+ });
5491
+ }
5492
+ request.maxFee = txCost.maxFee;
5493
+ request.gasLimit = txCost.gasUsed;
5494
+ await this.fund(request, txCost);
5270
5495
  return this.sendTransaction(request);
5271
5496
  }
5272
5497
  async signMessage(message) {
@@ -5324,18 +5549,7 @@ var Account = class extends import_interfaces.AbstractAccount {
5324
5549
  }
5325
5550
  return this.provider.simulate(transactionRequest, { estimateTxDependencies: false });
5326
5551
  }
5327
- validateGas({
5328
- gasUsed,
5329
- gasPrice,
5330
- gasLimit,
5331
- minGasPrice
5332
- }) {
5333
- if (minGasPrice.gt(gasPrice)) {
5334
- throw new import_errors16.FuelError(
5335
- import_errors16.ErrorCode.GAS_PRICE_TOO_LOW,
5336
- `Gas price '${gasPrice}' is lower than the required: '${minGasPrice}'.`
5337
- );
5338
- }
5552
+ validateGas({ gasUsed, gasLimit }) {
5339
5553
  if (gasUsed.gt(gasLimit)) {
5340
5554
  throw new import_errors16.FuelError(
5341
5555
  import_errors16.ErrorCode.GAS_LIMIT_TOO_LOW,
@@ -5347,14 +5561,14 @@ var Account = class extends import_interfaces.AbstractAccount {
5347
5561
 
5348
5562
  // src/wallet/base-wallet-unlocked.ts
5349
5563
  var import_hasher3 = require("@fuel-ts/hasher");
5350
- var import_utils31 = require("@fuel-ts/utils");
5564
+ var import_utils30 = require("@fuel-ts/utils");
5351
5565
 
5352
5566
  // src/signer/signer.ts
5353
5567
  var import_address5 = require("@fuel-ts/address");
5354
- var import_crypto2 = require("@fuel-ts/crypto");
5568
+ var import_crypto = require("@fuel-ts/crypto");
5355
5569
  var import_hasher2 = require("@fuel-ts/hasher");
5356
- var import_math19 = require("@fuel-ts/math");
5357
- var import_utils29 = require("@fuel-ts/utils");
5570
+ var import_math20 = require("@fuel-ts/math");
5571
+ var import_utils28 = require("@fuel-ts/utils");
5358
5572
  var import_secp256k1 = require("@noble/curves/secp256k1");
5359
5573
  var Signer = class {
5360
5574
  address;
@@ -5373,10 +5587,10 @@ var Signer = class {
5373
5587
  privateKey = `0x${privateKey}`;
5374
5588
  }
5375
5589
  }
5376
- const privateKeyBytes = (0, import_math19.toBytes)(privateKey, 32);
5377
- this.privateKey = (0, import_utils29.hexlify)(privateKeyBytes);
5378
- this.publicKey = (0, import_utils29.hexlify)(import_secp256k1.secp256k1.getPublicKey(privateKeyBytes, false).slice(1));
5379
- this.compressedPublicKey = (0, import_utils29.hexlify)(import_secp256k1.secp256k1.getPublicKey(privateKeyBytes, true));
5590
+ const privateKeyBytes = (0, import_math20.toBytes)(privateKey, 32);
5591
+ this.privateKey = (0, import_utils28.hexlify)(privateKeyBytes);
5592
+ this.publicKey = (0, import_utils28.hexlify)(import_secp256k1.secp256k1.getPublicKey(privateKeyBytes, false).slice(1));
5593
+ this.compressedPublicKey = (0, import_utils28.hexlify)(import_secp256k1.secp256k1.getPublicKey(privateKeyBytes, true));
5380
5594
  this.address = import_address5.Address.fromPublicKey(this.publicKey);
5381
5595
  }
5382
5596
  /**
@@ -5390,11 +5604,11 @@ var Signer = class {
5390
5604
  * @returns hashed signature
5391
5605
  */
5392
5606
  sign(data) {
5393
- const signature = import_secp256k1.secp256k1.sign((0, import_utils29.arrayify)(data), (0, import_utils29.arrayify)(this.privateKey));
5394
- const r = (0, import_math19.toBytes)(`0x${signature.r.toString(16)}`, 32);
5395
- const s = (0, import_math19.toBytes)(`0x${signature.s.toString(16)}`, 32);
5607
+ const signature = import_secp256k1.secp256k1.sign((0, import_utils28.arrayify)(data), (0, import_utils28.arrayify)(this.privateKey));
5608
+ const r = (0, import_math20.toBytes)(`0x${signature.r.toString(16)}`, 32);
5609
+ const s = (0, import_math20.toBytes)(`0x${signature.s.toString(16)}`, 32);
5396
5610
  s[0] |= (signature.recovery || 0) << 7;
5397
- return (0, import_utils29.hexlify)((0, import_utils29.concat)([r, s]));
5611
+ return (0, import_utils28.hexlify)((0, import_utils28.concat)([r, s]));
5398
5612
  }
5399
5613
  /**
5400
5614
  * Add point on the current elliptic curve
@@ -5403,8 +5617,8 @@ var Signer = class {
5403
5617
  * @returns compressed point on the curve
5404
5618
  */
5405
5619
  addPoint(point) {
5406
- const p0 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils29.arrayify)(this.compressedPublicKey));
5407
- const p1 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils29.arrayify)(point));
5620
+ const p0 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils28.arrayify)(this.compressedPublicKey));
5621
+ const p1 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils28.arrayify)(point));
5408
5622
  const result = p0.add(p1);
5409
5623
  return `0x${result.toHex(true)}`;
5410
5624
  }
@@ -5416,16 +5630,16 @@ var Signer = class {
5416
5630
  * @returns public key from signature from the
5417
5631
  */
5418
5632
  static recoverPublicKey(data, signature) {
5419
- const signedMessageBytes = (0, import_utils29.arrayify)(signature);
5633
+ const signedMessageBytes = (0, import_utils28.arrayify)(signature);
5420
5634
  const r = signedMessageBytes.slice(0, 32);
5421
5635
  const s = signedMessageBytes.slice(32, 64);
5422
5636
  const recoveryParam = (s[0] & 128) >> 7;
5423
5637
  s[0] &= 127;
5424
- const sig = new import_secp256k1.secp256k1.Signature(BigInt((0, import_utils29.hexlify)(r)), BigInt((0, import_utils29.hexlify)(s))).addRecoveryBit(
5638
+ const sig = new import_secp256k1.secp256k1.Signature(BigInt((0, import_utils28.hexlify)(r)), BigInt((0, import_utils28.hexlify)(s))).addRecoveryBit(
5425
5639
  recoveryParam
5426
5640
  );
5427
- const publicKey = sig.recoverPublicKey((0, import_utils29.arrayify)(data)).toRawBytes(false).slice(1);
5428
- return (0, import_utils29.hexlify)(publicKey);
5641
+ const publicKey = sig.recoverPublicKey((0, import_utils28.arrayify)(data)).toRawBytes(false).slice(1);
5642
+ return (0, import_utils28.hexlify)(publicKey);
5429
5643
  }
5430
5644
  /**
5431
5645
  * Recover the address from a signature performed with [`sign`](#sign).
@@ -5444,7 +5658,7 @@ var Signer = class {
5444
5658
  * @returns random 32-byte hashed
5445
5659
  */
5446
5660
  static generatePrivateKey(entropy) {
5447
- return entropy ? (0, import_hasher2.hash)((0, import_utils29.concat)([(0, import_crypto2.randomBytes)(32), (0, import_utils29.arrayify)(entropy)])) : (0, import_crypto2.randomBytes)(32);
5661
+ return entropy ? (0, import_hasher2.hash)((0, import_utils28.concat)([(0, import_crypto.randomBytes)(32), (0, import_utils28.arrayify)(entropy)])) : (0, import_crypto.randomBytes)(32);
5448
5662
  }
5449
5663
  /**
5450
5664
  * Extended publicKey from a compact publicKey
@@ -5453,16 +5667,16 @@ var Signer = class {
5453
5667
  * @returns extended publicKey
5454
5668
  */
5455
5669
  static extendPublicKey(publicKey) {
5456
- const point = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils29.arrayify)(publicKey));
5457
- return (0, import_utils29.hexlify)(point.toRawBytes(false).slice(1));
5670
+ const point = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils28.arrayify)(publicKey));
5671
+ return (0, import_utils28.hexlify)(point.toRawBytes(false).slice(1));
5458
5672
  }
5459
5673
  };
5460
5674
 
5461
5675
  // src/wallet/keystore-wallet.ts
5462
5676
  var import_address6 = require("@fuel-ts/address");
5463
- var import_crypto3 = require("@fuel-ts/crypto");
5677
+ var import_crypto2 = require("@fuel-ts/crypto");
5464
5678
  var import_errors17 = require("@fuel-ts/errors");
5465
- var import_utils30 = require("@fuel-ts/utils");
5679
+ var import_utils29 = require("@fuel-ts/utils");
5466
5680
  var import_uuid = require("uuid");
5467
5681
  var DEFAULT_KDF_PARAMS_LOG_N = 13;
5468
5682
  var DEFAULT_KDF_PARAMS_R = 8;
@@ -5476,22 +5690,22 @@ var removeHexPrefix = (hexString) => {
5476
5690
  return hexString;
5477
5691
  };
5478
5692
  async function encryptKeystoreWallet(privateKey, address, password) {
5479
- const privateKeyBuffer = (0, import_crypto3.bufferFromString)(removeHexPrefix(privateKey), "hex");
5693
+ const privateKeyBuffer = (0, import_crypto2.bufferFromString)(removeHexPrefix(privateKey), "hex");
5480
5694
  const ownerAddress = import_address6.Address.fromAddressOrString(address);
5481
- const salt = (0, import_crypto3.randomBytes)(DEFAULT_KEY_SIZE);
5482
- const key = (0, import_crypto3.scrypt)({
5483
- password: (0, import_crypto3.bufferFromString)(password),
5695
+ const salt = (0, import_crypto2.randomBytes)(DEFAULT_KEY_SIZE);
5696
+ const key = (0, import_crypto2.scrypt)({
5697
+ password: (0, import_crypto2.bufferFromString)(password),
5484
5698
  salt,
5485
5699
  dklen: DEFAULT_KEY_SIZE,
5486
5700
  n: 2 ** DEFAULT_KDF_PARAMS_LOG_N,
5487
5701
  r: DEFAULT_KDF_PARAMS_R,
5488
5702
  p: DEFAULT_KDF_PARAMS_P
5489
5703
  });
5490
- const iv = (0, import_crypto3.randomBytes)(DEFAULT_IV_SIZE);
5491
- const ciphertext = await (0, import_crypto3.encryptJsonWalletData)(privateKeyBuffer, key, iv);
5704
+ const iv = (0, import_crypto2.randomBytes)(DEFAULT_IV_SIZE);
5705
+ const ciphertext = await (0, import_crypto2.encryptJsonWalletData)(privateKeyBuffer, key, iv);
5492
5706
  const data = Uint8Array.from([...key.subarray(16, 32), ...ciphertext]);
5493
- const macHashUint8Array = (0, import_crypto3.keccak256)(data);
5494
- const mac = (0, import_crypto3.stringFromBuffer)(macHashUint8Array, "hex");
5707
+ const macHashUint8Array = (0, import_crypto2.keccak256)(data);
5708
+ const mac = (0, import_crypto2.stringFromBuffer)(macHashUint8Array, "hex");
5495
5709
  const keystore = {
5496
5710
  id: (0, import_uuid.v4)(),
5497
5711
  version: 3,
@@ -5499,15 +5713,15 @@ async function encryptKeystoreWallet(privateKey, address, password) {
5499
5713
  crypto: {
5500
5714
  cipher: "aes-128-ctr",
5501
5715
  mac,
5502
- cipherparams: { iv: (0, import_crypto3.stringFromBuffer)(iv, "hex") },
5503
- ciphertext: (0, import_crypto3.stringFromBuffer)(ciphertext, "hex"),
5716
+ cipherparams: { iv: (0, import_crypto2.stringFromBuffer)(iv, "hex") },
5717
+ ciphertext: (0, import_crypto2.stringFromBuffer)(ciphertext, "hex"),
5504
5718
  kdf: "scrypt",
5505
5719
  kdfparams: {
5506
5720
  dklen: DEFAULT_KEY_SIZE,
5507
5721
  n: 2 ** DEFAULT_KDF_PARAMS_LOG_N,
5508
5722
  p: DEFAULT_KDF_PARAMS_P,
5509
5723
  r: DEFAULT_KDF_PARAMS_R,
5510
- salt: (0, import_crypto3.stringFromBuffer)(salt, "hex")
5724
+ salt: (0, import_crypto2.stringFromBuffer)(salt, "hex")
5511
5725
  }
5512
5726
  }
5513
5727
  };
@@ -5523,11 +5737,11 @@ async function decryptKeystoreWallet(jsonWallet, password) {
5523
5737
  kdfparams: { dklen, n, r, p, salt }
5524
5738
  }
5525
5739
  } = keystoreWallet;
5526
- const ciphertextBuffer = (0, import_crypto3.bufferFromString)(ciphertext, "hex");
5527
- const ivBuffer = (0, import_crypto3.bufferFromString)(iv, "hex");
5528
- const saltBuffer = (0, import_crypto3.bufferFromString)(salt, "hex");
5529
- const passwordBuffer = (0, import_crypto3.bufferFromString)(password);
5530
- const key = (0, import_crypto3.scrypt)({
5740
+ const ciphertextBuffer = (0, import_crypto2.bufferFromString)(ciphertext, "hex");
5741
+ const ivBuffer = (0, import_crypto2.bufferFromString)(iv, "hex");
5742
+ const saltBuffer = (0, import_crypto2.bufferFromString)(salt, "hex");
5743
+ const passwordBuffer = (0, import_crypto2.bufferFromString)(password);
5744
+ const key = (0, import_crypto2.scrypt)({
5531
5745
  password: passwordBuffer,
5532
5746
  salt: saltBuffer,
5533
5747
  n,
@@ -5536,16 +5750,16 @@ async function decryptKeystoreWallet(jsonWallet, password) {
5536
5750
  dklen
5537
5751
  });
5538
5752
  const data = Uint8Array.from([...key.subarray(16, 32), ...ciphertextBuffer]);
5539
- const macHashUint8Array = (0, import_crypto3.keccak256)(data);
5540
- const macHash = (0, import_crypto3.stringFromBuffer)(macHashUint8Array, "hex");
5753
+ const macHashUint8Array = (0, import_crypto2.keccak256)(data);
5754
+ const macHash = (0, import_crypto2.stringFromBuffer)(macHashUint8Array, "hex");
5541
5755
  if (mac !== macHash) {
5542
5756
  throw new import_errors17.FuelError(
5543
5757
  import_errors17.ErrorCode.INVALID_PASSWORD,
5544
5758
  "Failed to decrypt the keystore wallet, the provided password is incorrect."
5545
5759
  );
5546
5760
  }
5547
- const buffer = await (0, import_crypto3.decryptJsonWalletData)(ciphertextBuffer, key, ivBuffer);
5548
- const privateKey = (0, import_utils30.hexlify)(buffer);
5761
+ const buffer = await (0, import_crypto2.decryptJsonWalletData)(ciphertextBuffer, key, ivBuffer);
5762
+ const privateKey = (0, import_utils29.hexlify)(buffer);
5549
5763
  return privateKey;
5550
5764
  }
5551
5765
 
@@ -5590,7 +5804,7 @@ var BaseWalletUnlocked = class extends Account {
5590
5804
  */
5591
5805
  async signMessage(message) {
5592
5806
  const signedMessage = await this.signer().sign((0, import_hasher3.hashMessage)(message));
5593
- return (0, import_utils31.hexlify)(signedMessage);
5807
+ return (0, import_utils30.hexlify)(signedMessage);
5594
5808
  }
5595
5809
  /**
5596
5810
  * Signs a transaction with the wallet's private key.
@@ -5603,7 +5817,7 @@ var BaseWalletUnlocked = class extends Account {
5603
5817
  const chainId = this.provider.getChainId();
5604
5818
  const hashedTransaction = transactionRequest.getTransactionId(chainId);
5605
5819
  const signature = await this.signer().sign(hashedTransaction);
5606
- return (0, import_utils31.hexlify)(signature);
5820
+ return (0, import_utils30.hexlify)(signature);
5607
5821
  }
5608
5822
  /**
5609
5823
  * Populates a transaction with the witnesses signature.
@@ -5623,7 +5837,7 @@ var BaseWalletUnlocked = class extends Account {
5623
5837
  * @param transactionRequestLike - The transaction request to send.
5624
5838
  * @returns A promise that resolves to the TransactionResponse object.
5625
5839
  */
5626
- async sendTransaction(transactionRequestLike, { estimateTxDependencies = true, awaitExecution } = {}) {
5840
+ async sendTransaction(transactionRequestLike, { estimateTxDependencies = false, awaitExecution } = {}) {
5627
5841
  const transactionRequest = transactionRequestify(transactionRequestLike);
5628
5842
  if (estimateTxDependencies) {
5629
5843
  await this.provider.estimateTxDependencies(transactionRequest);
@@ -5664,16 +5878,16 @@ __publicField(BaseWalletUnlocked, "defaultPath", "m/44'/1179993420'/0'/0/0");
5664
5878
  // src/hdwallet/hdwallet.ts
5665
5879
  var import_errors20 = require("@fuel-ts/errors");
5666
5880
  var import_hasher6 = require("@fuel-ts/hasher");
5667
- var import_math20 = require("@fuel-ts/math");
5668
- var import_utils35 = require("@fuel-ts/utils");
5669
- var import_ethers3 = require("ethers");
5881
+ var import_math21 = require("@fuel-ts/math");
5882
+ var import_utils34 = require("@fuel-ts/utils");
5883
+ var import_ethers4 = require("ethers");
5670
5884
 
5671
5885
  // src/mnemonic/mnemonic.ts
5672
- var import_crypto4 = require("@fuel-ts/crypto");
5886
+ var import_crypto3 = require("@fuel-ts/crypto");
5673
5887
  var import_errors19 = require("@fuel-ts/errors");
5674
5888
  var import_hasher5 = require("@fuel-ts/hasher");
5675
- var import_utils33 = require("@fuel-ts/utils");
5676
- var import_ethers2 = require("ethers");
5889
+ var import_utils32 = require("@fuel-ts/utils");
5890
+ var import_ethers3 = require("ethers");
5677
5891
 
5678
5892
  // src/wordlists/words/english.ts
5679
5893
  var english = [
@@ -7736,7 +7950,7 @@ var Language = /* @__PURE__ */ ((Language2) => {
7736
7950
  // src/mnemonic/utils.ts
7737
7951
  var import_errors18 = require("@fuel-ts/errors");
7738
7952
  var import_hasher4 = require("@fuel-ts/hasher");
7739
- var import_utils32 = require("@fuel-ts/utils");
7953
+ var import_utils31 = require("@fuel-ts/utils");
7740
7954
  function toUtf8Bytes(stri) {
7741
7955
  const str = stri.normalize("NFKD");
7742
7956
  const result = [];
@@ -7803,14 +8017,14 @@ function entropyToMnemonicIndices(entropy) {
7803
8017
  }
7804
8018
  }
7805
8019
  const checksumBits = entropy.length / 4;
7806
- const checksum = (0, import_utils32.arrayify)((0, import_hasher4.sha256)(entropy))[0] & getUpperMask(checksumBits);
8020
+ const checksum = (0, import_utils31.arrayify)((0, import_hasher4.sha256)(entropy))[0] & getUpperMask(checksumBits);
7807
8021
  indices[indices.length - 1] <<= checksumBits;
7808
8022
  indices[indices.length - 1] |= checksum >> 8 - checksumBits;
7809
8023
  return indices;
7810
8024
  }
7811
8025
  function mnemonicWordsToEntropy(words, wordlist) {
7812
8026
  const size = Math.ceil(11 * words.length / 8);
7813
- const entropy = (0, import_utils32.arrayify)(new Uint8Array(size));
8027
+ const entropy = (0, import_utils31.arrayify)(new Uint8Array(size));
7814
8028
  let offset = 0;
7815
8029
  for (let i = 0; i < words.length; i += 1) {
7816
8030
  const index = wordlist.indexOf(words[i].normalize("NFKD"));
@@ -7830,7 +8044,7 @@ function mnemonicWordsToEntropy(words, wordlist) {
7830
8044
  const entropyBits = 32 * words.length / 3;
7831
8045
  const checksumBits = words.length / 3;
7832
8046
  const checksumMask = getUpperMask(checksumBits);
7833
- const checksum = (0, import_utils32.arrayify)((0, import_hasher4.sha256)(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;
8047
+ const checksum = (0, import_utils31.arrayify)((0, import_hasher4.sha256)(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;
7834
8048
  if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {
7835
8049
  throw new import_errors18.FuelError(
7836
8050
  import_errors18.ErrorCode.INVALID_CHECKSUM,
@@ -7905,7 +8119,7 @@ var Mnemonic = class {
7905
8119
  static mnemonicToEntropy(phrase, wordlist = english) {
7906
8120
  const words = getWords(phrase);
7907
8121
  assertMnemonic(words);
7908
- return (0, import_utils33.hexlify)(mnemonicWordsToEntropy(words, wordlist));
8122
+ return (0, import_utils32.hexlify)(mnemonicWordsToEntropy(words, wordlist));
7909
8123
  }
7910
8124
  /**
7911
8125
  * @param entropy - Entropy source to the mnemonic phrase.
@@ -7913,7 +8127,7 @@ var Mnemonic = class {
7913
8127
  * @returns 64-byte array contains privateKey and chainCode as described on BIP39
7914
8128
  */
7915
8129
  static entropyToMnemonic(entropy, wordlist = english) {
7916
- const entropyBytes = (0, import_utils33.arrayify)(entropy);
8130
+ const entropyBytes = (0, import_utils32.arrayify)(entropy);
7917
8131
  assertWordList(wordlist);
7918
8132
  assertEntropy(entropyBytes);
7919
8133
  return entropyToMnemonicIndices(entropyBytes).map((i) => wordlist[i]).join(" ");
@@ -7927,7 +8141,7 @@ var Mnemonic = class {
7927
8141
  assertMnemonic(getWords(phrase));
7928
8142
  const phraseBytes = toUtf8Bytes(getPhrase(phrase));
7929
8143
  const salt = toUtf8Bytes(`mnemonic${passphrase}`);
7930
- return (0, import_ethers2.pbkdf2)(phraseBytes, salt, 2048, 64, "sha512");
8144
+ return (0, import_ethers3.pbkdf2)(phraseBytes, salt, 2048, 64, "sha512");
7931
8145
  }
7932
8146
  /**
7933
8147
  * @param phrase - Mnemonic phrase composed by words from the provided wordlist
@@ -7982,14 +8196,14 @@ var Mnemonic = class {
7982
8196
  * @returns 64-byte array contains privateKey and chainCode as described on BIP39
7983
8197
  */
7984
8198
  static masterKeysFromSeed(seed) {
7985
- const seedArray = (0, import_utils33.arrayify)(seed);
8199
+ const seedArray = (0, import_utils32.arrayify)(seed);
7986
8200
  if (seedArray.length < 16 || seedArray.length > 64) {
7987
8201
  throw new import_errors19.FuelError(
7988
8202
  import_errors19.ErrorCode.INVALID_SEED,
7989
8203
  `Seed length should be between 16 and 64 bytes, but received ${seedArray.length} bytes.`
7990
8204
  );
7991
8205
  }
7992
- return (0, import_utils33.arrayify)((0, import_ethers2.computeHmac)("sha512", MasterSecret, seedArray));
8206
+ return (0, import_utils32.arrayify)((0, import_ethers3.computeHmac)("sha512", MasterSecret, seedArray));
7993
8207
  }
7994
8208
  /**
7995
8209
  * Get the extendKey as defined on BIP-32 from the provided seed
@@ -8000,22 +8214,22 @@ var Mnemonic = class {
8000
8214
  */
8001
8215
  static seedToExtendedKey(seed, testnet = false) {
8002
8216
  const masterKey = Mnemonic.masterKeysFromSeed(seed);
8003
- const prefix = (0, import_utils33.arrayify)(testnet ? TestnetPRV : MainnetPRV);
8217
+ const prefix = (0, import_utils32.arrayify)(testnet ? TestnetPRV : MainnetPRV);
8004
8218
  const depth = "0x00";
8005
8219
  const fingerprint = "0x00000000";
8006
8220
  const index = "0x00000000";
8007
8221
  const chainCode = masterKey.slice(32);
8008
8222
  const privateKey = masterKey.slice(0, 32);
8009
- const extendedKey = (0, import_utils33.concat)([
8223
+ const extendedKey = (0, import_utils32.concat)([
8010
8224
  prefix,
8011
8225
  depth,
8012
8226
  fingerprint,
8013
8227
  index,
8014
8228
  chainCode,
8015
- (0, import_utils33.concat)(["0x00", privateKey])
8229
+ (0, import_utils32.concat)(["0x00", privateKey])
8016
8230
  ]);
8017
- const checksum = (0, import_ethers2.dataSlice)((0, import_hasher5.sha256)((0, import_hasher5.sha256)(extendedKey)), 0, 4);
8018
- return (0, import_ethers2.encodeBase58)((0, import_utils33.concat)([extendedKey, checksum]));
8231
+ const checksum = (0, import_ethers3.dataSlice)((0, import_hasher5.sha256)((0, import_hasher5.sha256)(extendedKey)), 0, 4);
8232
+ return (0, import_ethers3.encodeBase58)((0, import_utils32.concat)([extendedKey, checksum]));
8019
8233
  }
8020
8234
  /**
8021
8235
  * Create a new mnemonic using a randomly generated number as entropy.
@@ -8030,7 +8244,7 @@ var Mnemonic = class {
8030
8244
  * @returns A randomly generated mnemonic
8031
8245
  */
8032
8246
  static generate(size = 32, extraEntropy = "") {
8033
- const entropy = extraEntropy ? (0, import_hasher5.sha256)((0, import_utils33.concat)([(0, import_crypto4.randomBytes)(size), (0, import_utils33.arrayify)(extraEntropy)])) : (0, import_crypto4.randomBytes)(size);
8247
+ const entropy = extraEntropy ? (0, import_hasher5.sha256)((0, import_utils32.concat)([(0, import_crypto3.randomBytes)(size), (0, import_utils32.arrayify)(extraEntropy)])) : (0, import_crypto3.randomBytes)(size);
8034
8248
  return Mnemonic.entropyToMnemonic(entropy);
8035
8249
  }
8036
8250
  };
@@ -8038,12 +8252,12 @@ var mnemonic_default = Mnemonic;
8038
8252
 
8039
8253
  // src/hdwallet/hdwallet.ts
8040
8254
  var HARDENED_INDEX = 2147483648;
8041
- var MainnetPRV2 = (0, import_utils35.hexlify)("0x0488ade4");
8042
- var MainnetPUB = (0, import_utils35.hexlify)("0x0488b21e");
8043
- var TestnetPRV2 = (0, import_utils35.hexlify)("0x04358394");
8044
- var TestnetPUB = (0, import_utils35.hexlify)("0x043587cf");
8255
+ var MainnetPRV2 = (0, import_utils34.hexlify)("0x0488ade4");
8256
+ var MainnetPUB = (0, import_utils34.hexlify)("0x0488b21e");
8257
+ var TestnetPRV2 = (0, import_utils34.hexlify)("0x04358394");
8258
+ var TestnetPUB = (0, import_utils34.hexlify)("0x043587cf");
8045
8259
  function base58check(data) {
8046
- return (0, import_ethers3.encodeBase58)((0, import_utils35.concat)([data, (0, import_ethers3.dataSlice)((0, import_hasher6.sha256)((0, import_hasher6.sha256)(data)), 0, 4)]));
8260
+ return (0, import_ethers4.encodeBase58)((0, import_utils34.concat)([data, (0, import_ethers4.dataSlice)((0, import_hasher6.sha256)((0, import_hasher6.sha256)(data)), 0, 4)]));
8047
8261
  }
8048
8262
  function getExtendedKeyPrefix(isPublic = false, testnet = false) {
8049
8263
  if (isPublic) {
@@ -8052,11 +8266,11 @@ function getExtendedKeyPrefix(isPublic = false, testnet = false) {
8052
8266
  return testnet ? TestnetPRV2 : MainnetPRV2;
8053
8267
  }
8054
8268
  function isPublicExtendedKey(extendedKey) {
8055
- return [MainnetPUB, TestnetPUB].includes((0, import_utils35.hexlify)(extendedKey.slice(0, 4)));
8269
+ return [MainnetPUB, TestnetPUB].includes((0, import_utils34.hexlify)(extendedKey.slice(0, 4)));
8056
8270
  }
8057
8271
  function isValidExtendedKey(extendedKey) {
8058
8272
  return [MainnetPRV2, TestnetPRV2, MainnetPUB, TestnetPUB].includes(
8059
- (0, import_utils35.hexlify)(extendedKey.slice(0, 4))
8273
+ (0, import_utils34.hexlify)(extendedKey.slice(0, 4))
8060
8274
  );
8061
8275
  }
8062
8276
  function parsePath(path, depth = 0) {
@@ -8074,8 +8288,8 @@ function parsePath(path, depth = 0) {
8074
8288
  var HDWallet = class {
8075
8289
  depth = 0;
8076
8290
  index = 0;
8077
- fingerprint = (0, import_utils35.hexlify)("0x00000000");
8078
- parentFingerprint = (0, import_utils35.hexlify)("0x00000000");
8291
+ fingerprint = (0, import_utils34.hexlify)("0x00000000");
8292
+ parentFingerprint = (0, import_utils34.hexlify)("0x00000000");
8079
8293
  privateKey;
8080
8294
  publicKey;
8081
8295
  chainCode;
@@ -8087,8 +8301,8 @@ var HDWallet = class {
8087
8301
  constructor(config) {
8088
8302
  if (config.privateKey) {
8089
8303
  const signer = new Signer(config.privateKey);
8090
- this.publicKey = (0, import_utils35.hexlify)(signer.compressedPublicKey);
8091
- this.privateKey = (0, import_utils35.hexlify)(config.privateKey);
8304
+ this.publicKey = (0, import_utils34.hexlify)(signer.compressedPublicKey);
8305
+ this.privateKey = (0, import_utils34.hexlify)(config.privateKey);
8092
8306
  } else {
8093
8307
  if (!config.publicKey) {
8094
8308
  throw new import_errors20.FuelError(
@@ -8096,10 +8310,10 @@ var HDWallet = class {
8096
8310
  "Both public and private Key cannot be missing. At least one should be provided."
8097
8311
  );
8098
8312
  }
8099
- this.publicKey = (0, import_utils35.hexlify)(config.publicKey);
8313
+ this.publicKey = (0, import_utils34.hexlify)(config.publicKey);
8100
8314
  }
8101
8315
  this.parentFingerprint = config.parentFingerprint || this.parentFingerprint;
8102
- this.fingerprint = (0, import_ethers3.dataSlice)((0, import_ethers3.ripemd160)((0, import_hasher6.sha256)(this.publicKey)), 0, 4);
8316
+ this.fingerprint = (0, import_ethers4.dataSlice)((0, import_ethers4.ripemd160)((0, import_hasher6.sha256)(this.publicKey)), 0, 4);
8103
8317
  this.depth = config.depth || this.depth;
8104
8318
  this.index = config.index || this.index;
8105
8319
  this.chainCode = config.chainCode;
@@ -8115,9 +8329,9 @@ var HDWallet = class {
8115
8329
  * @returns A new instance of HDWallet on the derived index
8116
8330
  */
8117
8331
  deriveIndex(index) {
8118
- const privateKey = this.privateKey && (0, import_utils35.arrayify)(this.privateKey);
8119
- const publicKey = (0, import_utils35.arrayify)(this.publicKey);
8120
- const chainCode = (0, import_utils35.arrayify)(this.chainCode);
8332
+ const privateKey = this.privateKey && (0, import_utils34.arrayify)(this.privateKey);
8333
+ const publicKey = (0, import_utils34.arrayify)(this.publicKey);
8334
+ const chainCode = (0, import_utils34.arrayify)(this.chainCode);
8121
8335
  const data = new Uint8Array(37);
8122
8336
  if (index & HARDENED_INDEX) {
8123
8337
  if (!privateKey) {
@@ -8128,15 +8342,15 @@ var HDWallet = class {
8128
8342
  }
8129
8343
  data.set(privateKey, 1);
8130
8344
  } else {
8131
- data.set((0, import_utils35.arrayify)(this.publicKey));
8345
+ data.set((0, import_utils34.arrayify)(this.publicKey));
8132
8346
  }
8133
- data.set((0, import_math20.toBytes)(index, 4), 33);
8134
- const bytes = (0, import_utils35.arrayify)((0, import_ethers3.computeHmac)("sha512", chainCode, data));
8347
+ data.set((0, import_math21.toBytes)(index, 4), 33);
8348
+ const bytes = (0, import_utils34.arrayify)((0, import_ethers4.computeHmac)("sha512", chainCode, data));
8135
8349
  const IL = bytes.slice(0, 32);
8136
8350
  const IR = bytes.slice(32);
8137
8351
  if (privateKey) {
8138
8352
  const N = "0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141";
8139
- const ki = (0, import_math20.bn)(IL).add(privateKey).mod(N).toBytes(32);
8353
+ const ki = (0, import_math21.bn)(IL).add(privateKey).mod(N).toBytes(32);
8140
8354
  return new HDWallet({
8141
8355
  privateKey: ki,
8142
8356
  chainCode: IR,
@@ -8145,7 +8359,7 @@ var HDWallet = class {
8145
8359
  parentFingerprint: this.fingerprint
8146
8360
  });
8147
8361
  }
8148
- const signer = new Signer((0, import_utils35.hexlify)(IL));
8362
+ const signer = new Signer((0, import_utils34.hexlify)(IL));
8149
8363
  const Ki = signer.addPoint(publicKey);
8150
8364
  return new HDWallet({
8151
8365
  publicKey: Ki,
@@ -8180,12 +8394,12 @@ var HDWallet = class {
8180
8394
  );
8181
8395
  }
8182
8396
  const prefix = getExtendedKeyPrefix(this.privateKey == null || isPublic, testnet);
8183
- const depth = (0, import_utils35.hexlify)(Uint8Array.from([this.depth]));
8397
+ const depth = (0, import_utils34.hexlify)(Uint8Array.from([this.depth]));
8184
8398
  const parentFingerprint = this.parentFingerprint;
8185
- const index = (0, import_math20.toHex)(this.index, 4);
8399
+ const index = (0, import_math21.toHex)(this.index, 4);
8186
8400
  const chainCode = this.chainCode;
8187
- const key = this.privateKey != null && !isPublic ? (0, import_utils35.concat)(["0x00", this.privateKey]) : this.publicKey;
8188
- const extendedKey = (0, import_utils35.arrayify)((0, import_utils35.concat)([prefix, depth, parentFingerprint, index, chainCode, key]));
8401
+ const key = this.privateKey != null && !isPublic ? (0, import_utils34.concat)(["0x00", this.privateKey]) : this.publicKey;
8402
+ const extendedKey = (0, import_utils34.arrayify)((0, import_utils34.concat)([prefix, depth, parentFingerprint, index, chainCode, key]));
8189
8403
  return base58check(extendedKey);
8190
8404
  }
8191
8405
  /**
@@ -8197,13 +8411,13 @@ var HDWallet = class {
8197
8411
  static fromSeed(seed) {
8198
8412
  const masterKey = mnemonic_default.masterKeysFromSeed(seed);
8199
8413
  return new HDWallet({
8200
- chainCode: (0, import_utils35.arrayify)(masterKey.slice(32)),
8201
- privateKey: (0, import_utils35.arrayify)(masterKey.slice(0, 32))
8414
+ chainCode: (0, import_utils34.arrayify)(masterKey.slice(32)),
8415
+ privateKey: (0, import_utils34.arrayify)(masterKey.slice(0, 32))
8202
8416
  });
8203
8417
  }
8204
8418
  static fromExtendedKey(extendedKey) {
8205
- const decoded = (0, import_ethers3.toBeHex)((0, import_ethers3.decodeBase58)(extendedKey));
8206
- const bytes = (0, import_utils35.arrayify)(decoded);
8419
+ const decoded = (0, import_ethers4.toBeHex)((0, import_ethers4.decodeBase58)(extendedKey));
8420
+ const bytes = (0, import_utils34.arrayify)(decoded);
8207
8421
  const validChecksum = base58check(bytes.slice(0, 78)) === extendedKey;
8208
8422
  if (bytes.length !== 82 || !isValidExtendedKey(bytes)) {
8209
8423
  throw new import_errors20.FuelError(import_errors20.ErrorCode.HD_WALLET_ERROR, "Provided key is not a valid extended key.");
@@ -8212,9 +8426,9 @@ var HDWallet = class {
8212
8426
  throw new import_errors20.FuelError(import_errors20.ErrorCode.HD_WALLET_ERROR, "Provided key has an invalid checksum.");
8213
8427
  }
8214
8428
  const depth = bytes[4];
8215
- const parentFingerprint = (0, import_utils35.hexlify)(bytes.slice(5, 9));
8216
- const index = parseInt((0, import_utils35.hexlify)(bytes.slice(9, 13)).substring(2), 16);
8217
- const chainCode = (0, import_utils35.hexlify)(bytes.slice(13, 45));
8429
+ const parentFingerprint = (0, import_utils34.hexlify)(bytes.slice(5, 9));
8430
+ const index = parseInt((0, import_utils34.hexlify)(bytes.slice(9, 13)).substring(2), 16);
8431
+ const chainCode = (0, import_utils34.hexlify)(bytes.slice(13, 45));
8218
8432
  const key = bytes.slice(45, 78);
8219
8433
  if (depth === 0 && parentFingerprint !== "0x00000000" || depth === 0 && index !== 0) {
8220
8434
  throw new import_errors20.FuelError(
@@ -8402,7 +8616,7 @@ __publicField(Wallet, "fromEncryptedJson", WalletUnlocked.fromEncryptedJson);
8402
8616
 
8403
8617
  // src/wallet-manager/wallet-manager.ts
8404
8618
  var import_address9 = require("@fuel-ts/address");
8405
- var import_crypto5 = require("@fuel-ts/crypto");
8619
+ var import_crypto4 = require("@fuel-ts/crypto");
8406
8620
  var import_errors23 = require("@fuel-ts/errors");
8407
8621
  var import_events = require("events");
8408
8622
 
@@ -8730,7 +8944,7 @@ var _WalletManager = class extends import_events.EventEmitter {
8730
8944
  await assert(!__privateGet(this, _isLocked), ERROR_MESSAGES.wallet_not_unlocked);
8731
8945
  const data = await this.storage.getItem(this.STORAGE_KEY);
8732
8946
  if (data) {
8733
- const state = await (0, import_crypto5.decrypt)(__privateGet(this, _passphrase), JSON.parse(data));
8947
+ const state = await (0, import_crypto4.decrypt)(__privateGet(this, _passphrase), JSON.parse(data));
8734
8948
  __privateSet(this, _vaults, __privateMethod(this, _deserializeVaults, deserializeVaults_fn).call(this, state.vaults));
8735
8949
  }
8736
8950
  }
@@ -8739,7 +8953,7 @@ var _WalletManager = class extends import_events.EventEmitter {
8739
8953
  */
8740
8954
  async saveState() {
8741
8955
  await assert(!__privateGet(this, _isLocked), ERROR_MESSAGES.wallet_not_unlocked);
8742
- const encryptedData = await (0, import_crypto5.encrypt)(__privateGet(this, _passphrase), {
8956
+ const encryptedData = await (0, import_crypto4.encrypt)(__privateGet(this, _passphrase), {
8743
8957
  vaults: __privateMethod(this, _serializeVaults, serializeVaults_fn).call(this, __privateGet(this, _vaults))
8744
8958
  });
8745
8959
  await this.storage.setItem(this.STORAGE_KEY, JSON.stringify(encryptedData));
@@ -8815,23 +9029,23 @@ var StorageAbstract = class {
8815
9029
  };
8816
9030
 
8817
9031
  // src/predicate/predicate.ts
8818
- var import_abi_coder7 = require("@fuel-ts/abi-coder");
9032
+ var import_abi_coder5 = require("@fuel-ts/abi-coder");
8819
9033
  var import_address10 = require("@fuel-ts/address");
8820
9034
  var import_configs13 = require("@fuel-ts/address/configs");
8821
9035
  var import_errors25 = require("@fuel-ts/errors");
8822
- var import_transactions20 = require("@fuel-ts/transactions");
8823
- var import_utils37 = require("@fuel-ts/utils");
9036
+ var import_transactions21 = require("@fuel-ts/transactions");
9037
+ var import_utils36 = require("@fuel-ts/utils");
8824
9038
 
8825
9039
  // src/predicate/utils/getPredicateRoot.ts
8826
9040
  var import_hasher7 = require("@fuel-ts/hasher");
8827
9041
  var import_merkle = require("@fuel-ts/merkle");
8828
- var import_utils36 = require("@fuel-ts/utils");
9042
+ var import_utils35 = require("@fuel-ts/utils");
8829
9043
  var getPredicateRoot = (bytecode) => {
8830
9044
  const chunkSize = 16 * 1024;
8831
- const bytes = (0, import_utils36.arrayify)(bytecode);
8832
- const chunks = (0, import_utils36.chunkAndPadBytes)(bytes, chunkSize);
8833
- const codeRoot = (0, import_merkle.calcRoot)(chunks.map((c) => (0, import_utils36.hexlify)(c)));
8834
- const predicateRoot = (0, import_hasher7.hash)((0, import_utils36.concat)(["0x4655454C", codeRoot]));
9045
+ const bytes = (0, import_utils35.arrayify)(bytecode);
9046
+ const chunks = (0, import_utils35.chunkAndPadBytes)(bytes, chunkSize);
9047
+ const codeRoot = (0, import_merkle.calcRoot)(chunks.map((c) => (0, import_utils35.hexlify)(c)));
9048
+ const predicateRoot = (0, import_hasher7.hash)((0, import_utils35.concat)(["0x4655454C", codeRoot]));
8835
9049
  return predicateRoot;
8836
9050
  };
8837
9051
 
@@ -8879,9 +9093,9 @@ var Predicate = class extends Account {
8879
9093
  const request = transactionRequestify(transactionRequestLike);
8880
9094
  const { policies } = BaseTransactionRequest.getPolicyMeta(request);
8881
9095
  request.inputs?.forEach((input) => {
8882
- if (input.type === import_transactions20.InputType.Coin && (0, import_utils37.hexlify)(input.owner) === this.address.toB256()) {
8883
- input.predicate = this.bytes;
8884
- input.predicateData = this.getPredicateData(policies.length);
9096
+ if (input.type === import_transactions21.InputType.Coin && (0, import_utils36.hexlify)(input.owner) === this.address.toB256()) {
9097
+ input.predicate = (0, import_utils36.hexlify)(this.bytes);
9098
+ input.predicateData = (0, import_utils36.hexlify)(this.getPredicateData(policies.length));
8885
9099
  }
8886
9100
  });
8887
9101
  return request;
@@ -8896,8 +9110,7 @@ var Predicate = class extends Account {
8896
9110
  * @returns A promise that resolves to the prepared transaction request.
8897
9111
  */
8898
9112
  async createTransfer(destination, amount, assetId = import_configs13.BaseAssetId, txParams = {}) {
8899
- const request = await super.createTransfer(destination, amount, assetId, txParams);
8900
- return this.populateTransactionPredicateData(request);
9113
+ return super.createTransfer(destination, amount, assetId, txParams);
8901
9114
  }
8902
9115
  /**
8903
9116
  * Sends a transaction with the populated predicate data.
@@ -8905,9 +9118,9 @@ var Predicate = class extends Account {
8905
9118
  * @param transactionRequestLike - The transaction request-like object.
8906
9119
  * @returns A promise that resolves to the transaction response.
8907
9120
  */
8908
- sendTransaction(transactionRequestLike, options) {
8909
- const transactionRequest = this.populateTransactionPredicateData(transactionRequestLike);
8910
- return super.sendTransaction(transactionRequest, options);
9121
+ sendTransaction(transactionRequestLike) {
9122
+ const transactionRequest = transactionRequestify(transactionRequestLike);
9123
+ return super.sendTransaction(transactionRequest, { estimateTxDependencies: false });
8911
9124
  }
8912
9125
  /**
8913
9126
  * Simulates a transaction with the populated predicate data.
@@ -8916,19 +9129,19 @@ var Predicate = class extends Account {
8916
9129
  * @returns A promise that resolves to the call result.
8917
9130
  */
8918
9131
  simulateTransaction(transactionRequestLike) {
8919
- const transactionRequest = this.populateTransactionPredicateData(transactionRequestLike);
8920
- return super.simulateTransaction(transactionRequest);
9132
+ const transactionRequest = transactionRequestify(transactionRequestLike);
9133
+ return super.simulateTransaction(transactionRequest, { estimateTxDependencies: false });
8921
9134
  }
8922
9135
  getPredicateData(policiesLength) {
8923
9136
  if (!this.predicateData.length) {
8924
9137
  return new Uint8Array();
8925
9138
  }
8926
9139
  const mainFn = this.interface?.functions.main;
8927
- const paddedCode = new import_transactions20.ByteArrayCoder(this.bytes.length).encode(this.bytes);
8928
- const VM_TX_MEMORY = (0, import_abi_coder7.calculateVmTxMemory)({
9140
+ const paddedCode = new import_transactions21.ByteArrayCoder(this.bytes.length).encode(this.bytes);
9141
+ const VM_TX_MEMORY = (0, import_abi_coder5.calculateVmTxMemory)({
8929
9142
  maxInputs: this.provider.getChain().consensusParameters.maxInputs.toNumber()
8930
9143
  });
8931
- const OFFSET = VM_TX_MEMORY + import_abi_coder7.SCRIPT_FIXED_SIZE + import_abi_coder7.INPUT_COIN_FIXED_SIZE + import_abi_coder7.WORD_SIZE + paddedCode.byteLength + policiesLength * import_abi_coder7.WORD_SIZE;
9144
+ const OFFSET = VM_TX_MEMORY + import_abi_coder5.SCRIPT_FIXED_SIZE + import_abi_coder5.INPUT_COIN_FIXED_SIZE + import_abi_coder5.WORD_SIZE + paddedCode.byteLength + policiesLength * import_abi_coder5.WORD_SIZE;
8932
9145
  return mainFn?.encodeArguments(this.predicateData, OFFSET) || new Uint8Array();
8933
9146
  }
8934
9147
  /**
@@ -8940,10 +9153,10 @@ var Predicate = class extends Account {
8940
9153
  * @returns An object containing the new predicate bytes and interface.
8941
9154
  */
8942
9155
  static processPredicateData(bytes, jsonAbi, configurableConstants) {
8943
- let predicateBytes = (0, import_utils37.arrayify)(bytes);
9156
+ let predicateBytes = (0, import_utils36.arrayify)(bytes);
8944
9157
  let abiInterface;
8945
9158
  if (jsonAbi) {
8946
- abiInterface = new import_abi_coder7.Interface(jsonAbi);
9159
+ abiInterface = new import_abi_coder5.Interface(jsonAbi);
8947
9160
  if (abiInterface.functions.main === void 0) {
8948
9161
  throw new import_errors25.FuelError(
8949
9162
  import_errors25.ErrorCode.ABI_MAIN_METHOD_MISSING,
@@ -8963,6 +9176,25 @@ var Predicate = class extends Account {
8963
9176
  predicateInterface: abiInterface
8964
9177
  };
8965
9178
  }
9179
+ /**
9180
+ * Retrieves resources satisfying the spend query for the account.
9181
+ *
9182
+ * @param quantities - IDs of coins to exclude.
9183
+ * @param excludedIds - IDs of resources to be excluded from the query.
9184
+ * @returns A promise that resolves to an array of Resources.
9185
+ */
9186
+ async getResourcesToSpend(quantities, excludedIds) {
9187
+ const resources = await this.provider.getResourcesToSpend(
9188
+ this.address,
9189
+ quantities,
9190
+ excludedIds
9191
+ );
9192
+ return resources.map((resource) => ({
9193
+ ...resource,
9194
+ predicate: (0, import_utils36.hexlify)(this.bytes),
9195
+ paddPredicateData: (policiesLength) => (0, import_utils36.hexlify)(this.getPredicateData(policiesLength))
9196
+ }));
9197
+ }
8966
9198
  /**
8967
9199
  * Sets the configurable constants for the predicate.
8968
9200
  *
@@ -9712,7 +9944,7 @@ __publicField(Fuel, "defaultConfig", {});
9712
9944
  WalletLocked,
9713
9945
  WalletManager,
9714
9946
  WalletUnlocked,
9715
- addAmountToAsset,
9947
+ addAmountToCoinQuantities,
9716
9948
  addOperation,
9717
9949
  assemblePanicError,
9718
9950
  assembleReceiptByType,
@@ -9721,9 +9953,10 @@ __publicField(Fuel, "defaultConfig", {});
9721
9953
  assets,
9722
9954
  buildBlockExplorerUrl,
9723
9955
  cacheFor,
9956
+ cacheTxInputsFromOwner,
9957
+ calculateGasFee,
9724
9958
  calculateMetadataGasForTxCreate,
9725
9959
  calculateMetadataGasForTxScript,
9726
- calculatePriceWithFactor,
9727
9960
  calculateTransactionFee,
9728
9961
  coinQuantityfy,
9729
9962
  deferPromise,