@fuel-ts/account 0.0.0-rc-2021-20240423152230 → 0.0.0-rc-2037-20240423161807

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of @fuel-ts/account might be problematic. Click here for more details.

Files changed (66) hide show
  1. package/README.md +1 -1
  2. package/dist/account.d.ts +4 -5
  3. package/dist/account.d.ts.map +1 -1
  4. package/dist/configs.d.ts.map +1 -1
  5. package/dist/configs.global.js +1 -1
  6. package/dist/configs.global.js.map +1 -1
  7. package/dist/configs.js +1 -1
  8. package/dist/configs.js.map +1 -1
  9. package/dist/configs.mjs +1 -1
  10. package/dist/configs.mjs.map +1 -1
  11. package/dist/index.global.js +604 -829
  12. package/dist/index.global.js.map +1 -1
  13. package/dist/index.js +641 -857
  14. package/dist/index.js.map +1 -1
  15. package/dist/index.mjs +459 -680
  16. package/dist/index.mjs.map +1 -1
  17. package/dist/predicate/predicate.d.ts +18 -11
  18. package/dist/predicate/predicate.d.ts.map +1 -1
  19. package/dist/providers/__generated__/operations.d.ts +327 -821
  20. package/dist/providers/__generated__/operations.d.ts.map +1 -1
  21. package/dist/providers/coin-quantity.d.ts +1 -1
  22. package/dist/providers/coin-quantity.d.ts.map +1 -1
  23. package/dist/providers/coin.d.ts +1 -2
  24. package/dist/providers/coin.d.ts.map +1 -1
  25. package/dist/providers/message.d.ts +1 -6
  26. package/dist/providers/message.d.ts.map +1 -1
  27. package/dist/providers/provider.d.ts +27 -37
  28. package/dist/providers/provider.d.ts.map +1 -1
  29. package/dist/providers/transaction-request/create-transaction-request.d.ts.map +1 -1
  30. package/dist/providers/transaction-request/helpers.d.ts +10 -0
  31. package/dist/providers/transaction-request/helpers.d.ts.map +1 -0
  32. package/dist/providers/transaction-request/index.d.ts +1 -0
  33. package/dist/providers/transaction-request/index.d.ts.map +1 -1
  34. package/dist/providers/transaction-request/input.d.ts +2 -2
  35. package/dist/providers/transaction-request/input.d.ts.map +1 -1
  36. package/dist/providers/transaction-request/script-transaction-request.d.ts.map +1 -1
  37. package/dist/providers/transaction-request/transaction-request.d.ts +11 -6
  38. package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
  39. package/dist/providers/transaction-request/utils.d.ts +0 -3
  40. package/dist/providers/transaction-request/utils.d.ts.map +1 -1
  41. package/dist/providers/transaction-response/transaction-response.d.ts.map +1 -1
  42. package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts +0 -2
  43. package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts.map +1 -1
  44. package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts +2 -3
  45. package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts.map +1 -1
  46. package/dist/providers/transaction-summary/get-transaction-summary.d.ts.map +1 -1
  47. package/dist/providers/utils/gas.d.ts +2 -8
  48. package/dist/providers/utils/gas.d.ts.map +1 -1
  49. package/dist/test-utils/index.d.ts +1 -0
  50. package/dist/test-utils/index.d.ts.map +1 -1
  51. package/dist/test-utils/launchNode.d.ts.map +1 -1
  52. package/dist/test-utils/resources.d.ts +4 -0
  53. package/dist/test-utils/resources.d.ts.map +1 -0
  54. package/dist/test-utils/seedTestWallet.d.ts +1 -1
  55. package/dist/test-utils/seedTestWallet.d.ts.map +1 -1
  56. package/dist/test-utils/transactionRequest.d.ts +5 -0
  57. package/dist/test-utils/transactionRequest.d.ts.map +1 -0
  58. package/dist/test-utils.global.js +1082 -1547
  59. package/dist/test-utils.global.js.map +1 -1
  60. package/dist/test-utils.js +618 -839
  61. package/dist/test-utils.js.map +1 -1
  62. package/dist/test-utils.mjs +450 -674
  63. package/dist/test-utils.mjs.map +1 -1
  64. package/dist/wallet/base-wallet-unlocked.d.ts +2 -2
  65. package/dist/wallet/base-wallet-unlocked.d.ts.map +1 -1
  66. package/package.json +16 -16
package/dist/index.mjs CHANGED
@@ -32,9 +32,8 @@ import { Address as Address3 } from "@fuel-ts/address";
32
32
  import { BaseAssetId as BaseAssetId3 } from "@fuel-ts/address/configs";
33
33
  import { ErrorCode as ErrorCode15, FuelError as FuelError15 } from "@fuel-ts/errors";
34
34
  import { AbstractAccount } from "@fuel-ts/interfaces";
35
- import { bn as bn18 } from "@fuel-ts/math";
35
+ import { bn as bn17 } from "@fuel-ts/math";
36
36
  import { arrayify as arrayify14 } from "@fuel-ts/utils";
37
- import { clone as clone4 } from "ramda";
38
37
 
39
38
  // src/providers/coin-quantity.ts
40
39
  import { BaseAssetId } from "@fuel-ts/address/configs";
@@ -43,24 +42,24 @@ import { hexlify } from "@fuel-ts/utils";
43
42
  var coinQuantityfy = (coinQuantityLike) => {
44
43
  let assetId;
45
44
  let amount;
46
- let max;
45
+ let max2;
47
46
  if (Array.isArray(coinQuantityLike)) {
48
47
  amount = coinQuantityLike[0];
49
48
  assetId = coinQuantityLike[1] ?? BaseAssetId;
50
- max = coinQuantityLike[2] ?? void 0;
49
+ max2 = coinQuantityLike[2] ?? void 0;
51
50
  } else {
52
51
  amount = coinQuantityLike.amount;
53
52
  assetId = coinQuantityLike.assetId ?? BaseAssetId;
54
- max = coinQuantityLike.max ?? void 0;
53
+ max2 = coinQuantityLike.max ?? void 0;
55
54
  }
56
55
  const bnAmount = bn(amount);
57
56
  return {
58
57
  assetId: hexlify(assetId),
59
58
  amount: bnAmount.lt(1) ? bn(1) : bnAmount,
60
- max: max ? bn(max) : void 0
59
+ max: max2 ? bn(max2) : void 0
61
60
  };
62
61
  };
