@fuel-ts/account 0.0.0-rc-1976-20240408114146 → 0.0.0-rc-2021-20240409111335

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 +872 -620
  12. package/dist/index.global.js.map +1 -1
  13. package/dist/index.js +848 -610
  14. package/dist/index.js.map +1 -1
  15. package/dist/index.mjs +690 -453
  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 +3 -3
  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 +45 -34
  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 +9 -29
  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 +1587 -1121
  48. package/dist/test-utils.global.js.map +1 -1
  49. package/dist/test-utils.js +824 -607
  50. package/dist/test-utils.js.map +1 -1
  51. package/dist/test-utils.mjs +682 -465
  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,
@@ -184,35 +185,38 @@ module.exports = __toCommonJS(src_exports);
184
185
 
185
186
  // src/account.ts
186
187
  var import_address4 = require("@fuel-ts/address");
188
+ var import_configs12 = require("@fuel-ts/address/configs");
187
189
  var import_errors16 = require("@fuel-ts/errors");
188
190
  var import_interfaces = require("@fuel-ts/interfaces");
189
- var import_math18 = require("@fuel-ts/math");
190
- 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");
191
194
 
192
195
  // src/providers/coin-quantity.ts
196
+ var import_configs = require("@fuel-ts/address/configs");
193
197
  var import_math = require("@fuel-ts/math");
194
198
  var import_utils = require("@fuel-ts/utils");
195
199
  var coinQuantityfy = (coinQuantityLike) => {
196
200
  let assetId;
197
201
  let amount;
198
- let max2;
202
+ let max;
199
203
  if (Array.isArray(coinQuantityLike)) {
200
204
  amount = coinQuantityLike[0];
201
- assetId = coinQuantityLike[1];
202
- max2 = coinQuantityLike[2];
205
+ assetId = coinQuantityLike[1] ?? import_configs.BaseAssetId;
206
+ max = coinQuantityLike[2] ?? void 0;
203
207
  } else {
204
208
  amount = coinQuantityLike.amount;
205
- assetId = coinQuantityLike.assetId;
206
- max2 = coinQuantityLike.max ?? void 0;
209
+ assetId = coinQuantityLike.assetId ?? import_configs.BaseAssetId;
210
+ max = coinQuantityLike.max ?? void 0;
207
211
  }
208
212
  const bnAmount = (0, import_math.bn)(amount);
209
213
  return {
210
214
  assetId: (0, import_utils.hexlify)(assetId),
211
215
  amount: bnAmount.lt(1) ? (0, import_math.bn)(1) : bnAmount,
212
- max: max2 ? (0, import_math.bn)(max2) : void 0
216
+ max: max ? (0, import_math.bn)(max) : void 0
213
217
  };
214
218
  };