63
- var addAmountToCoinQuantities = (params) => {
62
+ var addAmountToAsset = (params) => {
64
63
  const { amount, assetId } = params;
65
64
  const coinQuantities = [...params.coinQuantities];
66
65
  const assetIdx = coinQuantities.findIndex((coinQuantity) => coinQuantity.assetId === assetId);
@@ -75,7 +74,7 @@ var addAmountToCoinQuantities = (params) => {
75
74
  // src/providers/provider.ts
76
75
  import { Address as Address2 } from "@fuel-ts/address";
77
76
  import { ErrorCode as ErrorCode13, FuelError as FuelError13 } from "@fuel-ts/errors";
78
- import { BN, bn as bn16 } from "@fuel-ts/math";
77
+ import { BN, bn as bn15, max } from "@fuel-ts/math";
79
78
  import {
80
79
  InputType as InputType7,
81
80
  TransactionType as TransactionType8,
@@ -91,40 +90,16 @@ import { clone as clone3 } from "ramda";
91
90
 
92
91
  // src/providers/__generated__/operations.ts
93
92
  import gql from "graphql-tag";
94
- var TransactionStatusSubscriptionFragmentFragmentDoc = gql`
95
- fragment transactionStatusSubscriptionFragment on TransactionStatus {
96
- type: __typename
97
- ... on SubmittedStatus {
98
- time
99
- }
100
- ... on SuccessStatus {
101
- block {
102
- id
103
- }
104
- time
105
- programState {
106
- returnType
107
- data
108
- }
109
- }
110
- ... on FailureStatus {
111
- block {
112
- id
113
- }
114
- time
115
- reason
116
- }
117
- ... on SqueezedOutStatus {
118
- reason
119
- }
120
- }
121
- `;
122
93
  var ReceiptFragmentFragmentDoc = gql`
123
94
  fragment receiptFragment on Receipt {
124
- id
95
+ contract {
96
+ id
97
+ }
125
98
  pc
126
99
  is
127
- to
100
+ to {
101
+ id
102
+ }
128
103
  toAddress
129
104
  amount
130
105
  assetId
@@ -162,16 +137,10 @@ var TransactionStatusFragmentFragmentDoc = gql`
162
137
  id
163
138
  }
164
139
  time
165
- receipts {
166
- ...receiptFragment
167
- }
168
140
  programState {
169
141
  returnType
170
142
  data
171
143
  }
172
- receipts {
173
- ...receiptFragment
174
- }
175
144
  }
176
145
  ... on FailureStatus {
177
146
  block {
@@ -179,24 +148,26 @@ var TransactionStatusFragmentFragmentDoc = gql`
179
148
  }
180
149
  time
181
150
  reason
182
- receipts {
183
- ...receiptFragment
184
- }
185
151
  }
186
152
  ... on SqueezedOutStatus {
187
153
  reason
188
154
  }
189
155
  }
190
- ${ReceiptFragmentFragmentDoc}`;
156
+ `;
191
157
  var TransactionFragmentFragmentDoc = gql`
192
158
  fragment transactionFragment on Transaction {
193
159
  id
194
160
  rawPayload
161
+ gasPrice
162
+ receipts {
163
+ ...receiptFragment
164
+ }
195
165
  status {
196
166
  ...transactionStatusFragment
197
167
  }
198
168
  }
199
- ${TransactionStatusFragmentFragmentDoc}`;
169
+ ${ReceiptFragmentFragmentDoc}
170
+ ${TransactionStatusFragmentFragmentDoc}`;
200
171
  var InputEstimatePredicatesFragmentFragmentDoc = gql`
201
172
  fragment inputEstimatePredicatesFragment on Input {
202
173
  ... on InputCoin {
@@ -214,46 +185,6 @@ var TransactionEstimatePredicatesFragmentFragmentDoc = gql`
214
185
  }
215
186
  }
216
187
  ${InputEstimatePredicatesFragmentFragmentDoc}`;
217
- var DryRunFailureStatusFragmentFragmentDoc = gql`
218
- fragment dryRunFailureStatusFragment on DryRunFailureStatus {
219
- reason
220
- programState {
221
- returnType
222
- data
223
- }
224
- }
225
- `;
226
- var DryRunSuccessStatusFragmentFragmentDoc = gql`
227
- fragment dryRunSuccessStatusFragment on DryRunSuccessStatus {
228
- programState {
229
- returnType
230
- data
231
- }
232
- }
233
- `;
234
- var DryRunTransactionStatusFragmentFragmentDoc = gql`
235
- fragment dryRunTransactionStatusFragment on DryRunTransactionStatus {
236
- ... on DryRunFailureStatus {
237
- ...dryRunFailureStatusFragment
238
- }
239
- ... on DryRunSuccessStatus {
240
- ...dryRunSuccessStatusFragment
241
- }
242
- }
243
- ${DryRunFailureStatusFragmentFragmentDoc}
244
- ${DryRunSuccessStatusFragmentFragmentDoc}`;
245
- var DryRunTransactionExecutionStatusFragmentFragmentDoc = gql`
246
- fragment dryRunTransactionExecutionStatusFragment on DryRunTransactionExecutionStatus {
247
- id
248
- status {
249
- ...dryRunTransactionStatusFragment
250
- }
251
- receipts {
252
- ...receiptFragment
253
- }
254
- }
255
- ${DryRunTransactionStatusFragmentFragmentDoc}
256
- ${ReceiptFragmentFragmentDoc}`;
257
188
  var CoinFragmentFragmentDoc = gql`
258
189
  fragment coinFragment on Coin {
259
190
  __typename
@@ -261,6 +192,7 @@ var CoinFragmentFragmentDoc = gql`
261
192
  owner
262
193
  amount
263
194
  assetId
195
+ maturity
264
196
  blockCreated
265
197
  txCreatedIdx
266
198
  }
@@ -299,32 +231,26 @@ var MessageProofFragmentFragmentDoc = gql`
299
231
  messageBlockHeader {
300
232
  id
301
233
  daHeight
302
- consensusParametersVersion
303
- stateTransitionBytecodeVersion
304
234
  transactionsCount
305
- messageReceiptCount
306
235
  transactionsRoot
307
- messageOutboxRoot
308
- eventInboxRoot
309
236
  height
310
237
  prevRoot
311
238
  time
312
239
  applicationHash
240
+ messageReceiptRoot
241
+ messageReceiptCount
313
242
  }
314
243
  commitBlockHeader {
315
244
  id
316
245
  daHeight
317
- consensusParametersVersion
318
- stateTransitionBytecodeVersion
319
246
  transactionsCount
320
- messageReceiptCount
321
247
  transactionsRoot
322
- messageOutboxRoot
323
- eventInboxRoot
324
248
  height
325
249
  prevRoot
326
250
  time
327
251
  applicationHash
252
+ messageReceiptRoot
253
+ messageReceiptCount
328
254
  }
329
255
  sender
330
256
  recipient
@@ -343,8 +269,8 @@ var BalanceFragmentFragmentDoc = gql`
343
269
  var BlockFragmentFragmentDoc = gql`
344
270
  fragment blockFragment on Block {
345
271
  id
346
- height
347
272
  header {
273
+ height
348
274
  time
349
275
  }
350
276
  transactions {
@@ -402,11 +328,6 @@ var DependentCostFragmentFragmentDoc = gql`
402
328
  `;
403
329
  var GasCostsFragmentFragmentDoc = gql`
404
330
  fragment GasCostsFragment on GasCosts {
405
- version {
406
- ... on Version {
407
- value
408
- }
409
- }
410
331
  add
411
332
  addi
412
333
  aloc
@@ -419,6 +340,7 @@ var GasCostsFragmentFragmentDoc = gql`
419
340
  cb
420
341
  cfei
421
342
  cfsi
343
+ croo
422
344
  div
423
345
  divi
424
346
  ecr1
@@ -501,9 +423,6 @@ var GasCostsFragmentFragmentDoc = gql`
501
423
  ccp {
502
424
  ...DependentCostFragment
503
425
  }
504
- croo {
505
- ...DependentCostFragment
506
- }
507
426
  csiz {
508
427
  ...DependentCostFragment
509
428
  }
@@ -563,11 +482,6 @@ var GasCostsFragmentFragmentDoc = gql`
563
482
  ${DependentCostFragmentFragmentDoc}`;
564
483
  var ConsensusParametersFragmentFragmentDoc = gql`
565
484
  fragment consensusParametersFragment on ConsensusParameters {
566
- version {
567
- ... on Version {
568
- value
569
- }
570
- }
571
485
  txParams {
572
486
  ...TxParametersFragment
573
487
  }
@@ -627,9 +541,18 @@ var NodeInfoFragmentFragmentDoc = gql`
627
541
  fragment nodeInfoFragment on NodeInfo {
628
542
  utxoValidation
629
543
  vmBacktrace
544
+ minGasPrice
630
545
  maxTx
631
546
  maxDepth
632
547
  nodeVersion
548
+ peers {
549
+ id
550
+ addresses
551
+ clientVersion
552
+ blockHeight
553
+ lastHeartbeatMs
554
+ appScore
555
+ }
633
556
  }
634
557
  `;
635
558
  var GetVersionDocument = gql`
@@ -664,9 +587,13 @@ var GetTransactionWithReceiptsDocument = gql`
664
587
  query getTransactionWithReceipts($transactionId: TransactionId!) {
665
588
  transaction(id: $transactionId) {
666
589
  ...transactionFragment
590
+ receipts {
591
+ ...receiptFragment
592
+ }
667
593
  }
668
594
  }
669
- ${TransactionFragmentFragmentDoc}`;
595
+ ${TransactionFragmentFragmentDoc}
596
+ ${ReceiptFragmentFragmentDoc}`;
670
597
  var GetTransactionsDocument = gql`
671
598
  query getTransactions($after: String, $before: String, $first: Int, $last: Int) {
672
599
  transactions(after: $after, before: $before, first: $first, last: $last) {
@@ -794,20 +721,6 @@ var GetBalanceDocument = gql`
794
721
  }
795
722
  }
796
723
  ${BalanceFragmentFragmentDoc}`;
797
- var GetLatestGasPriceDocument = gql`
798
- query getLatestGasPrice {
799
- latestGasPrice {
800
- gasPrice
801
- }
802
- }
803
- `;
804
- var EstimateGasPriceDocument = gql`
805
- query estimateGasPrice($blockHorizon: U32!) {
806
- estimateGasPrice(blockHorizon: $blockHorizon) {
807
- gasPrice
808
- }
809
- }
810
- `;
811
724
  var GetBalancesDocument = gql`
812
725
  query getBalances($filter: BalanceFilterInput!, $after: String, $before: String, $first: Int, $last: Int) {
813
726
  balances(
@@ -862,12 +775,12 @@ var GetMessageStatusDocument = gql`
862
775
  }
863
776
  `;
864
777
  var DryRunDocument = gql`
865
- mutation dryRun($encodedTransactions: [HexString!]!, $utxoValidation: Boolean) {
866
- dryRun(txs: $encodedTransactions, utxoValidation: $utxoValidation) {
867
- ...dryRunTransactionExecutionStatusFragment
778
+ mutation dryRun($encodedTransaction: HexString!, $utxoValidation: Boolean) {
779
+ dryRun(tx: $encodedTransaction, utxoValidation: $utxoValidation) {
780
+ ...receiptFragment
868
781
  }
869
782
  }
870
- ${DryRunTransactionExecutionStatusFragmentFragmentDoc}`;
783
+ ${ReceiptFragmentFragmentDoc}`;
871
784
  var SubmitDocument = gql`
872
785
  mutation submit($encodedTransaction: HexString!) {
873
786
  submit(tx: $encodedTransaction) {
@@ -886,17 +799,17 @@ var ProduceBlocksDocument = gql`
886
799
  var SubmitAndAwaitDocument = gql`
887
800
  subscription submitAndAwait($encodedTransaction: HexString!) {
888
801
  submitAndAwait(tx: $encodedTransaction) {
889
- ...transactionStatusSubscriptionFragment
802
+ ...transactionStatusFragment
890
803
  }
891
804
  }
892
- ${TransactionStatusSubscriptionFragmentFragmentDoc}`;
805
+ ${TransactionStatusFragmentFragmentDoc}`;
893
806
  var StatusChangeDocument = gql`
894
807
  subscription statusChange($transactionId: TransactionId!) {
895
808
  statusChange(id: $transactionId) {
896
- ...transactionStatusSubscriptionFragment
809
+ ...transactionStatusFragment
897
810
  }
898
811
  }
899
- ${TransactionStatusSubscriptionFragmentFragmentDoc}`;
812
+ ${TransactionStatusFragmentFragmentDoc}`;
900
813
  function getSdk(requester) {
901
814
  return {
902
815
  getVersion(variables, options) {
@@ -950,12 +863,6 @@ function getSdk(requester) {
950
863
  getBalance(variables, options) {
951
864
  return requester(GetBalanceDocument, variables, options);
952
865
  },
953
- getLatestGasPrice(variables, options) {
954
- return requester(GetLatestGasPriceDocument, variables, options);
955
- },
956
- estimateGasPrice(variables, options) {
957
- return requester(EstimateGasPriceDocument, variables, options);
958
- },
959
866
  getBalances(variables, options) {
960
867
  return requester(GetBalancesDocument, variables, options);
961
868
  },
@@ -1149,9 +1056,10 @@ var inputify = (value) => {
1149
1056
  txIndex: toNumber(arrayify(value.txPointer).slice(8, 16))
1150
1057
  },
1151
1058
  witnessIndex: value.witnessIndex,
1059
+ maturity: value.maturity ?? 0,
1152
1060
  predicateGasUsed: bn2(value.predicateGasUsed),
1153
- predicateLength: bn2(predicate.length),
1154
- predicateDataLength: bn2(predicateData.length),
1061
+ predicateLength: predicate.length,
1062
+ predicateDataLength: predicateData.length,
1155
1063
  predicate: hexlify3(predicate),
1156
1064
  predicateData: hexlify3(predicateData)
1157
1065
  };
@@ -1182,8 +1090,8 @@ var inputify = (value) => {
1182
1090
  nonce: hexlify3(value.nonce),
1183
1091
  witnessIndex: value.witnessIndex,
1184
1092
  predicateGasUsed: bn2(value.predicateGasUsed),
1185
- predicateLength: bn2(predicate.length),
1186
- predicateDataLength: bn2(predicateData.length),
1093
+ predicateLength: predicate.length,
1094
+ predicateDataLength: predicateData.length,
1187
1095
  predicate: hexlify3(predicate),
1188
1096
  predicateData: hexlify3(predicateData),
1189
1097
  data: hexlify3(data),
@@ -1265,7 +1173,7 @@ import { bn as bn7 } from "@fuel-ts/math";
1265
1173
  import {
1266
1174
  PolicyType,
1267
1175
  TransactionCoder,
1268
- InputType as InputType2,
1176
+ InputType as InputType3,
1269
1177
  OutputType as OutputType2,
1270
1178
  TransactionType
1271
1179
  } from "@fuel-ts/transactions";
@@ -1313,8 +1221,8 @@ function assembleReceiptByType(receipt) {
1313
1221
  case "CALL" /* Call */: {
1314
1222
  const callReceipt = {
1315
1223
  type: ReceiptType.Call,
1316
- from: hexOrZero(receipt.id || receipt.contractId),
1317
- to: hexOrZero(receipt?.to),
1224
+ from: hexOrZero(receipt.contract?.id),
1225
+ to: hexOrZero(receipt?.to?.id),
1318
1226
  amount: bn4(receipt.amount),
1319
1227
  assetId: hexOrZero(receipt.assetId),
1320
1228
  gas: bn4(receipt.gas),
@@ -1328,7 +1236,7 @@ function assembleReceiptByType(receipt) {
1328
1236
  case "RETURN" /* Return */: {
1329
1237
  const returnReceipt = {
1330
1238
  type: ReceiptType.Return,
1331
- id: hexOrZero(receipt.id || receipt.contractId),
1239
+ id: hexOrZero(receipt.contract?.id),
1332
1240
  val: bn4(receipt.val),
1333
1241
  pc: bn4(receipt.pc),
1334
1242
  is: bn4(receipt.is)
@@ -1338,7 +1246,7 @@ function assembleReceiptByType(receipt) {
1338
1246
  case "RETURN_DATA" /* ReturnData */: {
1339
1247
  const returnDataReceipt = {
1340
1248
  type: ReceiptType.ReturnData,
1341
- id: hexOrZero(receipt.id || receipt.contractId),
1249
+ id: hexOrZero(receipt.contract?.id),
1342
1250
  ptr: bn4(receipt.ptr),
1343
1251
  len: bn4(receipt.len),
1344
1252
  digest: hexOrZero(receipt.digest),
@@ -1350,7 +1258,7 @@ function assembleReceiptByType(receipt) {
1350
1258
  case "PANIC" /* Panic */: {
1351
1259
  const panicReceipt = {
1352
1260
  type: ReceiptType.Panic,
1353
- id: hexOrZero(receipt.id),
1261
+ id: hexOrZero(receipt.contract?.id),
1354
1262
  reason: bn4(receipt.reason),
1355
1263
  pc: bn4(receipt.pc),
1356
1264
  is: bn4(receipt.is),
@@ -1361,7 +1269,7 @@ function assembleReceiptByType(receipt) {
1361
1269
  case "REVERT" /* Revert */: {
1362
1270
  const revertReceipt = {
1363
1271
  type: ReceiptType.Revert,
1364
- id: hexOrZero(receipt.id || receipt.contractId),
1272
+ id: hexOrZero(receipt.contract?.id),
1365
1273
  val: bn4(receipt.ra),
1366
1274
  pc: bn4(receipt.pc),
1367
1275
  is: bn4(receipt.is)
@@ -1371,7 +1279,7 @@ function assembleReceiptByType(receipt) {
1371
1279
  case "LOG" /* Log */: {
1372
1280
  const logReceipt = {
1373
1281
  type: ReceiptType.Log,
1374
- id: hexOrZero(receipt.id || receipt.contractId),
1282
+ id: hexOrZero(receipt.contract?.id),
1375
1283
  val0: bn4(receipt.ra),
1376
1284
  val1: bn4(receipt.rb),
1377
1285
  val2: bn4(receipt.rc),
@@ -1384,7 +1292,7 @@ function assembleReceiptByType(receipt) {
1384
1292
  case "LOG_DATA" /* LogData */: {
1385
1293
  const logDataReceipt = {
1386
1294
  type: ReceiptType.LogData,
1387
- id: hexOrZero(receipt.id || receipt.contractId),
1295
+ id: hexOrZero(receipt.contract?.id),
1388
1296
  val0: bn4(receipt.ra),
1389
1297
  val1: bn4(receipt.rb),
1390
1298
  ptr: bn4(receipt.ptr),
@@ -1398,8 +1306,8 @@ function assembleReceiptByType(receipt) {
1398
1306
  case "TRANSFER" /* Transfer */: {
1399
1307
  const transferReceipt = {
1400
1308
  type: ReceiptType.Transfer,
1401
- from: hexOrZero(receipt.id || receipt.contractId),
1402
- to: hexOrZero(receipt.toAddress || receipt?.to),
1309
+ from: hexOrZero(receipt.contract?.id),
1310
+ to: hexOrZero(receipt.toAddress || receipt?.to?.id),
1403
1311
  amount: bn4(receipt.amount),
1404
1312
  assetId: hexOrZero(receipt.assetId),
1405
1313
  pc: bn4(receipt.pc),
@@ -1410,8 +1318,8 @@ function assembleReceiptByType(receipt) {
1410
1318
  case "TRANSFER_OUT" /* TransferOut */: {
1411
1319
  const transferOutReceipt = {
1412
1320
  type: ReceiptType.TransferOut,
1413
- from: hexOrZero(receipt.id || receipt.contractId),
1414
- to: hexOrZero(receipt.toAddress || receipt.to),
1321
+ from: hexOrZero(receipt.contract?.id),
1322
+ to: hexOrZero(receipt.toAddress || receipt.to?.id),
1415
1323
  amount: bn4(receipt.amount),
1416
1324
  assetId: hexOrZero(receipt.assetId),
1417
1325
  pc: bn4(receipt.pc),
@@ -1454,7 +1362,7 @@ function assembleReceiptByType(receipt) {
1454
1362
  return receiptMessageOut;
1455
1363
  }
1456
1364
  case "MINT" /* Mint */: {
1457
- const contractId = hexOrZero(receipt.id || receipt.contractId);
1365
+ const contractId = hexOrZero(receipt.contract?.id);
1458
1366
  const subId = hexOrZero(receipt.subId);
1459
1367
  const assetId = ReceiptMintCoder.getAssetId(contractId, subId);
1460
1368
  const mintReceipt = {
@@ -1469,7 +1377,7 @@ function assembleReceiptByType(receipt) {
1469
1377
  return mintReceipt;
1470
1378
  }
1471
1379
  case "BURN" /* Burn */: {
1472
- const contractId = hexOrZero(receipt.id || receipt.contractId);
1380
+ const contractId = hexOrZero(receipt.contract?.id);
1473
1381
  const subId = hexOrZero(receipt.subId);
1474
1382
  const assetId = ReceiptBurnCoder.getAssetId(contractId, subId);
1475
1383
  const burnReceipt = {
@@ -1554,6 +1462,7 @@ var buildBlockExplorerUrl = (options = {}) => {
1554
1462
  import { bn as bn5 } from "@fuel-ts/math";
1555
1463
  import { ReceiptType as ReceiptType2 } from "@fuel-ts/transactions";
1556
1464
  import { arrayify as arrayify3 } from "@fuel-ts/utils";
1465
+ var calculatePriceWithFactor = (gas, gasPrice, priceFactor) => bn5(Math.ceil(gas.mul(gasPrice).toNumber() / priceFactor.toNumber()));
1557
1466
  var getGasUsedFromReceipts = (receipts) => {
1558
1467
  const scriptResult = receipts.filter(
1559
1468
  (receipt) => receipt.type === ReceiptType2.ScriptResult
@@ -1574,28 +1483,18 @@ function resolveGasDependentCosts(byteSize, gasDependentCost) {
1574
1483
  }
1575
1484
  function gasUsedByInputs(inputs, txBytesSize, gasCosts) {
1576
1485
  const witnessCache = [];
1577
- const chargeableInputs = inputs.filter((input) => {
1578
- const isCoinOrMessage = "owner" in input || "sender" in input;
1579
- if (isCoinOrMessage) {
1580
- if ("predicate" in input && input.predicate && input.predicate !== "0x") {
1581
- return true;
1582
- }
1583
- if (!witnessCache.includes(input.witnessIndex)) {
1584
- witnessCache.push(input.witnessIndex);
1585
- return true;
1586
- }
1587
- }
1588
- return false;
1589
- });
1590
- const vmInitializationCost = resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization);
1591
- const totalGas = chargeableInputs.reduce((total, input) => {
1486
+ const totalGas = inputs.reduce((total, input) => {
1592
1487
  if ("predicate" in input && input.predicate && input.predicate !== "0x") {
1593
1488
  return total.add(
1594
- vmInitializationCost.add(resolveGasDependentCosts(arrayify3(input.predicate).length, gasCosts.contractRoot)).add(bn5(input.predicateGasUsed))
1489
+ resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization).add(resolveGasDependentCosts(arrayify3(input.predicate).length, gasCosts.contractRoot)).add(bn5(input.predicateGasUsed))
1595
1490
  );
1596
1491
  }
1597
- return total.add(gasCosts.ecr1);
1598
- }, bn5(0));
1492
+ if ("witnessIndex" in input && !witnessCache.includes(input.witnessIndex)) {
1493
+ witnessCache.push(input.witnessIndex);
1494
+ return total.add(gasCosts.ecr1);
1495
+ }
1496
+ return total;
1497
+ }, bn5());
1599
1498
  return totalGas;
1600
1499
  }
1601
1500
  function getMinGas(params) {
@@ -1607,20 +1506,12 @@ function getMinGas(params) {
1607
1506
  return minGas;
1608
1507
  }
1609
1508
  function getMaxGas(params) {
1610
- const {
1611
- gasPerByte,
1612
- witnessesLength,
1613
- witnessLimit,
1614
- minGas,
1615
- gasLimit = bn5(0),
1616
- maxGasPerTx
1617
- } = params;
1509
+ const { gasPerByte, witnessesLength, witnessLimit, minGas, gasLimit = bn5(0) } = params;
1618
1510
  let remainingAllowedWitnessGas = bn5(0);
1619
1511
  if (witnessLimit?.gt(0) && witnessLimit.gte(witnessesLength)) {
1620
1512
  remainingAllowedWitnessGas = bn5(witnessLimit).sub(witnessesLength).mul(gasPerByte);
1621
1513
  }
1622
- const maxGas = remainingAllowedWitnessGas.add(minGas).add(gasLimit);
1623
- return maxGas.gte(maxGasPerTx) ? maxGasPerTx : maxGas;
1514
+ return remainingAllowedWitnessGas.add(minGas).add(gasLimit);
1624
1515
  }
1625
1516
  function calculateMetadataGasForTxCreate({
1626
1517
  gasCosts,
@@ -1642,10 +1533,6 @@ function calculateMetadataGasForTxScript({
1642
1533
  }) {
1643
1534
  return resolveGasDependentCosts(txBytesSize, gasCosts.s256);
1644
1535
  }
1645
- var calculateGasFee = (params) => {
1646
- const { gas, gasPrice, priceFactor, tip } = params;
1647
- return gas.mul(gasPrice).div(priceFactor).add(tip);
1648
- };
1649
1536
 
1650
1537
  // src/providers/utils/json.ts
1651
1538
  import { hexlify as hexlify5 } from "@fuel-ts/utils";
@@ -1789,6 +1676,28 @@ var NoWitnessByOwnerError = class extends Error {
1789
1676
  name = "NoWitnessByOwnerError";
1790
1677
  };
1791
1678
 
1679
+ // src/providers/transaction-request/helpers.ts
1680
+ import { InputType as InputType2 } from "@fuel-ts/transactions";
1681
+ var isRequestInputCoin = (input) => input.type === InputType2.Coin;
1682
+ var isRequestInputMessage = (input) => input.type === InputType2.Message;
1683
+ var isRequestInputResource = (input) => isRequestInputCoin(input) || isRequestInputMessage(input);
1684
+ var getRequestInputResourceOwner = (input) => isRequestInputCoin(input) ? input.owner : input.recipient;
1685
+ var isRequestInputResourceFromOwner = (input, owner) => getRequestInputResourceOwner(input) === owner.toB256();
1686
+ var cacheResources = (resources) => resources.reduce(
1687
+ (cache2, resource) => {
1688
+ if (isCoin(resource)) {
1689
+ cache2.utxos.push(resource.id);
1690
+ } else {
1691
+ cache2.messages.push(resource.nonce);
1692
+ }
1693
+ return cache2;
1694
+ },
1695
+ {
1696
+ utxos: [],
1697
+ messages: []
1698
+ }
1699
+ );
1700
+
1792
1701
  // src/providers/transaction-request/witness.ts
1793
1702
  import { arrayify as arrayify4, hexlify as hexlify6 } from "@fuel-ts/utils";
1794
1703
  var witnessify = (value) => {
@@ -1802,7 +1711,7 @@ var witnessify = (value) => {
1802
1711
  // src/providers/transaction-request/transaction-request.ts
1803
1712
  var BaseTransactionRequest = class {
1804
1713
  /** Gas price for transaction */
1805
- tip;
1714
+ gasPrice;
1806
1715
  /** Block until which tx cannot be included */
1807
1716
  maturity;
1808
1717
  /** The maximum fee payable by this transaction using BASE_ASSET. */
@@ -1821,7 +1730,7 @@ var BaseTransactionRequest = class {
1821
1730
  * @param baseTransactionRequest - Optional object containing properties to initialize the transaction request.
1822
1731
  */
1823
1732
  constructor({
1824
- tip,
1733
+ gasPrice,
1825
1734
  maturity,
1826
1735
  maxFee,
1827
1736
  witnessLimit,
@@ -1829,7 +1738,7 @@ var BaseTransactionRequest = class {
1829
1738
  outputs,
1830
1739
  witnesses
1831
1740
  } = {}) {
1832
- this.tip = bn7(tip);
1741
+ this.gasPrice = bn7(gasPrice);
1833
1742
  this.maturity = maturity ?? 0;
1834
1743
  this.witnessLimit = witnessLimit ? bn7(witnessLimit) : void 0;
1835
1744
  this.maxFee = maxFee ? bn7(maxFee) : void 0;
@@ -1840,9 +1749,9 @@ var BaseTransactionRequest = class {
1840
1749
  static getPolicyMeta(req) {
1841
1750
  let policyTypes = 0;
1842
1751
  const policies = [];
1843
- if (req.tip) {
1844
- policyTypes += PolicyType.Tip;
1845
- policies.push({ data: req.tip, type: PolicyType.Tip });
1752
+ if (req.gasPrice) {
1753
+ policyTypes += PolicyType.GasPrice;
1754
+ policies.push({ data: req.gasPrice, type: PolicyType.GasPrice });
1846
1755
  }
1847
1756
  if (req.witnessLimit) {
1848
1757
  policyTypes += PolicyType.WitnessLimit;
@@ -1979,7 +1888,7 @@ var BaseTransactionRequest = class {
1979
1888
  */
1980
1889
  getCoinInputs() {
1981
1890
  return this.inputs.filter(
1982
- (input) => input.type === InputType2.Coin
1891
+ (input) => input.type === InputType3.Coin
1983
1892
  );
1984
1893
  }
1985
1894
  /**
@@ -2011,9 +1920,9 @@ var BaseTransactionRequest = class {
2011
1920
  const ownerAddress = addressify(owner);
2012
1921
  const found = this.inputs.find((input) => {
2013
1922
  switch (input.type) {
2014
- case InputType2.Coin:
1923
+ case InputType3.Coin:
2015
1924
  return hexlify7(input.owner) === ownerAddress.toB256();
2016
- case InputType2.Message:
1925
+ case InputType3.Message:
2017
1926
  return hexlify7(input.recipient) === ownerAddress.toB256();
2018
1927
  default:
2019
1928
  return false;
@@ -2026,11 +1935,13 @@ var BaseTransactionRequest = class {
2026
1935
  * assetId, if one it was not added yet.
2027
1936
  *
2028
1937
  * @param coin - Coin resource.
1938
+ * @param predicate - Predicate bytes.
1939
+ * @param predicateData - Predicate data bytes.
2029
1940
  */
2030
1941
  addCoinInput(coin) {
2031
- const { assetId, owner, amount } = coin;
1942
+ const { assetId, owner, amount, id, predicate } = coin;
2032
1943
  let witnessIndex;
2033
- if (coin.predicate) {
1944
+ if (predicate) {
2034
1945
  witnessIndex = 0;
2035
1946
  } else {
2036
1947
  witnessIndex = this.getCoinInputWitnessIndexByOwner(owner);
@@ -2039,13 +1950,14 @@ var BaseTransactionRequest = class {
2039
1950
  }
2040
1951
  }
2041
1952
  const input = {
2042
- ...coin,
2043
- type: InputType2.Coin,
1953
+ id,
1954
+ type: InputType3.Coin,
2044
1955
  owner: owner.toB256(),
2045
1956
  amount,
2046
1957
  assetId,
2047
1958
  txPointer: "0x00000000000000000000000000000000",
2048
- witnessIndex
1959
+ witnessIndex,
1960
+ predicate
2049
1961
  };
2050
1962
  this.pushInput(input);
2051
1963
  this.addChangeOutput(owner, assetId);
@@ -2055,12 +1967,14 @@ var BaseTransactionRequest = class {
2055
1967
  * baseAssetId, if one it was not added yet.
2056
1968
  *
2057
1969
  * @param message - Message resource.
1970
+ * @param predicate - Predicate bytes.
1971
+ * @param predicateData - Predicate data bytes.
2058
1972
  */
2059
1973
  addMessageInput(message) {
2060
- const { recipient, sender, amount } = message;
1974
+ const { recipient, sender, amount, predicate, nonce } = message;
2061
1975
  const assetId = BaseAssetId2;
2062
1976
  let witnessIndex;
2063
- if (message.predicate) {
1977
+ if (predicate) {
2064
1978
  witnessIndex = 0;
2065
1979
  } else {
2066
1980
  witnessIndex = this.getCoinInputWitnessIndexByOwner(recipient);
@@ -2069,12 +1983,13 @@ var BaseTransactionRequest = class {
2069
1983
  }
2070
1984
  }
2071
1985
  const input = {
2072
- ...message,
2073
- type: InputType2.Message,
1986
+ nonce,
1987
+ type: InputType3.Message,
2074
1988
  sender: sender.toB256(),
2075
1989
  recipient: recipient.toB256(),
2076
1990
  amount,
2077
- witnessIndex
1991
+ witnessIndex,
1992
+ predicate
2078
1993
  };
2079
1994
  this.pushInput(input);
2080
1995
  this.addChangeOutput(recipient, assetId);
@@ -2184,7 +2099,7 @@ var BaseTransactionRequest = class {
2184
2099
  }
2185
2100
  calculateMaxGas(chainInfo, minGas) {
2186
2101
  const { consensusParameters } = chainInfo;
2187
- const { gasPerByte, maxGasPerTx } = consensusParameters;
2102
+ const { gasPerByte } = consensusParameters;
2188
2103
  const witnessesLength = this.toTransaction().witnesses.reduce(
2189
2104
  (acc, wit) => acc + wit.dataLength,
2190
2105
  0
@@ -2193,8 +2108,7 @@ var BaseTransactionRequest = class {
2193
2108
  gasPerByte,
2194
2109
  minGas,
2195
2110
  witnessesLength,
2196
- witnessLimit: this.witnessLimit,
2197
- maxGasPerTx
2111
+ witnessLimit: this.witnessLimit
2198
2112
  });
2199
2113
  }
2200
2114
  /**
@@ -2212,20 +2126,17 @@ var BaseTransactionRequest = class {
2212
2126
  });
2213
2127
  const updateAssetInput = (assetId, quantity) => {
2214
2128
  const assetInput = findAssetInput(assetId);
2215
- let usedQuantity = quantity;
2216
- if (assetId === BaseAssetId2) {
2217
- usedQuantity = bn7("1000000000000000000");
2218
- }
2219
2129
  if (assetInput && "assetId" in assetInput) {
2220
2130
  assetInput.id = hexlify7(randomBytes(UTXO_ID_LEN2));
2221
- assetInput.amount = usedQuantity;
2131
+ assetInput.amount = quantity;
2222
2132
  } else {
2223
2133
  this.addResources([
2224
2134
  {
2225
2135
  id: hexlify7(randomBytes(UTXO_ID_LEN2)),
2226
- amount: usedQuantity,
2136
+ amount: quantity,
2227
2137
  assetId,
2228
2138
  owner: resourcesOwner || Address.fromRandom(),
2139
+ maturity: 0,
2229
2140
  blockCreated: bn7(1),
2230
2141
  txCreatedIdx: bn7(1)
2231
2142
  }
@@ -2257,16 +2168,20 @@ var BaseTransactionRequest = class {
2257
2168
  toJSON() {
2258
2169
  return normalizeJSON(this);
2259
2170
  }
2260
- updatePredicateGasUsed(inputs) {
2171
+ removeWitness(index) {
2172
+ this.witnesses.splice(index, 1);
2173
+ this.adjustWitnessIndexes(index);
2174
+ }
2175
+ updatePredicateInputs(inputs) {
2261
2176
  this.inputs.forEach((i) => {
2262
2177
  let correspondingInput;
2263
2178
  switch (i.type) {
2264
- case InputType2.Coin:
2265
- correspondingInput = inputs.find((x) => x.type === InputType2.Coin && x.owner === i.owner);
2179
+ case InputType3.Coin:
2180
+ correspondingInput = inputs.find((x) => x.type === InputType3.Coin && x.owner === i.owner);
2266
2181
  break;
2267
- case InputType2.Message:
2182
+ case InputType3.Message:
2268
2183
  correspondingInput = inputs.find(
2269
- (x) => x.type === InputType2.Message && x.sender === i.sender
2184
+ (x) => x.type === InputType3.Message && x.sender === i.sender
2270
2185
  );
2271
2186
  break;
2272
2187
  default:
@@ -2279,12 +2194,10 @@ var BaseTransactionRequest = class {
2279
2194
  }
2280
2195
  });
2281
2196
  }
2282
- shiftPredicateData() {
2283
- this.inputs.forEach((input) => {
2284
- if ("predicateData" in input && "paddPredicateData" in input && typeof input.paddPredicateData === "function") {
2285
- input.predicateData = input.paddPredicateData(
2286
- BaseTransactionRequest.getPolicyMeta(this).policies.length
2287
- );
2197
+ adjustWitnessIndexes(removedIndex) {
2198
+ this.inputs.filter(isRequestInputResource).forEach((input) => {
2199
+ if (input.witnessIndex > removedIndex) {
2200
+ input.witnessIndex -= 1;
2288
2201
  }
2289
2202
  });
2290
2203
  }
@@ -2300,7 +2213,7 @@ import { arrayify as arrayify6, hexlify as hexlify9 } from "@fuel-ts/utils";
2300
2213
  import { ZeroBytes32 as ZeroBytes325 } from "@fuel-ts/address/configs";
2301
2214
  import { uint64ToBytesBE, sha256 } from "@fuel-ts/hasher";
2302
2215
  import { bn as bn8 } from "@fuel-ts/math";
2303
- import { TransactionType as TransactionType2, InputType as InputType3, OutputType as OutputType3, TransactionCoder as TransactionCoder2 } from "@fuel-ts/transactions";
2216
+ import { TransactionType as TransactionType2, InputType as InputType4, OutputType as OutputType3, TransactionCoder as TransactionCoder2 } from "@fuel-ts/transactions";
2304
2217
  import { concat as concat2 } from "@fuel-ts/utils";
2305
2218
  import { clone as clone2 } from "ramda";
2306
2219
  function hashTransaction(transactionRequest, chainId) {
@@ -2311,7 +2224,7 @@ function hashTransaction(transactionRequest, chainId) {
2311
2224
  transaction.inputs = transaction.inputs.map((input) => {
2312
2225
  const inputClone = clone2(input);
2313
2226
  switch (inputClone.type) {
2314
- case InputType3.Coin: {
2227
+ case InputType4.Coin: {
2315
2228
  inputClone.txPointer = {
2316
2229
  blockHeight: 0,
2317
2230
  txIndex: 0
@@ -2319,11 +2232,11 @@ function hashTransaction(transactionRequest, chainId) {
2319
2232
  inputClone.predicateGasUsed = bn8(0);
2320
2233
  return inputClone;
2321
2234
  }
2322
- case InputType3.Message: {
2235
+ case InputType4.Message: {
2323
2236
  inputClone.predicateGasUsed = bn8(0);
2324
2237
  return inputClone;
2325
2238
  }
2326
- case InputType3.Contract: {
2239
+ case InputType4.Contract: {
2327
2240
  inputClone.txPointer = {
2328
2241
  blockHeight: 0,
2329
2242
  txIndex: 0
@@ -2434,8 +2347,9 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2434
2347
  return {
2435
2348
  type: TransactionType3.Create,
2436
2349
  ...baseTransaction,
2350
+ bytecodeLength: baseTransaction.witnesses[bytecodeWitnessIndex].dataLength / 4,
2437
2351
  bytecodeWitnessIndex,
2438
- storageSlotsCount: bn9(storageSlots.length),
2352
+ storageSlotsCount: storageSlots.length,
2439
2353
  salt: this.salt ? hexlify9(this.salt) : ZeroBytes326,
2440
2354
  storageSlots
2441
2355
  };
@@ -2488,7 +2402,7 @@ import { Interface } from "@fuel-ts/abi-coder";
2488
2402
  import { addressify as addressify2 } from "@fuel-ts/address";
2489
2403
  import { ZeroBytes32 as ZeroBytes327 } from "@fuel-ts/address/configs";
2490
2404
  import { bn as bn10 } from "@fuel-ts/math";
2491
- import { InputType as InputType4, OutputType as OutputType5, TransactionType as TransactionType4 } from "@fuel-ts/transactions";
2405
+ import { InputType as InputType5, OutputType as OutputType5, TransactionType as TransactionType4 } from "@fuel-ts/transactions";
2492
2406
  import { arrayify as arrayify8, hexlify as hexlify10 } from "@fuel-ts/utils";
2493
2407
 
2494
2408
  // src/providers/transaction-request/scripts.ts
@@ -2558,8 +2472,8 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2558
2472
  type: TransactionType4.Script,
2559
2473
  scriptGasLimit: this.gasLimit,
2560
2474
  ...super.getBaseTransaction(),
2561
- scriptLength: bn10(script.length),
2562
- scriptDataLength: bn10(scriptData.length),
2475
+ scriptLength: script.length,
2476
+ scriptDataLength: scriptData.length,
2563
2477
  receiptsRoot: ZeroBytes327,
2564
2478
  script: hexlify10(script),
2565
2479
  scriptData: hexlify10(scriptData)
@@ -2572,7 +2486,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2572
2486
  */
2573
2487
  getContractInputs() {
2574
2488
  return this.inputs.filter(
2575
- (input) => input.type === InputType4.Contract
2489
+ (input) => input.type === InputType5.Contract
2576
2490
  );
2577
2491
  }
2578
2492
  /**
@@ -2623,7 +2537,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2623
2537
  }
2624
2538
  calculateMaxGas(chainInfo, minGas) {
2625
2539
  const { consensusParameters } = chainInfo;
2626
- const { gasPerByte, maxGasPerTx } = consensusParameters;
2540
+ const { gasPerByte } = consensusParameters;
2627
2541
  const witnessesLength = this.toTransaction().witnesses.reduce(
2628
2542
  (acc, wit) => acc + wit.dataLength,
2629
2543
  0
@@ -2633,8 +2547,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2633
2547
  minGas,
2634
2548
  witnessesLength,
2635
2549
  witnessLimit: this.witnessLimit,
2636
- gasLimit: this.gasLimit,
2637
- maxGasPerTx
2550
+ gasLimit: this.gasLimit
2638
2551
  });
2639
2552
  }
2640
2553
  /**
@@ -2649,7 +2562,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2649
2562
  return this;
2650
2563
  }
2651
2564
  const inputIndex = super.pushInput({
2652
- type: InputType4.Contract,
2565
+ type: InputType5.Contract,
2653
2566
  contractId: contractAddress.toB256(),
2654
2567
  txPointer: "0x00000000000000000000000000000000"
2655
2568
  });
@@ -2691,7 +2604,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2691
2604
 
2692
2605
  // src/providers/transaction-request/utils.ts
2693
2606
  import { ErrorCode as ErrorCode8, FuelError as FuelError8 } from "@fuel-ts/errors";
2694
- import { TransactionType as TransactionType5, InputType as InputType5 } from "@fuel-ts/transactions";
2607
+ import { TransactionType as TransactionType5 } from "@fuel-ts/transactions";
2695
2608
  var transactionRequestify = (obj) => {
2696
2609
  if (obj instanceof ScriptTransactionRequest || obj instanceof CreateTransactionRequest) {
2697
2610
  return obj;
@@ -2709,31 +2622,14 @@ var transactionRequestify = (obj) => {
2709
2622
  }
2710
2623
  }
2711
2624
  };
2712
- var cacheTxInputsFromOwner = (inputs, owner) => inputs.reduce(
2713
- (acc, input) => {
2714
- if (input.type === InputType5.Coin && input.owner === owner) {
2715
- acc.utxos.push(input.id);
2716
- }
2717
- if (input.type === InputType5.Message && input.recipient === owner) {
2718
- acc.messages.push(input.nonce);
2719
- }
2720
- return acc;
2721
- },
2722
- {
2723
- utxos: [],
2724
- messages: []
2725
- }
2726
- );
2727
2625
 
2728
2626
  // src/providers/transaction-response/transaction-response.ts
2729
2627
  import { ErrorCode as ErrorCode12, FuelError as FuelError12 } from "@fuel-ts/errors";
2730
- import { bn as bn15 } from "@fuel-ts/math";
2628
+ import { bn as bn14 } from "@fuel-ts/math";
2731
2629
  import { TransactionCoder as TransactionCoder4 } from "@fuel-ts/transactions";
2732
2630
  import { arrayify as arrayify10 } from "@fuel-ts/utils";
2733
2631
 
2734
2632
  // src/providers/transaction-summary/assemble-transaction-summary.ts
2735
- import { bn as bn14 } from "@fuel-ts/math";
2736
- import { PolicyType as PolicyType3 } from "@fuel-ts/transactions";
2737
2633
  import { DateTime, hexlify as hexlify11 } from "@fuel-ts/utils";
2738
2634
 
2739
2635
  // src/providers/transaction-summary/calculate-transaction-fee.ts
@@ -2742,10 +2638,9 @@ import { PolicyType as PolicyType2, TransactionCoder as TransactionCoder3, Trans
2742
2638
  import { arrayify as arrayify9 } from "@fuel-ts/utils";
2743
2639
  var calculateTransactionFee = (params) => {
2744
2640
  const {
2745
- gasPrice,
2641
+ gasUsed,
2746
2642
  rawPayload,
2747
- tip,
2748
- consensusParameters: { gasCosts, feeParams, maxGasPerTx }
2643
+ consensusParameters: { gasCosts, feeParams }
2749
2644
  } = params;
2750
2645
  const gasPerByte = bn11(feeParams.gasPerByte);
2751
2646
  const gasPriceFactor = bn11(feeParams.gasPriceFactor);
@@ -2755,7 +2650,8 @@ var calculateTransactionFee = (params) => {
2755
2650
  return {
2756
2651
  fee: bn11(0),
2757
2652
  minFee: bn11(0),
2758
- maxFee: bn11(0)
2653
+ maxFee: bn11(0),
2654
+ feeFromGasUsed: bn11(0)
2759
2655
  };
2760
2656
  }
2761
2657
  const { type, witnesses, inputs, policies } = transaction;
@@ -2787,6 +2683,7 @@ var calculateTransactionFee = (params) => {
2787
2683
  metadataGas,
2788
2684
  txBytesSize: transactionBytes.length
2789
2685
  });
2686
+ const gasPrice = bn11(policies.find((policy) => policy.type === PolicyType2.GasPrice)?.data);
2790
2687
  const witnessLimit = policies.find((policy) => policy.type === PolicyType2.WitnessLimit)?.data;
2791
2688
  const witnessesLength = witnesses.reduce((acc, wit) => acc + wit.dataLength, 0);
2792
2689
  const maxGas = getMaxGas({
@@ -2794,25 +2691,17 @@ var calculateTransactionFee = (params) => {
2794
2691
  minGas,
2795
2692
  witnessesLength,
2796
2693
  gasLimit,
2797
- witnessLimit,
2798
- maxGasPerTx
2799
- });
2800
- const minFee = calculateGasFee({
2801
- gasPrice,
2802
- gas: minGas,
2803
- priceFactor: gasPriceFactor,
2804
- tip
2805
- });
2806
- const maxFee = calculateGasFee({
2807
- gasPrice,
2808
- gas: maxGas,
2809
- priceFactor: gasPriceFactor,
2810
- tip
2694
+ witnessLimit
2811
2695
  });
2696
+ const feeFromGasUsed = calculatePriceWithFactor(gasUsed, gasPrice, gasPriceFactor);
2697
+ const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor);
2698
+ const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor);
2699
+ const fee = minFee.add(feeFromGasUsed);
2812
2700
  return {
2701
+ fee,
2813
2702
  minFee,
2814
2703
  maxFee,
2815
- fee: maxFee
2704
+ feeFromGasUsed
2816
2705
  };
2817
2706
  };
2818
2707
 
@@ -3426,9 +3315,7 @@ function assembleTransactionSummary(params) {
3426
3315
  gqlTransactionStatus,
3427
3316
  abiMap = {},
3428
3317
  maxInputs,
3429
- gasCosts,
3430
- maxGasPerTx,
3431
- gasPrice
3318
+ gasCosts
3432
3319
  } = params;
3433
3320
  const gasUsed = getGasUsedFromReceipts(receipts);
3434
3321
  const rawPayload = hexlify11(transactionBytes);
@@ -3442,14 +3329,11 @@ function assembleTransactionSummary(params) {
3442
3329
  maxInputs
3443
3330
  });
3444
3331
  const typeName = getTransactionTypeName(transaction.type);
3445
- const tip = bn14(transaction.policies?.find((policy) => policy.type === PolicyType3.Tip)?.data);
3446
3332
  const { fee } = calculateTransactionFee({
3447
- gasPrice,
3333
+ gasUsed,
3448
3334
  rawPayload,
3449
- tip,
3450
3335
  consensusParameters: {
3451
3336
  gasCosts,
3452
- maxGasPerTx,
3453
3337
  feeParams: {
3454
3338
  gasPerByte,
3455
3339
  gasPriceFactor
@@ -3509,7 +3393,7 @@ var TransactionResponse = class {
3509
3393
  /** Current provider */
3510
3394
  provider;
3511
3395
  /** Gas used on the transaction */
3512
- gasUsed = bn15(0);
3396
+ gasUsed = bn14(0);
3513
3397
  /** The graphql Transaction with receipts object. */
3514
3398
  gqlTransaction;
3515
3399
  abis;
@@ -3587,13 +3471,8 @@ var TransactionResponse = class {
3587
3471
  const decodedTransaction = this.decodeTransaction(
3588
3472
  transaction
3589
3473
  );
3590
- let txReceipts = [];
3591
- if (transaction?.status && "receipts" in transaction.status) {
3592
- txReceipts = transaction.status.receipts;
3593
- }
3594
- const receipts = txReceipts.map(processGqlReceipt) || [];
3595
- const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = this.provider.getGasConfig();
3596
- const gasPrice = await this.provider.getLatestGasPrice();
3474
+ const receipts = transaction.receipts?.map(processGqlReceipt) || [];
3475
+ const { gasPerByte, gasPriceFactor, gasCosts } = this.provider.getGasConfig();
3597
3476
  const maxInputs = this.provider.getChain().consensusParameters.maxInputs;
3598
3477
  const transactionSummary = assembleTransactionSummary({
3599
3478
  id: this.id,
@@ -3605,9 +3484,7 @@ var TransactionResponse = class {
3605
3484
  gasPriceFactor,
3606
3485
  abiMap: contractsAbiMap,
3607
3486
  maxInputs,
3608
- gasCosts,
3609
- maxGasPerTx,
3610
- gasPrice
3487
+ gasCosts
3611
3488
  });
3612
3489
  return transactionSummary;
3613
3490
  }
@@ -3734,29 +3611,29 @@ var processGqlChain = (chain) => {
3734
3611
  const { contractParams, feeParams, predicateParams, scriptParams, txParams, gasCosts } = consensusParameters;
3735
3612
  return {
3736
3613
  name,
3737
- baseChainHeight: bn16(daHeight),
3614
+ baseChainHeight: bn15(daHeight),
3738
3615
  consensusParameters: {
3739
- contractMaxSize: bn16(contractParams.contractMaxSize),
3740
- maxInputs: bn16(txParams.maxInputs),
3741
- maxOutputs: bn16(txParams.maxOutputs),
3742
- maxWitnesses: bn16(txParams.maxWitnesses),
3743
- maxGasPerTx: bn16(txParams.maxGasPerTx),
3744
- maxScriptLength: bn16(scriptParams.maxScriptLength),
3745
- maxScriptDataLength: bn16(scriptParams.maxScriptDataLength),
3746
- maxStorageSlots: bn16(contractParams.maxStorageSlots),
3747
- maxPredicateLength: bn16(predicateParams.maxPredicateLength),
3748
- maxPredicateDataLength: bn16(predicateParams.maxPredicateDataLength),
3749
- maxGasPerPredicate: bn16(predicateParams.maxGasPerPredicate),
3750
- gasPriceFactor: bn16(feeParams.gasPriceFactor),
3751
- gasPerByte: bn16(feeParams.gasPerByte),
3752
- maxMessageDataLength: bn16(predicateParams.maxMessageDataLength),
3753
- chainId: bn16(consensusParameters.chainId),
3616
+ contractMaxSize: bn15(contractParams.contractMaxSize),
3617
+ maxInputs: bn15(txParams.maxInputs),
3618
+ maxOutputs: bn15(txParams.maxOutputs),
3619
+ maxWitnesses: bn15(txParams.maxWitnesses),
3620
+ maxGasPerTx: bn15(txParams.maxGasPerTx),
3621
+ maxScriptLength: bn15(scriptParams.maxScriptLength),
3622
+ maxScriptDataLength: bn15(scriptParams.maxScriptDataLength),
3623
+ maxStorageSlots: bn15(contractParams.maxStorageSlots),
3624
+ maxPredicateLength: bn15(predicateParams.maxPredicateLength),
3625
+ maxPredicateDataLength: bn15(predicateParams.maxPredicateDataLength),
3626
+ maxGasPerPredicate: bn15(predicateParams.maxGasPerPredicate),
3627
+ gasPriceFactor: bn15(feeParams.gasPriceFactor),
3628
+ gasPerByte: bn15(feeParams.gasPerByte),
3629
+ maxMessageDataLength: bn15(predicateParams.maxMessageDataLength),
3630
+ chainId: bn15(consensusParameters.chainId),
3754
3631
  gasCosts
3755
3632
  },
3756
3633
  gasCosts,
3757
3634
  latestBlock: {
3758
3635
  id: latestBlock.id,
3759
- height: bn16(latestBlock.height),
3636
+ height: bn15(latestBlock.header.height),
3760
3637
  time: latestBlock.header.time,
3761
3638
  transactions: latestBlock.transactions.map((i) => ({
3762
3639
  id: i.id
@@ -3850,8 +3727,10 @@ var _Provider = class {
3850
3727
  * Returns some helpful parameters related to gas fees.
3851
3728
  */
3852
3729
  getGasConfig() {
3730
+ const { minGasPrice } = this.getNode();
3853
3731
  const { maxGasPerTx, maxGasPerPredicate, gasPriceFactor, gasPerByte, gasCosts } = this.getChain().consensusParameters;
3854
3732
  return {
3733
+ minGasPrice,
3855
3734
  maxGasPerTx,
3856
3735
  maxGasPerPredicate,
3857
3736
  gasPriceFactor,
@@ -3949,7 +3828,7 @@ var _Provider = class {
3949
3828
  */
3950
3829
  async getBlockNumber() {
3951
3830
  const { chain } = await this.operations.getChain();
3952
- return bn16(chain.latestBlock.height, 10);
3831
+ return bn15(chain.latestBlock.header.height, 10);
3953
3832
  }
3954
3833
  /**
3955
3834
  * Returns the chain information.
@@ -3959,11 +3838,13 @@ var _Provider = class {
3959
3838
  async fetchNode() {
3960
3839
  const { nodeInfo } = await this.operations.getNodeInfo();
3961
3840
  const processedNodeInfo = {
3962
- maxDepth: bn16(nodeInfo.maxDepth),
3963
- maxTx: bn16(nodeInfo.maxTx),
3841
+ maxDepth: bn15(nodeInfo.maxDepth),
3842
+ maxTx: bn15(nodeInfo.maxTx),
3843
+ minGasPrice: bn15(nodeInfo.minGasPrice),
3964
3844
  nodeVersion: nodeInfo.nodeVersion,
3965
3845
  utxoValidation: nodeInfo.utxoValidation,
3966
- vmBacktrace: nodeInfo.vmBacktrace
3846
+ vmBacktrace: nodeInfo.vmBacktrace,
3847
+ peers: nodeInfo.peers
3967
3848
  };
3968
3849
  _Provider.nodeInfoCache[this.url] = processedNodeInfo;
3969
3850
  return processedNodeInfo;
@@ -4049,13 +3930,14 @@ var _Provider = class {
4049
3930
  return this.estimateTxDependencies(transactionRequest);
4050
3931
  }
4051
3932
  const encodedTransaction = hexlify12(transactionRequest.toTransactionBytes());
4052
- const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4053
- encodedTransactions: encodedTransaction,
3933
+ const { dryRun: gqlReceipts } = await this.operations.dryRun({
3934
+ encodedTransaction,
4054
3935
  utxoValidation: utxoValidation || false
4055
3936
  });
4056
- const [{ receipts: rawReceipts, status }] = dryRunStatuses;
4057
- const receipts = rawReceipts.map(processGqlReceipt);
4058
- return { receipts, dryrunStatus: status };
3937
+ const receipts = gqlReceipts.map(processGqlReceipt);
3938
+ return {
3939
+ receipts
3940
+ };
4059
3941
  }
4060
3942
  /**
4061
3943
  * Verifies whether enough gas is available to complete transaction.
@@ -4081,7 +3963,7 @@ var _Provider = class {
4081
3963
  } = response;
4082
3964
  if (inputs) {
4083
3965
  inputs.forEach((input, index) => {
4084
- if ("predicateGasUsed" in input && bn16(input.predicateGasUsed).gt(0)) {
3966
+ if ("predicateGasUsed" in input && bn15(input.predicateGasUsed).gt(0)) {
4085
3967
  transactionRequest.inputs[index].predicateGasUsed = input.predicateGasUsed;
4086
3968
  }
4087
3969
  });
@@ -4094,6 +3976,9 @@ var _Provider = class {
4094
3976
  * If there are missing variable outputs,
4095
3977
  * `addVariableOutputs` is called on the transaction.
4096
3978
  *
3979
+ * @privateRemarks
3980
+ * TODO: Investigate support for missing contract IDs
3981
+ * TODO: Add support for missing output messages
4097
3982
  *
4098
3983
  * @param transactionRequest - The transaction request object.
4099
3984
  * @returns A promise.
@@ -4106,19 +3991,16 @@ var _Provider = class {
4106
3991
  missingContractIds: []
4107
3992
  };
4108
3993
  }
3994
+ await this.estimatePredicates(transactionRequest);
4109
3995
  let receipts = [];
4110
3996
  const missingContractIds = [];
4111
3997
  let outputVariables = 0;
4112
- let dryrunStatus;
4113
3998
  for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
4114
- const {
4115
- dryRun: [{ receipts: rawReceipts, status }]
4116
- } = await this.operations.dryRun({
4117
- encodedTransactions: [hexlify12(transactionRequest.toTransactionBytes())],
3999
+ const { dryRun: gqlReceipts } = await this.operations.dryRun({
4000
+ encodedTransaction: hexlify12(transactionRequest.toTransactionBytes()),
4118
4001
  utxoValidation: false
4119
4002
  });
4120
- receipts = rawReceipts.map(processGqlReceipt);
4121
- dryrunStatus = status;
4003
+ receipts = gqlReceipts.map(processGqlReceipt);
4122
4004
  const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(receipts);
4123
4005
  const hasMissingOutputs = missingOutputVariables.length !== 0 || missingOutputContractIds.length !== 0;
4124
4006
  if (hasMissingOutputs) {
@@ -4128,10 +4010,6 @@ var _Provider = class {
4128
4010
  transactionRequest.addContractInputAndOutput(Address2.fromString(contractId));
4129
4011
  missingContractIds.push(contractId);
4130
4012
  });
4131
- const { maxFee } = await this.estimateTxGasAndFee({
4132
- transactionRequest
4133
- });
4134
- transactionRequest.maxFee = maxFee;
4135
4013
  } else {
4136
4014
  break;
4137
4015
  }
@@ -4139,139 +4017,37 @@ var _Provider = class {
4139
4017
  return {
4140
4018
  receipts,
4141
4019
  outputVariables,
4142
- missingContractIds,
4143
- dryrunStatus
4020
+ missingContractIds
4144
4021
  };
4145
4022
  }
4146
- /**
4147
- * Dry runs multiple transactions and checks for missing dependencies in batches.
4148
- *
4149
- * Transactions are dry run in batches. After each dry run, transactions requiring
4150
- * further modifications are identified. The method iteratively updates these transactions
4151
- * and performs subsequent dry runs until all dependencies for each transaction are satisfied.
4152
- *
4153
- * @param transactionRequests - Array of transaction request objects.
4154
- * @returns A promise that resolves to an array of results for each transaction.
4155
- */
4156
- async estimateMultipleTxDependencies(transactionRequests) {
4157
- const results = transactionRequests.map(() => ({
4158
- receipts: [],
4159
- outputVariables: 0,
4160
- missingContractIds: [],
4161
- dryrunStatus: void 0
4162
- }));
4163
- const allRequests = clone3(transactionRequests);
4164
- const serializedTransactionsMap = /* @__PURE__ */ new Map();
4165
- allRequests.forEach((req, index) => {
4166
- if (req.type === TransactionType8.Script) {
4167
- serializedTransactionsMap.set(index, hexlify12(req.toTransactionBytes()));
4168
- }
4169
- });
4170
- let transactionsToProcess = Array.from(serializedTransactionsMap.keys());
4171
- let attempt = 0;
4172
- while (transactionsToProcess.length > 0 && attempt < MAX_RETRIES) {
4173
- const encodedTransactions = transactionsToProcess.map(
4174
- (index) => serializedTransactionsMap.get(index)
4175
- );
4176
- const dryRunResults = await this.operations.dryRun({
4177
- encodedTransactions,
4178
- utxoValidation: false
4179
- });
4180
- const nextRoundTransactions = [];
4181
- for (let i = 0; i < dryRunResults.dryRun.length; i++) {
4182
- const currentResultIndex = transactionsToProcess[i];
4183
- const { receipts: rawReceipts, status } = dryRunResults.dryRun[i];
4184
- results[currentResultIndex].receipts = rawReceipts.map(processGqlReceipt);
4185
- results[currentResultIndex].dryrunStatus = status;
4186
- const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(
4187
- results[currentResultIndex].receipts
4188
- );
4189
- const hasMissingOutputs = missingOutputVariables.length > 0 || missingOutputContractIds.length > 0;
4190
- const requestToProcess = allRequests[currentResultIndex];
4191
- if (hasMissingOutputs && requestToProcess?.type === TransactionType8.Script) {
4192
- results[currentResultIndex].outputVariables += missingOutputVariables.length;
4193
- requestToProcess.addVariableOutputs(missingOutputVariables.length);
4194
- missingOutputContractIds.forEach(({ contractId }) => {
4195
- requestToProcess.addContractInputAndOutput(Address2.fromString(contractId));
4196
- results[currentResultIndex].missingContractIds.push(contractId);
4197
- });
4198
- const { maxFee } = await this.estimateTxGasAndFee({
4199
- transactionRequest: requestToProcess
4200
- });
4201
- requestToProcess.maxFee = maxFee;
4202
- serializedTransactionsMap.set(
4203
- currentResultIndex,
4204
- hexlify12(requestToProcess.toTransactionBytes())
4205
- );
4206
- nextRoundTransactions.push(currentResultIndex);
4207
- allRequests[currentResultIndex] = requestToProcess;
4208
- }
4209
- }
4210
- transactionsToProcess = nextRoundTransactions;
4211
- attempt += 1;
4212
- }
4213
- return results;
4214
- }
4215
- async dryRunMultipleTransactions(transactionRequests, { utxoValidation, estimateTxDependencies = true } = {}) {
4216
- if (estimateTxDependencies) {
4217
- return this.estimateMultipleTxDependencies(transactionRequests);
4218
- }
4219
- const encodedTransactions = transactionRequests.map((tx) => hexlify12(tx.toTransactionBytes()));
4220
- const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4221
- encodedTransactions,
4222
- utxoValidation: utxoValidation || false
4223
- });
4224
- const results = dryRunStatuses.map(({ receipts: rawReceipts, status }) => {
4225
- const receipts = rawReceipts.map(processGqlReceipt);
4226
- return { receipts, dryrunStatus: status };
4227
- });
4228
- return results;
4229
- }
4230
4023
  /**
4231
4024
  * Estimates the transaction gas and fee based on the provided transaction request.
4232
4025
  * @param transactionRequest - The transaction request object.
4233
4026
  * @returns An object containing the estimated minimum gas, minimum fee, maximum gas, and maximum fee.
4234
4027
  */
4235
- async estimateTxGasAndFee(params) {
4028
+ estimateTxGasAndFee(params) {
4236
4029
  const { transactionRequest } = params;
4237
- let { gasPrice } = params;
4030
+ const { gasPriceFactor, minGasPrice, maxGasPerTx } = this.getGasConfig();
4238
4031
  const chainInfo = this.getChain();
4239
- const { gasPriceFactor, maxGasPerTx } = this.getGasConfig();
4032
+ const gasPrice = transactionRequest.gasPrice.eq(0) ? minGasPrice : transactionRequest.gasPrice;
4033
+ transactionRequest.gasPrice = gasPrice;
4240
4034
  const minGas = transactionRequest.calculateMinGas(chainInfo);
4241
- if (!gasPrice) {
4242
- gasPrice = await this.estimateGasPrice(10);
4243
- }
4244
- const minFee = calculateGasFee({
4245
- gasPrice: bn16(gasPrice),
4246
- gas: minGas,
4247
- priceFactor: gasPriceFactor,
4248
- tip: transactionRequest.tip
4249
- }).add(1);
4250
- let gasLimit = bn16(0);
4035
+ const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
4251
4036
  if (transactionRequest.type === TransactionType8.Script) {
4252
- gasLimit = transactionRequest.gasLimit;
4253
4037
  if (transactionRequest.gasLimit.eq(0)) {
4254
4038
  transactionRequest.gasLimit = minGas;
4255
4039
  transactionRequest.gasLimit = maxGasPerTx.sub(
4256
4040
  transactionRequest.calculateMaxGas(chainInfo, minGas)
4257
4041
  );
4258
- gasLimit = transactionRequest.gasLimit;
4259
4042
  }
4260
4043
  }
4261
4044
  const maxGas = transactionRequest.calculateMaxGas(chainInfo, minGas);
4262
- const maxFee = calculateGasFee({
4263
- gasPrice: bn16(gasPrice),
4264
- gas: maxGas,
4265
- priceFactor: gasPriceFactor,
4266
- tip: transactionRequest.tip
4267
- }).add(1);
4045
+ const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
4268
4046
  return {
4269
4047
  minGas,
4270
4048
  minFee,
4271
4049
  maxGas,
4272
- maxFee,
4273
- gasPrice,
4274
- gasLimit
4050
+ maxFee
4275
4051
  };
4276
4052
  }
4277
4053
  /**
@@ -4289,17 +4065,15 @@ var _Provider = class {
4289
4065
  if (estimateTxDependencies) {
4290
4066
  return this.estimateTxDependencies(transactionRequest);
4291
4067
  }
4292
- const encodedTransactions = [hexlify12(transactionRequest.toTransactionBytes())];
4293
- const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4294
- encodedTransactions,
4068
+ const encodedTransaction = hexlify12(transactionRequest.toTransactionBytes());
4069
+ const { dryRun: gqlReceipts } = await this.operations.dryRun({
4070
+ encodedTransaction,
4295
4071
  utxoValidation: true
4296
4072
  });
4297
- const callResult = dryRunStatuses.map((dryRunStatus) => {
4298
- const { id, receipts, status } = dryRunStatus;
4299
- const processedReceipts = receipts.map(processGqlReceipt);
4300
- return { id, receipts: processedReceipts, status };
4301
- });
4302
- return { receipts: callResult[0].receipts };
4073
+ const receipts = gqlReceipts.map(processGqlReceipt);
4074
+ return {
4075
+ receipts
4076
+ };
4303
4077
  }
4304
4078
  /**
4305
4079
  * Returns a transaction cost to enable user
@@ -4316,79 +4090,77 @@ var _Provider = class {
4316
4090
  * @param tolerance - The tolerance to add on top of the gasUsed.
4317
4091
  * @returns A promise that resolves to the transaction cost object.
4318
4092
  */
4319
- async getTransactionCost(transactionRequestLike, { resourcesOwner, signatureCallback, quantitiesToContract = [] } = {}) {
4093
+ async getTransactionCost(transactionRequestLike, forwardingQuantities = [], {
4094
+ estimateTxDependencies = true,
4095
+ estimatePredicates = true,
4096
+ resourcesOwner,
4097
+ signatureCallback
4098
+ } = {}) {
4320
4099
  const txRequestClone = clone3(transactionRequestify(transactionRequestLike));
4100
+ const { minGasPrice } = this.getGasConfig();
4101
+ const setGasPrice = max(txRequestClone.gasPrice, minGasPrice);
4321
4102
  const isScriptTransaction = txRequestClone.type === TransactionType8.Script;
4322
4103
  const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
4323
- const allQuantities = mergeQuantities(coinOutputsQuantities, quantitiesToContract);
4104
+ const allQuantities = mergeQuantities(coinOutputsQuantities, forwardingQuantities);
4324
4105
  txRequestClone.fundWithFakeUtxos(allQuantities, resourcesOwner?.address);
4325
- txRequestClone.maxFee = bn16(0);
4326
4106
  if (isScriptTransaction) {
4327
- txRequestClone.gasLimit = bn16(0);
4107
+ txRequestClone.gasLimit = bn15(0);
4328
4108
  }
4329
- if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
4330
- resourcesOwner.populateTransactionPredicateData(txRequestClone);
4109
+ if (estimatePredicates) {
4110
+ if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
4111
+ resourcesOwner.populateTransactionPredicateData(txRequestClone);
4112
+ }
4113
+ await this.estimatePredicates(txRequestClone);
4331
4114
  }
4332
- const signedRequest = clone3(txRequestClone);
4333
- let addedSignatures = 0;
4334
4115
  if (signatureCallback && isScriptTransaction) {
4335
- const lengthBefore = signedRequest.witnesses.length;
4336
- await signatureCallback(signedRequest);
4337
- addedSignatures = signedRequest.witnesses.length - lengthBefore;
4116
+ await signatureCallback(txRequestClone);
4338
4117
  }
4339
- await this.estimatePredicates(signedRequest);
4340
- let { maxFee, maxGas, minFee, minGas, gasPrice, gasLimit } = await this.estimateTxGasAndFee({
4341
- transactionRequest: signedRequest
4118
+ let { maxFee, maxGas, minFee, minGas } = this.estimateTxGasAndFee({
4119
+ transactionRequest: txRequestClone
4342
4120
  });
4343
4121
  let receipts = [];
4344
4122
  let missingContractIds = [];
4345
4123
  let outputVariables = 0;
4346
- let gasUsed = bn16(0);
4347
- txRequestClone.updatePredicateGasUsed(signedRequest.inputs);
4348
- txRequestClone.maxFee = maxFee;
4349
- if (isScriptTransaction) {
4350
- txRequestClone.gasLimit = gasLimit;
4351
- if (signatureCallback) {
4352
- await signatureCallback(txRequestClone);
4353
- }
4124
+ let gasUsed = bn15(0);
4125
+ if (isScriptTransaction && estimateTxDependencies) {
4126
+ txRequestClone.gasPrice = bn15(0);
4354
4127
  const result = await this.estimateTxDependencies(txRequestClone);
4355
4128
  receipts = result.receipts;
4356
4129
  outputVariables = result.outputVariables;
4357
4130
  missingContractIds = result.missingContractIds;
4358
4131
  gasUsed = isScriptTransaction ? getGasUsedFromReceipts(receipts) : gasUsed;
4359
4132
  txRequestClone.gasLimit = gasUsed;
4360
- ({ maxFee, maxGas, minFee, minGas, gasPrice } = await this.estimateTxGasAndFee({
4361
- transactionRequest: txRequestClone,
4362
- gasPrice
4133
+ txRequestClone.gasPrice = setGasPrice;
4134
+ ({ maxFee, maxGas, minFee, minGas } = this.estimateTxGasAndFee({
4135
+ transactionRequest: txRequestClone
4363
4136
  }));
4364
4137
  }
4365
4138
  return {
4366
4139
  requiredQuantities: allQuantities,
4367
4140
  receipts,
4368
4141
  gasUsed,
4369
- gasPrice,
4142
+ minGasPrice,
4143
+ gasPrice: setGasPrice,
4370
4144
  minGas,
4371
4145
  maxGas,
4372
4146
  minFee,
4373
4147
  maxFee,
4148
+ estimatedInputs: txRequestClone.inputs,
4374
4149
  outputVariables,
4375
- missingContractIds,
4376
- addedSignatures,
4377
- estimatedPredicates: txRequestClone.inputs
4150
+ missingContractIds
4378
4151
  };
4379
4152
  }
4380
- async getResourcesForTransaction(owner, transactionRequestLike, quantitiesToContract = []) {
4153
+ async getResourcesForTransaction(owner, transactionRequestLike, forwardingQuantities = []) {
4381
4154
  const ownerAddress = Address2.fromAddressOrString(owner);
4382
4155
  const transactionRequest = transactionRequestify(clone3(transactionRequestLike));
4383
- const transactionCost = await this.getTransactionCost(transactionRequest, {
4384
- quantitiesToContract
4385
- });
4156
+ const transactionCost = await this.getTransactionCost(transactionRequest, forwardingQuantities);
4386
4157
  transactionRequest.addResources(
4387
4158
  await this.getResourcesToSpend(ownerAddress, transactionCost.requiredQuantities)
4388
4159
  );
4389
- const { requiredQuantities, ...txCost } = await this.getTransactionCost(transactionRequest, {
4390
- quantitiesToContract
4391
- });
4160
+ const { requiredQuantities, ...txCost } = await this.getTransactionCost(
4161
+ transactionRequest,
4162
+ forwardingQuantities
4163
+ );
4392
4164
  const resources = await this.getResourcesToSpend(ownerAddress, requiredQuantities);
4393
4165
  return {
4394
4166
  resources,
@@ -4410,10 +4182,11 @@ var _Provider = class {
4410
4182
  return coins.map((coin) => ({
4411
4183
  id: coin.utxoId,
4412
4184
  assetId: coin.assetId,
4413
- amount: bn16(coin.amount),
4185
+ amount: bn15(coin.amount),
4414
4186
  owner: Address2.fromAddressOrString(coin.owner),
4415
- blockCreated: bn16(coin.blockCreated),
4416
- txCreatedIdx: bn16(coin.txCreatedIdx)
4187
+ maturity: bn15(coin.maturity).toNumber(),
4188
+ blockCreated: bn15(coin.blockCreated),
4189
+ txCreatedIdx: bn15(coin.txCreatedIdx)
4417
4190
  }));
4418
4191
  }
4419
4192
  /**
@@ -4450,9 +4223,9 @@ var _Provider = class {
4450
4223
  switch (coin.__typename) {
4451
4224
  case "MessageCoin":
4452
4225
  return {
4453
- amount: bn16(coin.amount),
4226
+ amount: bn15(coin.amount),
4454
4227
  assetId: coin.assetId,
4455
- daHeight: bn16(coin.daHeight),
4228
+ daHeight: bn15(coin.daHeight),
4456
4229
  sender: Address2.fromAddressOrString(coin.sender),
4457
4230
  recipient: Address2.fromAddressOrString(coin.recipient),
4458
4231
  nonce: coin.nonce
@@ -4460,11 +4233,12 @@ var _Provider = class {
4460
4233
  case "Coin":
4461
4234
  return {
4462
4235
  id: coin.utxoId,
4463
- amount: bn16(coin.amount),
4236
+ amount: bn15(coin.amount),
4464
4237
  assetId: coin.assetId,
4465
4238
  owner: Address2.fromAddressOrString(coin.owner),
4466
- blockCreated: bn16(coin.blockCreated),
4467
- txCreatedIdx: bn16(coin.txCreatedIdx)
4239
+ maturity: bn15(coin.maturity).toNumber(),
4240
+ blockCreated: bn15(coin.blockCreated),
4241
+ txCreatedIdx: bn15(coin.txCreatedIdx)
4468
4242
  };
4469
4243
  default:
4470
4244
  return null;
@@ -4481,13 +4255,13 @@ var _Provider = class {
4481
4255
  async getBlock(idOrHeight) {
4482
4256
  let variables;
4483
4257
  if (typeof idOrHeight === "number") {
4484
- variables = { height: bn16(idOrHeight).toString(10) };
4258
+ variables = { height: bn15(idOrHeight).toString(10) };
4485
4259
  } else if (idOrHeight === "latest") {
4486
4260
  variables = { height: (await this.getBlockNumber()).toString(10) };
4487
4261
  } else if (idOrHeight.length === 66) {
4488
4262
  variables = { blockId: idOrHeight };
4489
4263
  } else {
4490
- variables = { blockId: bn16(idOrHeight).toString(10) };
4264
+ variables = { blockId: bn15(idOrHeight).toString(10) };
4491
4265
  }
4492
4266
  const { block } = await this.operations.getBlock(variables);
4493
4267
  if (!block) {
@@ -4495,7 +4269,7 @@ var _Provider = class {
4495
4269
  }
4496
4270
  return {
4497
4271
  id: block.id,
4498
- height: bn16(block.height),
4272
+ height: bn15(block.header.height),
4499
4273
  time: block.header.time,
4500
4274
  transactionIds: block.transactions.map((tx) => tx.id)
4501
4275
  };
@@ -4510,7 +4284,7 @@ var _Provider = class {
4510
4284
  const { blocks: fetchedData } = await this.operations.getBlocks(params);
4511
4285
  const blocks = fetchedData.edges.map(({ node: block }) => ({
4512
4286
  id: block.id,
4513
- height: bn16(block.height),
4287
+ height: bn15(block.header.height),
4514
4288
  time: block.header.time,
4515
4289
  transactionIds: block.transactions.map((tx) => tx.id)
4516
4290
  }));
@@ -4525,7 +4299,7 @@ var _Provider = class {
4525
4299
  async getBlockWithTransactions(idOrHeight) {
4526
4300
  let variables;
4527
4301
  if (typeof idOrHeight === "number") {
4528
- variables = { blockHeight: bn16(idOrHeight).toString(10) };
4302
+ variables = { blockHeight: bn15(idOrHeight).toString(10) };
4529
4303
  } else if (idOrHeight === "latest") {
4530
4304
  variables = { blockHeight: (await this.getBlockNumber()).toString() };
4531
4305
  } else {
@@ -4537,7 +4311,7 @@ var _Provider = class {
4537
4311
  }
4538
4312
  return {
4539
4313
  id: block.id,
4540
- height: bn16(block.height, 10),
4314
+ height: bn15(block.header.height, 10),
4541
4315
  time: block.header.time,
4542
4316
  transactionIds: block.transactions.map((tx) => tx.id),
4543
4317
  transactions: block.transactions.map(
@@ -4586,7 +4360,7 @@ var _Provider = class {
4586
4360
  contract: Address2.fromAddressOrString(contractId).toB256(),
4587
4361
  asset: hexlify12(assetId)
4588
4362
  });
4589
- return bn16(contractBalance.amount, 10);
4363
+ return bn15(contractBalance.amount, 10);
4590
4364
  }
4591
4365
  /**
4592
4366
  * Returns the balance for the given owner for the given asset ID.
@@ -4600,7 +4374,7 @@ var _Provider = class {
4600
4374
  owner: Address2.fromAddressOrString(owner).toB256(),
4601
4375
  assetId: hexlify12(assetId)
4602
4376
  });
4603
- return bn16(balance.amount, 10);
4377
+ return bn15(balance.amount, 10);
4604
4378
  }
4605
4379
  /**
4606
4380
  * Returns balances for the given owner.
@@ -4618,7 +4392,7 @@ var _Provider = class {
4618
4392
  const balances = result.balances.edges.map((edge) => edge.node);
4619
4393
  return balances.map((balance) => ({
4620
4394
  assetId: balance.assetId,
4621
- amount: bn16(balance.amount)
4395
+ amount: bn15(balance.amount)
4622
4396
  }));
4623
4397
  }
4624
4398
  /**
@@ -4640,15 +4414,15 @@ var _Provider = class {
4640
4414
  sender: message.sender,
4641
4415
  recipient: message.recipient,
4642
4416
  nonce: message.nonce,
4643
- amount: bn16(message.amount),
4417
+ amount: bn15(message.amount),
4644
4418
  data: message.data
4645
4419
  }),
4646
4420
  sender: Address2.fromAddressOrString(message.sender),
4647
4421
  recipient: Address2.fromAddressOrString(message.recipient),
4648
4422
  nonce: message.nonce,
4649
- amount: bn16(message.amount),
4423
+ amount: bn15(message.amount),
4650
4424
  data: InputMessageCoder.decodeData(message.data),
4651
- daHeight: bn16(message.daHeight)
4425
+ daHeight: bn15(message.daHeight)
4652
4426
  }));
4653
4427
  }
4654
4428
  /**
@@ -4701,60 +4475,44 @@ var _Provider = class {
4701
4475
  } = result.messageProof;
4702
4476
  return {
4703
4477
  messageProof: {
4704
- proofIndex: bn16(messageProof.proofIndex),
4478
+ proofIndex: bn15(messageProof.proofIndex),
4705
4479
  proofSet: messageProof.proofSet
4706
4480
  },
4707
4481
  blockProof: {
4708
- proofIndex: bn16(blockProof.proofIndex),
4482
+ proofIndex: bn15(blockProof.proofIndex),
4709
4483
  proofSet: blockProof.proofSet
4710
4484
  },
4711
4485
  messageBlockHeader: {
4712
4486
  id: messageBlockHeader.id,
4713
- daHeight: bn16(messageBlockHeader.daHeight),
4714
- transactionsCount: bn16(messageBlockHeader.transactionsCount),
4487
+ daHeight: bn15(messageBlockHeader.daHeight),
4488
+ transactionsCount: bn15(messageBlockHeader.transactionsCount),
4715
4489
  transactionsRoot: messageBlockHeader.transactionsRoot,
4716
- height: bn16(messageBlockHeader.height),
4490
+ height: bn15(messageBlockHeader.height),
4717
4491
  prevRoot: messageBlockHeader.prevRoot,
4718
4492
  time: messageBlockHeader.time,
4719
4493
  applicationHash: messageBlockHeader.applicationHash,
4720
- messageReceiptCount: bn16(messageBlockHeader.messageReceiptCount),
4721
- messageOutboxRoot: messageBlockHeader.messageOutboxRoot,
4722
- consensusParametersVersion: messageBlockHeader.consensusParametersVersion,
4723
- eventInboxRoot: messageBlockHeader.eventInboxRoot,
4724
- stateTransitionBytecodeVersion: messageBlockHeader.stateTransitionBytecodeVersion
4494
+ messageReceiptRoot: messageBlockHeader.messageReceiptRoot,
4495
+ messageReceiptCount: bn15(messageBlockHeader.messageReceiptCount)
4725
4496
  },
4726
4497
  commitBlockHeader: {
4727
4498
  id: commitBlockHeader.id,
4728
- daHeight: bn16(commitBlockHeader.daHeight),
4729
- transactionsCount: bn16(commitBlockHeader.transactionsCount),
4499
+ daHeight: bn15(commitBlockHeader.daHeight),
4500
+ transactionsCount: bn15(commitBlockHeader.transactionsCount),
4730
4501
  transactionsRoot: commitBlockHeader.transactionsRoot,
4731
- height: bn16(commitBlockHeader.height),
4502
+ height: bn15(commitBlockHeader.height),
4732
4503
  prevRoot: commitBlockHeader.prevRoot,
4733
4504
  time: commitBlockHeader.time,
4734
4505
  applicationHash: commitBlockHeader.applicationHash,
4735
- messageReceiptCount: bn16(commitBlockHeader.messageReceiptCount),
4736
- messageOutboxRoot: commitBlockHeader.messageOutboxRoot,
4737
- consensusParametersVersion: commitBlockHeader.consensusParametersVersion,
4738
- eventInboxRoot: commitBlockHeader.eventInboxRoot,
4739
- stateTransitionBytecodeVersion: commitBlockHeader.stateTransitionBytecodeVersion
4506
+ messageReceiptRoot: commitBlockHeader.messageReceiptRoot,
4507
+ messageReceiptCount: bn15(commitBlockHeader.messageReceiptCount)
4740
4508
  },
4741
4509
  sender: Address2.fromAddressOrString(sender),
4742
4510
  recipient: Address2.fromAddressOrString(recipient),
4743
4511
  nonce,
4744
- amount: bn16(amount),
4512
+ amount: bn15(amount),
4745
4513
  data
4746
4514
  };
4747
4515
  }
4748
- async getLatestGasPrice() {
4749
- const { latestGasPrice } = await this.operations.getLatestGasPrice();
4750
- return bn16(latestGasPrice.gasPrice);
4751
- }
4752
- async estimateGasPrice(blockHorizon) {
4753
- const { estimateGasPrice } = await this.operations.estimateGasPrice({
4754
- blockHorizon: String(blockHorizon)
4755
- });
4756
- return bn16(estimateGasPrice.gasPrice);
4757
- }
4758
4516
  /**
4759
4517
  * Returns Message Proof for given transaction id and the message id from MessageOut receipt.
4760
4518
  *
@@ -4774,10 +4532,10 @@ var _Provider = class {
4774
4532
  */
4775
4533
  async produceBlocks(amount, startTime) {
4776
4534
  const { produceBlocks: latestBlockHeight } = await this.operations.produceBlocks({
4777
- blocksToProduce: bn16(amount).toString(10),
4535
+ blocksToProduce: bn15(amount).toString(10),
4778
4536
  startTimestamp: startTime ? DateTime2.fromUnixMilliseconds(startTime).toTai64() : void 0
4779
4537
  });
4780
- return bn16(latestBlockHeight);
4538
+ return bn15(latestBlockHeight);
4781
4539
  }
4782
4540
  // eslint-disable-next-line @typescript-eslint/require-await
4783
4541
  async getTransactionResponse(transactionId) {
@@ -4801,7 +4559,7 @@ __publicField(Provider, "nodeInfoCache", {});
4801
4559
 
4802
4560
  // src/providers/transaction-summary/get-transaction-summary.ts
4803
4561
  import { ErrorCode as ErrorCode14, FuelError as FuelError14 } from "@fuel-ts/errors";
4804
- import { bn as bn17 } from "@fuel-ts/math";
4562
+ import { bn as bn16 } from "@fuel-ts/math";
4805
4563
  import { TransactionCoder as TransactionCoder6 } from "@fuel-ts/transactions";
4806
4564
  import { arrayify as arrayify12 } from "@fuel-ts/utils";
4807
4565
  async function getTransactionSummary(params) {
@@ -4819,28 +4577,21 @@ async function getTransactionSummary(params) {
4819
4577
  arrayify12(gqlTransaction.rawPayload),
4820
4578
  0
4821
4579
  );
4822
- let txReceipts = [];
4823
- if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
4824
- txReceipts = gqlTransaction.status.receipts;
4825
- }
4826
- const receipts = txReceipts.map(processGqlReceipt);
4580
+ const receipts = gqlTransaction.receipts?.map(processGqlReceipt) || [];
4827
4581
  const {
4828
- consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts, maxGasPerTx }
4582
+ consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
4829
4583
  } = provider.getChain();
4830
- const gasPrice = await provider.getLatestGasPrice();
4831
4584
  const transactionInfo = assembleTransactionSummary({
4832
4585
  id: gqlTransaction.id,
4833
4586
  receipts,
4834
4587
  transaction: decodedTransaction,
4835
4588
  transactionBytes: arrayify12(gqlTransaction.rawPayload),
4836
4589
  gqlTransactionStatus: gqlTransaction.status,
4837
- gasPerByte: bn17(gasPerByte),
4838
- gasPriceFactor: bn17(gasPriceFactor),
4590
+ gasPerByte: bn16(gasPerByte),
4591
+ gasPriceFactor: bn16(gasPriceFactor),
4839
4592
  abiMap,
4840
4593
  maxInputs,
4841
- gasCosts,
4842
- maxGasPerTx,
4843
- gasPrice
4594
+ gasCosts
4844
4595
  });
4845
4596
  return {
4846
4597
  gqlTransaction,
@@ -4850,11 +4601,10 @@ async function getTransactionSummary(params) {
4850
4601
  async function getTransactionSummaryFromRequest(params) {
4851
4602
  const { provider, transactionRequest, abiMap } = params;
4852
4603
  const { receipts } = await provider.call(transactionRequest);
4853
- const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = provider.getGasConfig();
4604
+ const { gasPerByte, gasPriceFactor, gasCosts } = provider.getGasConfig();
4854
4605
  const maxInputs = provider.getChain().consensusParameters.maxInputs;
4855
4606
  const transaction = transactionRequest.toTransaction();
4856
4607
  const transactionBytes = transactionRequest.toTransactionBytes();
4857
- const gasPrice = await provider.getLatestGasPrice();
4858
4608
  const transactionSummary = assembleTransactionSummary({
4859
4609
  receipts,
4860
4610
  transaction,
@@ -4863,9 +4613,7 @@ async function getTransactionSummaryFromRequest(params) {
4863
4613
  gasPerByte,
4864
4614
  gasPriceFactor,
4865
4615
  maxInputs,
4866
- gasCosts,
4867
- maxGasPerTx,
4868
- gasPrice
4616
+ gasCosts
4869
4617
  });
4870
4618
  return transactionSummary;
4871
4619
  }
@@ -4874,18 +4622,13 @@ async function getTransactionsSummaries(params) {
4874
4622
  const { transactionsByOwner } = await provider.operations.getTransactionsByOwner(filters);
4875
4623
  const { edges, pageInfo } = transactionsByOwner;
4876
4624
  const {
4877
- consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts, maxGasPerTx }
4625
+ consensusParameters: { gasPerByte, gasPriceFactor, maxInputs, gasCosts }
4878
4626
  } = provider.getChain();
4879
- const gasPrice = await provider.getLatestGasPrice();
4880
4627
  const transactions = edges.map((edge) => {
4881
4628
  const { node: gqlTransaction } = edge;
4882
- const { id, rawPayload, status } = gqlTransaction;
4629
+ const { id, rawPayload, receipts: gqlReceipts, status } = gqlTransaction;
4883
4630
  const [decodedTransaction] = new TransactionCoder6().decode(arrayify12(rawPayload), 0);
4884
- let txReceipts = [];
4885
- if (gqlTransaction?.status && "receipts" in gqlTransaction.status) {
4886
- txReceipts = gqlTransaction.status.receipts;
4887
- }
4888
- const receipts = txReceipts.map(processGqlReceipt);
4631
+ const receipts = gqlReceipts?.map(processGqlReceipt) || [];
4889
4632
  const transactionSummary = assembleTransactionSummary({
4890
4633
  id,
4891
4634
  receipts,
@@ -4896,9 +4639,7 @@ async function getTransactionsSummaries(params) {
4896
4639
  gasPerByte,
4897
4640
  gasPriceFactor,
4898
4641
  maxInputs,
4899
- gasCosts,
4900
- maxGasPerTx,
4901
- gasPrice
4642
+ gasCosts
4902
4643
  });
4903
4644
  const output = {
4904
4645
  gqlTransaction,
@@ -5230,33 +4971,36 @@ var Account = class extends AbstractAccount {
5230
4971
  * @param fee - The estimated transaction fee.
5231
4972
  * @returns A promise that resolves when the resources are added to the transaction.
5232
4973
  */
5233
- async fund(request, params) {
5234
- const { addedSignatures, estimatedPredicates, maxFee: fee, requiredQuantities } = params;
5235
- const txRequest = request;
5236
- const requiredQuantitiesWithFee = addAmountToCoinQuantities({
5237
- amount: bn18(fee),
4974
+ async fund(request, coinQuantities, fee) {
4975
+ const updatedQuantities = addAmountToAsset({
4976
+ amount: bn17(fee),
5238
4977
  assetId: BaseAssetId3,
5239
- coinQuantities: requiredQuantities
4978
+ coinQuantities
5240
4979
  });
5241
4980
  const quantitiesDict = {};
5242
- requiredQuantitiesWithFee.forEach(({ amount, assetId }) => {
4981
+ updatedQuantities.forEach(({ amount, assetId }) => {
5243
4982
  quantitiesDict[assetId] = {
5244
4983
  required: amount,
5245
- owned: bn18(0)
4984
+ owned: bn17(0)
5246
4985
  };
5247
4986
  });
5248
- txRequest.inputs.forEach((input) => {
4987
+ const cachedUtxos = [];
4988
+ const cachedMessages = [];
4989
+ const owner = this.address.toB256();
4990
+ request.inputs.forEach((input) => {
5249
4991
  const isResource = "amount" in input;
5250
4992
  if (isResource) {
5251
4993
  const isCoin2 = "owner" in input;
5252
4994
  if (isCoin2) {
5253
4995
  const assetId = String(input.assetId);
5254
- if (quantitiesDict[assetId]) {
5255
- const amount = bn18(input.amount);
4996
+ if (input.owner === owner && quantitiesDict[assetId]) {
4997
+ const amount = bn17(input.amount);
5256
4998
  quantitiesDict[assetId].owned = quantitiesDict[assetId].owned.add(amount);
4999
+ cachedUtxos.push(input.id);
5257
5000
  }
5258
- } else if (input.amount && quantitiesDict[BaseAssetId3]) {
5001
+ } else if (input.recipient === owner && input.amount && quantitiesDict[BaseAssetId3]) {
5259
5002
  quantitiesDict[BaseAssetId3].owned = quantitiesDict[BaseAssetId3].owned.add(input.amount);
5003
+ cachedMessages.push(input.nonce);
5260
5004
  }
5261
5005
  }
5262
5006
  });
@@ -5271,23 +5015,12 @@ var Account = class extends AbstractAccount {
5271
5015
  });
5272
5016
  const needsToBeFunded = missingQuantities.length;
5273
5017
  if (needsToBeFunded) {
5274
- const excludedIds = cacheTxInputsFromOwner(txRequest.inputs, this.address.toB256());
5275
- const resources = await this.getResourcesToSpend(missingQuantities, excludedIds);
5276
- txRequest.addResources(resources);
5277
- }
5278
- txRequest.shiftPredicateData();
5279
- txRequest.updatePredicateGasUsed(estimatedPredicates);
5280
- const requestToBeReEstimate = clone4(txRequest);
5281
- if (addedSignatures) {
5282
- Array.from({ length: addedSignatures }).forEach(
5283
- () => requestToBeReEstimate.addEmptyWitness()
5284
- );
5018
+ const resources = await this.getResourcesToSpend(missingQuantities, {
5019
+ messages: cachedMessages,
5020
+ utxos: cachedUtxos
5021
+ });
5022
+ request.addResources(resources);
5285
5023
  }
5286
- const { maxFee } = await this.provider.estimateTxGasAndFee({
5287
- transactionRequest: requestToBeReEstimate
5288
- });
5289
- txRequest.maxFee = maxFee;
5290
- return txRequest;
5291
5024
  }
5292
5025
  /**
5293
5026
  * A helper that creates a transfer transaction request and returns it.
@@ -5295,25 +5028,28 @@ var Account = class extends AbstractAccount {
5295
5028
  * @param destination - The address of the destination.
5296
5029
  * @param amount - The amount of coins to transfer.
5297
5030
  * @param assetId - The asset ID of the coins to transfer.
5298
- * @param txParams - The transaction parameters (gasLimit, tip, maturity, maxFee, witnessLimit).
5031
+ * @param txParams - The transaction parameters (gasLimit, gasPrice, maturity).
5299
5032
  * @returns A promise that resolves to the prepared transaction request.
5300
5033
  */
5301
5034
  async createTransfer(destination, amount, assetId = BaseAssetId3, txParams = {}) {
5302
- const request = new ScriptTransactionRequest(txParams);
5035
+ const { minGasPrice } = this.provider.getGasConfig();
5036
+ const params = { gasPrice: minGasPrice, ...txParams };
5037
+ const request = new ScriptTransactionRequest(params);
5303
5038
  request.addCoinOutput(Address3.fromAddressOrString(destination), amount, assetId);
5304
- const txCost = await this.provider.getTransactionCost(request, {
5039
+ const { maxFee, requiredQuantities, gasUsed, estimatedInputs } = await this.provider.getTransactionCost(request, [], {
5305
5040
  estimateTxDependencies: true,
5306
5041
  resourcesOwner: this
5307
5042
  });
5308
- if ("gasLimit" in txParams) {
5309
- this.validateGas({
5310
- gasUsed: txCost.gasUsed,
5311
- gasLimit: request.gasLimit
5312
- });
5313
- }
5314
- request.gasLimit = txCost.gasUsed;
5315
- request.maxFee = txCost.maxFee;
5316
- await this.fund(request, txCost);
5043
+ request.gasPrice = bn17(txParams.gasPrice ?? minGasPrice);
5044
+ request.gasLimit = bn17(txParams.gasLimit ?? gasUsed);
5045
+ this.validateGas({
5046
+ gasUsed,
5047
+ gasPrice: request.gasPrice,
5048
+ gasLimit: request.gasLimit,
5049
+ minGasPrice
5050
+ });
5051
+ await this.fund(request, requiredQuantities, maxFee);
5052
+ request.updatePredicateInputs(estimatedInputs);
5317
5053
  return request;
5318
5054
  }
5319
5055
  /**
@@ -5326,7 +5062,7 @@ var Account = class extends AbstractAccount {
5326
5062
  * @returns A promise that resolves to the transaction response.
5327
5063
  */
5328
5064
  async transfer(destination, amount, assetId = BaseAssetId3, txParams = {}) {
5329
- if (bn18(amount).lte(0)) {
5065
+ if (bn17(amount).lte(0)) {
5330
5066
  throw new FuelError15(
5331
5067
  ErrorCode15.INVALID_TRANSFER_AMOUNT,
5332
5068
  "Transfer amount must be a positive number."
@@ -5345,37 +5081,38 @@ var Account = class extends AbstractAccount {
5345
5081
  * @returns A promise that resolves to the transaction response.
5346
5082
  */
5347
5083
  async transferToContract(contractId, amount, assetId = BaseAssetId3, txParams = {}) {
5348
- if (bn18(amount).lte(0)) {
5084
+ if (bn17(amount).lte(0)) {
5349
5085
  throw new FuelError15(
5350
5086
  ErrorCode15.INVALID_TRANSFER_AMOUNT,
5351
5087
  "Transfer amount must be a positive number."
5352
5088
  );
5353
5089
  }
5354
5090
  const contractAddress = Address3.fromAddressOrString(contractId);
5091
+ const { minGasPrice } = this.provider.getGasConfig();
5092
+ const params = { gasPrice: minGasPrice, ...txParams };
5355
5093
  const { script, scriptData } = await assembleTransferToContractScript({
5356
5094
  hexlifiedContractId: contractAddress.toB256(),
5357
- amountToTransfer: bn18(amount),
5095
+ amountToTransfer: bn17(amount),
5358
5096
  assetId
5359
5097
  });
5360
5098
  const request = new ScriptTransactionRequest({
5361
- ...txParams,
5099
+ ...params,
5362
5100
  script,
5363
5101
  scriptData
5364
5102
  });
5365
5103
  request.addContractInputAndOutput(contractAddress);
5366
- const txCost = await this.provider.getTransactionCost(request, {
5367
- resourcesOwner: this,
5368
- quantitiesToContract: [{ amount: bn18(amount), assetId: String(assetId) }]
5104
+ const { maxFee, requiredQuantities, gasUsed } = await this.provider.getTransactionCost(
5105
+ request,
5106
+ [{ amount: bn17(amount), assetId: String(assetId) }]
5107
+ );
5108
+ request.gasLimit = bn17(params.gasLimit ?? gasUsed);
5109
+ this.validateGas({
5110
+ gasUsed,
5111
+ gasPrice: request.gasPrice,
5112
+ gasLimit: request.gasLimit,
5113
+ minGasPrice
5369
5114
  });
5370
- if (txParams.gasLimit) {
5371
- this.validateGas({
5372
- gasUsed: txCost.gasUsed,
5373
- gasLimit: request.gasLimit
5374
- });
5375
- }
5376
- request.gasLimit = txCost.gasUsed;
5377
- request.maxFee = txCost.maxFee;
5378
- await this.fund(request, txCost);
5115
+ await this.fund(request, requiredQuantities, maxFee);
5379
5116
  return this.sendTransaction(request);
5380
5117
  }
5381
5118
  /**
@@ -5387,31 +5124,34 @@ var Account = class extends AbstractAccount {
5387
5124
  * @returns A promise that resolves to the transaction response.
5388
5125
  */
5389
5126
  async withdrawToBaseLayer(recipient, amount, txParams = {}) {
5127
+ const { minGasPrice } = this.provider.getGasConfig();
5390
5128
  const recipientAddress = Address3.fromAddressOrString(recipient);
5391
5129
  const recipientDataArray = arrayify14(
5392
5130
  "0x".concat(recipientAddress.toHexString().substring(2).padStart(64, "0"))
5393
5131
  );
5394
5132
  const amountDataArray = arrayify14(
5395
- "0x".concat(bn18(amount).toHex().substring(2).padStart(16, "0"))
5133
+ "0x".concat(bn17(amount).toHex().substring(2).padStart(16, "0"))
5396
5134
  );
5397
5135
  const script = new Uint8Array([
5398
5136
  ...arrayify14(withdrawScript.bytes),
5399
5137
  ...recipientDataArray,
5400
5138
  ...amountDataArray
5401
5139
  ]);
5402
- const params = { script, ...txParams };
5140
+ const params = { script, gasPrice: minGasPrice, ...txParams };
5403
5141
  const request = new ScriptTransactionRequest(params);
5404
- const quantitiesToContract = [{ amount: bn18(amount), assetId: BaseAssetId3 }];
5405
- const txCost = await this.provider.getTransactionCost(request, { quantitiesToContract });
5406
- if (txParams.gasLimit) {
5407
- this.validateGas({
5408
- gasUsed: txCost.gasUsed,
5409
- gasLimit: request.gasLimit
5410
- });
5411
- }
5412
- request.maxFee = txCost.maxFee;
5413
- request.gasLimit = txCost.gasUsed;
5414
- await this.fund(request, txCost);
5142
+ const forwardingQuantities = [{ amount: bn17(amount), assetId: BaseAssetId3 }];
5143
+ const { requiredQuantities, maxFee, gasUsed } = await this.provider.getTransactionCost(
5144
+ request,
5145
+ forwardingQuantities
5146
+ );
5147
+ request.gasLimit = bn17(params.gasLimit ?? gasUsed);
5148
+ this.validateGas({
5149
+ gasUsed,
5150
+ gasPrice: request.gasPrice,
5151
+ gasLimit: request.gasLimit,
5152
+ minGasPrice
5153
+ });
5154
+ await this.fund(request, requiredQuantities, maxFee);
5415
5155
  return this.sendTransaction(request);
5416
5156
  }
5417
5157
  async signMessage(message) {
@@ -5469,7 +5209,18 @@ var Account = class extends AbstractAccount {
5469
5209
  }
5470
5210
  return this.provider.simulate(transactionRequest, { estimateTxDependencies: false });
5471
5211
  }
5472
- validateGas({ gasUsed, gasLimit }) {
5212
+ validateGas({
5213
+ gasUsed,
5214
+ gasPrice,
5215
+ gasLimit,
5216
+ minGasPrice
5217
+ }) {
5218
+ if (minGasPrice.gt(gasPrice)) {
5219
+ throw new FuelError15(
5220
+ ErrorCode15.GAS_PRICE_TOO_LOW,
5221
+ `Gas price '${gasPrice}' is lower than the required: '${minGasPrice}'.`
5222
+ );
5223
+ }
5473
5224
  if (gasUsed.gt(gasLimit)) {
5474
5225
  throw new FuelError15(
5475
5226
  ErrorCode15.GAS_LIMIT_TOO_LOW,
@@ -5765,7 +5516,7 @@ var BaseWalletUnlocked = class extends Account {
5765
5516
  * @param transactionRequestLike - The transaction request to send.
5766
5517
  * @returns A promise that resolves to the TransactionResponse object.
5767
5518
  */
5768
- async sendTransaction(transactionRequestLike, { estimateTxDependencies = false, awaitExecution } = {}) {
5519
+ async sendTransaction(transactionRequestLike, { estimateTxDependencies = true, awaitExecution } = {}) {
5769
5520
  const transactionRequest = transactionRequestify(transactionRequestLike);
5770
5521
  if (estimateTxDependencies) {
5771
5522
  await this.provider.estimateTxDependencies(transactionRequest);
@@ -5806,7 +5557,7 @@ __publicField(BaseWalletUnlocked, "defaultPath", "m/44'/1179993420'/0'/0/0");
5806
5557
  // src/hdwallet/hdwallet.ts
5807
5558
  import { ErrorCode as ErrorCode19, FuelError as FuelError19 } from "@fuel-ts/errors";
5808
5559
  import { sha256 as sha2564 } from "@fuel-ts/hasher";
5809
- import { bn as bn19, toBytes as toBytes2, toHex } from "@fuel-ts/math";
5560
+ import { bn as bn18, toBytes as toBytes2, toHex } from "@fuel-ts/math";
5810
5561
  import { arrayify as arrayify18, hexlify as hexlify17, concat as concat5 } from "@fuel-ts/utils";
5811
5562
  import { toBeHex, dataSlice as dataSlice2, encodeBase58 as encodeBase582, decodeBase58, computeHmac as computeHmac2, ripemd160 } from "ethers";
5812
5563
 
@@ -8278,7 +8029,7 @@ var HDWallet = class {
8278
8029
  const IR = bytes.slice(32);
8279
8030
  if (privateKey) {
8280
8031
  const N = "0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141";
8281
- const ki = bn19(IL).add(privateKey).mod(N).toBytes(32);
8032
+ const ki = bn18(IL).add(privateKey).mod(N).toBytes(32);
8282
8033
  return new HDWallet({
8283
8034
  privateKey: ki,
8284
8035
  chainCode: IR,
@@ -8967,7 +8718,7 @@ import {
8967
8718
  import { Address as Address9 } from "@fuel-ts/address";
8968
8719
  import { BaseAssetId as BaseAssetId4 } from "@fuel-ts/address/configs";
8969
8720
  import { ErrorCode as ErrorCode24, FuelError as FuelError24 } from "@fuel-ts/errors";
8970
- import { ByteArrayCoder, InputType as InputType8 } from "@fuel-ts/transactions";
8721
+ import { ByteArrayCoder } from "@fuel-ts/transactions";
8971
8722
  import { arrayify as arrayify20, hexlify as hexlify19 } from "@fuel-ts/utils";
8972
8723
 
8973
8724
  // src/predicate/utils/getPredicateRoot.ts
@@ -9026,10 +8777,15 @@ var Predicate = class extends Account {
9026
8777
  populateTransactionPredicateData(transactionRequestLike) {
9027
8778
  const request = transactionRequestify(transactionRequestLike);
9028
8779
  const { policies } = BaseTransactionRequest.getPolicyMeta(request);
9029
- request.inputs?.forEach((input) => {
9030
- if (input.type === InputType8.Coin && hexlify19(input.owner) === this.address.toB256()) {
9031
- input.predicate = hexlify19(this.bytes);
9032
- input.predicateData = hexlify19(this.getPredicateData(policies.length));
8780
+ const placeholderIndex = this.getIndexFromPlaceholderWitness(request);
8781
+ if (placeholderIndex !== -1) {
8782
+ request.removeWitness(placeholderIndex);
8783
+ }
8784
+ request.inputs.filter(isRequestInputResource).forEach((input) => {
8785
+ if (isRequestInputResourceFromOwner(input, this.address)) {
8786
+ input.predicate = this.bytes;
8787
+ input.predicateData = this.getPredicateData(policies.length);
8788
+ input.witnessIndex = 0;
9033
8789
  }
9034
8790
  });
9035
8791
  return request;
@@ -9044,7 +8800,8 @@ var Predicate = class extends Account {
9044
8800
  * @returns A promise that resolves to the prepared transaction request.
9045
8801
  */
9046
8802
  async createTransfer(destination, amount, assetId = BaseAssetId4, txParams = {}) {
9047
- return super.createTransfer(destination, amount, assetId, txParams);
8803
+ const request = await super.createTransfer(destination, amount, assetId, txParams);
8804
+ return this.populateTransactionPredicateData(request);
9048
8805
  }
9049
8806
  /**
9050
8807
  * Sends a transaction with the populated predicate data.
@@ -9052,9 +8809,9 @@ var Predicate = class extends Account {
9052
8809
  * @param transactionRequestLike - The transaction request-like object.
9053
8810
  * @returns A promise that resolves to the transaction response.
9054
8811
  */
9055
- sendTransaction(transactionRequestLike) {
9056
- const transactionRequest = transactionRequestify(transactionRequestLike);
9057
- return super.sendTransaction(transactionRequest, { estimateTxDependencies: false });
8812
+ sendTransaction(transactionRequestLike, options) {
8813
+ const transactionRequest = this.populateTransactionPredicateData(transactionRequestLike);
8814
+ return super.sendTransaction(transactionRequest, options);
9058
8815
  }
9059
8816
  /**
9060
8817
  * Simulates a transaction with the populated predicate data.
@@ -9063,8 +8820,22 @@ var Predicate = class extends Account {
9063
8820
  * @returns A promise that resolves to the call result.
9064
8821
  */
9065
8822
  simulateTransaction(transactionRequestLike) {
9066
- const transactionRequest = transactionRequestify(transactionRequestLike);
9067
- return super.simulateTransaction(transactionRequest, { estimateTxDependencies: false });
8823
+ const transactionRequest = this.populateTransactionPredicateData(transactionRequestLike);
8824
+ return super.simulateTransaction(transactionRequest);
8825
+ }
8826
+ /**
8827
+ * Retrieves resources satisfying the spend query for the account.
8828
+ *
8829
+ * @param quantities - Coins to retrieve.
8830
+ * @param excludedIds - IDs of resources to be excluded from the query.
8831
+ * @returns A promise that resolves to an array of Resources.
8832
+ */
8833
+ async getResourcesToSpend(quantities, excludedIds) {
8834
+ const resources = await super.getResourcesToSpend(quantities, excludedIds);
8835
+ return resources.map((resource) => ({
8836
+ ...resource,
8837
+ predicate: hexlify19(this.bytes)
8838
+ }));
9068
8839
  }
9069
8840
  getPredicateData(policiesLength) {
9070
8841
  if (!this.predicateData.length) {
@@ -9110,25 +8881,6 @@ var Predicate = class extends Account {
9110
8881
  predicateInterface: abiInterface
9111
8882
  };
9112
8883
  }
9113
- /**
9114
- * Retrieves resources satisfying the spend query for the account.
9115
- *
9116
- * @param quantities - IDs of coins to exclude.
9117
- * @param excludedIds - IDs of resources to be excluded from the query.
9118
- * @returns A promise that resolves to an array of Resources.
9119
- */
9120
- async getResourcesToSpend(quantities, excludedIds) {
9121
- const resources = await this.provider.getResourcesToSpend(
9122
- this.address,
9123
- quantities,
9124
- excludedIds
9125
- );
9126
- return resources.map((resource) => ({
9127
- ...resource,
9128
- predicate: hexlify19(this.bytes),
9129
- paddPredicateData: (policiesLength) => hexlify19(this.getPredicateData(policiesLength))
9130
- }));
9131
- }
9132
8884
  /**
9133
8885
  * Sets the configurable constants for the predicate.
9134
8886
  *
@@ -9164,6 +8916,28 @@ var Predicate = class extends Account {
9164
8916
  }
9165
8917
  return mutatedBytes;
9166
8918
  }
8919
+ /**
8920
+ * Returns the index of the witness placeholder that was added to this predicate.
8921
+ * If no witness placeholder was added, it returns -1.
8922
+ * @param request - The transaction request.
8923
+ * @returns The index of the witness placeholder, or -1 if there is no witness placeholder.
8924
+ */
8925
+ getIndexFromPlaceholderWitness(request) {
8926
+ const predicateInputs = request.inputs.filter(isRequestInputResource).filter((input) => isRequestInputResourceFromOwner(input, this.address));
8927
+ let index = -1;
8928
+ const hasEmptyPredicateInputs = predicateInputs.find((input) => !input.predicate);
8929
+ if (hasEmptyPredicateInputs) {
8930
+ index = hasEmptyPredicateInputs.witnessIndex;
8931
+ const allInputsAreEmpty = predicateInputs.every((input) => !input.predicate);
8932
+ if (!allInputsAreEmpty) {
8933
+ const wasFilledInputAddedFirst = !!predicateInputs[0]?.predicate;
8934
+ if (wasFilledInputAddedFirst) {
8935
+ index = -1;
8936
+ }
8937
+ }
8938
+ }
8939
+ return index;
8940
+ }
9167
8941
  };
9168
8942
 
9169
8943
  // src/connectors/fuel.ts
@@ -9877,7 +9651,7 @@ export {
9877
9651
  WalletLocked,
9878
9652
  WalletManager,
9879
9653
  WalletUnlocked,
9880
- addAmountToCoinQuantities,
9654
+ addAmountToAsset,
9881
9655
  addOperation,
9882
9656
  assemblePanicError,
9883
9657
  assembleReceiptByType,
@@ -9886,10 +9660,10 @@ export {
9886
9660
  assets,
9887
9661
  buildBlockExplorerUrl,
9888
9662
  cacheFor,
9889
- cacheTxInputsFromOwner,
9890
- calculateGasFee,
9663
+ cacheResources,
9891
9664
  calculateMetadataGasForTxCreate,
9892
9665
  calculateMetadataGasForTxScript,
9666
+ calculatePriceWithFactor,
9893
9667
  calculateTransactionFee,
9894
9668
  coinQuantityfy,
9895
9669
  deferPromise,
@@ -9933,6 +9707,7 @@ export {
9933
9707
  getReceiptsMessageOut,
9934
9708
  getReceiptsTransferOut,
9935
9709
  getReceiptsWithMissingData,
9710
+ getRequestInputResourceOwner,
9936
9711
  getTransactionStatusName,
9937
9712
  getTransactionSummary,
9938
9713
  getTransactionSummaryFromRequest,
@@ -9946,6 +9721,10 @@ export {
9946
9721
  isMessage,
9947
9722
  isRawCoin,
9948
9723
  isRawMessage,
9724
+ isRequestInputCoin,
9725
+ isRequestInputMessage,
9726
+ isRequestInputResource,
9727
+ isRequestInputResourceFromOwner,
9949
9728
  isType,
9950
9729
  isTypeCreate,
9951
9730
  isTypeMint,