215
- var addAmountToAsset = (params) => {
219
+ var addAmountToCoinQuantities = (params) => {
216
220
  const { amount, assetId } = params;
217
221
  const coinQuantities = [...params.coinQuantities];
218
222
  const assetIdx = coinQuantities.findIndex((coinQuantity) => coinQuantity.assetId === assetId);
@@ -227,12 +231,12 @@ var addAmountToAsset = (params) => {
227
231
  // src/providers/provider.ts
228
232
  var import_address3 = require("@fuel-ts/address");
229
233
  var import_errors14 = require("@fuel-ts/errors");
230
- var import_math15 = require("@fuel-ts/math");
231
- var import_transactions18 = require("@fuel-ts/transactions");
232
- 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");
233
237
  var import_versions = require("@fuel-ts/versions");
234
- var import_utils24 = require("@noble/curves/abstract/utils");
235
- var import_ethers = require("ethers");
238
+ var import_utils23 = require("@noble/curves/abstract/utils");
239
+ var import_ethers2 = require("ethers");
236
240
  var import_graphql_request = require("graphql-request");
237
241
  var import_ramda3 = require("ramda");
238
242
 
@@ -240,14 +244,10 @@ var import_ramda3 = require("ramda");
240
244
  var import_graphql_tag = __toESM(require("graphql-tag"));
241
245
  var ReceiptFragmentFragmentDoc = import_graphql_tag.default`
242
246
  fragment receiptFragment on Receipt {
243
- contract {
244
- id
245
- }
247
+ id
246
248
  pc
247
249
  is
248
- to {
249
- id
250
- }
250
+ to
251
251
  toAddress
252
252
  amount
253
253
  assetId
@@ -285,10 +285,16 @@ var TransactionStatusFragmentFragmentDoc = import_graphql_tag.default`
285
285
  id
286
286
  }
287
287
  time
288
+ receipts {
289
+ ...receiptFragment
290
+ }
288
291
  programState {
289
292
  returnType
290
293
  data
291
294
  }
295
+ receipts {
296
+ ...receiptFragment
297
+ }
292
298
  }
293
299
  ... on FailureStatus {
294
300
  block {
@@ -296,26 +302,24 @@ var TransactionStatusFragmentFragmentDoc = import_graphql_tag.default`
296
302
  }
297
303
  time
298
304
  reason
305
+ receipts {
306
+ ...receiptFragment
307
+ }
299
308
  }
300
309
  ... on SqueezedOutStatus {
301
310
  reason
302
311
  }
303
312
  }
304
- `;
313
+ ${ReceiptFragmentFragmentDoc}`;
305
314
  var TransactionFragmentFragmentDoc = import_graphql_tag.default`
306
315
  fragment transactionFragment on Transaction {
307
316
  id
308
317
  rawPayload
309
- gasPrice
310
- receipts {
311
- ...receiptFragment
312
- }
313
318
  status {
314
319
  ...transactionStatusFragment
315
320
  }
316
321
  }
317
- ${ReceiptFragmentFragmentDoc}
318
- ${TransactionStatusFragmentFragmentDoc}`;
322
+ ${TransactionStatusFragmentFragmentDoc}`;
319
323
  var InputEstimatePredicatesFragmentFragmentDoc = import_graphql_tag.default`
320
324
  fragment inputEstimatePredicatesFragment on Input {
321
325
  ... on InputCoin {
@@ -333,6 +337,46 @@ var TransactionEstimatePredicatesFragmentFragmentDoc = import_graphql_tag.defaul
333
337
  }
334
338
  }
335
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}`;
336
380
  var CoinFragmentFragmentDoc = import_graphql_tag.default`
337
381
  fragment coinFragment on Coin {
338
382
  __typename
@@ -340,7 +384,6 @@ var CoinFragmentFragmentDoc = import_graphql_tag.default`
340
384
  owner
341
385
  amount
342
386
  assetId
343
- maturity
344
387
  blockCreated
345
388
  txCreatedIdx
346
389
  }
@@ -385,7 +428,6 @@ var MessageProofFragmentFragmentDoc = import_graphql_tag.default`
385
428
  prevRoot
386
429
  time
387
430
  applicationHash
388
- messageReceiptRoot
389
431
  messageReceiptCount
390
432
  }
391
433
  commitBlockHeader {
@@ -397,7 +439,6 @@ var MessageProofFragmentFragmentDoc = import_graphql_tag.default`
397
439
  prevRoot
398
440
  time
399
441
  applicationHash
400
- messageReceiptRoot
401
442
  messageReceiptCount
402
443
  }
403
444
  sender
@@ -417,8 +458,8 @@ var BalanceFragmentFragmentDoc = import_graphql_tag.default`
417
458
  var BlockFragmentFragmentDoc = import_graphql_tag.default`
418
459
  fragment blockFragment on Block {
419
460
  id
461
+ height
420
462
  header {
421
- height
422
463
  time
423
464
  }
424
465
  transactions {
@@ -476,6 +517,11 @@ var DependentCostFragmentFragmentDoc = import_graphql_tag.default`
476
517
  `;
477
518
  var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
478
519
  fragment GasCostsFragment on GasCosts {
520
+ version {
521
+ ... on Version {
522
+ value
523
+ }
524
+ }
479
525
  add
480
526
  addi
481
527
  aloc
@@ -488,7 +534,6 @@ var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
488
534
  cb
489
535
  cfei
490
536
  cfsi
491
- croo
492
537
  div
493
538
  divi
494
539
  ecr1
@@ -571,6 +616,9 @@ var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
571
616
  ccp {
572
617
  ...DependentCostFragment
573
618
  }
619
+ croo {
620
+ ...DependentCostFragment
621
+ }
574
622
  csiz {
575
623
  ...DependentCostFragment
576
624
  }
@@ -630,6 +678,11 @@ var GasCostsFragmentFragmentDoc = import_graphql_tag.default`
630
678
  ${DependentCostFragmentFragmentDoc}`;
631
679
  var ConsensusParametersFragmentFragmentDoc = import_graphql_tag.default`
632
680
  fragment consensusParametersFragment on ConsensusParameters {
681
+ version {
682
+ ... on Version {
683
+ value
684
+ }
685
+ }
633
686
  txParams {
634
687
  ...TxParametersFragment
635
688
  }
@@ -689,18 +742,9 @@ var NodeInfoFragmentFragmentDoc = import_graphql_tag.default`
689
742
  fragment nodeInfoFragment on NodeInfo {
690
743
  utxoValidation
691
744
  vmBacktrace
692
- minGasPrice
693
745
  maxTx
694
746
  maxDepth
695
747
  nodeVersion
696
- peers {
697
- id
698
- addresses
699
- clientVersion
700
- blockHeight
701
- lastHeartbeatMs
702
- appScore
703
- }
704
748
  }
705
749
  `;
706
750
  var GetVersionDocument = import_graphql_tag.default`
@@ -735,13 +779,9 @@ var GetTransactionWithReceiptsDocument = import_graphql_tag.default`
735
779
  query getTransactionWithReceipts($transactionId: TransactionId!) {
736
780
  transaction(id: $transactionId) {
737
781
  ...transactionFragment
738
- receipts {
739
- ...receiptFragment
740
- }
741
782
  }
742
783
  }
743
- ${TransactionFragmentFragmentDoc}
744
- ${ReceiptFragmentFragmentDoc}`;
784
+ ${TransactionFragmentFragmentDoc}`;
745
785
  var GetTransactionsDocument = import_graphql_tag.default`
746
786
  query getTransactions($after: String, $before: String, $first: Int, $last: Int) {
747
787
  transactions(after: $after, before: $before, first: $first, last: $last) {
@@ -869,6 +909,20 @@ var GetBalanceDocument = import_graphql_tag.default`
869
909
  }
870
910
  }
871
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
+ `;
872
926
  var GetBalancesDocument = import_graphql_tag.default`
873
927
  query getBalances($filter: BalanceFilterInput!, $after: String, $before: String, $first: Int, $last: Int) {
874
928
  balances(
@@ -923,12 +977,12 @@ var GetMessageStatusDocument = import_graphql_tag.default`
923
977
  }
924
978
  `;
925
979
  var DryRunDocument = import_graphql_tag.default`
926
- mutation dryRun($encodedTransaction: HexString!, $utxoValidation: Boolean) {
927
- dryRun(tx: $encodedTransaction, utxoValidation: $utxoValidation) {
928
- ...receiptFragment
980
+ mutation dryRun($encodedTransactions: [HexString!]!, $utxoValidation: Boolean) {
981
+ dryRun(txs: $encodedTransactions, utxoValidation: $utxoValidation) {
982
+ ...dryRunTransactionExecutionStatusFragment
929
983
  }
930
984
  }
931
- ${ReceiptFragmentFragmentDoc}`;
985
+ ${DryRunTransactionExecutionStatusFragmentFragmentDoc}`;
932
986
  var SubmitDocument = import_graphql_tag.default`
933
987
  mutation submit($encodedTransaction: HexString!) {
934
988
  submit(tx: $encodedTransaction) {
@@ -1011,6 +1065,12 @@ function getSdk(requester) {
1011
1065
  getBalance(variables, options) {
1012
1066
  return requester(GetBalanceDocument, variables, options);
1013
1067
  },
1068
+ getLatestGasPrice(variables, options) {
1069
+ return requester(GetLatestGasPriceDocument, variables, options);
1070
+ },
1071
+ estimateGasPrice(variables, options) {
1072
+ return requester(EstimateGasPriceDocument, variables, options);
1073
+ },
1014
1074
  getBalances(variables, options) {
1015
1075
  return requester(GetBalancesDocument, variables, options);
1016
1076
  },
@@ -1084,7 +1144,9 @@ var _FuelGraphqlSubscriber = class {
1084
1144
  } catch (e) {
1085
1145
  throw new import_errors.FuelError(
1086
1146
  import_errors.ErrorCode.STREAM_PARSING_ERROR,
1087
- `Error while parsing stream data response: ${text}`
1147
+ `Error while parsing stream data response: ${text}
1148
+
1149
+ Thrown error: ${e}`
1088
1150
  );
1089
1151
  }
1090
1152
  if (Array.isArray(errors)) {
@@ -1171,7 +1233,7 @@ var MemoryCache = class {
1171
1233
  };
1172
1234
 
1173
1235
  // src/providers/transaction-request/input.ts
1174
- var import_configs = require("@fuel-ts/address/configs");
1236
+ var import_configs2 = require("@fuel-ts/address/configs");
1175
1237
  var import_errors3 = require("@fuel-ts/errors");
1176
1238
  var import_math2 = require("@fuel-ts/math");
1177
1239
  var import_transactions = require("@fuel-ts/transactions");
@@ -1185,7 +1247,7 @@ var inputify = (value) => {
1185
1247
  return {
1186
1248
  type: import_transactions.InputType.Coin,
1187
1249
  txID: (0, import_utils3.hexlify)((0, import_utils3.arrayify)(value.id).slice(0, 32)),
1188
- outputIndex: (0, import_utils3.arrayify)(value.id)[32],
1250
+ outputIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.id).slice(32, 34)),
1189
1251
  owner: (0, import_utils3.hexlify)(value.owner),
1190
1252
  amount: (0, import_math2.bn)(value.amount),
1191
1253
  assetId: (0, import_utils3.hexlify)(value.assetId),
@@ -1194,10 +1256,9 @@ var inputify = (value) => {
1194
1256
  txIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.txPointer).slice(8, 16))
1195
1257
  },
1196
1258
  witnessIndex: value.witnessIndex,
1197
- maturity: value.maturity ?? 0,
1198
1259
  predicateGasUsed: (0, import_math2.bn)(value.predicateGasUsed),
1199
- predicateLength: predicate.length,
1200
- predicateDataLength: predicateData.length,
1260
+ predicateLength: (0, import_math2.bn)(predicate.length),
1261
+ predicateDataLength: (0, import_math2.bn)(predicateData.length),
1201
1262
  predicate: (0, import_utils3.hexlify)(predicate),
1202
1263
  predicateData: (0, import_utils3.hexlify)(predicateData)
1203
1264
  };
@@ -1205,10 +1266,10 @@ var inputify = (value) => {
1205
1266
  case import_transactions.InputType.Contract: {
1206
1267
  return {
1207
1268
  type: import_transactions.InputType.Contract,
1208
- txID: import_configs.ZeroBytes32,
1269
+ txID: import_configs2.ZeroBytes32,
1209
1270
  outputIndex: 0,
1210
- balanceRoot: import_configs.ZeroBytes32,
1211
- stateRoot: import_configs.ZeroBytes32,
1271
+ balanceRoot: import_configs2.ZeroBytes32,
1272
+ stateRoot: import_configs2.ZeroBytes32,
1212
1273
  txPointer: {
1213
1274
  blockHeight: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.txPointer).slice(0, 8)),
1214
1275
  txIndex: (0, import_math2.toNumber)((0, import_utils3.arrayify)(value.txPointer).slice(8, 16))
@@ -1228,8 +1289,8 @@ var inputify = (value) => {
1228
1289
  nonce: (0, import_utils3.hexlify)(value.nonce),
1229
1290
  witnessIndex: value.witnessIndex,
1230
1291
  predicateGasUsed: (0, import_math2.bn)(value.predicateGasUsed),
1231
- predicateLength: predicate.length,
1232
- predicateDataLength: predicateData.length,
1292
+ predicateLength: (0, import_math2.bn)(predicate.length),
1293
+ predicateDataLength: (0, import_math2.bn)(predicateData.length),
1233
1294
  predicate: (0, import_utils3.hexlify)(predicate),
1234
1295
  predicateData: (0, import_utils3.hexlify)(predicateData),
1235
1296
  data: (0, import_utils3.hexlify)(data),
@@ -1246,7 +1307,7 @@ var inputify = (value) => {
1246
1307
  };
1247
1308
 
1248
1309
  // src/providers/transaction-request/output.ts
1249
- var import_configs2 = require("@fuel-ts/address/configs");
1310
+ var import_configs3 = require("@fuel-ts/address/configs");
1250
1311
  var import_errors4 = require("@fuel-ts/errors");
1251
1312
  var import_math3 = require("@fuel-ts/math");
1252
1313
  var import_transactions2 = require("@fuel-ts/transactions");
@@ -1266,8 +1327,8 @@ var outputify = (value) => {
1266
1327
  return {
1267
1328
  type: import_transactions2.OutputType.Contract,
1268
1329
  inputIndex: value.inputIndex,
1269
- balanceRoot: import_configs2.ZeroBytes32,
1270
- stateRoot: import_configs2.ZeroBytes32
1330
+ balanceRoot: import_configs3.ZeroBytes32,
1331
+ stateRoot: import_configs3.ZeroBytes32
1271
1332
  };
1272
1333
  }
1273
1334
  case import_transactions2.OutputType.Change: {
@@ -1281,9 +1342,9 @@ var outputify = (value) => {
1281
1342
  case import_transactions2.OutputType.Variable: {
1282
1343
  return {
1283
1344
  type: import_transactions2.OutputType.Variable,
1284
- to: import_configs2.ZeroBytes32,
1345
+ to: import_configs3.ZeroBytes32,
1285
1346
  amount: (0, import_math3.bn)(0),
1286
- assetId: import_configs2.ZeroBytes32
1347
+ assetId: import_configs3.ZeroBytes32
1287
1348
  };
1288
1349
  }
1289
1350
  case import_transactions2.OutputType.ContractCreated: {
@@ -1304,10 +1365,11 @@ var outputify = (value) => {
1304
1365
 
1305
1366
  // src/providers/transaction-request/transaction-request.ts
1306
1367
  var import_address = require("@fuel-ts/address");
1307
- var import_configs6 = require("@fuel-ts/address/configs");
1368
+ var import_configs7 = require("@fuel-ts/address/configs");
1308
1369
  var import_math7 = require("@fuel-ts/math");
1309
1370
  var import_transactions6 = require("@fuel-ts/transactions");
1310
1371
  var import_utils9 = require("@fuel-ts/utils");
1372
+ var import_ethers = require("ethers");
1311
1373
 
1312
1374
  // src/providers/resource.ts
1313
1375
  var isRawCoin = (resource) => "utxoId" in resource;
@@ -1316,13 +1378,13 @@ var isCoin = (resource) => "id" in resource;
1316
1378
  var isMessage = (resource) => "recipient" in resource;
1317
1379
 
1318
1380
  // src/providers/utils/receipts.ts
1319
- var import_configs3 = require("@fuel-ts/address/configs");
1381
+ var import_configs4 = require("@fuel-ts/address/configs");
1320
1382
  var import_errors5 = require("@fuel-ts/errors");
1321
1383
  var import_math4 = require("@fuel-ts/math");
1322
1384
  var import_transactions3 = require("@fuel-ts/transactions");
1323
- var import_configs4 = require("@fuel-ts/transactions/configs");
1385
+ var import_configs5 = require("@fuel-ts/transactions/configs");
1324
1386
  var import_utils5 = require("@fuel-ts/utils");
1325
- var doesReceiptHaveMissingOutputVariables = (receipt) => receipt.type === import_transactions3.ReceiptType.Revert && receipt.val.toString("hex") === import_configs4.FAILED_TRANSFER_TO_ADDRESS_SIGNAL;
1387
+ var doesReceiptHaveMissingOutputVariables = (receipt) => receipt.type === import_transactions3.ReceiptType.Revert && receipt.val.toString("hex") === import_configs5.FAILED_TRANSFER_TO_ADDRESS_SIGNAL;
1326
1388
  var doesReceiptHaveMissingContractId = (receipt) => receipt.type === import_transactions3.ReceiptType.Panic && receipt.contractId !== "0x0000000000000000000000000000000000000000000000000000000000000000";
1327
1389
  var getReceiptsWithMissingData = (receipts) => receipts.reduce(
1328
1390
  (memo, receipt) => {
@@ -1339,15 +1401,15 @@ var getReceiptsWithMissingData = (receipts) => receipts.reduce(
1339
1401
  missingOutputContractIds: []
1340
1402
  }
1341
1403
  );
1342
- var hexOrZero = (hex) => hex || import_configs3.ZeroBytes32;
1404
+ var hexOrZero = (hex) => hex || import_configs4.ZeroBytes32;
1343
1405
  function assembleReceiptByType(receipt) {
1344
1406
  const { receiptType } = receipt;
1345
1407
  switch (receiptType) {
1346
1408
  case "CALL" /* Call */: {
1347
1409
  const callReceipt = {
1348
1410
  type: import_transactions3.ReceiptType.Call,
1349
- from: hexOrZero(receipt.contract?.id),
1350
- to: hexOrZero(receipt?.to?.id),
1411
+ from: hexOrZero(receipt.id || receipt.contractId),
1412
+ to: hexOrZero(receipt?.to),
1351
1413
  amount: (0, import_math4.bn)(receipt.amount),
1352
1414
  assetId: hexOrZero(receipt.assetId),
1353
1415
  gas: (0, import_math4.bn)(receipt.gas),
@@ -1361,7 +1423,7 @@ function assembleReceiptByType(receipt) {
1361
1423
  case "RETURN" /* Return */: {
1362
1424
  const returnReceipt = {
1363
1425
  type: import_transactions3.ReceiptType.Return,
1364
- id: hexOrZero(receipt.contract?.id),
1426
+ id: hexOrZero(receipt.id || receipt.contractId),
1365
1427
  val: (0, import_math4.bn)(receipt.val),
1366
1428
  pc: (0, import_math4.bn)(receipt.pc),
1367
1429
  is: (0, import_math4.bn)(receipt.is)
@@ -1371,7 +1433,7 @@ function assembleReceiptByType(receipt) {
1371
1433
  case "RETURN_DATA" /* ReturnData */: {
1372
1434
  const returnDataReceipt = {
1373
1435
  type: import_transactions3.ReceiptType.ReturnData,
1374
- id: hexOrZero(receipt.contract?.id),
1436
+ id: hexOrZero(receipt.id || receipt.contractId),
1375
1437
  ptr: (0, import_math4.bn)(receipt.ptr),
1376
1438
  len: (0, import_math4.bn)(receipt.len),
1377
1439
  digest: hexOrZero(receipt.digest),
@@ -1383,7 +1445,7 @@ function assembleReceiptByType(receipt) {
1383
1445
  case "PANIC" /* Panic */: {
1384
1446
  const panicReceipt = {
1385
1447
  type: import_transactions3.ReceiptType.Panic,
1386
- id: hexOrZero(receipt.contract?.id),
1448
+ id: hexOrZero(receipt.id),
1387
1449
  reason: (0, import_math4.bn)(receipt.reason),
1388
1450
  pc: (0, import_math4.bn)(receipt.pc),
1389
1451
  is: (0, import_math4.bn)(receipt.is),
@@ -1394,7 +1456,7 @@ function assembleReceiptByType(receipt) {
1394
1456
  case "REVERT" /* Revert */: {
1395
1457
  const revertReceipt = {
1396
1458
  type: import_transactions3.ReceiptType.Revert,
1397
- id: hexOrZero(receipt.contract?.id),
1459
+ id: hexOrZero(receipt.id || receipt.contractId),
1398
1460
  val: (0, import_math4.bn)(receipt.ra),
1399
1461
  pc: (0, import_math4.bn)(receipt.pc),
1400
1462
  is: (0, import_math4.bn)(receipt.is)
@@ -1404,7 +1466,7 @@ function assembleReceiptByType(receipt) {
1404
1466
  case "LOG" /* Log */: {
1405
1467
  const logReceipt = {
1406
1468
  type: import_transactions3.ReceiptType.Log,
1407
- id: hexOrZero(receipt.contract?.id),
1469
+ id: hexOrZero(receipt.id || receipt.contractId),
1408
1470
  val0: (0, import_math4.bn)(receipt.ra),
1409
1471
  val1: (0, import_math4.bn)(receipt.rb),
1410
1472
  val2: (0, import_math4.bn)(receipt.rc),
@@ -1417,7 +1479,7 @@ function assembleReceiptByType(receipt) {
1417
1479
  case "LOG_DATA" /* LogData */: {
1418
1480
  const logDataReceipt = {
1419
1481
  type: import_transactions3.ReceiptType.LogData,
1420
- id: hexOrZero(receipt.contract?.id),
1482
+ id: hexOrZero(receipt.id || receipt.contractId),
1421
1483
  val0: (0, import_math4.bn)(receipt.ra),
1422
1484
  val1: (0, import_math4.bn)(receipt.rb),
1423
1485
  ptr: (0, import_math4.bn)(receipt.ptr),
@@ -1431,8 +1493,8 @@ function assembleReceiptByType(receipt) {
1431
1493
  case "TRANSFER" /* Transfer */: {
1432
1494
  const transferReceipt = {
1433
1495
  type: import_transactions3.ReceiptType.Transfer,
1434
- from: hexOrZero(receipt.contract?.id),
1435
- to: hexOrZero(receipt.toAddress || receipt?.to?.id),
1496
+ from: hexOrZero(receipt.id || receipt.contractId),
1497
+ to: hexOrZero(receipt.toAddress || receipt?.to),
1436
1498
  amount: (0, import_math4.bn)(receipt.amount),
1437
1499
  assetId: hexOrZero(receipt.assetId),
1438
1500
  pc: (0, import_math4.bn)(receipt.pc),
@@ -1443,8 +1505,8 @@ function assembleReceiptByType(receipt) {
1443
1505
  case "TRANSFER_OUT" /* TransferOut */: {
1444
1506
  const transferOutReceipt = {
1445
1507
  type: import_transactions3.ReceiptType.TransferOut,
1446
- from: hexOrZero(receipt.contract?.id),
1447
- to: hexOrZero(receipt.toAddress || receipt.to?.id),
1508
+ from: hexOrZero(receipt.id || receipt.contractId),
1509
+ to: hexOrZero(receipt.toAddress || receipt.to),
1448
1510
  amount: (0, import_math4.bn)(receipt.amount),
1449
1511
  assetId: hexOrZero(receipt.assetId),
1450
1512
  pc: (0, import_math4.bn)(receipt.pc),
@@ -1487,7 +1549,7 @@ function assembleReceiptByType(receipt) {
1487
1549
  return receiptMessageOut;
1488
1550
  }
1489
1551
  case "MINT" /* Mint */: {
1490
- const contractId = hexOrZero(receipt.contract?.id);
1552
+ const contractId = hexOrZero(receipt.id || receipt.contractId);
1491
1553
  const subId = hexOrZero(receipt.subId);
1492
1554
  const assetId = import_transactions3.ReceiptMintCoder.getAssetId(contractId, subId);
1493
1555
  const mintReceipt = {
@@ -1502,7 +1564,7 @@ function assembleReceiptByType(receipt) {
1502
1564
  return mintReceipt;
1503
1565
  }
1504
1566
  case "BURN" /* Burn */: {
1505
- const contractId = hexOrZero(receipt.contract?.id);
1567
+ const contractId = hexOrZero(receipt.id || receipt.contractId);
1506
1568
  const subId = hexOrZero(receipt.subId);
1507
1569
  const assetId = import_transactions3.ReceiptBurnCoder.getAssetId(contractId, subId);
1508
1570
  const burnReceipt = {
@@ -1587,7 +1649,6 @@ var buildBlockExplorerUrl = (options = {}) => {
1587
1649
  var import_math5 = require("@fuel-ts/math");
1588
1650
  var import_transactions4 = require("@fuel-ts/transactions");
1589
1651
  var import_utils6 = require("@fuel-ts/utils");
1590
- var calculatePriceWithFactor = (gas, gasPrice, priceFactor) => (0, import_math5.bn)(Math.ceil(gas.mul(gasPrice).toNumber() / priceFactor.toNumber()));
1591
1652
  var getGasUsedFromReceipts = (receipts) => {
1592
1653
  const scriptResult = receipts.filter(
1593
1654
  (receipt) => receipt.type === import_transactions4.ReceiptType.ScriptResult
@@ -1608,18 +1669,28 @@ function resolveGasDependentCosts(byteSize, gasDependentCost) {
1608
1669
  }
1609
1670
  function gasUsedByInputs(inputs, txBytesSize, gasCosts) {
1610
1671
  const witnessCache = [];
1611
- const totalGas = inputs.reduce((total, input) => {
1672
+ const chargeableInputs = inputs.filter((input) => {
1673
+ const isCoinOrMessage = "owner" in input || "sender" in input;
1674
+ if (isCoinOrMessage) {
1675
+ if ("predicate" in input && input.predicate && input.predicate !== "0x") {
1676
+ return true;
1677
+ }
1678
+ if (!witnessCache.includes(input.witnessIndex)) {
1679
+ witnessCache.push(input.witnessIndex);
1680
+ return true;
1681
+ }
1682
+ }
1683
+ return false;
1684
+ });
1685
+ const vmInitializationCost = resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization);
1686
+ const totalGas = chargeableInputs.reduce((total, input) => {
1612
1687
  if ("predicate" in input && input.predicate && input.predicate !== "0x") {
1613
1688
  return total.add(
1614
- resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization).add(resolveGasDependentCosts((0, import_utils6.arrayify)(input.predicate).length, gasCosts.contractRoot)).add((0, import_math5.bn)(input.predicateGasUsed))
1689
+ vmInitializationCost.add(resolveGasDependentCosts((0, import_utils6.arrayify)(input.predicate).length, gasCosts.contractRoot)).add((0, import_math5.bn)(input.predicateGasUsed))
1615
1690
  );
1616
1691
  }
1617
- if ("witnessIndex" in input && !witnessCache.includes(input.witnessIndex)) {
1618
- witnessCache.push(input.witnessIndex);
1619
- return total.add(gasCosts.ecr1);
1620
- }
1621
- return total;
1622
- }, (0, import_math5.bn)());
1692
+ return total.add(gasCosts.ecr1);
1693
+ }, (0, import_math5.bn)(0));
1623
1694
  return totalGas;
1624
1695
  }
1625
1696
  function getMinGas(params) {
@@ -1631,12 +1702,20 @@ function getMinGas(params) {
1631
1702
  return minGas;
1632
1703
  }
1633
1704
  function getMaxGas(params) {
1634
- const { gasPerByte, witnessesLength, witnessLimit, minGas, gasLimit = (0, import_math5.bn)(0) } = params;
1705
+ const {
1706
+ gasPerByte,
1707
+ witnessesLength,
1708
+ witnessLimit,
1709
+ minGas,
1710
+ gasLimit = (0, import_math5.bn)(0),
1711
+ maxGasPerTx
1712
+ } = params;
1635
1713
  let remainingAllowedWitnessGas = (0, import_math5.bn)(0);
1636
1714
  if (witnessLimit?.gt(0) && witnessLimit.gte(witnessesLength)) {
1637
1715
  remainingAllowedWitnessGas = (0, import_math5.bn)(witnessLimit).sub(witnessesLength).mul(gasPerByte);
1638
1716
  }
1639
- return remainingAllowedWitnessGas.add(minGas).add(gasLimit);
1717
+ const maxGas = remainingAllowedWitnessGas.add(minGas).add(gasLimit);
1718
+ return maxGas.gte(maxGasPerTx) ? maxGasPerTx : maxGas;
1640
1719
  }
1641
1720
  function calculateMetadataGasForTxCreate({
1642
1721
  gasCosts,
@@ -1658,6 +1737,10 @@ function calculateMetadataGasForTxScript({
1658
1737
  }) {
1659
1738
  return resolveGasDependentCosts(txBytesSize, gasCosts.s256);
1660
1739
  }
1740
+ var calculateGasFee = (params) => {
1741
+ const { gas, gasPrice, priceFactor, tip } = params;
1742
+ return gas.mul(gasPrice).div(priceFactor).add(tip);
1743
+ };
1661
1744
 
1662
1745
  // src/providers/utils/json.ts
1663
1746
  var import_utils7 = require("@fuel-ts/utils");
@@ -1703,16 +1786,16 @@ function sleep(time) {
1703
1786
  var import_errors7 = require("@fuel-ts/errors");
1704
1787
  var import_math6 = require("@fuel-ts/math");
1705
1788
  var import_transactions5 = require("@fuel-ts/transactions");
1706
- var import_configs5 = require("@fuel-ts/transactions/configs");
1789
+ var import_configs6 = require("@fuel-ts/transactions/configs");
1707
1790
  var assemblePanicError = (status) => {
1708
1791
  let errorMessage = `The transaction reverted with reason: "${status.reason}".`;
1709
1792
  const reason = status.reason;
1710
- if (import_configs5.PANIC_REASONS.includes(status.reason)) {
1793
+ if (import_configs6.PANIC_REASONS.includes(status.reason)) {
1711
1794
  errorMessage = `${errorMessage}
1712
1795
 
1713
1796
  You can read more about this error at:
1714
1797
 
1715
- ${import_configs5.PANIC_DOC_URL}#variant.${status.reason}`;
1798
+ ${import_configs6.PANIC_DOC_URL}#variant.${status.reason}`;
1716
1799
  }
1717
1800
  return { errorMessage, reason };
1718
1801
  };
@@ -1724,28 +1807,28 @@ var assembleRevertError = (receipts, logs) => {
1724
1807
  if (revertReceipt) {
1725
1808
  const reasonHex = (0, import_math6.bn)(revertReceipt.val).toHex();
1726
1809
  switch (reasonHex) {
1727
- case import_configs5.FAILED_REQUIRE_SIGNAL: {
1810
+ case import_configs6.FAILED_REQUIRE_SIGNAL: {
1728
1811
  reason = "require";
1729
1812
  errorMessage = `The transaction reverted because a "require" statement has thrown ${logs.length ? stringify(logs[0]) : "an error."}.`;
1730
1813
  break;
1731
1814
  }
1732
- case import_configs5.FAILED_ASSERT_EQ_SIGNAL: {
1815
+ case import_configs6.FAILED_ASSERT_EQ_SIGNAL: {
1733
1816
  const sufix = logs.length >= 2 ? ` comparing ${stringify(logs[1])} and ${stringify(logs[0])}.` : ".";
1734
1817
  reason = "assert_eq";
1735
1818
  errorMessage = `The transaction reverted because of an "assert_eq" statement${sufix}`;
1736
1819
  break;
1737
1820
  }
1738
- case import_configs5.FAILED_ASSERT_NE_SIGNAL: {
1821
+ case import_configs6.FAILED_ASSERT_NE_SIGNAL: {
1739
1822
  const sufix = logs.length >= 2 ? ` comparing ${stringify(logs[1])} and ${stringify(logs[0])}.` : ".";
1740
1823
  reason = "assert_ne";
1741
1824
  errorMessage = `The transaction reverted because of an "assert_ne" statement${sufix}`;
1742
1825
  break;
1743
1826
  }
1744
- case import_configs5.FAILED_ASSERT_SIGNAL:
1827
+ case import_configs6.FAILED_ASSERT_SIGNAL:
1745
1828
  reason = "assert";
1746
1829
  errorMessage = `The transaction reverted because an "assert" statement failed to evaluate to true.`;
1747
1830
  break;
1748
- case import_configs5.FAILED_TRANSFER_TO_ADDRESS_SIGNAL:
1831
+ case import_configs6.FAILED_TRANSFER_TO_ADDRESS_SIGNAL:
1749
1832
  reason = "MissingOutputChange";
1750
1833
  errorMessage = `The transaction reverted because it's missing an "OutputChange".`;
1751
1834
  break;
@@ -1806,7 +1889,7 @@ var witnessify = (value) => {
1806
1889
  // src/providers/transaction-request/transaction-request.ts
1807
1890
  var BaseTransactionRequest = class {
1808
1891
  /** Gas price for transaction */
1809
- gasPrice;
1892
+ tip;
1810
1893
  /** Block until which tx cannot be included */
1811
1894
  maturity;
1812
1895
  /** The maximum fee payable by this transaction using BASE_ASSET. */
@@ -1819,38 +1902,34 @@ var BaseTransactionRequest = class {
1819
1902
  outputs = [];
1820
1903
  /** List of witnesses */
1821
1904
  witnesses = [];
1822
- /** Base asset ID - should be fetched from the chain */
1823
- baseAssetId = import_configs6.ZeroBytes32;
1824
1905
  /**
1825
1906
  * Constructor for initializing a base transaction request.
1826
1907
  *
1827
1908
  * @param baseTransactionRequest - Optional object containing properties to initialize the transaction request.
1828
1909
  */
1829
1910
  constructor({
1830
- gasPrice,
1911
+ tip,
1831
1912
  maturity,
1832
1913
  maxFee,
1833
1914
  witnessLimit,
1834
1915
  inputs,
1835
1916
  outputs,
1836
- witnesses,
1837
- baseAssetId
1917
+ witnesses
1838
1918
  } = {}) {
1839
- this.gasPrice = (0, import_math7.bn)(gasPrice);
1919
+ this.tip = (0, import_math7.bn)(tip);
1840
1920
  this.maturity = maturity ?? 0;
1841
1921
  this.witnessLimit = witnessLimit ? (0, import_math7.bn)(witnessLimit) : void 0;
1842
1922
  this.maxFee = maxFee ? (0, import_math7.bn)(maxFee) : void 0;
1843
1923
  this.inputs = inputs ?? [];
1844
1924
  this.outputs = outputs ?? [];
1845
1925
  this.witnesses = witnesses ?? [];
1846
- this.baseAssetId = baseAssetId ?? import_configs6.ZeroBytes32;
1847
1926
  }
1848
1927
  static getPolicyMeta(req) {
1849
1928
  let policyTypes = 0;
1850
1929
  const policies = [];
1851
- if (req.gasPrice) {
1852
- policyTypes += import_transactions6.PolicyType.GasPrice;
1853
- policies.push({ data: req.gasPrice, type: import_transactions6.PolicyType.GasPrice });
1930
+ if (req.tip) {
1931
+ policyTypes += import_transactions6.PolicyType.Tip;
1932
+ policies.push({ data: req.tip, type: import_transactions6.PolicyType.Tip });
1854
1933
  }
1855
1934
  if (req.witnessLimit) {
1856
1935
  policyTypes += import_transactions6.PolicyType.WitnessLimit;
@@ -1936,7 +2015,7 @@ var BaseTransactionRequest = class {
1936
2015
  * @returns The index of the created witness.
1937
2016
  */
1938
2017
  addEmptyWitness() {
1939
- this.addWitness((0, import_utils9.concat)([import_configs6.ZeroBytes32, import_configs6.ZeroBytes32]));
2018
+ this.addWitness((0, import_utils9.concat)([import_configs7.ZeroBytes32, import_configs7.ZeroBytes32]));
1940
2019
  return this.witnesses.length - 1;
1941
2020
  }
1942
2021
  /**
@@ -2037,10 +2116,10 @@ var BaseTransactionRequest = class {
2037
2116
  * @param predicate - Predicate bytes.
2038
2117
  * @param predicateData - Predicate data bytes.
2039
2118
  */
2040
- addCoinInput(coin, predicate) {
2119
+ addCoinInput(coin) {
2041
2120
  const { assetId, owner, amount } = coin;
2042
2121
  let witnessIndex;
2043
- if (predicate) {
2122
+ if (coin.predicate) {
2044
2123
  witnessIndex = 0;
2045
2124
  } else {
2046
2125
  witnessIndex = this.getCoinInputWitnessIndexByOwner(owner);
@@ -2055,9 +2134,7 @@ var BaseTransactionRequest = class {
2055
2134
  amount,
2056
2135
  assetId,
2057
2136
  txPointer: "0x00000000000000000000000000000000",
2058
- witnessIndex,
2059
- predicate: predicate?.bytes,
2060
- predicateData: predicate?.predicateDataBytes
2137
+ witnessIndex
2061
2138
  };
2062
2139
  this.pushInput(input);
2063
2140
  this.addChangeOutput(owner, assetId);
@@ -2068,11 +2145,13 @@ var BaseTransactionRequest = class {
2068
2145
  *
2069
2146
  * @param message - Message resource.
2070
2147
  * @param predicate - Predicate bytes.
2148
+ * @param predicateData - Predicate data bytes.
2071
2149
  */
2072
- addMessageInput(message, predicate) {
2150
+ addMessageInput(message) {
2073
2151
  const { recipient, sender, amount } = message;
2152
+ const assetId = import_configs7.BaseAssetId;
2074
2153
  let witnessIndex;
2075
- if (predicate) {
2154
+ if (message.predicate) {
2076
2155
  witnessIndex = 0;
2077
2156
  } else {
2078
2157
  witnessIndex = this.getCoinInputWitnessIndexByOwner(recipient);
@@ -2086,12 +2165,10 @@ var BaseTransactionRequest = class {
2086
2165
  sender: sender.toB256(),
2087
2166
  recipient: recipient.toB256(),
2088
2167
  amount,
2089
- witnessIndex,
2090
- predicate: predicate?.bytes,
2091
- predicateData: predicate?.predicateDataBytes
2168
+ witnessIndex
2092
2169
  };
2093
2170
  this.pushInput(input);
2094
- this.addChangeOutput(recipient, this.baseAssetId);
2171
+ this.addChangeOutput(recipient, assetId);
2095
2172
  }
2096
2173
  /**
2097
2174
  * Adds a single resource to the transaction by adding a coin/message input and a
@@ -2119,32 +2196,6 @@ var BaseTransactionRequest = class {
2119
2196
  resources.forEach((resource) => this.addResource(resource));
2120
2197
  return this;
2121
2198
  }
2122
- /**
2123
- * Adds multiple resources to the transaction by adding coin/message inputs and change
2124
- * outputs from the related assetIds.
2125
- *
2126
- * @param resources - The resources to add.
2127
- * @returns This transaction.
2128
- */
2129
- addPredicateResource(resource, predicate) {
2130
- if (isCoin(resource)) {
2131
- this.addCoinInput(resource, predicate);
2132
- } else {
2133
- this.addMessageInput(resource, predicate);
2134
- }
2135
- return this;
2136
- }
2137
- /**
2138
- * Adds multiple predicate coin/message inputs to the transaction and change outputs
2139
- * from the related assetIds.
2140
- *
2141
- * @param resources - The resources to add.
2142
- * @returns This transaction.
2143
- */
2144
- addPredicateResources(resources, predicate) {
2145
- resources.forEach((resource) => this.addPredicateResource(resource, predicate));
2146
- return this;
2147
- }
2148
2199
  /**
2149
2200
  * Adds a coin output to the transaction.
2150
2201
  *
@@ -2152,12 +2203,12 @@ var BaseTransactionRequest = class {
2152
2203
  * @param amount - Amount of coin.
2153
2204
  * @param assetId - Asset ID of coin.
2154
2205
  */
2155
- addCoinOutput(to, amount, assetId) {
2206
+ addCoinOutput(to, amount, assetId = import_configs7.BaseAssetId) {
2156
2207
  this.pushOutput({
2157
2208
  type: import_transactions6.OutputType.Coin,
2158
2209
  to: (0, import_address.addressify)(to).toB256(),
2159
2210
  amount,
2160
- assetId: assetId ?? this.baseAssetId
2211
+ assetId
2161
2212
  });
2162
2213
  return this;
2163
2214
  }
@@ -2184,7 +2235,7 @@ var BaseTransactionRequest = class {
2184
2235
  * @param to - Address of the owner.
2185
2236
  * @param assetId - Asset ID of coin.
2186
2237
  */
2187
- addChangeOutput(to, assetId) {
2238
+ addChangeOutput(to, assetId = import_configs7.BaseAssetId) {
2188
2239
  const changeOutput = this.getChangeOutputs().find(
2189
2240
  (output) => (0, import_utils9.hexlify)(output.assetId) === assetId
2190
2241
  );
@@ -2192,7 +2243,7 @@ var BaseTransactionRequest = class {
2192
2243
  this.pushOutput({
2193
2244
  type: import_transactions6.OutputType.Change,
2194
2245
  to: (0, import_address.addressify)(to).toB256(),
2195
- assetId: assetId ?? this.baseAssetId
2246
+ assetId
2196
2247
  });
2197
2248
  }
2198
2249
  }
@@ -2224,7 +2275,7 @@ var BaseTransactionRequest = class {
2224
2275
  }
2225
2276
  calculateMaxGas(chainInfo, minGas) {
2226
2277
  const { consensusParameters } = chainInfo;
2227
- const { gasPerByte } = consensusParameters;
2278
+ const { gasPerByte, maxGasPerTx } = consensusParameters;
2228
2279
  const witnessesLength = this.toTransaction().witnesses.reduce(
2229
2280
  (acc, wit) => acc + wit.dataLength,
2230
2281
  0
@@ -2233,7 +2284,8 @@ var BaseTransactionRequest = class {
2233
2284
  gasPerByte,
2234
2285
  minGas,
2235
2286
  witnessesLength,
2236
- witnessLimit: this.witnessLimit
2287
+ witnessLimit: this.witnessLimit,
2288
+ maxGasPerTx
2237
2289
  });
2238
2290
  }
2239
2291
  /**
@@ -2243,12 +2295,6 @@ var BaseTransactionRequest = class {
2243
2295
  * @param quantities - CoinQuantity Array.
2244
2296
  */
2245
2297
  fundWithFakeUtxos(quantities, resourcesOwner) {
2246
- let idCounter = 0;
2247
- const generateId = () => {
2248
- const counterString = String(idCounter++);
2249
- const id = import_configs6.ZeroBytes32.slice(0, -counterString.length).concat(counterString);
2250
- return id;
2251
- };
2252
2298
  const findAssetInput = (assetId) => this.inputs.find((input) => {
2253
2299
  if ("assetId" in input) {
2254
2300
  return input.assetId === assetId;
@@ -2257,24 +2303,27 @@ var BaseTransactionRequest = class {
2257
2303
  });
2258
2304
  const updateAssetInput = (assetId, quantity) => {
2259
2305
  const assetInput = findAssetInput(assetId);
2306
+ let usedQuantity = quantity;
2307
+ if (assetId === import_configs7.BaseAssetId) {
2308
+ usedQuantity = (0, import_math7.bn)("1000000000000000000");
2309
+ }
2260
2310
  if (assetInput && "assetId" in assetInput) {
2261
- assetInput.id = generateId();
2262
- assetInput.amount = quantity;
2311
+ assetInput.id = (0, import_utils9.hexlify)((0, import_ethers.randomBytes)(34));
2312
+ assetInput.amount = usedQuantity;
2263
2313
  } else {
2264
2314
  this.addResources([
2265
2315
  {
2266
- id: generateId(),
2267
- amount: quantity,
2316
+ id: (0, import_utils9.hexlify)((0, import_ethers.randomBytes)(34)),
2317
+ amount: usedQuantity,
2268
2318
  assetId,
2269
2319
  owner: resourcesOwner || import_address.Address.fromRandom(),
2270
- maturity: 0,
2271
2320
  blockCreated: (0, import_math7.bn)(1),
2272
2321
  txCreatedIdx: (0, import_math7.bn)(1)
2273
2322
  }
2274
2323
  ]);
2275
2324
  }
2276
2325
  };
2277
- updateAssetInput(this.baseAssetId, (0, import_math7.bn)(1e11));
2326
+ updateAssetInput(import_configs7.BaseAssetId, (0, import_math7.bn)(1e11));
2278
2327
  quantities.forEach((q) => updateAssetInput(q.assetId, q.amount));
2279
2328
  }
2280
2329
  /**
@@ -2299,7 +2348,7 @@ var BaseTransactionRequest = class {
2299
2348
  toJSON() {
2300
2349
  return normalizeJSON(this);
2301
2350
  }
2302
- updatePredicateInputs(inputs) {
2351
+ updatePredicateGasUsed(inputs) {
2303
2352
  this.inputs.forEach((i) => {
2304
2353
  let correspondingInput;
2305
2354
  switch (i.type) {
@@ -2321,16 +2370,25 @@ var BaseTransactionRequest = class {
2321
2370
  }
2322
2371
  });
2323
2372
  }
2373
+ shiftPredicateData() {
2374
+ this.inputs.forEach((input) => {
2375
+ if ("predicateData" in input && "paddPredicateData" in input && typeof input.paddPredicateData === "function") {
2376
+ input.predicateData = input.paddPredicateData(
2377
+ BaseTransactionRequest.getPolicyMeta(this).policies.length
2378
+ );
2379
+ }
2380
+ });
2381
+ }
2324
2382
  };
2325
2383
 
2326
2384
  // src/providers/transaction-request/create-transaction-request.ts
2327
- var import_configs8 = require("@fuel-ts/address/configs");
2385
+ var import_configs9 = require("@fuel-ts/address/configs");
2328
2386
  var import_math9 = require("@fuel-ts/math");
2329
2387
  var import_transactions8 = require("@fuel-ts/transactions");
2330
2388
  var import_utils13 = require("@fuel-ts/utils");
2331
2389
 
2332
2390
  // src/providers/transaction-request/hash-transaction.ts
2333
- var import_configs7 = require("@fuel-ts/address/configs");
2391
+ var import_configs8 = require("@fuel-ts/address/configs");
2334
2392
  var import_hasher = require("@fuel-ts/hasher");
2335
2393
  var import_math8 = require("@fuel-ts/math");
2336
2394
  var import_transactions7 = require("@fuel-ts/transactions");
@@ -2339,7 +2397,7 @@ var import_ramda2 = require("ramda");
2339
2397
  function hashTransaction(transactionRequest, chainId) {
2340
2398
  const transaction = transactionRequest.toTransaction();
2341
2399
  if (transaction.type === import_transactions7.TransactionType.Script) {
2342
- transaction.receiptsRoot = import_configs7.ZeroBytes32;
2400
+ transaction.receiptsRoot = import_configs8.ZeroBytes32;
2343
2401
  }
2344
2402
  transaction.inputs = transaction.inputs.map((input) => {
2345
2403
  const inputClone = (0, import_ramda2.clone)(input);
@@ -2361,10 +2419,10 @@ function hashTransaction(transactionRequest, chainId) {
2361
2419
  blockHeight: 0,
2362
2420
  txIndex: 0
2363
2421
  };
2364
- inputClone.txID = import_configs7.ZeroBytes32;
2422
+ inputClone.txID = import_configs8.ZeroBytes32;
2365
2423
  inputClone.outputIndex = 0;
2366
- inputClone.balanceRoot = import_configs7.ZeroBytes32;
2367
- inputClone.stateRoot = import_configs7.ZeroBytes32;
2424
+ inputClone.balanceRoot = import_configs8.ZeroBytes32;
2425
+ inputClone.stateRoot = import_configs8.ZeroBytes32;
2368
2426
  return inputClone;
2369
2427
  }
2370
2428
  default:
@@ -2375,8 +2433,8 @@ function hashTransaction(transactionRequest, chainId) {
2375
2433
  const outputClone = (0, import_ramda2.clone)(output);
2376
2434
  switch (outputClone.type) {
2377
2435
  case import_transactions7.OutputType.Contract: {
2378
- outputClone.balanceRoot = import_configs7.ZeroBytes32;
2379
- outputClone.stateRoot = import_configs7.ZeroBytes32;
2436
+ outputClone.balanceRoot = import_configs8.ZeroBytes32;
2437
+ outputClone.stateRoot = import_configs8.ZeroBytes32;
2380
2438
  return outputClone;
2381
2439
  }
2382
2440
  case import_transactions7.OutputType.Change: {
@@ -2384,9 +2442,9 @@ function hashTransaction(transactionRequest, chainId) {
2384
2442
  return outputClone;
2385
2443
  }
2386
2444
  case import_transactions7.OutputType.Variable: {
2387
- outputClone.to = import_configs7.ZeroBytes32;
2445
+ outputClone.to = import_configs8.ZeroBytes32;
2388
2446
  outputClone.amount = (0, import_math8.bn)(0);
2389
- outputClone.assetId = import_configs7.ZeroBytes32;
2447
+ outputClone.assetId = import_configs8.ZeroBytes32;
2390
2448
  return outputClone;
2391
2449
  }
2392
2450
  default:
@@ -2452,7 +2510,7 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2452
2510
  } = {}) {
2453
2511
  super(rest);
2454
2512
  this.bytecodeWitnessIndex = bytecodeWitnessIndex ?? 0;
2455
- this.salt = (0, import_utils13.hexlify)(salt ?? import_configs8.ZeroBytes32);
2513
+ this.salt = (0, import_utils13.hexlify)(salt ?? import_configs9.ZeroBytes32);
2456
2514
  this.storageSlots = [...storageSlots ?? []];
2457
2515
  }
2458
2516
  /**
@@ -2467,10 +2525,9 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2467
2525
  return {
2468
2526
  type: import_transactions8.TransactionType.Create,
2469
2527
  ...baseTransaction,
2470
- bytecodeLength: baseTransaction.witnesses[bytecodeWitnessIndex].dataLength / 4,
2471
2528
  bytecodeWitnessIndex,
2472
- storageSlotsCount: storageSlots.length,
2473
- salt: this.salt ? (0, import_utils13.hexlify)(this.salt) : import_configs8.ZeroBytes32,
2529
+ storageSlotsCount: (0, import_math9.bn)(storageSlots.length),
2530
+ salt: this.salt ? (0, import_utils13.hexlify)(this.salt) : import_configs9.ZeroBytes32,
2474
2531
  storageSlots
2475
2532
  };
2476
2533
  }
@@ -2520,7 +2577,7 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2520
2577
  // src/providers/transaction-request/script-transaction-request.ts
2521
2578
  var import_abi_coder = require("@fuel-ts/abi-coder");
2522
2579
  var import_address2 = require("@fuel-ts/address");
2523
- var import_configs9 = require("@fuel-ts/address/configs");
2580
+ var import_configs10 = require("@fuel-ts/address/configs");
2524
2581
  var import_math10 = require("@fuel-ts/math");
2525
2582
  var import_transactions9 = require("@fuel-ts/transactions");
2526
2583
  var import_utils15 = require("@fuel-ts/utils");
@@ -2592,9 +2649,9 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2592
2649
  type: import_transactions9.TransactionType.Script,
2593
2650
  scriptGasLimit: this.gasLimit,
2594
2651
  ...super.getBaseTransaction(),
2595
- scriptLength: script.length,
2596
- scriptDataLength: scriptData.length,
2597
- receiptsRoot: import_configs9.ZeroBytes32,
2652
+ scriptLength: (0, import_math10.bn)(script.length),
2653
+ scriptDataLength: (0, import_math10.bn)(scriptData.length),
2654
+ receiptsRoot: import_configs10.ZeroBytes32,
2598
2655
  script: (0, import_utils15.hexlify)(script),
2599
2656
  scriptData: (0, import_utils15.hexlify)(scriptData)
2600
2657
  };
@@ -2657,7 +2714,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2657
2714
  }
2658
2715
  calculateMaxGas(chainInfo, minGas) {
2659
2716
  const { consensusParameters } = chainInfo;
2660
- const { gasPerByte } = consensusParameters;
2717
+ const { gasPerByte, maxGasPerTx } = consensusParameters;
2661
2718
  const witnessesLength = this.toTransaction().witnesses.reduce(
2662
2719
  (acc, wit) => acc + wit.dataLength,
2663
2720
  0
@@ -2667,7 +2724,8 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2667
2724
  minGas,
2668
2725
  witnessesLength,
2669
2726
  witnessLimit: this.witnessLimit,
2670
- gasLimit: this.gasLimit
2727
+ gasLimit: this.gasLimit,
2728
+ maxGasPerTx
2671
2729
  });
2672
2730
  }
2673
2731
  /**
@@ -2742,15 +2800,32 @@ var transactionRequestify = (obj) => {
2742
2800
  }
2743
2801
  }
2744
2802
  };
2803
+ var cacheTxInputsFromOwner = (inputs, owner) => inputs.reduce(
2804
+ (acc, input) => {
2805
+ if (input.type === import_transactions10.InputType.Coin && input.owner === owner) {
2806
+ acc.utxos.push(input.id);
2807
+ }
2808
+ if (input.type === import_transactions10.InputType.Message && input.recipient === owner) {
2809
+ acc.messages.push(input.nonce);
2810
+ }
2811
+ return acc;
2812
+ },
2813
+ {
2814
+ utxos: [],
2815
+ messages: []
2816
+ }
2817
+ );
2745
2818
 
2746
2819
  // src/providers/transaction-response/transaction-response.ts
2747
2820
  var import_errors13 = require("@fuel-ts/errors");
2748
- var import_math14 = require("@fuel-ts/math");
2749
- var import_transactions17 = require("@fuel-ts/transactions");
2750
- var import_utils21 = require("@fuel-ts/utils");
2821
+ var import_math15 = require("@fuel-ts/math");
2822
+ var import_transactions18 = require("@fuel-ts/transactions");
2823
+ var import_utils20 = require("@fuel-ts/utils");
2751
2824
 
2752
2825
  // src/providers/transaction-summary/assemble-transaction-summary.ts
2753
- var import_utils19 = require("@fuel-ts/utils");
2826
+ var import_math14 = require("@fuel-ts/math");
2827
+ var import_transactions16 = require("@fuel-ts/transactions");
2828
+ var import_utils18 = require("@fuel-ts/utils");
2754
2829
 
2755
2830
  // src/providers/transaction-summary/calculate-transaction-fee.ts
2756
2831
  var import_math11 = require("@fuel-ts/math");
@@ -2758,9 +2833,10 @@ var import_transactions11 = require("@fuel-ts/transactions");
2758
2833
  var import_utils16 = require("@fuel-ts/utils");
2759
2834
  var calculateTransactionFee = (params) => {
2760
2835
  const {
2761
- gasUsed,
2836
+ gasPrice,
2762
2837
  rawPayload,
2763
- consensusParameters: { gasCosts, feeParams }
2838
+ tip,
2839
+ consensusParameters: { gasCosts, feeParams, maxGasPerTx }
2764
2840
  } = params;
2765
2841
  const gasPerByte = (0, import_math11.bn)(feeParams.gasPerByte);
2766
2842
  const gasPriceFactor = (0, import_math11.bn)(feeParams.gasPriceFactor);
@@ -2770,8 +2846,7 @@ var calculateTransactionFee = (params) => {
2770
2846
  return {
2771
2847
  fee: (0, import_math11.bn)(0),
2772
2848
  minFee: (0, import_math11.bn)(0),
2773
- maxFee: (0, import_math11.bn)(0),
2774
- feeFromGasUsed: (0, import_math11.bn)(0)
2849
+ maxFee: (0, import_math11.bn)(0)
2775
2850
  };
2776
2851
  }
2777
2852
  const { type, witnesses, inputs, policies } = transaction;
@@ -2803,7 +2878,6 @@ var calculateTransactionFee = (params) => {
2803
2878
  metadataGas,
2804
2879
  txBytesSize: transactionBytes.length
2805
2880
  });
2806
- const gasPrice = (0, import_math11.bn)(policies.find((policy) => policy.type === import_transactions11.PolicyType.GasPrice)?.data);
2807
2881
  const witnessLimit = policies.find((policy) => policy.type === import_transactions11.PolicyType.WitnessLimit)?.data;
2808
2882
  const witnessesLength = witnesses.reduce((acc, wit) => acc + wit.dataLength, 0);
2809
2883
  const maxGas = getMaxGas({
@@ -2811,22 +2885,30 @@ var calculateTransactionFee = (params) => {
2811
2885
  minGas,
2812
2886
  witnessesLength,
2813
2887
  gasLimit,
2814
- witnessLimit
2888
+ witnessLimit,
2889
+ maxGasPerTx
2890
+ });
2891
+ const minFee = calculateGasFee({
2892
+ gasPrice,
2893
+ gas: minGas,
2894
+ priceFactor: gasPriceFactor,
2895
+ tip
2896
+ });
2897
+ const maxFee = calculateGasFee({
2898
+ gasPrice,
2899
+ gas: maxGas,
2900
+ priceFactor: gasPriceFactor,
2901
+ tip
2815
2902
  });
2816
- const feeFromGasUsed = calculatePriceWithFactor(gasUsed, gasPrice, gasPriceFactor);
2817
- const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor);
2818
- const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor);
2819
- const fee = minFee.add(feeFromGasUsed);
2820
2903
  return {
2821
- fee,
2822
2904
  minFee,
2823
2905
  maxFee,
2824
- feeFromGasUsed
2906
+ fee: maxFee
2825
2907
  };
2826
2908
  };
2827
2909
 
2828
2910
  // src/providers/transaction-summary/operations.ts
2829
- var import_configs10 = require("@fuel-ts/address/configs");
2911
+ var import_configs11 = require("@fuel-ts/address/configs");
2830
2912
  var import_errors11 = require("@fuel-ts/errors");
2831
2913
  var import_math13 = require("@fuel-ts/math");
2832
2914
  var import_transactions14 = require("@fuel-ts/transactions");
@@ -3171,7 +3253,7 @@ function extractTransferOperationFromReceipt(receipt, contractInputs, changeOutp
3171
3253
  const { to: toAddress, assetId, amount } = receipt;
3172
3254
  let { from: fromAddress } = receipt;
3173
3255
  const toType = contractInputs.some((input) => input.contractID === toAddress) ? 0 /* contract */ : 1 /* account */;
3174
- if (import_configs10.ZeroBytes32 === fromAddress) {
3256
+ if (import_configs11.ZeroBytes32 === fromAddress) {
3175
3257
  const change = changeOutputs.find((output) => output.assetId === assetId);
3176
3258
  fromAddress = change?.to || fromAddress;
3177
3259
  }
@@ -3435,10 +3517,12 @@ function assembleTransactionSummary(params) {
3435
3517
  gqlTransactionStatus,
3436
3518
  abiMap = {},
3437
3519
  maxInputs,
3438
- gasCosts
3520
+ gasCosts,
3521
+ maxGasPerTx,
3522
+ gasPrice
3439
3523
  } = params;
3440
3524
  const gasUsed = getGasUsedFromReceipts(receipts);
3441
- const rawPayload = (0, import_utils19.hexlify)(transactionBytes);
3525
+ const rawPayload = (0, import_utils18.hexlify)(transactionBytes);
3442
3526
  const operations = getOperations({
3443
3527
  transactionType: transaction.type,
3444
3528
  inputs: transaction.inputs || [],
@@ -3449,11 +3533,14 @@ function assembleTransactionSummary(params) {
3449
3533
  maxInputs
3450
3534
  });
3451
3535
  const typeName = getTransactionTypeName(transaction.type);
3536
+ const tip = (0, import_math14.bn)(transaction.policies?.find((policy) => policy.type === import_transactions16.PolicyType.Tip)?.data);
3452
3537
  const { fee } = calculateTransactionFee({
3453
- gasUsed,
3538
+ gasPrice,
3454
3539
  rawPayload,
3540
+ tip,
3455
3541
  consensusParameters: {
3456
3542
  gasCosts,
3543
+ maxGasPerTx,
3457
3544
  feeParams: {
3458
3545
  gasPerByte,
3459
3546
  gasPriceFactor
@@ -3465,7 +3552,7 @@ function assembleTransactionSummary(params) {
3465
3552
  const burnedAssets = extractBurnedAssetsFromReceipts(receipts);
3466
3553
  let date;
3467
3554
  if (time) {
3468
- date = import_utils19.DateTime.fromTai64(time);
3555
+ date = import_utils18.DateTime.fromTai64(time);
3469
3556
  }
3470
3557
  const transactionSummary = {
3471
3558
  id,
@@ -3493,12 +3580,12 @@ function assembleTransactionSummary(params) {
3493
3580
 
3494
3581
  // src/providers/transaction-response/getDecodedLogs.ts
3495
3582
  var import_abi_coder3 = require("@fuel-ts/abi-coder");
3496
- var import_transactions16 = require("@fuel-ts/transactions");
3583
+ var import_transactions17 = require("@fuel-ts/transactions");
3497
3584
  function getDecodedLogs(receipts, mainAbi, externalAbis = {}) {
3498
3585
  return receipts.reduce((logs, receipt) => {
3499
- if (receipt.type === import_transactions16.ReceiptType.LogData || receipt.type === import_transactions16.ReceiptType.Log) {
3586
+ if (receipt.type === import_transactions17.ReceiptType.LogData || receipt.type === import_transactions17.ReceiptType.Log) {
3500
3587
  const interfaceToUse = new import_abi_coder3.Interface(externalAbis[receipt.id] || mainAbi);
3501
- const data = receipt.type === import_transactions16.ReceiptType.Log ? new import_abi_coder3.BigNumberCoder("u64").encode(receipt.val0) : receipt.data;
3588
+ const data = receipt.type === import_transactions17.ReceiptType.Log ? new import_abi_coder3.BigNumberCoder("u64").encode(receipt.val0) : receipt.data;
3502
3589
  const [decodedLog] = interfaceToUse.decodeLog(data, receipt.val1.toNumber());
3503
3590
  logs.push(decodedLog);
3504
3591
  }
@@ -3513,7 +3600,7 @@ var TransactionResponse = class {
3513
3600
  /** Current provider */
3514
3601
  provider;
3515
3602
  /** Gas used on the transaction */
3516
- gasUsed = (0, import_math14.bn)(0);
3603
+ gasUsed = (0, import_math15.bn)(0);
3517
3604
  /** The graphql Transaction with receipts object. */
3518
3605
  gqlTransaction;
3519
3606
  abis;
@@ -3571,8 +3658,8 @@ var TransactionResponse = class {
3571
3658
  * @returns The decoded transaction.
3572
3659
  */
3573
3660
  decodeTransaction(transactionWithReceipts) {
3574
- return new import_transactions17.TransactionCoder().decode(
3575
- (0, import_utils21.arrayify)(transactionWithReceipts.rawPayload),
3661
+ return new import_transactions18.TransactionCoder().decode(
3662
+ (0, import_utils20.arrayify)(transactionWithReceipts.rawPayload),
3576
3663
  0
3577
3664
  )?.[0];
3578
3665
  }
@@ -3591,20 +3678,27 @@ var TransactionResponse = class {
3591
3678
  const decodedTransaction = this.decodeTransaction(
3592
3679
  transaction
3593
3680
  );
3594
- const receipts = transaction.receipts?.map(processGqlReceipt) || [];
3595
- const { gasPerByte, gasPriceFactor, gasCosts } = this.provider.getGasConfig();
3681
+ let txReceipts = [];
3682
+ if (transaction?.status && "receipts" in transaction.status) {
3683
+ txReceipts = transaction.status.receipts;
3684
+ }
3685
+ const receipts = txReceipts.map(processGqlReceipt) || [];
3686
+ const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = this.provider.getGasConfig();
3687
+ const gasPrice = await this.provider.getLatestGasPrice();
3596
3688
  const maxInputs = this.provider.getChain().consensusParameters.maxInputs;
3597
3689
  const transactionSummary = assembleTransactionSummary({
3598
3690
  id: this.id,
3599
3691
  receipts,
3600
3692
  transaction: decodedTransaction,
3601
- transactionBytes: (0, import_utils21.arrayify)(transaction.rawPayload),
3693
+ transactionBytes: (0, import_utils20.arrayify)(transaction.rawPayload),
3602
3694
  gqlTransactionStatus: transaction.status,
3603
3695
  gasPerByte,
3604
3696
  gasPriceFactor,
3605
3697
  abiMap: contractsAbiMap,
3606
3698
  maxInputs,
3607
- gasCosts
3699
+ gasCosts,
3700
+ maxGasPerTx,
3701
+ gasPrice
3608
3702
  });
3609
3703
  return transactionSummary;
3610
3704
  }
@@ -3731,30 +3825,29 @@ var processGqlChain = (chain) => {
3731
3825
  const { contractParams, feeParams, predicateParams, scriptParams, txParams, gasCosts } = consensusParameters;
3732
3826
  return {
3733
3827
  name,
3734
- baseChainHeight: (0, import_math15.bn)(daHeight),
3828
+ baseChainHeight: (0, import_math16.bn)(daHeight),
3735
3829
  consensusParameters: {
3736
- contractMaxSize: (0, import_math15.bn)(contractParams.contractMaxSize),
3737
- maxInputs: (0, import_math15.bn)(txParams.maxInputs),
3738
- maxOutputs: (0, import_math15.bn)(txParams.maxOutputs),
3739
- maxWitnesses: (0, import_math15.bn)(txParams.maxWitnesses),
3740
- maxGasPerTx: (0, import_math15.bn)(txParams.maxGasPerTx),
3741
- maxScriptLength: (0, import_math15.bn)(scriptParams.maxScriptLength),
3742
- maxScriptDataLength: (0, import_math15.bn)(scriptParams.maxScriptDataLength),
3743
- maxStorageSlots: (0, import_math15.bn)(contractParams.maxStorageSlots),
3744
- maxPredicateLength: (0, import_math15.bn)(predicateParams.maxPredicateLength),
3745
- maxPredicateDataLength: (0, import_math15.bn)(predicateParams.maxPredicateDataLength),
3746
- maxGasPerPredicate: (0, import_math15.bn)(predicateParams.maxGasPerPredicate),
3747
- gasPriceFactor: (0, import_math15.bn)(feeParams.gasPriceFactor),
3748
- gasPerByte: (0, import_math15.bn)(feeParams.gasPerByte),
3749
- maxMessageDataLength: (0, import_math15.bn)(predicateParams.maxMessageDataLength),
3750
- chainId: (0, import_math15.bn)(consensusParameters.chainId),
3751
- baseAssetId: consensusParameters.baseAssetId,
3830
+ contractMaxSize: (0, import_math16.bn)(contractParams.contractMaxSize),
3831
+ maxInputs: (0, import_math16.bn)(txParams.maxInputs),
3832
+ maxOutputs: (0, import_math16.bn)(txParams.maxOutputs),
3833
+ maxWitnesses: (0, import_math16.bn)(txParams.maxWitnesses),
3834
+ maxGasPerTx: (0, import_math16.bn)(txParams.maxGasPerTx),
3835
+ maxScriptLength: (0, import_math16.bn)(scriptParams.maxScriptLength),
3836
+ maxScriptDataLength: (0, import_math16.bn)(scriptParams.maxScriptDataLength),
3837
+ maxStorageSlots: (0, import_math16.bn)(contractParams.maxStorageSlots),
3838
+ maxPredicateLength: (0, import_math16.bn)(predicateParams.maxPredicateLength),
3839
+ maxPredicateDataLength: (0, import_math16.bn)(predicateParams.maxPredicateDataLength),
3840
+ maxGasPerPredicate: (0, import_math16.bn)(predicateParams.maxGasPerPredicate),
3841
+ gasPriceFactor: (0, import_math16.bn)(feeParams.gasPriceFactor),
3842
+ gasPerByte: (0, import_math16.bn)(feeParams.gasPerByte),
3843
+ maxMessageDataLength: (0, import_math16.bn)(predicateParams.maxMessageDataLength),
3844
+ chainId: (0, import_math16.bn)(consensusParameters.chainId),
3752
3845
  gasCosts
3753
3846
  },
3754
3847
  gasCosts,
3755
3848
  latestBlock: {
3756
3849
  id: latestBlock.id,
3757
- height: (0, import_math15.bn)(latestBlock.header.height),
3850
+ height: (0, import_math16.bn)(latestBlock.height),
3758
3851
  time: latestBlock.header.time,
3759
3852
  transactions: latestBlock.transactions.map((i) => ({
3760
3853
  id: i.id
@@ -3848,10 +3941,8 @@ var _Provider = class {
3848
3941
  * Returns some helpful parameters related to gas fees.
3849
3942
  */
3850
3943
  getGasConfig() {
3851
- const { minGasPrice } = this.getNode();
3852
3944
  const { maxGasPerTx, maxGasPerPredicate, gasPriceFactor, gasPerByte, gasCosts } = this.getChain().consensusParameters;
3853
3945
  return {
3854
- minGasPrice,
3855
3946
  maxGasPerTx,
3856
3947
  maxGasPerPredicate,
3857
3948
  gasPriceFactor,
@@ -3939,7 +4030,7 @@ var _Provider = class {
3939
4030
  name,
3940
4031
  consensusParameters: { chainId }
3941
4032
  } = await this.getChain();
3942
- const network = new import_ethers.Network(name, chainId.toNumber());
4033
+ const network = new import_ethers2.Network(name, chainId.toNumber());
3943
4034
  return Promise.resolve(network);
3944
4035
  }
3945
4036
  /**
@@ -3949,7 +4040,7 @@ var _Provider = class {
3949
4040
  */
3950
4041
  async getBlockNumber() {
3951
4042
  const { chain } = await this.operations.getChain();
3952
- return (0, import_math15.bn)(chain.latestBlock.header.height, 10);
4043
+ return (0, import_math16.bn)(chain.latestBlock.height, 10);
3953
4044
  }
3954
4045
  /**
3955
4046
  * Returns the chain information.
@@ -3959,13 +4050,11 @@ var _Provider = class {
3959
4050
  async fetchNode() {
3960
4051
  const { nodeInfo } = await this.operations.getNodeInfo();
3961
4052
  const processedNodeInfo = {
3962
- maxDepth: (0, import_math15.bn)(nodeInfo.maxDepth),
3963
- maxTx: (0, import_math15.bn)(nodeInfo.maxTx),
3964
- minGasPrice: (0, import_math15.bn)(nodeInfo.minGasPrice),
4053
+ maxDepth: (0, import_math16.bn)(nodeInfo.maxDepth),
4054
+ maxTx: (0, import_math16.bn)(nodeInfo.maxTx),
3965
4055
  nodeVersion: nodeInfo.nodeVersion,
3966
4056
  utxoValidation: nodeInfo.utxoValidation,
3967
- vmBacktrace: nodeInfo.vmBacktrace,
3968
- peers: nodeInfo.peers
4057
+ vmBacktrace: nodeInfo.vmBacktrace
3969
4058
  };
3970
4059
  _Provider.nodeInfoCache[this.url] = processedNodeInfo;
3971
4060
  return processedNodeInfo;
@@ -3991,17 +4080,6 @@ var _Provider = class {
3991
4080
  } = this.getChain();
3992
4081
  return chainId.toNumber();
3993
4082
  }
3994
- /**
3995
- * Returns the base asset ID
3996
- *
3997
- * @returns A promise that resolves to the base asset ID
3998
- */
3999
- getBaseAssetId() {
4000
- const {
4001
- consensusParameters: { baseAssetId }
4002
- } = this.getChain();
4003
- return baseAssetId;
4004
- }
4005
4083
  /**
4006
4084
  * Submits a transaction to the chain to be executed.
4007
4085
  *
@@ -4018,9 +4096,9 @@ var _Provider = class {
4018
4096
  if (estimateTxDependencies) {
4019
4097
  await this.estimateTxDependencies(transactionRequest);
4020
4098
  }
4021
- const encodedTransaction = (0, import_utils23.hexlify)(transactionRequest.toTransactionBytes());
4099
+ const encodedTransaction = (0, import_utils22.hexlify)(transactionRequest.toTransactionBytes());
4022
4100
  let abis;
4023
- if (transactionRequest.type === import_transactions18.TransactionType.Script) {
4101
+ if (transactionRequest.type === import_transactions19.TransactionType.Script) {
4024
4102
  abis = transactionRequest.abis;
4025
4103
  }
4026
4104
  if (awaitExecution) {
@@ -4061,15 +4139,14 @@ var _Provider = class {
4061
4139
  if (estimateTxDependencies) {
4062
4140
  return this.estimateTxDependencies(transactionRequest);
4063
4141
  }
4064
- const encodedTransaction = (0, import_utils23.hexlify)(transactionRequest.toTransactionBytes());
4065
- const { dryRun: gqlReceipts } = await this.operations.dryRun({
4066
- encodedTransaction,
4142
+ const encodedTransaction = (0, import_utils22.hexlify)(transactionRequest.toTransactionBytes());
4143
+ const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4144
+ encodedTransactions: encodedTransaction,
4067
4145
  utxoValidation: utxoValidation || false
4068
4146
  });
4069
- const receipts = gqlReceipts.map(processGqlReceipt);
4070
- return {
4071
- receipts
4072
- };
4147
+ const [{ receipts: rawReceipts, status }] = dryRunStatuses;
4148
+ const receipts = rawReceipts.map(processGqlReceipt);
4149
+ return { receipts, dryrunStatus: status };
4073
4150
  }
4074
4151
  /**
4075
4152
  * Verifies whether enough gas is available to complete transaction.
@@ -4080,13 +4157,13 @@ var _Provider = class {
4080
4157
  async estimatePredicates(transactionRequest) {
4081
4158
  const shouldEstimatePredicates = Boolean(
4082
4159
  transactionRequest.inputs.find(
4083
- (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()
4160
+ (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()
4084
4161
  )
4085
4162
  );
4086
4163
  if (!shouldEstimatePredicates) {
4087
4164
  return transactionRequest;
4088
4165
  }
4089
- const encodedTransaction = (0, import_utils23.hexlify)(transactionRequest.toTransactionBytes());
4166
+ const encodedTransaction = (0, import_utils22.hexlify)(transactionRequest.toTransactionBytes());
4090
4167
  const response = await this.operations.estimatePredicates({
4091
4168
  encodedTransaction
4092
4169
  });
@@ -4095,7 +4172,7 @@ var _Provider = class {
4095
4172
  } = response;
4096
4173
  if (inputs) {
4097
4174
  inputs.forEach((input, index) => {
4098
- if ("predicateGasUsed" in input && (0, import_math15.bn)(input.predicateGasUsed).gt(0)) {
4175
+ if ("predicateGasUsed" in input && (0, import_math16.bn)(input.predicateGasUsed).gt(0)) {
4099
4176
  transactionRequest.inputs[index].predicateGasUsed = input.predicateGasUsed;
4100
4177
  }
4101
4178
  });
@@ -4108,31 +4185,31 @@ var _Provider = class {
4108
4185
  * If there are missing variable outputs,
4109
4186
  * `addVariableOutputs` is called on the transaction.
4110
4187
  *
4111
- * @privateRemarks
4112
- * TODO: Investigate support for missing contract IDs
4113
- * TODO: Add support for missing output messages
4114
4188
  *
4115
4189
  * @param transactionRequest - The transaction request object.
4116
4190
  * @returns A promise.
4117
4191
  */
4118
4192
  async estimateTxDependencies(transactionRequest) {
4119
- if (transactionRequest.type === import_transactions18.TransactionType.Create) {
4193
+ if (transactionRequest.type === import_transactions19.TransactionType.Create) {
4120
4194
  return {
4121
4195
  receipts: [],
4122
4196
  outputVariables: 0,
4123
4197
  missingContractIds: []
4124
4198
  };
4125
4199
  }
4126
- await this.estimatePredicates(transactionRequest);
4127
4200
  let receipts = [];
4128
4201
  const missingContractIds = [];
4129
4202
  let outputVariables = 0;
4203
+ let dryrunStatus;
4130
4204
  for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
4131
- const { dryRun: gqlReceipts } = await this.operations.dryRun({
4132
- encodedTransaction: (0, import_utils23.hexlify)(transactionRequest.toTransactionBytes()),
4205
+ const {
4206
+ dryRun: [{ receipts: rawReceipts, status }]
4207
+ } = await this.operations.dryRun({
4208
+ encodedTransactions: [(0, import_utils22.hexlify)(transactionRequest.toTransactionBytes())],
4133
4209
  utxoValidation: false
4134
4210
  });
4135
- receipts = gqlReceipts.map(processGqlReceipt);
4211
+ receipts = rawReceipts.map(processGqlReceipt);
4212
+ dryrunStatus = status;
4136
4213
  const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(receipts);
4137
4214
  const hasMissingOutputs = missingOutputVariables.length !== 0 || missingOutputContractIds.length !== 0;
4138
4215
  if (hasMissingOutputs) {
@@ -4142,6 +4219,11 @@ var _Provider = class {
4142
4219
  transactionRequest.addContractInputAndOutput(import_address3.Address.fromString(contractId));
4143
4220
  missingContractIds.push(contractId);
4144
4221
  });
4222
+ const { maxFee } = await this.estimateTxGasAndFee({
4223
+ transactionRequest,
4224
+ optimizeGas: false
4225
+ });
4226
+ transactionRequest.maxFee = maxFee;
4145
4227
  } else {
4146
4228
  break;
4147
4229
  }
@@ -4149,7 +4231,133 @@ var _Provider = class {
4149
4231
  return {
4150
4232
  receipts,
4151
4233
  outputVariables,
4152
- missingContractIds
4234
+ missingContractIds,
4235
+ dryrunStatus
4236
+ };
4237
+ }
4238
+ /**
4239
+ * Dry runs multiple transactions and checks for missing dependencies in batches.
4240
+ *
4241
+ * Transactions are dry run in batches. After each dry run, transactions requiring
4242
+ * further modifications are identified. The method iteratively updates these transactions
4243
+ * and performs subsequent dry runs until all dependencies for each transaction are satisfied.
4244
+ *
4245
+ * @param transactionRequests - Array of transaction request objects.
4246
+ * @returns A promise that resolves to an array of results for each transaction.
4247
+ */
4248
+ async estimateMultipleTxDependencies(transactionRequests) {
4249
+ const results = transactionRequests.map(() => ({
4250
+ receipts: [],
4251
+ outputVariables: 0,
4252
+ missingContractIds: [],
4253
+ dryrunStatus: void 0
4254
+ }));
4255
+ const allRequests = (0, import_ramda3.clone)(transactionRequests);
4256
+ const serializedTransactionsMap = /* @__PURE__ */ new Map();
4257
+ allRequests.forEach((req, index) => {
4258
+ if (req.type === import_transactions19.TransactionType.Script) {
4259
+ serializedTransactionsMap.set(index, (0, import_utils22.hexlify)(req.toTransactionBytes()));
4260
+ }
4261
+ });
4262
+ let transactionsToProcess = Array.from(serializedTransactionsMap.keys());
4263
+ let attempt = 0;
4264
+ while (transactionsToProcess.length > 0 && attempt < MAX_RETRIES) {
4265
+ const encodedTransactions = transactionsToProcess.map(
4266
+ (index) => serializedTransactionsMap.get(index)
4267
+ );
4268
+ const dryRunResults = await this.operations.dryRun({
4269
+ encodedTransactions,
4270
+ utxoValidation: false
4271
+ });
4272
+ const nextRoundTransactions = [];
4273
+ for (let i = 0; i < dryRunResults.dryRun.length; i++) {
4274
+ const currentResultIndex = transactionsToProcess[i];
4275
+ const { receipts: rawReceipts, status } = dryRunResults.dryRun[i];
4276
+ results[currentResultIndex].receipts = rawReceipts.map(processGqlReceipt);
4277
+ results[currentResultIndex].dryrunStatus = status;
4278
+ const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(
4279
+ results[currentResultIndex].receipts
4280
+ );
4281
+ const hasMissingOutputs = missingOutputVariables.length > 0 || missingOutputContractIds.length > 0;
4282
+ const requestToProcess = allRequests[currentResultIndex];
4283
+ if (hasMissingOutputs && requestToProcess?.type === import_transactions19.TransactionType.Script) {
4284
+ results[currentResultIndex].outputVariables += missingOutputVariables.length;
4285
+ requestToProcess.addVariableOutputs(missingOutputVariables.length);
4286
+ missingOutputContractIds.forEach(({ contractId }) => {
4287
+ requestToProcess.addContractInputAndOutput(import_address3.Address.fromString(contractId));
4288
+ results[currentResultIndex].missingContractIds.push(contractId);
4289
+ });
4290
+ const { maxFee } = await this.estimateTxGasAndFee({
4291
+ transactionRequest: requestToProcess,
4292
+ optimizeGas: false
4293
+ });
4294
+ requestToProcess.maxFee = maxFee;
4295
+ serializedTransactionsMap.set(
4296
+ currentResultIndex,
4297
+ (0, import_utils22.hexlify)(requestToProcess.toTransactionBytes())
4298
+ );
4299
+ nextRoundTransactions.push(currentResultIndex);
4300
+ allRequests[currentResultIndex] = requestToProcess;
4301
+ }
4302
+ }
4303
+ transactionsToProcess = nextRoundTransactions;
4304
+ attempt += 1;
4305
+ }
4306
+ return results;
4307
+ }
4308
+ async dryRunMultipleTransactions(transactionRequests, { utxoValidation, estimateTxDependencies = true } = {}) {
4309
+ if (estimateTxDependencies) {
4310
+ return this.estimateMultipleTxDependencies(transactionRequests);
4311
+ }
4312
+ const encodedTransactions = transactionRequests.map((tx) => (0, import_utils22.hexlify)(tx.toTransactionBytes()));
4313
+ const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4314
+ encodedTransactions,
4315
+ utxoValidation: utxoValidation || false
4316
+ });
4317
+ const results = dryRunStatuses.map(({ receipts: rawReceipts, status }) => {
4318
+ const receipts = rawReceipts.map(processGqlReceipt);
4319
+ return { receipts, dryrunStatus: status };
4320
+ });
4321
+ return results;
4322
+ }
4323
+ async estimateTxGasAndFee(params) {
4324
+ const { transactionRequest, optimizeGas = true } = params;
4325
+ let { gasPrice } = params;
4326
+ const chainInfo = this.getChain();
4327
+ const { gasPriceFactor } = this.getGasConfig();
4328
+ const minGas = transactionRequest.calculateMinGas(chainInfo);
4329
+ if (!gasPrice) {
4330
+ gasPrice = await this.estimateGasPrice(10);
4331
+ }
4332
+ const minFee = calculateGasFee({
4333
+ gasPrice: (0, import_math16.bn)(gasPrice),
4334
+ gas: minGas,
4335
+ priceFactor: gasPriceFactor,
4336
+ tip: transactionRequest.tip
4337
+ }).add(1);
4338
+ let gasLimit = (0, import_math16.bn)(0);
4339
+ if (transactionRequest.type === import_transactions19.TransactionType.Script) {
4340
+ gasLimit = transactionRequest.gasLimit;
4341
+ if (!optimizeGas) {
4342
+ transactionRequest.gasLimit = minGas;
4343
+ gasLimit = transactionRequest.calculateMaxGas(chainInfo, minGas);
4344
+ transactionRequest.gasLimit = gasLimit;
4345
+ }
4346
+ }
4347
+ const maxGas = transactionRequest.calculateMaxGas(chainInfo, minGas);
4348
+ const maxFee = calculateGasFee({
4349
+ gasPrice: (0, import_math16.bn)(gasPrice),
4350
+ gas: maxGas,
4351
+ priceFactor: gasPriceFactor,
4352
+ tip: transactionRequest.tip
4353
+ }).add(1);
4354
+ return {
4355
+ minGas,
4356
+ minFee,
4357
+ maxGas,
4358
+ maxFee,
4359
+ gasPrice,
4360
+ gasLimit
4153
4361
  };
4154
4362
  }
4155
4363
  /**
@@ -4167,15 +4375,17 @@ var _Provider = class {
4167
4375
  if (estimateTxDependencies) {
4168
4376
  return this.estimateTxDependencies(transactionRequest);
4169
4377
  }
4170
- const encodedTransaction = (0, import_utils23.hexlify)(transactionRequest.toTransactionBytes());
4171
- const { dryRun: gqlReceipts } = await this.operations.dryRun({
4172
- encodedTransaction,
4378
+ const encodedTransactions = [(0, import_utils22.hexlify)(transactionRequest.toTransactionBytes())];
4379
+ const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4380
+ encodedTransactions,
4173
4381
  utxoValidation: true
4174
4382
  });
4175
- const receipts = gqlReceipts.map(processGqlReceipt);
4176
- return {
4177
- receipts
4178
- };
4383
+ const callResult = dryRunStatuses.map((dryRunStatus) => {
4384
+ const { id, receipts, status } = dryRunStatus;
4385
+ const processedReceipts = receipts.map(processGqlReceipt);
4386
+ return { id, receipts: processedReceipts, status };
4387
+ });
4388
+ return { receipts: callResult[0].receipts };
4179
4389
  }
4180
4390
  /**
4181
4391
  * Returns a transaction cost to enable user
@@ -4192,80 +4402,80 @@ var _Provider = class {
4192
4402
  * @param tolerance - The tolerance to add on top of the gasUsed.
4193
4403
  * @returns A promise that resolves to the transaction cost object.
4194
4404
  */
4195
- async getTransactionCost(transactionRequestLike, forwardingQuantities = [], {
4196
- estimateTxDependencies = true,
4197
- estimatePredicates = true,
4198
- resourcesOwner,
4199
- signatureCallback
4200
- } = {}) {
4405
+ async getTransactionCost(transactionRequestLike, { resourcesOwner, signatureCallback, quantitiesToContract = [] } = {}) {
4201
4406
  const txRequestClone = (0, import_ramda3.clone)(transactionRequestify(transactionRequestLike));
4202
- const chainInfo = this.getChain();
4203
- const { gasPriceFactor, minGasPrice, maxGasPerTx } = this.getGasConfig();
4204
- const gasPrice = (0, import_math15.max)(txRequestClone.gasPrice, minGasPrice);
4205
- const isScriptTransaction = txRequestClone.type === import_transactions18.TransactionType.Script;
4407
+ const isScriptTransaction = txRequestClone.type === import_transactions19.TransactionType.Script;
4206
4408
  const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
4207
- const allQuantities = mergeQuantities(coinOutputsQuantities, forwardingQuantities);
4409
+ const allQuantities = mergeQuantities(coinOutputsQuantities, quantitiesToContract);
4208
4410
  txRequestClone.fundWithFakeUtxos(allQuantities, resourcesOwner?.address);
4209
- if (estimatePredicates) {
4210
- if (isScriptTransaction) {
4211
- txRequestClone.gasLimit = (0, import_math15.bn)(0);
4212
- }
4213
- if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
4214
- resourcesOwner.populateTransactionPredicateData(txRequestClone);
4215
- }
4216
- await this.estimatePredicates(txRequestClone);
4411
+ txRequestClone.maxFee = (0, import_math16.bn)(0);
4412
+ if (isScriptTransaction) {
4413
+ txRequestClone.gasLimit = (0, import_math16.bn)(0);
4217
4414
  }
4218
- if (signatureCallback && isScriptTransaction) {
4219
- await signatureCallback(txRequestClone);
4415
+ if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
4416
+ resourcesOwner.populateTransactionPredicateData(txRequestClone);
4220
4417
  }
4221
- const minGas = txRequestClone.calculateMinGas(chainInfo);
4222
- const maxGas = txRequestClone.calculateMaxGas(chainInfo, minGas);
4418
+ const signedRequest = (0, import_ramda3.clone)(txRequestClone);
4419
+ let addedSignatures = 0;
4420
+ if (signatureCallback && isScriptTransaction) {
4421
+ const lengthBefore = signedRequest.witnesses.length;
4422
+ await signatureCallback(signedRequest);
4423
+ addedSignatures = signedRequest.witnesses.length - lengthBefore;
4424
+ }
4425
+ await this.estimatePredicates(signedRequest);
4426
+ let { maxFee, maxGas, minFee, minGas, gasPrice, gasLimit } = await this.estimateTxGasAndFee({
4427
+ transactionRequest: signedRequest,
4428
+ optimizeGas: false
4429
+ });
4430
+ txRequestClone.maxFee = maxFee;
4223
4431
  let receipts = [];
4224
4432
  let missingContractIds = [];
4225
4433
  let outputVariables = 0;
4226
- if (isScriptTransaction && estimateTxDependencies) {
4227
- txRequestClone.gasPrice = (0, import_math15.bn)(0);
4228
- txRequestClone.gasLimit = (0, import_math15.bn)(maxGasPerTx.sub(maxGas).toNumber() * 0.9);
4434
+ let gasUsed = (0, import_math16.bn)(0);
4435
+ txRequestClone.updatePredicateGasUsed(signedRequest.inputs);
4436
+ if (isScriptTransaction) {
4437
+ if (signatureCallback) {
4438
+ await signatureCallback(txRequestClone);
4439
+ }
4440
+ txRequestClone.gasLimit = gasLimit;
4229
4441
  const result = await this.estimateTxDependencies(txRequestClone);
4230
4442
  receipts = result.receipts;
4231
4443
  outputVariables = result.outputVariables;
4232
4444
  missingContractIds = result.missingContractIds;
4445
+ gasUsed = getGasUsedFromReceipts(receipts);
4446
+ txRequestClone.gasLimit = gasUsed;
4447
+ ({ maxFee, maxGas, minFee, minGas, gasPrice } = await this.estimateTxGasAndFee({
4448
+ transactionRequest: txRequestClone,
4449
+ gasPrice
4450
+ }));
4233
4451
  }
4234
- const gasUsed = isScriptTransaction ? getGasUsedFromReceipts(receipts) : minGas;
4235
- const usedFee = calculatePriceWithFactor(
4236
- gasUsed,
4237
- gasPrice,
4238
- gasPriceFactor
4239
- ).normalizeZeroToOne();
4240
- const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
4241
- const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
4242
4452
  return {
4243
4453
  requiredQuantities: allQuantities,
4244
4454
  receipts,
4245
4455
  gasUsed,
4246
- minGasPrice,
4247
4456
  gasPrice,
4248
4457
  minGas,
4249
4458
  maxGas,
4250
- usedFee,
4251
4459
  minFee,
4252
4460
  maxFee,
4253
- estimatedInputs: txRequestClone.inputs,
4254
4461
  outputVariables,
4255
- missingContractIds
4462
+ missingContractIds,
4463
+ addedSignatures,
4464
+ estimatedPredicates: txRequestClone.inputs
4256
4465
  };
4257
4466
  }
4258
- async getResourcesForTransaction(owner, transactionRequestLike, forwardingQuantities = []) {
4467
+ async getResourcesForTransaction(owner, transactionRequestLike, quantitiesToContract = []) {
4259
4468
  const ownerAddress = import_address3.Address.fromAddressOrString(owner);
4260
4469
  const transactionRequest = transactionRequestify((0, import_ramda3.clone)(transactionRequestLike));
4261
- const transactionCost = await this.getTransactionCost(transactionRequest, forwardingQuantities);
4470
+ const transactionCost = await this.getTransactionCost(transactionRequest, {
4471
+ quantitiesToContract
4472
+ });
4262
4473
  transactionRequest.addResources(
4263
4474
  await this.getResourcesToSpend(ownerAddress, transactionCost.requiredQuantities)
4264
4475
  );
4265
- const { requiredQuantities, ...txCost } = await this.getTransactionCost(
4266
- transactionRequest,
4267
- forwardingQuantities
4268
- );
4476
+ const { requiredQuantities, ...txCost } = await this.getTransactionCost(transactionRequest, {
4477
+ quantitiesToContract
4478
+ });
4269
4479
  const resources = await this.getResourcesToSpend(ownerAddress, requiredQuantities);
4270
4480
  return {
4271
4481
  resources,
@@ -4281,17 +4491,16 @@ var _Provider = class {
4281
4491
  const result = await this.operations.getCoins({
4282
4492
  first: 10,
4283
4493
  ...paginationArgs,
4284
- filter: { owner: ownerAddress.toB256(), assetId: assetId && (0, import_utils23.hexlify)(assetId) }
4494
+ filter: { owner: ownerAddress.toB256(), assetId: assetId && (0, import_utils22.hexlify)(assetId) }
4285
4495
  });
4286
4496
  const coins = result.coins.edges.map((edge) => edge.node);
4287
4497
  return coins.map((coin) => ({
4288
4498
  id: coin.utxoId,
4289
4499
  assetId: coin.assetId,
4290
- amount: (0, import_math15.bn)(coin.amount),
4500
+ amount: (0, import_math16.bn)(coin.amount),
4291
4501
  owner: import_address3.Address.fromAddressOrString(coin.owner),
4292
- maturity: (0, import_math15.bn)(coin.maturity).toNumber(),
4293
- blockCreated: (0, import_math15.bn)(coin.blockCreated),
4294
- txCreatedIdx: (0, import_math15.bn)(coin.txCreatedIdx)
4502
+ blockCreated: (0, import_math16.bn)(coin.blockCreated),
4503
+ txCreatedIdx: (0, import_math16.bn)(coin.txCreatedIdx)
4295
4504
  }));
4296
4505
  }
4297
4506
  /**
@@ -4305,19 +4514,19 @@ var _Provider = class {
4305
4514
  async getResourcesToSpend(owner, quantities, excludedIds) {
4306
4515
  const ownerAddress = import_address3.Address.fromAddressOrString(owner);
4307
4516
  const excludeInput = {
4308
- messages: excludedIds?.messages?.map((nonce) => (0, import_utils23.hexlify)(nonce)) || [],
4309
- utxos: excludedIds?.utxos?.map((id) => (0, import_utils23.hexlify)(id)) || []
4517
+ messages: excludedIds?.messages?.map((nonce) => (0, import_utils22.hexlify)(nonce)) || [],
4518
+ utxos: excludedIds?.utxos?.map((id) => (0, import_utils22.hexlify)(id)) || []
4310
4519
  };
4311
4520
  if (this.cache) {
4312
4521
  const uniqueUtxos = new Set(
4313
- excludeInput.utxos.concat(this.cache?.getActiveData().map((id) => (0, import_utils23.hexlify)(id)))
4522
+ excludeInput.utxos.concat(this.cache?.getActiveData().map((id) => (0, import_utils22.hexlify)(id)))
4314
4523
  );
4315
4524
  excludeInput.utxos = Array.from(uniqueUtxos);
4316
4525
  }
4317
4526
  const coinsQuery = {
4318
4527
  owner: ownerAddress.toB256(),
4319
4528
  queryPerAsset: quantities.map(coinQuantityfy).map(({ assetId, amount, max: maxPerAsset }) => ({
4320
- assetId: (0, import_utils23.hexlify)(assetId),
4529
+ assetId: (0, import_utils22.hexlify)(assetId),
4321
4530
  amount: amount.toString(10),
4322
4531
  max: maxPerAsset ? maxPerAsset.toString(10) : void 0
4323
4532
  })),
@@ -4328,9 +4537,9 @@ var _Provider = class {
4328
4537
  switch (coin.__typename) {
4329
4538
  case "MessageCoin":
4330
4539
  return {
4331
- amount: (0, import_math15.bn)(coin.amount),
4540
+ amount: (0, import_math16.bn)(coin.amount),
4332
4541
  assetId: coin.assetId,
4333
- daHeight: (0, import_math15.bn)(coin.daHeight),
4542
+ daHeight: (0, import_math16.bn)(coin.daHeight),
4334
4543
  sender: import_address3.Address.fromAddressOrString(coin.sender),
4335
4544
  recipient: import_address3.Address.fromAddressOrString(coin.recipient),
4336
4545
  nonce: coin.nonce
@@ -4338,12 +4547,11 @@ var _Provider = class {
4338
4547
  case "Coin":
4339
4548
  return {
4340
4549
  id: coin.utxoId,
4341
- amount: (0, import_math15.bn)(coin.amount),
4550
+ amount: (0, import_math16.bn)(coin.amount),
4342
4551
  assetId: coin.assetId,
4343
4552
  owner: import_address3.Address.fromAddressOrString(coin.owner),
4344
- maturity: (0, import_math15.bn)(coin.maturity).toNumber(),
4345
- blockCreated: (0, import_math15.bn)(coin.blockCreated),
4346
- txCreatedIdx: (0, import_math15.bn)(coin.txCreatedIdx)
4553
+ blockCreated: (0, import_math16.bn)(coin.blockCreated),
4554
+ txCreatedIdx: (0, import_math16.bn)(coin.txCreatedIdx)
4347
4555
  };
4348
4556
  default:
4349
4557
  return null;
@@ -4360,13 +4568,13 @@ var _Provider = class {
4360
4568
  async getBlock(idOrHeight) {
4361
4569
  let variables;
4362
4570
  if (typeof idOrHeight === "number") {
4363
- variables = { height: (0, import_math15.bn)(idOrHeight).toString(10) };
4571
+ variables = { height: (0, import_math16.bn)(idOrHeight).toString(10) };
4364
4572
  } else if (idOrHeight === "latest") {
4365
4573
  variables = { height: (await this.getBlockNumber()).toString(10) };
4366
4574
  } else if (idOrHeight.length === 66) {
4367
4575
  variables = { blockId: idOrHeight };
4368
4576
  } else {
4369
- variables = { blockId: (0, import_math15.bn)(idOrHeight).toString(10) };
4577
+ variables = { blockId: (0, import_math16.bn)(idOrHeight).toString(10) };
4370
4578
  }
4371
4579
  const { block } = await this.operations.getBlock(variables);
4372
4580
  if (!block) {
@@ -4374,7 +4582,7 @@ var _Provider = class {
4374
4582
  }
4375
4583
  return {
4376
4584
  id: block.id,
4377
- height: (0, import_math15.bn)(block.header.height),
4585
+ height: (0, import_math16.bn)(block.height),
4378
4586
  time: block.header.time,
4379
4587
  transactionIds: block.transactions.map((tx) => tx.id)
4380
4588
  };
@@ -4389,7 +4597,7 @@ var _Provider = class {
4389
4597
  const { blocks: fetchedData } = await this.operations.getBlocks(params);
4390
4598
  const blocks = fetchedData.edges.map(({ node: block }) => ({
4391
4599
  id: block.id,
4392
- height: (0, import_math15.bn)(block.header.height),
4600
+ height: (0, import_math16.bn)(block.height),
4393
4601
  time: block.header.time,
4394
4602
  transactionIds: block.transactions.map((tx) => tx.id)
4395
4603
  }));
@@ -4404,7 +4612,7 @@ var _Provider = class {
4404
4612
  async getBlockWithTransactions(idOrHeight) {
4405
4613
  let variables;
4406
4614
  if (typeof idOrHeight === "number") {
4407
- variables = { blockHeight: (0, import_math15.bn)(idOrHeight).toString(10) };
4615
+ variables = { blockHeight: (0, import_math16.bn)(idOrHeight).toString(10) };
4408
4616
  } else if (idOrHeight === "latest") {
4409
4617
  variables = { blockHeight: (await this.getBlockNumber()).toString() };
4410
4618
  } else {
@@ -4416,11 +4624,11 @@ var _Provider = class {
4416
4624
  }
4417
4625
  return {
4418
4626
  id: block.id,
4419
- height: (0, import_math15.bn)(block.header.height, 10),
4627
+ height: (0, import_math16.bn)(block.height, 10),
4420
4628
  time: block.header.time,
4421
4629
  transactionIds: block.transactions.map((tx) => tx.id),
4422
4630
  transactions: block.transactions.map(
4423
- (tx) => new import_transactions18.TransactionCoder().decode((0, import_utils23.arrayify)(tx.rawPayload), 0)?.[0]
4631
+ (tx) => new import_transactions19.TransactionCoder().decode((0, import_utils22.arrayify)(tx.rawPayload), 0)?.[0]
4424
4632
  )
4425
4633
  };
4426
4634
  }
@@ -4435,8 +4643,8 @@ var _Provider = class {
4435
4643
  if (!transaction) {
4436
4644
  return null;
4437
4645
  }
4438
- return new import_transactions18.TransactionCoder().decode(
4439
- (0, import_utils23.arrayify)(transaction.rawPayload),
4646
+ return new import_transactions19.TransactionCoder().decode(
4647
+ (0, import_utils22.arrayify)(transaction.rawPayload),
4440
4648
  0
4441
4649
  )?.[0];
4442
4650
  }
@@ -4463,9 +4671,9 @@ var _Provider = class {
4463
4671
  async getContractBalance(contractId, assetId) {
4464
4672
  const { contractBalance } = await this.operations.getContractBalance({
4465
4673
  contract: import_address3.Address.fromAddressOrString(contractId).toB256(),
4466
- asset: (0, import_utils23.hexlify)(assetId)
4674
+ asset: (0, import_utils22.hexlify)(assetId)
4467
4675
  });
4468
- return (0, import_math15.bn)(contractBalance.amount, 10);
4676
+ return (0, import_math16.bn)(contractBalance.amount, 10);
4469
4677
  }
4470
4678
  /**
4471
4679
  * Returns the balance for the given owner for the given asset ID.
@@ -4477,9 +4685,9 @@ var _Provider = class {
4477
4685
  async getBalance(owner, assetId) {
4478
4686
  const { balance } = await this.operations.getBalance({
4479
4687
  owner: import_address3.Address.fromAddressOrString(owner).toB256(),
4480
- assetId: (0, import_utils23.hexlify)(assetId)
4688
+ assetId: (0, import_utils22.hexlify)(assetId)
4481
4689
  });
4482
- return (0, import_math15.bn)(balance.amount, 10);
4690
+ return (0, import_math16.bn)(balance.amount, 10);
4483
4691
  }
4484
4692
  /**
4485
4693
  * Returns balances for the given owner.
@@ -4497,7 +4705,7 @@ var _Provider = class {
4497
4705
  const balances = result.balances.edges.map((edge) => edge.node);
4498
4706
  return balances.map((balance) => ({
4499
4707
  assetId: balance.assetId,
4500
- amount: (0, import_math15.bn)(balance.amount)
4708
+ amount: (0, import_math16.bn)(balance.amount)
4501
4709
  }));
4502
4710
  }
4503
4711
  /**
@@ -4515,19 +4723,19 @@ var _Provider = class {
4515
4723
  });
4516
4724
  const messages = result.messages.edges.map((edge) => edge.node);
4517
4725
  return messages.map((message) => ({
4518
- messageId: import_transactions18.InputMessageCoder.getMessageId({
4726
+ messageId: import_transactions19.InputMessageCoder.getMessageId({
4519
4727
  sender: message.sender,
4520
4728
  recipient: message.recipient,
4521
4729
  nonce: message.nonce,
4522
- amount: (0, import_math15.bn)(message.amount),
4730
+ amount: (0, import_math16.bn)(message.amount),
4523
4731
  data: message.data
4524
4732
  }),
4525
4733
  sender: import_address3.Address.fromAddressOrString(message.sender),
4526
4734
  recipient: import_address3.Address.fromAddressOrString(message.recipient),
4527
4735
  nonce: message.nonce,
4528
- amount: (0, import_math15.bn)(message.amount),
4529
- data: import_transactions18.InputMessageCoder.decodeData(message.data),
4530
- daHeight: (0, import_math15.bn)(message.daHeight)
4736
+ amount: (0, import_math16.bn)(message.amount),
4737
+ data: import_transactions19.InputMessageCoder.decodeData(message.data),
4738
+ daHeight: (0, import_math16.bn)(message.daHeight)
4531
4739
  }));
4532
4740
  }
4533
4741
  /**
@@ -4580,44 +4788,52 @@ var _Provider = class {
4580
4788
  } = result.messageProof;
4581
4789
  return {
4582
4790
  messageProof: {
4583
- proofIndex: (0, import_math15.bn)(messageProof.proofIndex),
4791
+ proofIndex: (0, import_math16.bn)(messageProof.proofIndex),
4584
4792
  proofSet: messageProof.proofSet
4585
4793
  },
4586
4794
  blockProof: {
4587
- proofIndex: (0, import_math15.bn)(blockProof.proofIndex),
4795
+ proofIndex: (0, import_math16.bn)(blockProof.proofIndex),
4588
4796
  proofSet: blockProof.proofSet
4589
4797
  },
4590
4798
  messageBlockHeader: {
4591
4799
  id: messageBlockHeader.id,
4592
- daHeight: (0, import_math15.bn)(messageBlockHeader.daHeight),
4593
- transactionsCount: (0, import_math15.bn)(messageBlockHeader.transactionsCount),
4800
+ daHeight: (0, import_math16.bn)(messageBlockHeader.daHeight),
4801
+ transactionsCount: (0, import_math16.bn)(messageBlockHeader.transactionsCount),
4594
4802
  transactionsRoot: messageBlockHeader.transactionsRoot,
4595
- height: (0, import_math15.bn)(messageBlockHeader.height),
4803
+ height: (0, import_math16.bn)(messageBlockHeader.height),
4596
4804
  prevRoot: messageBlockHeader.prevRoot,
4597
4805
  time: messageBlockHeader.time,
4598
4806
  applicationHash: messageBlockHeader.applicationHash,
4599
- messageReceiptRoot: messageBlockHeader.messageReceiptRoot,
4600
- messageReceiptCount: (0, import_math15.bn)(messageBlockHeader.messageReceiptCount)
4807
+ messageReceiptCount: (0, import_math16.bn)(messageBlockHeader.messageReceiptCount)
4601
4808
  },
4602
4809
  commitBlockHeader: {
4603
4810
  id: commitBlockHeader.id,
4604
- daHeight: (0, import_math15.bn)(commitBlockHeader.daHeight),
4605
- transactionsCount: (0, import_math15.bn)(commitBlockHeader.transactionsCount),
4811
+ daHeight: (0, import_math16.bn)(commitBlockHeader.daHeight),
4812
+ transactionsCount: (0, import_math16.bn)(commitBlockHeader.transactionsCount),
4606
4813
  transactionsRoot: commitBlockHeader.transactionsRoot,
4607
- height: (0, import_math15.bn)(commitBlockHeader.height),
4814
+ height: (0, import_math16.bn)(commitBlockHeader.height),
4608
4815
  prevRoot: commitBlockHeader.prevRoot,
4609
4816
  time: commitBlockHeader.time,
4610
4817
  applicationHash: commitBlockHeader.applicationHash,
4611
- messageReceiptRoot: commitBlockHeader.messageReceiptRoot,
4612
- messageReceiptCount: (0, import_math15.bn)(commitBlockHeader.messageReceiptCount)
4818
+ messageReceiptCount: (0, import_math16.bn)(commitBlockHeader.messageReceiptCount)
4613
4819
  },
4614
4820
  sender: import_address3.Address.fromAddressOrString(sender),
4615
4821
  recipient: import_address3.Address.fromAddressOrString(recipient),
4616
4822
  nonce,
4617
- amount: (0, import_math15.bn)(amount),
4823
+ amount: (0, import_math16.bn)(amount),
4618
4824
  data
4619
4825
  };
4620
4826
  }
4827
+ async getLatestGasPrice() {
4828
+ const { latestGasPrice } = await this.operations.getLatestGasPrice();
4829
+ return (0, import_math16.bn)(latestGasPrice.gasPrice);
4830
+ }
4831
+ async estimateGasPrice(blockHorizon) {
4832
+ const { estimateGasPrice } = await this.operations.estimateGasPrice({
4833
+ blockHorizon: String(blockHorizon)
4834
+ });
4835
+ return (0, import_math16.bn)(estimateGasPrice.gasPrice);
4836
+ }
4621
4837
  /**
4622
4838
  * Returns Message Proof for given transaction id and the message id from MessageOut receipt.
4623
4839
  *
@@ -4637,10 +4853,10 @@ var _Provider = class {
4637
4853
  */
4638
4854
  async produceBlocks(amount, startTime) {
4639
4855
  const { produceBlocks: latestBlockHeight } = await this.operations.produceBlocks({
4640
- blocksToProduce: (0, import_math15.bn)(amount).toString(10),
4641
- startTimestamp: startTime ? import_utils23.DateTime.fromUnixMilliseconds(startTime).toTai64() : void 0
4856
+ blocksToProduce: (0, import_math16.bn)(amount).toString(10),
4857
+ startTimestamp: startTime ? import_utils22.DateTime.fromUnixMilliseconds(startTime).toTai64() : void 0
4642
4858
  });
4643
- return (0, import_math15.bn)(latestBlockHeight);
4859
+ return (0, import_math16.bn)(latestBlockHeight);
4644
4860
  }
4645
4861
  // eslint-disable-next-line @typescript-eslint/require-await
4646
4862
  async getTransactionResponse(transactionId) {
@@ -4654,7 +4870,7 @@ cacheInputs_fn = function(inputs) {
4654
4870
  return;
4655
4871
  }
4656
4872
  inputs.forEach((input) => {
4657
- if (input.type === import_transactions18.InputType.Coin) {
4873
+ if (input.type === import_transactions19.InputType.Coin) {
4658
4874
  this.cache?.set(input.id);
4659
4875
  }
4660
4876
  });
@@ -4664,9 +4880,9 @@ __publicField(Provider, "nodeInfoCache", {});
4664
4880
 
4665
4881
  // src/providers/transaction-summary/get-transaction-summary.ts
4666
4882
  var import_errors15 = require("@fuel-ts/errors");
4667
- var import_math16 = require("@fuel-ts/math");
4668
- var import_transactions19 = require("@fuel-ts/transactions");
4669
- var import_utils26 = require("@fuel-ts/utils");
4883
+ var import_math17 = require("@fuel-ts/math");
4884
+ var import_transactions20 = require("@fuel-ts/transactions");
4885
+ var import_utils25 = require("@fuel-ts/utils");
4670
4886
  async function getTransactionSummary(params) {
4671
4887
  const { id, provider, abiMap } = params;
4672
4888
  const { transaction: gqlTransaction } = await provider.operations.getTransactionWithReceipts({
@@ -4678,25 +4894,32 @@ async function getTransactionSummary(params) {
4678
4894
  `Transaction not found for given id: ${id}.`
4679
4895
  );
4680
4896
  }
4681
- const [decodedTransaction] = new import_transactions19.TransactionCoder().decode(
4682
- (0, import_utils26.arrayify)(gqlTransaction.rawPayload),
4897
+ const [decodedTransaction] = new import_transactions20.TransactionCoder().decode(
4898
+ (0, import_utils25.arrayify)(gqlTransaction.rawPayload),
4683
4899
  0
4684
4900
  );
4685
- const receipts = gqlTransaction.receipts?.map(processGqlReceipt) || [];
4901
+ let txReceipts = [];
4902
+ if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
4903
+ txReceipts = gqlTransaction.status.receipts;
4904
+ }
4905
+ const receipts = txReceipts.map(processGqlReceipt);
4686
4906
  const {
4687
- consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
4907
+ consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts, maxGasPerTx }
4688
4908
  } = provider.getChain();
4909
+ const gasPrice = await provider.getLatestGasPrice();
4689
4910
  const transactionInfo = assembleTransactionSummary({
4690
4911
  id: gqlTransaction.id,
4691
4912
  receipts,
4692
4913
  transaction: decodedTransaction,
4693
- transactionBytes: (0, import_utils26.arrayify)(gqlTransaction.rawPayload),
4914
+ transactionBytes: (0, import_utils25.arrayify)(gqlTransaction.rawPayload),
4694
4915
  gqlTransactionStatus: gqlTransaction.status,
4695
- gasPerByte: (0, import_math16.bn)(gasPerByte),
4696
- gasPriceFactor: (0, import_math16.bn)(gasPriceFactor),
4916
+ gasPerByte: (0, import_math17.bn)(gasPerByte),
4917
+ gasPriceFactor: (0, import_math17.bn)(gasPriceFactor),
4697
4918
  abiMap,
4698
4919
  maxInputs,
4699
- gasCosts
4920
+ gasCosts,
4921
+ maxGasPerTx,
4922
+ gasPrice
4700
4923
  });
4701
4924
  return {
4702
4925
  gqlTransaction,
@@ -4706,10 +4929,11 @@ async function getTransactionSummary(params) {
4706
4929
  async function getTransactionSummaryFromRequest(params) {
4707
4930
  const { provider, transactionRequest, abiMap } = params;
4708
4931
  const { receipts } = await provider.call(transactionRequest);
4709
- const { gasPerByte, gasPriceFactor, gasCosts } = provider.getGasConfig();
4932
+ const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = provider.getGasConfig();
4710
4933
  const maxInputs = provider.getChain().consensusParameters.maxInputs;
4711
4934
  const transaction = transactionRequest.toTransaction();
4712
4935
  const transactionBytes = transactionRequest.toTransactionBytes();
4936
+ const gasPrice = await provider.getLatestGasPrice();
4713
4937
  const transactionSummary = assembleTransactionSummary({
4714
4938
  receipts,
4715
4939
  transaction,
@@ -4718,7 +4942,9 @@ async function getTransactionSummaryFromRequest(params) {
4718
4942
  gasPerByte,
4719
4943
  gasPriceFactor,
4720
4944
  maxInputs,
4721
- gasCosts
4945
+ gasCosts,
4946
+ maxGasPerTx,
4947
+ gasPrice
4722
4948
  });
4723
4949
  return transactionSummary;
4724
4950
  }
@@ -4727,24 +4953,31 @@ async function getTransactionsSummaries(params) {
4727
4953
  const { transactionsByOwner } = await provider.operations.getTransactionsByOwner(filters);
4728
4954
  const { edges, pageInfo } = transactionsByOwner;
4729
4955
  const {
4730
- consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
4956
+ consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts, maxGasPerTx }
4731
4957
  } = provider.getChain();
4958
+ const gasPrice = await provider.getLatestGasPrice();
4732
4959
  const transactions = edges.map((edge) => {
4733
4960
  const { node: gqlTransaction } = edge;
4734
- const { id, rawPayload, receipts: gqlReceipts, status } = gqlTransaction;
4735
- const [decodedTransaction] = new import_transactions19.TransactionCoder().decode((0, import_utils26.arrayify)(rawPayload), 0);
4736
- const receipts = gqlReceipts?.map(processGqlReceipt) || [];
4961
+ const { id, rawPayload, status } = gqlTransaction;
4962
+ const [decodedTransaction] = new import_transactions20.TransactionCoder().decode((0, import_utils25.arrayify)(rawPayload), 0);
4963
+ let txReceipts = [];
4964
+ if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
4965
+ txReceipts = gqlTransaction.status.receipts;
4966
+ }
4967
+ const receipts = txReceipts.map(processGqlReceipt);
4737
4968
  const transactionSummary = assembleTransactionSummary({
4738
4969
  id,
4739
4970
  receipts,
4740
4971
  transaction: decodedTransaction,
4741
- transactionBytes: (0, import_utils26.arrayify)(rawPayload),
4972
+ transactionBytes: (0, import_utils25.arrayify)(rawPayload),
4742
4973
  gqlTransactionStatus: status,
4743
4974
  abiMap,
4744
4975
  gasPerByte,
4745
4976
  gasPriceFactor,
4746
4977
  maxInputs,
4747
- gasCosts
4978
+ gasCosts,
4979
+ maxGasPerTx,
4980
+ gasPrice
4748
4981
  });
4749
4982
  const output = {
4750
4983
  gqlTransaction,
@@ -4881,17 +5114,17 @@ var assets = [
4881
5114
 
4882
5115
  // src/utils/formatTransferToContractScriptData.ts
4883
5116
  var import_abi_coder4 = require("@fuel-ts/abi-coder");
4884
- var import_math17 = require("@fuel-ts/math");
4885
- var import_utils27 = require("@fuel-ts/utils");
5117
+ var import_math18 = require("@fuel-ts/math");
5118
+ var import_utils26 = require("@fuel-ts/utils");
4886
5119
  var asm = __toESM(require("@fuels/vm-asm"));
4887
5120
  var formatTransferToContractScriptData = (params) => {
4888
5121
  const { assetId, amountToTransfer, hexlifiedContractId } = params;
4889
5122
  const numberCoder = new import_abi_coder4.BigNumberCoder("u64");
4890
- const encoded = numberCoder.encode(new import_math17.BN(amountToTransfer).toNumber());
5123
+ const encoded = numberCoder.encode(new import_math18.BN(amountToTransfer).toNumber());
4891
5124
  const scriptData = Uint8Array.from([
4892
- ...(0, import_utils27.arrayify)(hexlifiedContractId),
5125
+ ...(0, import_utils26.arrayify)(hexlifiedContractId),
4893
5126
  ...encoded,
4894
- ...(0, import_utils27.arrayify)(assetId)
5127
+ ...(0, import_utils26.arrayify)(assetId)
4895
5128
  ]);
4896
5129
  return scriptData;
4897
5130
  };
@@ -5038,9 +5271,8 @@ var Account = class extends import_interfaces.AbstractAccount {
5038
5271
  * @param assetId - The asset ID to check the balance for.
5039
5272
  * @returns A promise that resolves to the balance amount.
5040
5273
  */
5041
- async getBalance(assetId) {
5042
- const assetIdToFetch = assetId ?? this.provider.getBaseAssetId();
5043
- const amount = await this.provider.getBalance(this.address, assetIdToFetch);
5274
+ async getBalance(assetId = import_configs12.BaseAssetId) {
5275
+ const amount = await this.provider.getBalance(this.address, assetId);
5044
5276
  return amount;
5045
5277
  }
5046
5278
  /**
@@ -5077,37 +5309,33 @@ var Account = class extends import_interfaces.AbstractAccount {
5077
5309
  * @param fee - The estimated transaction fee.
5078
5310
  * @returns A promise that resolves when the resources are added to the transaction.
5079
5311
  */
5080
- async fund(request, coinQuantities, fee) {
5081
- const baseAssetId = this.provider.getBaseAssetId();
5082
- const updatedQuantities = addAmountToAsset({
5083
- amount: (0, import_math18.bn)(fee),
5084
- assetId: baseAssetId,
5085
- coinQuantities
5312
+ async fund(request, params) {
5313
+ const { addedSignatures, estimatedPredicates, maxFee: fee, requiredQuantities } = params;
5314
+ const txRequest = request;
5315
+ const requiredQuantitiesWithFee = addAmountToCoinQuantities({
5316
+ amount: (0, import_math19.bn)(fee),
5317
+ assetId: import_configs12.BaseAssetId,
5318
+ coinQuantities: requiredQuantities
5086
5319
  });
5087
5320
  const quantitiesDict = {};
5088
- updatedQuantities.forEach(({ amount, assetId }) => {
5321
+ requiredQuantitiesWithFee.forEach(({ amount, assetId }) => {
5089
5322
  quantitiesDict[assetId] = {
5090
5323
  required: amount,
5091
- owned: (0, import_math18.bn)(0)
5324
+ owned: (0, import_math19.bn)(0)
5092
5325
  };
5093
5326
  });
5094
- const cachedUtxos = [];
5095
- const cachedMessages = [];
5096
- const owner = this.address.toB256();
5097
- request.inputs.forEach((input) => {
5327
+ txRequest.inputs.forEach((input) => {
5098
5328
  const isResource = "amount" in input;
5099
5329
  if (isResource) {
5100
5330
  const isCoin2 = "owner" in input;
5101
5331
  if (isCoin2) {
5102
5332
  const assetId = String(input.assetId);
5103
- if (input.owner === owner && quantitiesDict[assetId]) {
5104
- const amount = (0, import_math18.bn)(input.amount);
5333
+ if (quantitiesDict[assetId]) {
5334
+ const amount = (0, import_math19.bn)(input.amount);
5105
5335
  quantitiesDict[assetId].owned = quantitiesDict[assetId].owned.add(amount);
5106
- cachedUtxos.push(input.id);
5107
5336
  }
5108
- } else if (input.recipient === owner && input.amount && quantitiesDict[baseAssetId]) {
5109
- quantitiesDict[baseAssetId].owned = quantitiesDict[baseAssetId].owned.add(input.amount);
5110
- cachedMessages.push(input.nonce);
5337
+ } else if (input.amount && quantitiesDict[import_configs12.BaseAssetId]) {
5338
+ quantitiesDict[import_configs12.BaseAssetId].owned = quantitiesDict[import_configs12.BaseAssetId].owned.add(input.amount);
5111
5339
  }
5112
5340
  }
5113
5341
  });
@@ -5122,12 +5350,23 @@ var Account = class extends import_interfaces.AbstractAccount {
5122
5350
  });
5123
5351
  const needsToBeFunded = missingQuantities.length;
5124
5352
  if (needsToBeFunded) {
5125
- const resources = await this.getResourcesToSpend(missingQuantities, {
5126
- messages: cachedMessages,
5127
- utxos: cachedUtxos
5128
- });
5129
- request.addResources(resources);
5353
+ const excludedIds = cacheTxInputsFromOwner(txRequest.inputs, this.address.toB256());
5354
+ const resources = await this.getResourcesToSpend(missingQuantities, excludedIds);
5355
+ txRequest.addResources(resources);
5356
+ }
5357
+ txRequest.shiftPredicateData();
5358
+ txRequest.updatePredicateGasUsed(estimatedPredicates);
5359
+ const requestToBeReEstimate = (0, import_ramda4.clone)(txRequest);
5360
+ if (addedSignatures) {
5361
+ Array.from({ length: addedSignatures }).forEach(
5362
+ () => requestToBeReEstimate.addEmptyWitness()
5363
+ );
5130
5364
  }
5365
+ const { maxFee } = await this.provider.estimateTxGasAndFee({
5366
+ transactionRequest: requestToBeReEstimate
5367
+ });
5368
+ txRequest.maxFee = maxFee;
5369
+ return txRequest;
5131
5370
  }
5132
5371
  /**
5133
5372
  * A helper that creates a transfer transaction request and returns it.
@@ -5135,29 +5374,25 @@ var Account = class extends import_interfaces.AbstractAccount {
5135
5374
  * @param destination - The address of the destination.
5136
5375
  * @param amount - The amount of coins to transfer.
5137
5376
  * @param assetId - The asset ID of the coins to transfer.
5138
- * @param txParams - The transaction parameters (gasLimit, gasPrice, maturity).
5377
+ * @param txParams - The transaction parameters (gasLimit, tip, maturity, maxFee, witnessLimit).
5139
5378
  * @returns A promise that resolves to the prepared transaction request.
5140
5379
  */
5141
- async createTransfer(destination, amount, assetId, txParams = {}) {
5142
- const { minGasPrice } = this.provider.getGasConfig();
5143
- const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
5144
- const params = { gasPrice: minGasPrice, ...txParams };
5145
- const request = new ScriptTransactionRequest(params);
5146
- request.addCoinOutput(import_address4.Address.fromAddressOrString(destination), amount, assetIdToTransfer);
5147
- const { maxFee, requiredQuantities, gasUsed, estimatedInputs } = await this.provider.getTransactionCost(request, [], {
5380
+ async createTransfer(destination, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
5381
+ const request = new ScriptTransactionRequest(txParams);
5382
+ request.addCoinOutput(import_address4.Address.fromAddressOrString(destination), amount, assetId);
5383
+ const txCost = await this.provider.getTransactionCost(request, {
5148
5384
  estimateTxDependencies: true,
5149
5385
  resourcesOwner: this
5150
5386
  });
5151
- request.gasPrice = (0, import_math18.bn)(txParams.gasPrice ?? minGasPrice);
5152
- request.gasLimit = (0, import_math18.bn)(txParams.gasLimit ?? gasUsed);
5153
- this.validateGas({
5154
- gasUsed,
5155
- gasPrice: request.gasPrice,
5156
- gasLimit: request.gasLimit,
5157
- minGasPrice
5158
- });
5159
- await this.fund(request, requiredQuantities, maxFee);
5160
- request.updatePredicateInputs(estimatedInputs);
5387
+ if ("gasLimit" in txParams) {
5388
+ this.validateGas({
5389
+ gasUsed: txCost.gasUsed,
5390
+ gasLimit: request.gasLimit
5391
+ });
5392
+ }
5393
+ request.gasLimit = txCost.gasUsed;
5394
+ request.maxFee = txCost.maxFee;
5395
+ await this.fund(request, txCost);
5161
5396
  return request;
5162
5397
  }
5163
5398
  /**
@@ -5169,15 +5404,14 @@ var Account = class extends import_interfaces.AbstractAccount {
5169
5404
  * @param txParams - The transaction parameters (gasLimit, gasPrice, maturity).
5170
5405
  * @returns A promise that resolves to the transaction response.
5171
5406
  */
5172
- async transfer(destination, amount, assetId, txParams = {}) {
5173
- if ((0, import_math18.bn)(amount).lte(0)) {
5407
+ async transfer(destination, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
5408
+ if ((0, import_math19.bn)(amount).lte(0)) {
5174
5409
  throw new import_errors16.FuelError(
5175
5410
  import_errors16.ErrorCode.INVALID_TRANSFER_AMOUNT,
5176
5411
  "Transfer amount must be a positive number."
5177
5412
  );
5178
5413
  }
5179
- const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
5180
- const request = await this.createTransfer(destination, amount, assetIdToTransfer, txParams);
5414
+ const request = await this.createTransfer(destination, amount, assetId, txParams);
5181
5415
  return this.sendTransaction(request, { estimateTxDependencies: false });
5182
5416
  }
5183
5417
  /**
@@ -5189,40 +5423,38 @@ var Account = class extends import_interfaces.AbstractAccount {
5189
5423
  * @param txParams - The optional transaction parameters.
5190
5424
  * @returns A promise that resolves to the transaction response.
5191
5425
  */
5192
- async transferToContract(contractId, amount, assetId, txParams = {}) {
5193
- if ((0, import_math18.bn)(amount).lte(0)) {
5426
+ async transferToContract(contractId, amount, assetId = import_configs12.BaseAssetId, txParams = {}) {
5427
+ if ((0, import_math19.bn)(amount).lte(0)) {
5194
5428
  throw new import_errors16.FuelError(
5195
5429
  import_errors16.ErrorCode.INVALID_TRANSFER_AMOUNT,
5196
5430
  "Transfer amount must be a positive number."
5197
5431
  );
5198
5432
  }
5199
5433
  const contractAddress = import_address4.Address.fromAddressOrString(contractId);
5200
- const { minGasPrice } = this.provider.getGasConfig();
5201
- const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
5202
- const params = { gasPrice: minGasPrice, ...txParams };
5203
5434
  const { script, scriptData } = await assembleTransferToContractScript({
5204
5435
  hexlifiedContractId: contractAddress.toB256(),
5205
- amountToTransfer: (0, import_math18.bn)(amount),
5206
- assetId: assetIdToTransfer
5436
+ amountToTransfer: (0, import_math19.bn)(amount),
5437
+ assetId
5207
5438
  });
5208
5439
  const request = new ScriptTransactionRequest({
5209
- ...params,
5440
+ ...txParams,
5210
5441
  script,
5211
5442
  scriptData
5212
5443
  });
5213
5444
  request.addContractInputAndOutput(contractAddress);
5214
- const { maxFee, requiredQuantities, gasUsed } = await this.provider.getTransactionCost(
5215
- request,
5216
- [{ amount: (0, import_math18.bn)(amount), assetId: String(assetIdToTransfer) }]
5217
- );
5218
- request.gasLimit = (0, import_math18.bn)(params.gasLimit ?? gasUsed);
5219
- this.validateGas({
5220
- gasUsed,
5221
- gasPrice: request.gasPrice,
5222
- gasLimit: request.gasLimit,
5223
- minGasPrice
5445
+ const txCost = await this.provider.getTransactionCost(request, {
5446
+ resourcesOwner: this,
5447
+ quantitiesToContract: [{ amount: (0, import_math19.bn)(amount), assetId: String(assetId) }]
5224
5448
  });
5225
- await this.fund(request, requiredQuantities, maxFee);
5449
+ if (txParams.gasLimit) {
5450
+ this.validateGas({
5451
+ gasUsed: txCost.gasUsed,
5452
+ gasLimit: request.gasLimit
5453
+ });
5454
+ }
5455
+ request.gasLimit = txCost.gasUsed;
5456
+ request.maxFee = txCost.maxFee;
5457
+ await this.fund(request, txCost);
5226
5458
  return this.sendTransaction(request);
5227
5459
  }
5228
5460
  /**
@@ -5234,35 +5466,31 @@ var Account = class extends import_interfaces.AbstractAccount {
5234
5466
  * @returns A promise that resolves to the transaction response.
5235
5467
  */
5236
5468
  async withdrawToBaseLayer(recipient, amount, txParams = {}) {
5237
- const { minGasPrice } = this.provider.getGasConfig();
5238
- const baseAssetId = this.provider.getBaseAssetId();
5239
5469
  const recipientAddress = import_address4.Address.fromAddressOrString(recipient);
5240
- const recipientDataArray = (0, import_utils28.arrayify)(
5470
+ const recipientDataArray = (0, import_utils27.arrayify)(
5241
5471
  "0x".concat(recipientAddress.toHexString().substring(2).padStart(64, "0"))
5242
5472
  );
5243
- const amountDataArray = (0, import_utils28.arrayify)(
5244
- "0x".concat((0, import_math18.bn)(amount).toHex().substring(2).padStart(16, "0"))
5473
+ const amountDataArray = (0, import_utils27.arrayify)(
5474
+ "0x".concat((0, import_math19.bn)(amount).toHex().substring(2).padStart(16, "0"))
5245
5475
  );
5246
5476
  const script = new Uint8Array([
5247
- ...(0, import_utils28.arrayify)(withdrawScript.bytes),
5477
+ ...(0, import_utils27.arrayify)(withdrawScript.bytes),
5248
5478
  ...recipientDataArray,
5249
5479
  ...amountDataArray
5250
5480
  ]);
5251
- const params = { script, gasPrice: minGasPrice, ...txParams };
5481
+ const params = { script, ...txParams };
5252
5482
  const request = new ScriptTransactionRequest(params);
5253
- const forwardingQuantities = [{ amount: (0, import_math18.bn)(amount), assetId: baseAssetId }];
5254
- const { requiredQuantities, maxFee, gasUsed } = await this.provider.getTransactionCost(
5255
- request,
5256
- forwardingQuantities
5257
- );
5258
- request.gasLimit = (0, import_math18.bn)(params.gasLimit ?? gasUsed);
5259
- this.validateGas({
5260
- gasUsed,
5261
- gasPrice: request.gasPrice,
5262
- gasLimit: request.gasLimit,
5263
- minGasPrice
5264
- });
5265
- await this.fund(request, requiredQuantities, maxFee);
5483
+ const quantitiesToContract = [{ amount: (0, import_math19.bn)(amount), assetId: import_configs12.BaseAssetId }];
5484
+ const txCost = await this.provider.getTransactionCost(request, { quantitiesToContract });
5485
+ if (txParams.gasLimit) {
5486
+ this.validateGas({
5487
+ gasUsed: txCost.gasUsed,
5488
+ gasLimit: request.gasLimit
5489
+ });
5490
+ }
5491
+ request.maxFee = txCost.maxFee;
5492
+ request.gasLimit = txCost.gasUsed;
5493
+ await this.fund(request, txCost);
5266
5494
  return this.sendTransaction(request);
5267
5495
  }
5268
5496
  async signMessage(message) {
@@ -5320,18 +5548,7 @@ var Account = class extends import_interfaces.AbstractAccount {
5320
5548
  }
5321
5549
  return this.provider.simulate(transactionRequest, { estimateTxDependencies: false });
5322
5550
  }
5323
- validateGas({
5324
- gasUsed,
5325
- gasPrice,
5326
- gasLimit,
5327
- minGasPrice
5328
- }) {
5329
- if (minGasPrice.gt(gasPrice)) {
5330
- throw new import_errors16.FuelError(
5331
- import_errors16.ErrorCode.GAS_PRICE_TOO_LOW,
5332
- `Gas price '${gasPrice}' is lower than the required: '${minGasPrice}'.`
5333
- );
5334
- }
5551
+ validateGas({ gasUsed, gasLimit }) {
5335
5552
  if (gasUsed.gt(gasLimit)) {
5336
5553
  throw new import_errors16.FuelError(
5337
5554
  import_errors16.ErrorCode.GAS_LIMIT_TOO_LOW,
@@ -5343,14 +5560,14 @@ var Account = class extends import_interfaces.AbstractAccount {
5343
5560
 
5344
5561
  // src/wallet/base-wallet-unlocked.ts
5345
5562
  var import_hasher3 = require("@fuel-ts/hasher");
5346
- var import_utils31 = require("@fuel-ts/utils");
5563
+ var import_utils30 = require("@fuel-ts/utils");
5347
5564
 
5348
5565
  // src/signer/signer.ts
5349
5566
  var import_address5 = require("@fuel-ts/address");
5350
5567
  var import_crypto = require("@fuel-ts/crypto");
5351
5568
  var import_hasher2 = require("@fuel-ts/hasher");
5352
- var import_math19 = require("@fuel-ts/math");
5353
- var import_utils29 = require("@fuel-ts/utils");
5569
+ var import_math20 = require("@fuel-ts/math");
5570
+ var import_utils28 = require("@fuel-ts/utils");
5354
5571
  var import_secp256k1 = require("@noble/curves/secp256k1");
5355
5572
  var Signer = class {
5356
5573
  address;
@@ -5369,10 +5586,10 @@ var Signer = class {
5369
5586
  privateKey = `0x${privateKey}`;
5370
5587
  }
5371
5588
  }
5372
- const privateKeyBytes = (0, import_math19.toBytes)(privateKey, 32);
5373
- this.privateKey = (0, import_utils29.hexlify)(privateKeyBytes);
5374
- this.publicKey = (0, import_utils29.hexlify)(import_secp256k1.secp256k1.getPublicKey(privateKeyBytes, false).slice(1));
5375
- this.compressedPublicKey = (0, import_utils29.hexlify)(import_secp256k1.secp256k1.getPublicKey(privateKeyBytes, true));
5589
+ const privateKeyBytes = (0, import_math20.toBytes)(privateKey, 32);
5590
+ this.privateKey = (0, import_utils28.hexlify)(privateKeyBytes);
5591
+ this.publicKey = (0, import_utils28.hexlify)(import_secp256k1.secp256k1.getPublicKey(privateKeyBytes, false).slice(1));
5592
+ this.compressedPublicKey = (0, import_utils28.hexlify)(import_secp256k1.secp256k1.getPublicKey(privateKeyBytes, true));
5376
5593
  this.address = import_address5.Address.fromPublicKey(this.publicKey);
5377
5594
  }
5378
5595
  /**
@@ -5386,11 +5603,11 @@ var Signer = class {
5386
5603
  * @returns hashed signature
5387
5604
  */
5388
5605
  sign(data) {
5389
- const signature = import_secp256k1.secp256k1.sign((0, import_utils29.arrayify)(data), (0, import_utils29.arrayify)(this.privateKey));
5390
- const r = (0, import_math19.toBytes)(`0x${signature.r.toString(16)}`, 32);
5391
- const s = (0, import_math19.toBytes)(`0x${signature.s.toString(16)}`, 32);
5606
+ const signature = import_secp256k1.secp256k1.sign((0, import_utils28.arrayify)(data), (0, import_utils28.arrayify)(this.privateKey));
5607
+ const r = (0, import_math20.toBytes)(`0x${signature.r.toString(16)}`, 32);
5608
+ const s = (0, import_math20.toBytes)(`0x${signature.s.toString(16)}`, 32);
5392
5609
  s[0] |= (signature.recovery || 0) << 7;
5393
- return (0, import_utils29.hexlify)((0, import_utils29.concat)([r, s]));
5610
+ return (0, import_utils28.hexlify)((0, import_utils28.concat)([r, s]));
5394
5611
  }
5395
5612
  /**
5396
5613
  * Add point on the current elliptic curve
@@ -5399,8 +5616,8 @@ var Signer = class {
5399
5616
  * @returns compressed point on the curve
5400
5617
  */
5401
5618
  addPoint(point) {
5402
- const p0 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils29.arrayify)(this.compressedPublicKey));
5403
- const p1 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils29.arrayify)(point));
5619
+ const p0 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils28.arrayify)(this.compressedPublicKey));
5620
+ const p1 = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils28.arrayify)(point));
5404
5621
  const result = p0.add(p1);
5405
5622
  return `0x${result.toHex(true)}`;
5406
5623
  }
@@ -5412,16 +5629,16 @@ var Signer = class {
5412
5629
  * @returns public key from signature from the
5413
5630
  */
5414
5631
  static recoverPublicKey(data, signature) {
5415
- const signedMessageBytes = (0, import_utils29.arrayify)(signature);
5632
+ const signedMessageBytes = (0, import_utils28.arrayify)(signature);
5416
5633
  const r = signedMessageBytes.slice(0, 32);
5417
5634
  const s = signedMessageBytes.slice(32, 64);
5418
5635
  const recoveryParam = (s[0] & 128) >> 7;
5419
5636
  s[0] &= 127;
5420
- const sig = new import_secp256k1.secp256k1.Signature(BigInt((0, import_utils29.hexlify)(r)), BigInt((0, import_utils29.hexlify)(s))).addRecoveryBit(
5637
+ const sig = new import_secp256k1.secp256k1.Signature(BigInt((0, import_utils28.hexlify)(r)), BigInt((0, import_utils28.hexlify)(s))).addRecoveryBit(
5421
5638
  recoveryParam
5422
5639
  );
5423
- const publicKey = sig.recoverPublicKey((0, import_utils29.arrayify)(data)).toRawBytes(false).slice(1);
5424
- return (0, import_utils29.hexlify)(publicKey);
5640
+ const publicKey = sig.recoverPublicKey((0, import_utils28.arrayify)(data)).toRawBytes(false).slice(1);
5641
+ return (0, import_utils28.hexlify)(publicKey);
5425
5642
  }
5426
5643
  /**
5427
5644
  * Recover the address from a signature performed with [`sign`](#sign).
@@ -5440,7 +5657,7 @@ var Signer = class {
5440
5657
  * @returns random 32-byte hashed
5441
5658
  */
5442
5659
  static generatePrivateKey(entropy) {
5443
- return entropy ? (0, import_hasher2.hash)((0, import_utils29.concat)([(0, import_crypto.randomBytes)(32), (0, import_utils29.arrayify)(entropy)])) : (0, import_crypto.randomBytes)(32);
5660
+ 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);
5444
5661
  }
5445
5662
  /**
5446
5663
  * Extended publicKey from a compact publicKey
@@ -5449,8 +5666,8 @@ var Signer = class {
5449
5666
  * @returns extended publicKey
5450
5667
  */
5451
5668
  static extendPublicKey(publicKey) {
5452
- const point = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils29.arrayify)(publicKey));
5453
- return (0, import_utils29.hexlify)(point.toRawBytes(false).slice(1));
5669
+ const point = import_secp256k1.secp256k1.ProjectivePoint.fromHex((0, import_utils28.arrayify)(publicKey));
5670
+ return (0, import_utils28.hexlify)(point.toRawBytes(false).slice(1));
5454
5671
  }
5455
5672
  };
5456
5673
 
@@ -5458,7 +5675,7 @@ var Signer = class {
5458
5675
  var import_address6 = require("@fuel-ts/address");
5459
5676
  var import_crypto2 = require("@fuel-ts/crypto");
5460
5677
  var import_errors17 = require("@fuel-ts/errors");
5461
- var import_utils30 = require("@fuel-ts/utils");
5678
+ var import_utils29 = require("@fuel-ts/utils");
5462
5679
  var import_uuid = require("uuid");
5463
5680
  var DEFAULT_KDF_PARAMS_LOG_N = 13;
5464
5681
  var DEFAULT_KDF_PARAMS_R = 8;
@@ -5541,7 +5758,7 @@ async function decryptKeystoreWallet(jsonWallet, password) {
5541
5758
  );
5542
5759
  }
5543
5760
  const buffer = await (0, import_crypto2.decryptJsonWalletData)(ciphertextBuffer, key, ivBuffer);
5544
- const privateKey = (0, import_utils30.hexlify)(buffer);
5761
+ const privateKey = (0, import_utils29.hexlify)(buffer);
5545
5762
  return privateKey;
5546
5763
  }
5547
5764
 
@@ -5586,7 +5803,7 @@ var BaseWalletUnlocked = class extends Account {
5586
5803
  */
5587
5804
  async signMessage(message) {
5588
5805
  const signedMessage = await this.signer().sign((0, import_hasher3.hashMessage)(message));
5589
- return (0, import_utils31.hexlify)(signedMessage);
5806
+ return (0, import_utils30.hexlify)(signedMessage);
5590
5807
  }
5591
5808
  /**
5592
5809
  * Signs a transaction with the wallet's private key.
@@ -5599,7 +5816,7 @@ var BaseWalletUnlocked = class extends Account {
5599
5816
  const chainId = this.provider.getChainId();
5600
5817
  const hashedTransaction = transactionRequest.getTransactionId(chainId);
5601
5818
  const signature = await this.signer().sign(hashedTransaction);
5602
- return (0, import_utils31.hexlify)(signature);
5819
+ return (0, import_utils30.hexlify)(signature);
5603
5820
  }
5604
5821
  /**
5605
5822
  * Populates a transaction with the witnesses signature.
@@ -5619,7 +5836,7 @@ var BaseWalletUnlocked = class extends Account {
5619
5836
  * @param transactionRequestLike - The transaction request to send.
5620
5837
  * @returns A promise that resolves to the TransactionResponse object.
5621
5838
  */
5622
- async sendTransaction(transactionRequestLike, { estimateTxDependencies = true, awaitExecution } = {}) {
5839
+ async sendTransaction(transactionRequestLike, { estimateTxDependencies = false, awaitExecution } = {}) {
5623
5840
  const transactionRequest = transactionRequestify(transactionRequestLike);
5624
5841
  if (estimateTxDependencies) {
5625
5842
  await this.provider.estimateTxDependencies(transactionRequest);
@@ -5660,16 +5877,16 @@ __publicField(BaseWalletUnlocked, "defaultPath", "m/44'/1179993420'/0'/0/0");
5660
5877
  // src/hdwallet/hdwallet.ts
5661
5878
  var import_errors20 = require("@fuel-ts/errors");
5662
5879
  var import_hasher6 = require("@fuel-ts/hasher");
5663
- var import_math20 = require("@fuel-ts/math");
5664
- var import_utils35 = require("@fuel-ts/utils");
5665
- var import_ethers3 = require("ethers");
5880
+ var import_math21 = require("@fuel-ts/math");
5881
+ var import_utils34 = require("@fuel-ts/utils");
5882
+ var import_ethers4 = require("ethers");
5666
5883
 
5667
5884
  // src/mnemonic/mnemonic.ts
5668
5885
  var import_crypto3 = require("@fuel-ts/crypto");
5669
5886
  var import_errors19 = require("@fuel-ts/errors");
5670
5887
  var import_hasher5 = require("@fuel-ts/hasher");
5671
- var import_utils33 = require("@fuel-ts/utils");
5672
- var import_ethers2 = require("ethers");
5888
+ var import_utils32 = require("@fuel-ts/utils");
5889
+ var import_ethers3 = require("ethers");
5673
5890
 
5674
5891
  // src/wordlists/words/english.ts
5675
5892
  var english = [
@@ -7732,7 +7949,7 @@ var Language = /* @__PURE__ */ ((Language2) => {
7732
7949
  // src/mnemonic/utils.ts
7733
7950
  var import_errors18 = require("@fuel-ts/errors");
7734
7951
  var import_hasher4 = require("@fuel-ts/hasher");
7735
- var import_utils32 = require("@fuel-ts/utils");
7952
+ var import_utils31 = require("@fuel-ts/utils");
7736
7953
  function toUtf8Bytes(stri) {
7737
7954
  const str = stri.normalize("NFKD");
7738
7955
  const result = [];
@@ -7799,14 +8016,14 @@ function entropyToMnemonicIndices(entropy) {
7799
8016
  }
7800
8017
  }
7801
8018
  const checksumBits = entropy.length / 4;
7802
- const checksum = (0, import_utils32.arrayify)((0, import_hasher4.sha256)(entropy))[0] & getUpperMask(checksumBits);
8019
+ const checksum = (0, import_utils31.arrayify)((0, import_hasher4.sha256)(entropy))[0] & getUpperMask(checksumBits);
7803
8020
  indices[indices.length - 1] <<= checksumBits;
7804
8021
  indices[indices.length - 1] |= checksum >> 8 - checksumBits;
7805
8022
  return indices;
7806
8023
  }
7807
8024
  function mnemonicWordsToEntropy(words, wordlist) {
7808
8025
  const size = Math.ceil(11 * words.length / 8);
7809
- const entropy = (0, import_utils32.arrayify)(new Uint8Array(size));
8026
+ const entropy = (0, import_utils31.arrayify)(new Uint8Array(size));
7810
8027
  let offset = 0;
7811
8028
  for (let i = 0; i < words.length; i += 1) {
7812
8029
  const index = wordlist.indexOf(words[i].normalize("NFKD"));
@@ -7826,7 +8043,7 @@ function mnemonicWordsToEntropy(words, wordlist) {
7826
8043
  const entropyBits = 32 * words.length / 3;
7827
8044
  const checksumBits = words.length / 3;
7828
8045
  const checksumMask = getUpperMask(checksumBits);
7829
- const checksum = (0, import_utils32.arrayify)((0, import_hasher4.sha256)(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;
8046
+ const checksum = (0, import_utils31.arrayify)((0, import_hasher4.sha256)(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;
7830
8047
  if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {
7831
8048
  throw new import_errors18.FuelError(
7832
8049
  import_errors18.ErrorCode.INVALID_CHECKSUM,
@@ -7901,7 +8118,7 @@ var Mnemonic = class {
7901
8118
  static mnemonicToEntropy(phrase, wordlist = english) {
7902
8119
  const words = getWords(phrase);
7903
8120
  assertMnemonic(words);
7904
- return (0, import_utils33.hexlify)(mnemonicWordsToEntropy(words, wordlist));
8121
+ return (0, import_utils32.hexlify)(mnemonicWordsToEntropy(words, wordlist));
7905
8122
  }
7906
8123
  /**
7907
8124
  * @param entropy - Entropy source to the mnemonic phrase.
@@ -7909,7 +8126,7 @@ var Mnemonic = class {
7909
8126
  * @returns 64-byte array contains privateKey and chainCode as described on BIP39
7910
8127
  */
7911
8128
  static entropyToMnemonic(entropy, wordlist = english) {
7912
- const entropyBytes = (0, import_utils33.arrayify)(entropy);
8129
+ const entropyBytes = (0, import_utils32.arrayify)(entropy);
7913
8130
  assertWordList(wordlist);
7914
8131
  assertEntropy(entropyBytes);
7915
8132
  return entropyToMnemonicIndices(entropyBytes).map((i) => wordlist[i]).join(" ");
@@ -7923,7 +8140,7 @@ var Mnemonic = class {
7923
8140
  assertMnemonic(getWords(phrase));
7924
8141
  const phraseBytes = toUtf8Bytes(getPhrase(phrase));
7925
8142
  const salt = toUtf8Bytes(`mnemonic${passphrase}`);
7926
- return (0, import_ethers2.pbkdf2)(phraseBytes, salt, 2048, 64, "sha512");
8143
+ return (0, import_ethers3.pbkdf2)(phraseBytes, salt, 2048, 64, "sha512");
7927
8144
  }
7928
8145
  /**
7929
8146
  * @param phrase - Mnemonic phrase composed by words from the provided wordlist
@@ -7978,14 +8195,14 @@ var Mnemonic = class {
7978
8195
  * @returns 64-byte array contains privateKey and chainCode as described on BIP39
7979
8196
  */
7980
8197
  static masterKeysFromSeed(seed) {
7981
- const seedArray = (0, import_utils33.arrayify)(seed);
8198
+ const seedArray = (0, import_utils32.arrayify)(seed);
7982
8199
  if (seedArray.length < 16 || seedArray.length > 64) {
7983
8200
  throw new import_errors19.FuelError(
7984
8201
  import_errors19.ErrorCode.INVALID_SEED,
7985
8202
  `Seed length should be between 16 and 64 bytes, but received ${seedArray.length} bytes.`
7986
8203
  );
7987
8204
  }
7988
- return (0, import_utils33.arrayify)((0, import_ethers2.computeHmac)("sha512", MasterSecret, seedArray));
8205
+ return (0, import_utils32.arrayify)((0, import_ethers3.computeHmac)("sha512", MasterSecret, seedArray));
7989
8206
  }
7990
8207
  /**
7991
8208
  * Get the extendKey as defined on BIP-32 from the provided seed
@@ -7996,22 +8213,22 @@ var Mnemonic = class {
7996
8213
  */
7997
8214
  static seedToExtendedKey(seed, testnet = false) {
7998
8215
  const masterKey = Mnemonic.masterKeysFromSeed(seed);
7999
- const prefix = (0, import_utils33.arrayify)(testnet ? TestnetPRV : MainnetPRV);
8216
+ const prefix = (0, import_utils32.arrayify)(testnet ? TestnetPRV : MainnetPRV);
8000
8217
  const depth = "0x00";
8001
8218
  const fingerprint = "0x00000000";
8002
8219
  const index = "0x00000000";
8003
8220
  const chainCode = masterKey.slice(32);
8004
8221
  const privateKey = masterKey.slice(0, 32);
8005
- const extendedKey = (0, import_utils33.concat)([
8222
+ const extendedKey = (0, import_utils32.concat)([
8006
8223
  prefix,
8007
8224
  depth,
8008
8225
  fingerprint,
8009
8226
  index,
8010
8227
  chainCode,
8011
- (0, import_utils33.concat)(["0x00", privateKey])
8228
+ (0, import_utils32.concat)(["0x00", privateKey])
8012
8229
  ]);
8013
- const checksum = (0, import_ethers2.dataSlice)((0, import_hasher5.sha256)((0, import_hasher5.sha256)(extendedKey)), 0, 4);
8014
- return (0, import_ethers2.encodeBase58)((0, import_utils33.concat)([extendedKey, checksum]));
8230
+ const checksum = (0, import_ethers3.dataSlice)((0, import_hasher5.sha256)((0, import_hasher5.sha256)(extendedKey)), 0, 4);
8231
+ return (0, import_ethers3.encodeBase58)((0, import_utils32.concat)([extendedKey, checksum]));
8015
8232
  }
8016
8233
  /**
8017
8234
  * Create a new mnemonic using a randomly generated number as entropy.
@@ -8026,7 +8243,7 @@ var Mnemonic = class {
8026
8243
  * @returns A randomly generated mnemonic
8027
8244
  */
8028
8245
  static generate(size = 32, extraEntropy = "") {
8029
- const entropy = extraEntropy ? (0, import_hasher5.sha256)((0, import_utils33.concat)([(0, import_crypto3.randomBytes)(size), (0, import_utils33.arrayify)(extraEntropy)])) : (0, import_crypto3.randomBytes)(size);
8246
+ 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);
8030
8247
  return Mnemonic.entropyToMnemonic(entropy);
8031
8248
  }
8032
8249
  };
@@ -8034,12 +8251,12 @@ var mnemonic_default = Mnemonic;
8034
8251
 
8035
8252
  // src/hdwallet/hdwallet.ts
8036
8253
  var HARDENED_INDEX = 2147483648;
8037
- var MainnetPRV2 = (0, import_utils35.hexlify)("0x0488ade4");
8038
- var MainnetPUB = (0, import_utils35.hexlify)("0x0488b21e");
8039
- var TestnetPRV2 = (0, import_utils35.hexlify)("0x04358394");
8040
- var TestnetPUB = (0, import_utils35.hexlify)("0x043587cf");
8254
+ var MainnetPRV2 = (0, import_utils34.hexlify)("0x0488ade4");
8255
+ var MainnetPUB = (0, import_utils34.hexlify)("0x0488b21e");
8256
+ var TestnetPRV2 = (0, import_utils34.hexlify)("0x04358394");
8257
+ var TestnetPUB = (0, import_utils34.hexlify)("0x043587cf");
8041
8258
  function base58check(data) {
8042
- 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)]));
8259
+ 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)]));
8043
8260
  }
8044
8261
  function getExtendedKeyPrefix(isPublic = false, testnet = false) {
8045
8262
  if (isPublic) {
@@ -8048,11 +8265,11 @@ function getExtendedKeyPrefix(isPublic = false, testnet = false) {
8048
8265
  return testnet ? TestnetPRV2 : MainnetPRV2;
8049
8266
  }
8050
8267
  function isPublicExtendedKey(extendedKey) {
8051
- return [MainnetPUB, TestnetPUB].includes((0, import_utils35.hexlify)(extendedKey.slice(0, 4)));
8268
+ return [MainnetPUB, TestnetPUB].includes((0, import_utils34.hexlify)(extendedKey.slice(0, 4)));
8052
8269
  }
8053
8270
  function isValidExtendedKey(extendedKey) {
8054
8271
  return [MainnetPRV2, TestnetPRV2, MainnetPUB, TestnetPUB].includes(
8055
- (0, import_utils35.hexlify)(extendedKey.slice(0, 4))
8272
+ (0, import_utils34.hexlify)(extendedKey.slice(0, 4))
8056
8273
  );
8057
8274
  }
8058
8275
  function parsePath(path, depth = 0) {
@@ -8070,8 +8287,8 @@ function parsePath(path, depth = 0) {
8070
8287
  var HDWallet = class {
8071
8288
  depth = 0;
8072
8289
  index = 0;
8073
- fingerprint = (0, import_utils35.hexlify)("0x00000000");
8074
- parentFingerprint = (0, import_utils35.hexlify)("0x00000000");
8290
+ fingerprint = (0, import_utils34.hexlify)("0x00000000");
8291
+ parentFingerprint = (0, import_utils34.hexlify)("0x00000000");
8075
8292
  privateKey;
8076
8293
  publicKey;
8077
8294
  chainCode;
@@ -8083,8 +8300,8 @@ var HDWallet = class {
8083
8300
  constructor(config) {
8084
8301
  if (config.privateKey) {
8085
8302
  const signer = new Signer(config.privateKey);
8086
- this.publicKey = (0, import_utils35.hexlify)(signer.compressedPublicKey);
8087
- this.privateKey = (0, import_utils35.hexlify)(config.privateKey);
8303
+ this.publicKey = (0, import_utils34.hexlify)(signer.compressedPublicKey);
8304
+ this.privateKey = (0, import_utils34.hexlify)(config.privateKey);
8088
8305
  } else {
8089
8306
  if (!config.publicKey) {
8090
8307
  throw new import_errors20.FuelError(
@@ -8092,10 +8309,10 @@ var HDWallet = class {
8092
8309
  "Both public and private Key cannot be missing. At least one should be provided."
8093
8310
  );
8094
8311
  }
8095
- this.publicKey = (0, import_utils35.hexlify)(config.publicKey);
8312
+ this.publicKey = (0, import_utils34.hexlify)(config.publicKey);
8096
8313
  }
8097
8314
  this.parentFingerprint = config.parentFingerprint || this.parentFingerprint;
8098
- this.fingerprint = (0, import_ethers3.dataSlice)((0, import_ethers3.ripemd160)((0, import_hasher6.sha256)(this.publicKey)), 0, 4);
8315
+ this.fingerprint = (0, import_ethers4.dataSlice)((0, import_ethers4.ripemd160)((0, import_hasher6.sha256)(this.publicKey)), 0, 4);
8099
8316
  this.depth = config.depth || this.depth;
8100
8317
  this.index = config.index || this.index;
8101
8318
  this.chainCode = config.chainCode;
@@ -8111,9 +8328,9 @@ var HDWallet = class {
8111
8328
  * @returns A new instance of HDWallet on the derived index
8112
8329
  */
8113
8330
  deriveIndex(index) {
8114
- const privateKey = this.privateKey && (0, import_utils35.arrayify)(this.privateKey);
8115
- const publicKey = (0, import_utils35.arrayify)(this.publicKey);
8116
- const chainCode = (0, import_utils35.arrayify)(this.chainCode);
8331
+ const privateKey = this.privateKey && (0, import_utils34.arrayify)(this.privateKey);
8332
+ const publicKey = (0, import_utils34.arrayify)(this.publicKey);
8333
+ const chainCode = (0, import_utils34.arrayify)(this.chainCode);
8117
8334
  const data = new Uint8Array(37);
8118
8335
  if (index & HARDENED_INDEX) {
8119
8336
  if (!privateKey) {
@@ -8124,15 +8341,15 @@ var HDWallet = class {
8124
8341
  }
8125
8342
  data.set(privateKey, 1);
8126
8343
  } else {
8127
- data.set((0, import_utils35.arrayify)(this.publicKey));
8344
+ data.set((0, import_utils34.arrayify)(this.publicKey));
8128
8345
  }
8129
- data.set((0, import_math20.toBytes)(index, 4), 33);
8130
- const bytes = (0, import_utils35.arrayify)((0, import_ethers3.computeHmac)("sha512", chainCode, data));
8346
+ data.set((0, import_math21.toBytes)(index, 4), 33);
8347
+ const bytes = (0, import_utils34.arrayify)((0, import_ethers4.computeHmac)("sha512", chainCode, data));
8131
8348
  const IL = bytes.slice(0, 32);
8132
8349
  const IR = bytes.slice(32);
8133
8350
  if (privateKey) {
8134
8351
  const N = "0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141";
8135
- const ki = (0, import_math20.bn)(IL).add(privateKey).mod(N).toBytes(32);
8352
+ const ki = (0, import_math21.bn)(IL).add(privateKey).mod(N).toBytes(32);
8136
8353
  return new HDWallet({
8137
8354
  privateKey: ki,
8138
8355
  chainCode: IR,
@@ -8141,7 +8358,7 @@ var HDWallet = class {
8141
8358
  parentFingerprint: this.fingerprint
8142
8359
  });
8143
8360
  }
8144
- const signer = new Signer((0, import_utils35.hexlify)(IL));
8361
+ const signer = new Signer((0, import_utils34.hexlify)(IL));
8145
8362
  const Ki = signer.addPoint(publicKey);
8146
8363
  return new HDWallet({
8147
8364
  publicKey: Ki,
@@ -8176,12 +8393,12 @@ var HDWallet = class {
8176
8393
  );
8177
8394
  }
8178
8395
  const prefix = getExtendedKeyPrefix(this.privateKey == null || isPublic, testnet);
8179
- const depth = (0, import_utils35.hexlify)(Uint8Array.from([this.depth]));
8396
+ const depth = (0, import_utils34.hexlify)(Uint8Array.from([this.depth]));
8180
8397
  const parentFingerprint = this.parentFingerprint;
8181
- const index = (0, import_math20.toHex)(this.index, 4);
8398
+ const index = (0, import_math21.toHex)(this.index, 4);
8182
8399
  const chainCode = this.chainCode;
8183
- const key = this.privateKey != null && !isPublic ? (0, import_utils35.concat)(["0x00", this.privateKey]) : this.publicKey;
8184
- const extendedKey = (0, import_utils35.arrayify)((0, import_utils35.concat)([prefix, depth, parentFingerprint, index, chainCode, key]));
8400
+ const key = this.privateKey != null && !isPublic ? (0, import_utils34.concat)(["0x00", this.privateKey]) : this.publicKey;
8401
+ const extendedKey = (0, import_utils34.arrayify)((0, import_utils34.concat)([prefix, depth, parentFingerprint, index, chainCode, key]));
8185
8402
  return base58check(extendedKey);
8186
8403
  }
8187
8404
  /**
@@ -8193,13 +8410,13 @@ var HDWallet = class {
8193
8410
  static fromSeed(seed) {
8194
8411
  const masterKey = mnemonic_default.masterKeysFromSeed(seed);
8195
8412
  return new HDWallet({
8196
- chainCode: (0, import_utils35.arrayify)(masterKey.slice(32)),
8197
- privateKey: (0, import_utils35.arrayify)(masterKey.slice(0, 32))
8413
+ chainCode: (0, import_utils34.arrayify)(masterKey.slice(32)),
8414
+ privateKey: (0, import_utils34.arrayify)(masterKey.slice(0, 32))
8198
8415
  });
8199
8416
  }
8200
8417
  static fromExtendedKey(extendedKey) {
8201
- const decoded = (0, import_ethers3.toBeHex)((0, import_ethers3.decodeBase58)(extendedKey));
8202
- const bytes = (0, import_utils35.arrayify)(decoded);
8418
+ const decoded = (0, import_ethers4.toBeHex)((0, import_ethers4.decodeBase58)(extendedKey));
8419
+ const bytes = (0, import_utils34.arrayify)(decoded);
8203
8420
  const validChecksum = base58check(bytes.slice(0, 78)) === extendedKey;
8204
8421
  if (bytes.length !== 82 || !isValidExtendedKey(bytes)) {
8205
8422
  throw new import_errors20.FuelError(import_errors20.ErrorCode.HD_WALLET_ERROR, "Provided key is not a valid extended key.");
@@ -8208,9 +8425,9 @@ var HDWallet = class {
8208
8425
  throw new import_errors20.FuelError(import_errors20.ErrorCode.HD_WALLET_ERROR, "Provided key has an invalid checksum.");
8209
8426
  }
8210
8427
  const depth = bytes[4];
8211
- const parentFingerprint = (0, import_utils35.hexlify)(bytes.slice(5, 9));
8212
- const index = parseInt((0, import_utils35.hexlify)(bytes.slice(9, 13)).substring(2), 16);
8213
- const chainCode = (0, import_utils35.hexlify)(bytes.slice(13, 45));
8428
+ const parentFingerprint = (0, import_utils34.hexlify)(bytes.slice(5, 9));
8429
+ const index = parseInt((0, import_utils34.hexlify)(bytes.slice(9, 13)).substring(2), 16);
8430
+ const chainCode = (0, import_utils34.hexlify)(bytes.slice(13, 45));
8214
8431
  const key = bytes.slice(45, 78);
8215
8432
  if (depth === 0 && parentFingerprint !== "0x00000000" || depth === 0 && index !== 0) {
8216
8433
  throw new import_errors20.FuelError(
@@ -8813,20 +9030,21 @@ var StorageAbstract = class {
8813
9030
  // src/predicate/predicate.ts
8814
9031
  var import_abi_coder5 = require("@fuel-ts/abi-coder");
8815
9032
  var import_address10 = require("@fuel-ts/address");
9033
+ var import_configs13 = require("@fuel-ts/address/configs");
8816
9034
  var import_errors25 = require("@fuel-ts/errors");
8817
- var import_transactions20 = require("@fuel-ts/transactions");
8818
- var import_utils37 = require("@fuel-ts/utils");
9035
+ var import_transactions21 = require("@fuel-ts/transactions");
9036
+ var import_utils36 = require("@fuel-ts/utils");
8819
9037
 
8820
9038
  // src/predicate/utils/getPredicateRoot.ts
8821
9039
  var import_hasher7 = require("@fuel-ts/hasher");
8822
9040
  var import_merkle = require("@fuel-ts/merkle");
8823
- var import_utils36 = require("@fuel-ts/utils");
9041
+ var import_utils35 = require("@fuel-ts/utils");
8824
9042
  var getPredicateRoot = (bytecode) => {
8825
9043
  const chunkSize = 16 * 1024;
8826
- const bytes = (0, import_utils36.arrayify)(bytecode);
8827
- const chunks = (0, import_utils36.chunkAndPadBytes)(bytes, chunkSize);
8828
- const codeRoot = (0, import_merkle.calcRoot)(chunks.map((c) => (0, import_utils36.hexlify)(c)));
8829
- const predicateRoot = (0, import_hasher7.hash)((0, import_utils36.concat)(["0x4655454C", codeRoot]));
9044
+ const bytes = (0, import_utils35.arrayify)(bytecode);
9045
+ const chunks = (0, import_utils35.chunkAndPadBytes)(bytes, chunkSize);
9046
+ const codeRoot = (0, import_merkle.calcRoot)(chunks.map((c) => (0, import_utils35.hexlify)(c)));
9047
+ const predicateRoot = (0, import_hasher7.hash)((0, import_utils35.concat)(["0x4655454C", codeRoot]));
8830
9048
  return predicateRoot;
8831
9049
  };
8832
9050
 
@@ -8863,6 +9081,7 @@ var Predicate = class extends Account {
8863
9081
  this.interface = predicateInterface;
8864
9082
  if (inputData !== void 0 && inputData.length > 0) {
8865
9083
  this.predicateData = inputData;
9084
+ this.predicateDataBytes = this.getPredicateData(0);
8866
9085
  }
8867
9086
  }
8868
9087
  /**
@@ -8875,9 +9094,9 @@ var Predicate = class extends Account {
8875
9094
  const request = transactionRequestify(transactionRequestLike);
8876
9095
  const { policies } = BaseTransactionRequest.getPolicyMeta(request);
8877
9096
  request.inputs?.forEach((input) => {
8878
- if (input.type === import_transactions20.InputType.Coin && (0, import_utils37.hexlify)(input.owner) === this.address.toB256()) {
8879
- input.predicate = this.bytes;
8880
- input.predicateData = this.getPredicateData(policies.length);
9097
+ if (input.type === import_transactions21.InputType.Coin && (0, import_utils36.hexlify)(input.owner) === this.address.toB256()) {
9098
+ input.predicate = (0, import_utils36.hexlify)(this.bytes);
9099
+ input.predicateData = (0, import_utils36.hexlify)(this.getPredicateData(policies.length));
8881
9100
  }
8882
9101
  });
8883
9102
  return request;
@@ -8891,10 +9110,8 @@ var Predicate = class extends Account {
8891
9110
  * @param txParams - The transaction parameters (gasLimit, gasPrice, maturity).
8892
9111
  * @returns A promise that resolves to the prepared transaction request.
8893
9112
  */
8894
- async createTransfer(destination, amount, assetId, txParams = {}) {
8895
- const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
8896
- const request = await super.createTransfer(destination, amount, assetIdToTransfer, txParams);
8897
- return this.populateTransactionPredicateData(request);
9113
+ async createTransfer(destination, amount, assetId = import_configs13.BaseAssetId, txParams = {}) {
9114
+ return super.createTransfer(destination, amount, assetId, txParams);
8898
9115
  }
8899
9116
  /**
8900
9117
  * Sends a transaction with the populated predicate data.
@@ -8902,9 +9119,9 @@ var Predicate = class extends Account {
8902
9119
  * @param transactionRequestLike - The transaction request-like object.
8903
9120
  * @returns A promise that resolves to the transaction response.
8904
9121
  */
8905
- sendTransaction(transactionRequestLike, options) {
8906
- const transactionRequest = this.populateTransactionPredicateData(transactionRequestLike);
8907
- return super.sendTransaction(transactionRequest, options);
9122
+ sendTransaction(transactionRequestLike) {
9123
+ const transactionRequest = transactionRequestify(transactionRequestLike);
9124
+ return super.sendTransaction(transactionRequest, { estimateTxDependencies: false });
8908
9125
  }
8909
9126
  /**
8910
9127
  * Simulates a transaction with the populated predicate data.
@@ -8913,15 +9130,15 @@ var Predicate = class extends Account {
8913
9130
  * @returns A promise that resolves to the call result.
8914
9131
  */
8915
9132
  simulateTransaction(transactionRequestLike) {
8916
- const transactionRequest = this.populateTransactionPredicateData(transactionRequestLike);
8917
- return super.simulateTransaction(transactionRequest);
9133
+ const transactionRequest = transactionRequestify(transactionRequestLike);
9134
+ return super.simulateTransaction(transactionRequest, { estimateTxDependencies: false });
8918
9135
  }
8919
9136
  getPredicateData(policiesLength) {
8920
9137
  if (!this.predicateData.length) {
8921
9138
  return new Uint8Array();
8922
9139
  }
8923
9140
  const mainFn = this.interface?.functions.main;
8924
- const paddedCode = new import_transactions20.ByteArrayCoder(this.bytes.length).encode(this.bytes);
9141
+ const paddedCode = new import_transactions21.ByteArrayCoder(this.bytes.length).encode(this.bytes);
8925
9142
  const VM_TX_MEMORY = (0, import_abi_coder5.calculateVmTxMemory)({
8926
9143
  maxInputs: this.provider.getChain().consensusParameters.maxInputs.toNumber()
8927
9144
  });
@@ -8937,7 +9154,7 @@ var Predicate = class extends Account {
8937
9154
  * @returns An object containing the new predicate bytes and interface.
8938
9155
  */
8939
9156
  static processPredicateData(bytes, jsonAbi, configurableConstants) {
8940
- let predicateBytes = (0, import_utils37.arrayify)(bytes);
9157
+ let predicateBytes = (0, import_utils36.arrayify)(bytes);
8941
9158
  let abiInterface;
8942
9159
  if (jsonAbi) {
8943
9160
  abiInterface = new import_abi_coder5.Interface(jsonAbi);
@@ -8960,6 +9177,26 @@ var Predicate = class extends Account {
8960
9177
  predicateInterface: abiInterface
8961
9178
  };
8962
9179
  }
9180
+ /**
9181
+ * Retrieves resources satisfying the spend query for the account.
9182
+ *
9183
+ * @param quantities - IDs of coins to exclude.
9184
+ * @param excludedIds - IDs of resources to be excluded from the query.
9185
+ * @returns A promise that resolves to an array of Resources.
9186
+ */
9187
+ async getResourcesToSpend(quantities, excludedIds) {
9188
+ const resources = await this.provider.getResourcesToSpend(
9189
+ this.address,
9190
+ quantities,
9191
+ excludedIds
9192
+ );
9193
+ return resources.map((resource) => ({
9194
+ ...resource,
9195
+ predicate: (0, import_utils36.hexlify)(this.bytes),
9196
+ predicateData: (0, import_utils36.hexlify)(this.predicateDataBytes),
9197
+ paddPredicateData: (policiesLength) => (0, import_utils36.hexlify)(this.getPredicateData(policiesLength))
9198
+ }));
9199
+ }
8963
9200
  /**
8964
9201
  * Sets the configurable constants for the predicate.
8965
9202
  *
@@ -9709,7 +9946,7 @@ __publicField(Fuel, "defaultConfig", {});
9709
9946
  WalletLocked,
9710
9947
  WalletManager,
9711
9948
  WalletUnlocked,
9712
- addAmountToAsset,
9949
+ addAmountToCoinQuantities,
9713
9950
  addOperation,
9714
9951
  assemblePanicError,
9715
9952
  assembleReceiptByType,
@@ -9718,9 +9955,10 @@ __publicField(Fuel, "defaultConfig", {});
9718
9955
  assets,
9719
9956
  buildBlockExplorerUrl,
9720
9957
  cacheFor,
9958
+ cacheTxInputsFromOwner,
9959
+ calculateGasFee,
9721
9960
  calculateMetadataGasForTxCreate,
9722
9961
  calculateMetadataGasForTxScript,
9723
- calculatePriceWithFactor,
9724
9962
  calculateTransactionFee,
9725
9963
  coinQuantityfy,
9726
9964
  deferPromise,