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

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

Potentially problematic release.


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

Files changed (54) hide show
  1. package/README.md +1 -1
  2. package/dist/account.d.ts +5 -4
  3. package/dist/account.d.ts.map +1 -1
  4. package/dist/configs.d.ts.map +1 -1
  5. package/dist/configs.global.js +1 -1
  6. package/dist/configs.global.js.map +1 -1
  7. package/dist/configs.js +1 -1
  8. package/dist/configs.js.map +1 -1
  9. package/dist/configs.mjs +1 -1
  10. package/dist/configs.mjs.map +1 -1
  11. package/dist/index.global.js +872 -620
  12. package/dist/index.global.js.map +1 -1
  13. package/dist/index.js +848 -610
  14. package/dist/index.js.map +1 -1
  15. package/dist/index.mjs +690 -453
  16. package/dist/index.mjs.map +1 -1
  17. package/dist/predicate/predicate.d.ts +10 -2
  18. package/dist/predicate/predicate.d.ts.map +1 -1
  19. package/dist/providers/__generated__/operations.d.ts +888 -322
  20. package/dist/providers/__generated__/operations.d.ts.map +1 -1
  21. package/dist/providers/coin-quantity.d.ts +3 -3
  22. package/dist/providers/coin-quantity.d.ts.map +1 -1
  23. package/dist/providers/coin.d.ts +4 -2
  24. package/dist/providers/coin.d.ts.map +1 -1
  25. package/dist/providers/fuel-graphql-subscriber.d.ts.map +1 -1
  26. package/dist/providers/message.d.ts +3 -1
  27. package/dist/providers/message.d.ts.map +1 -1
  28. package/dist/providers/provider.d.ts +45 -34
  29. package/dist/providers/provider.d.ts.map +1 -1
  30. package/dist/providers/transaction-request/create-transaction-request.d.ts.map +1 -1
  31. package/dist/providers/transaction-request/input.d.ts +2 -2
  32. package/dist/providers/transaction-request/input.d.ts.map +1 -1
  33. package/dist/providers/transaction-request/script-transaction-request.d.ts.map +1 -1
  34. package/dist/providers/transaction-request/transaction-request.d.ts +9 -29
  35. package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
  36. package/dist/providers/transaction-request/utils.d.ts +3 -0
  37. package/dist/providers/transaction-request/utils.d.ts.map +1 -1
  38. package/dist/providers/transaction-response/transaction-response.d.ts.map +1 -1
  39. package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts +2 -0
  40. package/dist/providers/transaction-summary/assemble-transaction-summary.d.ts.map +1 -1
  41. package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts +3 -2
  42. package/dist/providers/transaction-summary/calculate-transaction-fee.d.ts.map +1 -1
  43. package/dist/providers/transaction-summary/get-transaction-summary.d.ts.map +1 -1
  44. package/dist/providers/utils/gas.d.ts +8 -2
  45. package/dist/providers/utils/gas.d.ts.map +1 -1
  46. package/dist/test-utils/launchNode.d.ts.map +1 -1
  47. package/dist/test-utils.global.js +1587 -1121
  48. package/dist/test-utils.global.js.map +1 -1
  49. package/dist/test-utils.js +824 -607
  50. package/dist/test-utils.js.map +1 -1
  51. package/dist/test-utils.mjs +682 -465
  52. package/dist/test-utils.mjs.map +1 -1
  53. package/dist/wallet/base-wallet-unlocked.d.ts.map +1 -1
  54. package/package.json +17 -17
@@ -24,35 +24,38 @@ import { hexlify as hexlify15 } from "@fuel-ts/utils";
24
24
 
25
25
  // src/account.ts
26
26
  import { Address as Address3 } from "@fuel-ts/address";
27
+ import { BaseAssetId as BaseAssetId3 } from "@fuel-ts/address/configs";
27
28
  import { ErrorCode as ErrorCode15, FuelError as FuelError15 } from "@fuel-ts/errors";
28
29
  import { AbstractAccount } from "@fuel-ts/interfaces";
29
- import { bn as bn17 } from "@fuel-ts/math";
30
+ import { bn as bn18 } from "@fuel-ts/math";
30
31
  import { arrayify as arrayify14 } from "@fuel-ts/utils";
32
+ import { clone as clone4 } from "ramda";
31
33
 
32
34
  // src/providers/coin-quantity.ts
35
+ import { BaseAssetId } from "@fuel-ts/address/configs";
33
36
  import { bn } from "@fuel-ts/math";
34
37
  import { hexlify } from "@fuel-ts/utils";
35
38
  var coinQuantityfy = (coinQuantityLike) => {
36
39
  let assetId;
37
40
  let amount;
38
- let max2;
41
+ let max;
39
42
  if (Array.isArray(coinQuantityLike)) {
40
43
  amount = coinQuantityLike[0];
41
- assetId = coinQuantityLike[1];
42
- max2 = coinQuantityLike[2];
44
+ assetId = coinQuantityLike[1] ?? BaseAssetId;
45
+ max = coinQuantityLike[2] ?? void 0;
43
46
  } else {
44
47
  amount = coinQuantityLike.amount;
45
- assetId = coinQuantityLike.assetId;
46
- max2 = coinQuantityLike.max ?? void 0;
48
+ assetId = coinQuantityLike.assetId ?? BaseAssetId;
49
+ max = coinQuantityLike.max ?? void 0;
47
50
  }
48
51
  const bnAmount = bn(amount);
49
52
  return {
50
53
  assetId: hexlify(assetId),
51
54
  amount: bnAmount.lt(1) ? bn(1) : bnAmount,
52
- max: max2 ? bn(max2) : void 0
55
+ max: max ? bn(max) : void 0
53
56
  };
54
57
  };
55
- var addAmountToAsset = (params) => {
58
+ var addAmountToCoinQuantities = (params) => {
56
59
  const { amount, assetId } = params;
57
60
  const coinQuantities = [...params.coinQuantities];
58
61
  const assetIdx = coinQuantities.findIndex((coinQuantity) => coinQuantity.assetId === assetId);
@@ -67,9 +70,9 @@ var addAmountToAsset = (params) => {
67
70
  // src/providers/provider.ts
68
71
  import { Address as Address2 } from "@fuel-ts/address";
69
72
  import { ErrorCode as ErrorCode13, FuelError as FuelError13 } from "@fuel-ts/errors";
70
- import { BN, bn as bn15, max } from "@fuel-ts/math";
73
+ import { BN, bn as bn16 } from "@fuel-ts/math";
71
74
  import {
72
- InputType as InputType6,
75
+ InputType as InputType7,
73
76
  TransactionType as TransactionType8,
74
77
  InputMessageCoder,
75
78
  TransactionCoder as TransactionCoder5
@@ -85,14 +88,10 @@ import { clone as clone3 } from "ramda";
85
88
  import gql from "graphql-tag";
86
89
  var ReceiptFragmentFragmentDoc = gql`
87
90
  fragment receiptFragment on Receipt {
88
- contract {
89
- id
90
- }
91
+ id
91
92
  pc
92
93
  is
93
- to {
94
- id
95
- }
94
+ to
96
95
  toAddress
97
96
  amount
98
97
  assetId
@@ -130,10 +129,16 @@ var TransactionStatusFragmentFragmentDoc = gql`
130
129
  id
131
130
  }
132
131
  time
132
+ receipts {
133
+ ...receiptFragment
134
+ }
133
135
  programState {
134
136
  returnType
135
137
  data
136
138
  }
139
+ receipts {
140
+ ...receiptFragment
141
+ }
137
142
  }
138
143
  ... on FailureStatus {
139
144
  block {
@@ -141,26 +146,24 @@ var TransactionStatusFragmentFragmentDoc = gql`
141
146
  }
142
147
  time
143
148
  reason
149
+ receipts {
150
+ ...receiptFragment
151
+ }
144
152
  }
145
153
  ... on SqueezedOutStatus {
146
154
  reason
147
155
  }
148
156
  }
149
- `;
157
+ ${ReceiptFragmentFragmentDoc}`;
150
158
  var TransactionFragmentFragmentDoc = gql`
151
159
  fragment transactionFragment on Transaction {
152
160
  id
153
161
  rawPayload
154
- gasPrice
155
- receipts {
156
- ...receiptFragment
157
- }
158
162
  status {
159
163
  ...transactionStatusFragment
160
164
  }
161
165
  }
162
- ${ReceiptFragmentFragmentDoc}
163
- ${TransactionStatusFragmentFragmentDoc}`;
166
+ ${TransactionStatusFragmentFragmentDoc}`;
164
167
  var InputEstimatePredicatesFragmentFragmentDoc = gql`
165
168
  fragment inputEstimatePredicatesFragment on Input {
166
169
  ... on InputCoin {
@@ -178,6 +181,46 @@ var TransactionEstimatePredicatesFragmentFragmentDoc = gql`
178
181
  }
179
182
  }
180
183
  ${InputEstimatePredicatesFragmentFragmentDoc}`;
184
+ var DryRunFailureStatusFragmentFragmentDoc = gql`
185
+ fragment dryRunFailureStatusFragment on DryRunFailureStatus {
186
+ reason
187
+ programState {
188
+ returnType
189
+ data
190
+ }
191
+ }
192
+ `;
193
+ var DryRunSuccessStatusFragmentFragmentDoc = gql`
194
+ fragment dryRunSuccessStatusFragment on DryRunSuccessStatus {
195
+ programState {
196
+ returnType
197
+ data
198
+ }
199
+ }
200
+ `;
201
+ var DryRunTransactionStatusFragmentFragmentDoc = gql`
202
+ fragment dryRunTransactionStatusFragment on DryRunTransactionStatus {
203
+ ... on DryRunFailureStatus {
204
+ ...dryRunFailureStatusFragment
205
+ }
206
+ ... on DryRunSuccessStatus {
207
+ ...dryRunSuccessStatusFragment
208
+ }
209
+ }
210
+ ${DryRunFailureStatusFragmentFragmentDoc}
211
+ ${DryRunSuccessStatusFragmentFragmentDoc}`;
212
+ var DryRunTransactionExecutionStatusFragmentFragmentDoc = gql`
213
+ fragment dryRunTransactionExecutionStatusFragment on DryRunTransactionExecutionStatus {
214
+ id
215
+ status {
216
+ ...dryRunTransactionStatusFragment
217
+ }
218
+ receipts {
219
+ ...receiptFragment
220
+ }
221
+ }
222
+ ${DryRunTransactionStatusFragmentFragmentDoc}
223
+ ${ReceiptFragmentFragmentDoc}`;
181
224
  var CoinFragmentFragmentDoc = gql`
182
225
  fragment coinFragment on Coin {
183
226
  __typename
@@ -185,7 +228,6 @@ var CoinFragmentFragmentDoc = gql`
185
228
  owner
186
229
  amount
187
230
  assetId
188
- maturity
189
231
  blockCreated
190
232
  txCreatedIdx
191
233
  }
@@ -230,7 +272,6 @@ var MessageProofFragmentFragmentDoc = gql`
230
272
  prevRoot
231
273
  time
232
274
  applicationHash
233
- messageReceiptRoot
234
275
  messageReceiptCount
235
276
  }
236
277
  commitBlockHeader {
@@ -242,7 +283,6 @@ var MessageProofFragmentFragmentDoc = gql`
242
283
  prevRoot
243
284
  time
244
285
  applicationHash
245
- messageReceiptRoot
246
286
  messageReceiptCount
247
287
  }
248
288
  sender
@@ -262,8 +302,8 @@ var BalanceFragmentFragmentDoc = gql`
262
302
  var BlockFragmentFragmentDoc = gql`
263
303
  fragment blockFragment on Block {
264
304
  id
305
+ height
265
306
  header {
266
- height
267
307
  time
268
308
  }
269
309
  transactions {
@@ -321,6 +361,11 @@ var DependentCostFragmentFragmentDoc = gql`
321
361
  `;
322
362
  var GasCostsFragmentFragmentDoc = gql`
323
363
  fragment GasCostsFragment on GasCosts {
364
+ version {
365
+ ... on Version {
366
+ value
367
+ }
368
+ }
324
369
  add
325
370
  addi
326
371
  aloc
@@ -333,7 +378,6 @@ var GasCostsFragmentFragmentDoc = gql`
333
378
  cb
334
379
  cfei
335
380
  cfsi
336
- croo
337
381
  div
338
382
  divi
339
383
  ecr1
@@ -416,6 +460,9 @@ var GasCostsFragmentFragmentDoc = gql`
416
460
  ccp {
417
461
  ...DependentCostFragment
418
462
  }
463
+ croo {
464
+ ...DependentCostFragment
465
+ }
419
466
  csiz {
420
467
  ...DependentCostFragment
421
468
  }
@@ -475,6 +522,11 @@ var GasCostsFragmentFragmentDoc = gql`
475
522
  ${DependentCostFragmentFragmentDoc}`;
476
523
  var ConsensusParametersFragmentFragmentDoc = gql`
477
524
  fragment consensusParametersFragment on ConsensusParameters {
525
+ version {
526
+ ... on Version {
527
+ value
528
+ }
529
+ }
478
530
  txParams {
479
531
  ...TxParametersFragment
480
532
  }
@@ -534,18 +586,9 @@ var NodeInfoFragmentFragmentDoc = gql`
534
586
  fragment nodeInfoFragment on NodeInfo {
535
587
  utxoValidation
536
588
  vmBacktrace
537
- minGasPrice
538
589
  maxTx
539
590
  maxDepth
540
591
  nodeVersion
541
- peers {
542
- id
543
- addresses
544
- clientVersion
545
- blockHeight
546
- lastHeartbeatMs
547
- appScore
548
- }
549
592
  }
550
593
  `;
551
594
  var GetVersionDocument = gql`
@@ -580,13 +623,9 @@ var GetTransactionWithReceiptsDocument = gql`
580
623
  query getTransactionWithReceipts($transactionId: TransactionId!) {
581
624
  transaction(id: $transactionId) {
582
625
  ...transactionFragment
583
- receipts {
584
- ...receiptFragment
585
- }
586
626
  }
587
627
  }
588
- ${TransactionFragmentFragmentDoc}
589
- ${ReceiptFragmentFragmentDoc}`;
628
+ ${TransactionFragmentFragmentDoc}`;
590
629
  var GetTransactionsDocument = gql`
591
630
  query getTransactions($after: String, $before: String, $first: Int, $last: Int) {
592
631
  transactions(after: $after, before: $before, first: $first, last: $last) {
@@ -714,6 +753,20 @@ var GetBalanceDocument = gql`
714
753
  }
715
754
  }
716
755
  ${BalanceFragmentFragmentDoc}`;
756
+ var GetLatestGasPriceDocument = gql`
757
+ query getLatestGasPrice {
758
+ latestGasPrice {
759
+ gasPrice
760
+ }
761
+ }
762
+ `;
763
+ var EstimateGasPriceDocument = gql`
764
+ query estimateGasPrice($blockHorizon: U32!) {
765
+ estimateGasPrice(blockHorizon: $blockHorizon) {
766
+ gasPrice
767
+ }
768
+ }
769
+ `;
717
770
  var GetBalancesDocument = gql`
718
771
  query getBalances($filter: BalanceFilterInput!, $after: String, $before: String, $first: Int, $last: Int) {
719
772
  balances(
@@ -768,12 +821,12 @@ var GetMessageStatusDocument = gql`
768
821
  }
769
822
  `;
770
823
  var DryRunDocument = gql`
771
- mutation dryRun($encodedTransaction: HexString!, $utxoValidation: Boolean) {
772
- dryRun(tx: $encodedTransaction, utxoValidation: $utxoValidation) {
773
- ...receiptFragment
824
+ mutation dryRun($encodedTransactions: [HexString!]!, $utxoValidation: Boolean) {
825
+ dryRun(txs: $encodedTransactions, utxoValidation: $utxoValidation) {
826
+ ...dryRunTransactionExecutionStatusFragment
774
827
  }
775
828
  }
776
- ${ReceiptFragmentFragmentDoc}`;
829
+ ${DryRunTransactionExecutionStatusFragmentFragmentDoc}`;
777
830
  var SubmitDocument = gql`
778
831
  mutation submit($encodedTransaction: HexString!) {
779
832
  submit(tx: $encodedTransaction) {
@@ -856,6 +909,12 @@ function getSdk(requester) {
856
909
  getBalance(variables, options) {
857
910
  return requester(GetBalanceDocument, variables, options);
858
911
  },
912
+ getLatestGasPrice(variables, options) {
913
+ return requester(GetLatestGasPriceDocument, variables, options);
914
+ },
915
+ estimateGasPrice(variables, options) {
916
+ return requester(EstimateGasPriceDocument, variables, options);
917
+ },
859
918
  getBalances(variables, options) {
860
919
  return requester(GetBalancesDocument, variables, options);
861
920
  },
@@ -929,7 +988,9 @@ var _FuelGraphqlSubscriber = class {
929
988
  } catch (e) {
930
989
  throw new FuelError(
931
990
  ErrorCode.STREAM_PARSING_ERROR,
932
- `Error while parsing stream data response: ${text}`
991
+ `Error while parsing stream data response: ${text}
992
+
993
+ Thrown error: ${e}`
933
994
  );
934
995
  }
935
996
  if (Array.isArray(errors)) {
@@ -1030,7 +1091,7 @@ var inputify = (value) => {
1030
1091
  return {
1031
1092
  type: InputType.Coin,
1032
1093
  txID: hexlify3(arrayify(value.id).slice(0, 32)),
1033
- outputIndex: arrayify(value.id)[32],
1094
+ outputIndex: toNumber(arrayify(value.id).slice(32, 34)),
1034
1095
  owner: hexlify3(value.owner),
1035
1096
  amount: bn2(value.amount),
1036
1097
  assetId: hexlify3(value.assetId),
@@ -1039,10 +1100,9 @@ var inputify = (value) => {
1039
1100
  txIndex: toNumber(arrayify(value.txPointer).slice(8, 16))
1040
1101
  },
1041
1102
  witnessIndex: value.witnessIndex,
1042
- maturity: value.maturity ?? 0,
1043
1103
  predicateGasUsed: bn2(value.predicateGasUsed),
1044
- predicateLength: predicate.length,
1045
- predicateDataLength: predicateData.length,
1104
+ predicateLength: bn2(predicate.length),
1105
+ predicateDataLength: bn2(predicateData.length),
1046
1106
  predicate: hexlify3(predicate),
1047
1107
  predicateData: hexlify3(predicateData)
1048
1108
  };
@@ -1073,8 +1133,8 @@ var inputify = (value) => {
1073
1133
  nonce: hexlify3(value.nonce),
1074
1134
  witnessIndex: value.witnessIndex,
1075
1135
  predicateGasUsed: bn2(value.predicateGasUsed),
1076
- predicateLength: predicate.length,
1077
- predicateDataLength: predicateData.length,
1136
+ predicateLength: bn2(predicate.length),
1137
+ predicateDataLength: bn2(predicateData.length),
1078
1138
  predicate: hexlify3(predicate),
1079
1139
  predicateData: hexlify3(predicateData),
1080
1140
  data: hexlify3(data),
@@ -1149,7 +1209,7 @@ var outputify = (value) => {
1149
1209
 
1150
1210
  // src/providers/transaction-request/transaction-request.ts
1151
1211
  import { Address, addressify } from "@fuel-ts/address";
1152
- import { ZeroBytes32 as ZeroBytes324 } from "@fuel-ts/address/configs";
1212
+ import { BaseAssetId as BaseAssetId2, ZeroBytes32 as ZeroBytes324 } from "@fuel-ts/address/configs";
1153
1213
  import { bn as bn7 } from "@fuel-ts/math";
1154
1214
  import {
1155
1215
  PolicyType,
@@ -1159,6 +1219,7 @@ import {
1159
1219
  TransactionType
1160
1220
  } from "@fuel-ts/transactions";
1161
1221
  import { concat, hexlify as hexlify7 } from "@fuel-ts/utils";
1222
+ import { randomBytes } from "ethers";
1162
1223
 
1163
1224
  // src/providers/resource.ts
1164
1225
  var isCoin = (resource) => "id" in resource;
@@ -1199,8 +1260,8 @@ function assembleReceiptByType(receipt) {
1199
1260
  case "CALL" /* Call */: {
1200
1261
  const callReceipt = {
1201
1262
  type: ReceiptType.Call,
1202
- from: hexOrZero(receipt.contract?.id),
1203
- to: hexOrZero(receipt?.to?.id),
1263
+ from: hexOrZero(receipt.id || receipt.contractId),
1264
+ to: hexOrZero(receipt?.to),
1204
1265
  amount: bn4(receipt.amount),
1205
1266
  assetId: hexOrZero(receipt.assetId),
1206
1267
  gas: bn4(receipt.gas),
@@ -1214,7 +1275,7 @@ function assembleReceiptByType(receipt) {
1214
1275
  case "RETURN" /* Return */: {
1215
1276
  const returnReceipt = {
1216
1277
  type: ReceiptType.Return,
1217
- id: hexOrZero(receipt.contract?.id),
1278
+ id: hexOrZero(receipt.id || receipt.contractId),
1218
1279
  val: bn4(receipt.val),
1219
1280
  pc: bn4(receipt.pc),
1220
1281
  is: bn4(receipt.is)
@@ -1224,7 +1285,7 @@ function assembleReceiptByType(receipt) {
1224
1285
  case "RETURN_DATA" /* ReturnData */: {
1225
1286
  const returnDataReceipt = {
1226
1287
  type: ReceiptType.ReturnData,
1227
- id: hexOrZero(receipt.contract?.id),
1288
+ id: hexOrZero(receipt.id || receipt.contractId),
1228
1289
  ptr: bn4(receipt.ptr),
1229
1290
  len: bn4(receipt.len),
1230
1291
  digest: hexOrZero(receipt.digest),
@@ -1236,7 +1297,7 @@ function assembleReceiptByType(receipt) {
1236
1297
  case "PANIC" /* Panic */: {
1237
1298
  const panicReceipt = {
1238
1299
  type: ReceiptType.Panic,
1239
- id: hexOrZero(receipt.contract?.id),
1300
+ id: hexOrZero(receipt.id),
1240
1301
  reason: bn4(receipt.reason),
1241
1302
  pc: bn4(receipt.pc),
1242
1303
  is: bn4(receipt.is),
@@ -1247,7 +1308,7 @@ function assembleReceiptByType(receipt) {
1247
1308
  case "REVERT" /* Revert */: {
1248
1309
  const revertReceipt = {
1249
1310
  type: ReceiptType.Revert,
1250
- id: hexOrZero(receipt.contract?.id),
1311
+ id: hexOrZero(receipt.id || receipt.contractId),
1251
1312
  val: bn4(receipt.ra),
1252
1313
  pc: bn4(receipt.pc),
1253
1314
  is: bn4(receipt.is)
@@ -1257,7 +1318,7 @@ function assembleReceiptByType(receipt) {
1257
1318
  case "LOG" /* Log */: {
1258
1319
  const logReceipt = {
1259
1320
  type: ReceiptType.Log,
1260
- id: hexOrZero(receipt.contract?.id),
1321
+ id: hexOrZero(receipt.id || receipt.contractId),
1261
1322
  val0: bn4(receipt.ra),
1262
1323
  val1: bn4(receipt.rb),
1263
1324
  val2: bn4(receipt.rc),
@@ -1270,7 +1331,7 @@ function assembleReceiptByType(receipt) {
1270
1331
  case "LOG_DATA" /* LogData */: {
1271
1332
  const logDataReceipt = {
1272
1333
  type: ReceiptType.LogData,
1273
- id: hexOrZero(receipt.contract?.id),
1334
+ id: hexOrZero(receipt.id || receipt.contractId),
1274
1335
  val0: bn4(receipt.ra),
1275
1336
  val1: bn4(receipt.rb),
1276
1337
  ptr: bn4(receipt.ptr),
@@ -1284,8 +1345,8 @@ function assembleReceiptByType(receipt) {
1284
1345
  case "TRANSFER" /* Transfer */: {
1285
1346
  const transferReceipt = {
1286
1347
  type: ReceiptType.Transfer,
1287
- from: hexOrZero(receipt.contract?.id),
1288
- to: hexOrZero(receipt.toAddress || receipt?.to?.id),
1348
+ from: hexOrZero(receipt.id || receipt.contractId),
1349
+ to: hexOrZero(receipt.toAddress || receipt?.to),
1289
1350
  amount: bn4(receipt.amount),
1290
1351
  assetId: hexOrZero(receipt.assetId),
1291
1352
  pc: bn4(receipt.pc),
@@ -1296,8 +1357,8 @@ function assembleReceiptByType(receipt) {
1296
1357
  case "TRANSFER_OUT" /* TransferOut */: {
1297
1358
  const transferOutReceipt = {
1298
1359
  type: ReceiptType.TransferOut,
1299
- from: hexOrZero(receipt.contract?.id),
1300
- to: hexOrZero(receipt.toAddress || receipt.to?.id),
1360
+ from: hexOrZero(receipt.id || receipt.contractId),
1361
+ to: hexOrZero(receipt.toAddress || receipt.to),
1301
1362
  amount: bn4(receipt.amount),
1302
1363
  assetId: hexOrZero(receipt.assetId),
1303
1364
  pc: bn4(receipt.pc),
@@ -1340,7 +1401,7 @@ function assembleReceiptByType(receipt) {
1340
1401
  return receiptMessageOut;
1341
1402
  }
1342
1403
  case "MINT" /* Mint */: {
1343
- const contractId = hexOrZero(receipt.contract?.id);
1404
+ const contractId = hexOrZero(receipt.id || receipt.contractId);
1344
1405
  const subId = hexOrZero(receipt.subId);
1345
1406
  const assetId = ReceiptMintCoder.getAssetId(contractId, subId);
1346
1407
  const mintReceipt = {
@@ -1355,7 +1416,7 @@ function assembleReceiptByType(receipt) {
1355
1416
  return mintReceipt;
1356
1417
  }
1357
1418
  case "BURN" /* Burn */: {
1358
- const contractId = hexOrZero(receipt.contract?.id);
1419
+ const contractId = hexOrZero(receipt.id || receipt.contractId);
1359
1420
  const subId = hexOrZero(receipt.subId);
1360
1421
  const assetId = ReceiptBurnCoder.getAssetId(contractId, subId);
1361
1422
  const burnReceipt = {
@@ -1381,7 +1442,6 @@ import { ErrorCode as ErrorCode6, FuelError as FuelError6 } from "@fuel-ts/error
1381
1442
  import { bn as bn5 } from "@fuel-ts/math";
1382
1443
  import { ReceiptType as ReceiptType2 } from "@fuel-ts/transactions";
1383
1444
  import { arrayify as arrayify3 } from "@fuel-ts/utils";
1384
- var calculatePriceWithFactor = (gas, gasPrice, priceFactor) => bn5(Math.ceil(gas.mul(gasPrice).toNumber() / priceFactor.toNumber()));
1385
1445
  var getGasUsedFromReceipts = (receipts) => {
1386
1446
  const scriptResult = receipts.filter(
1387
1447
  (receipt) => receipt.type === ReceiptType2.ScriptResult
@@ -1402,18 +1462,28 @@ function resolveGasDependentCosts(byteSize, gasDependentCost) {
1402
1462
  }
1403
1463
  function gasUsedByInputs(inputs, txBytesSize, gasCosts) {
1404
1464
  const witnessCache = [];
1405
- const totalGas = inputs.reduce((total, input) => {
1465
+ const chargeableInputs = inputs.filter((input) => {
1466
+ const isCoinOrMessage = "owner" in input || "sender" in input;
1467
+ if (isCoinOrMessage) {
1468
+ if ("predicate" in input && input.predicate && input.predicate !== "0x") {
1469
+ return true;
1470
+ }
1471
+ if (!witnessCache.includes(input.witnessIndex)) {
1472
+ witnessCache.push(input.witnessIndex);
1473
+ return true;
1474
+ }
1475
+ }
1476
+ return false;
1477
+ });
1478
+ const vmInitializationCost = resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization);
1479
+ const totalGas = chargeableInputs.reduce((total, input) => {
1406
1480
  if ("predicate" in input && input.predicate && input.predicate !== "0x") {
1407
1481
  return total.add(
1408
- resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization).add(resolveGasDependentCosts(arrayify3(input.predicate).length, gasCosts.contractRoot)).add(bn5(input.predicateGasUsed))
1482
+ vmInitializationCost.add(resolveGasDependentCosts(arrayify3(input.predicate).length, gasCosts.contractRoot)).add(bn5(input.predicateGasUsed))
1409
1483
  );
1410
1484
  }
1411
- if ("witnessIndex" in input && !witnessCache.includes(input.witnessIndex)) {
1412
- witnessCache.push(input.witnessIndex);
1413
- return total.add(gasCosts.ecr1);
1414
- }
1415
- return total;
1416
- }, bn5());
1485
+ return total.add(gasCosts.ecr1);
1486
+ }, bn5(0));
1417
1487
  return totalGas;
1418
1488
  }
1419
1489
  function getMinGas(params) {
@@ -1425,12 +1495,20 @@ function getMinGas(params) {
1425
1495
  return minGas;
1426
1496
  }
1427
1497
  function getMaxGas(params) {
1428
- const { gasPerByte, witnessesLength, witnessLimit, minGas, gasLimit = bn5(0) } = params;
1498
+ const {
1499
+ gasPerByte,
1500
+ witnessesLength,
1501
+ witnessLimit,
1502
+ minGas,
1503
+ gasLimit = bn5(0),
1504
+ maxGasPerTx
1505
+ } = params;
1429
1506
  let remainingAllowedWitnessGas = bn5(0);
1430
1507
  if (witnessLimit?.gt(0) && witnessLimit.gte(witnessesLength)) {
1431
1508
  remainingAllowedWitnessGas = bn5(witnessLimit).sub(witnessesLength).mul(gasPerByte);
1432
1509
  }
1433
- return remainingAllowedWitnessGas.add(minGas).add(gasLimit);
1510
+ const maxGas = remainingAllowedWitnessGas.add(minGas).add(gasLimit);
1511
+ return maxGas.gte(maxGasPerTx) ? maxGasPerTx : maxGas;
1434
1512
  }
1435
1513
  function calculateMetadataGasForTxCreate({
1436
1514
  gasCosts,
@@ -1452,6 +1530,10 @@ function calculateMetadataGasForTxScript({
1452
1530
  }) {
1453
1531
  return resolveGasDependentCosts(txBytesSize, gasCosts.s256);
1454
1532
  }
1533
+ var calculateGasFee = (params) => {
1534
+ const { gas, gasPrice, priceFactor, tip } = params;
1535
+ return gas.mul(gasPrice).div(priceFactor).add(tip);
1536
+ };
1455
1537
 
1456
1538
  // src/providers/utils/json.ts
1457
1539
  import { hexlify as hexlify5 } from "@fuel-ts/utils";
@@ -1596,7 +1678,7 @@ var witnessify = (value) => {
1596
1678
  // src/providers/transaction-request/transaction-request.ts
1597
1679
  var BaseTransactionRequest = class {
1598
1680
  /** Gas price for transaction */
1599
- gasPrice;
1681
+ tip;
1600
1682
  /** Block until which tx cannot be included */
1601
1683
  maturity;
1602
1684
  /** The maximum fee payable by this transaction using BASE_ASSET. */
@@ -1609,38 +1691,34 @@ var BaseTransactionRequest = class {
1609
1691
  outputs = [];
1610
1692
  /** List of witnesses */
1611
1693
  witnesses = [];
1612
- /** Base asset ID - should be fetched from the chain */
1613
- baseAssetId = ZeroBytes324;
1614
1694
  /**
1615
1695
  * Constructor for initializing a base transaction request.
1616
1696
  *
1617
1697
  * @param baseTransactionRequest - Optional object containing properties to initialize the transaction request.
1618
1698
  */
1619
1699
  constructor({
1620
- gasPrice,
1700
+ tip,
1621
1701
  maturity,
1622
1702
  maxFee,
1623
1703
  witnessLimit,
1624
1704
  inputs,
1625
1705
  outputs,
1626
- witnesses,
1627
- baseAssetId
1706
+ witnesses
1628
1707
  } = {}) {
1629
- this.gasPrice = bn7(gasPrice);
1708
+ this.tip = bn7(tip);
1630
1709
  this.maturity = maturity ?? 0;
1631
1710
  this.witnessLimit = witnessLimit ? bn7(witnessLimit) : void 0;
1632
1711
  this.maxFee = maxFee ? bn7(maxFee) : void 0;
1633
1712
  this.inputs = inputs ?? [];
1634
1713
  this.outputs = outputs ?? [];
1635
1714
  this.witnesses = witnesses ?? [];
1636
- this.baseAssetId = baseAssetId ?? ZeroBytes324;
1637
1715
  }
1638
1716
  static getPolicyMeta(req) {
1639
1717
  let policyTypes = 0;
1640
1718
  const policies = [];
1641
- if (req.gasPrice) {
1642
- policyTypes += PolicyType.GasPrice;
1643
- policies.push({ data: req.gasPrice, type: PolicyType.GasPrice });
1719
+ if (req.tip) {
1720
+ policyTypes += PolicyType.Tip;
1721
+ policies.push({ data: req.tip, type: PolicyType.Tip });
1644
1722
  }
1645
1723
  if (req.witnessLimit) {
1646
1724
  policyTypes += PolicyType.WitnessLimit;
@@ -1827,10 +1905,10 @@ var BaseTransactionRequest = class {
1827
1905
  * @param predicate - Predicate bytes.
1828
1906
  * @param predicateData - Predicate data bytes.
1829
1907
  */
1830
- addCoinInput(coin, predicate) {
1908
+ addCoinInput(coin) {
1831
1909
  const { assetId, owner, amount } = coin;
1832
1910
  let witnessIndex;
1833
- if (predicate) {
1911
+ if (coin.predicate) {
1834
1912
  witnessIndex = 0;
1835
1913
  } else {
1836
1914
  witnessIndex = this.getCoinInputWitnessIndexByOwner(owner);
@@ -1845,9 +1923,7 @@ var BaseTransactionRequest = class {
1845
1923
  amount,
1846
1924
  assetId,
1847
1925
  txPointer: "0x00000000000000000000000000000000",
1848
- witnessIndex,
1849
- predicate: predicate?.bytes,
1850
- predicateData: predicate?.predicateDataBytes
1926
+ witnessIndex
1851
1927
  };
1852
1928
  this.pushInput(input);
1853
1929
  this.addChangeOutput(owner, assetId);
@@ -1858,11 +1934,13 @@ var BaseTransactionRequest = class {
1858
1934
  *
1859
1935
  * @param message - Message resource.
1860
1936
  * @param predicate - Predicate bytes.
1937
+ * @param predicateData - Predicate data bytes.
1861
1938
  */
1862
- addMessageInput(message, predicate) {
1939
+ addMessageInput(message) {
1863
1940
  const { recipient, sender, amount } = message;
1941
+ const assetId = BaseAssetId2;
1864
1942
  let witnessIndex;
1865
- if (predicate) {
1943
+ if (message.predicate) {
1866
1944
  witnessIndex = 0;
1867
1945
  } else {
1868
1946
  witnessIndex = this.getCoinInputWitnessIndexByOwner(recipient);
@@ -1876,12 +1954,10 @@ var BaseTransactionRequest = class {
1876
1954
  sender: sender.toB256(),
1877
1955
  recipient: recipient.toB256(),
1878
1956
  amount,
1879
- witnessIndex,
1880
- predicate: predicate?.bytes,
1881
- predicateData: predicate?.predicateDataBytes
1957
+ witnessIndex
1882
1958
  };
1883
1959
  this.pushInput(input);
1884
- this.addChangeOutput(recipient, this.baseAssetId);
1960
+ this.addChangeOutput(recipient, assetId);
1885
1961
  }
1886
1962
  /**
1887
1963
  * Adds a single resource to the transaction by adding a coin/message input and a
@@ -1909,32 +1985,6 @@ var BaseTransactionRequest = class {
1909
1985
  resources.forEach((resource) => this.addResource(resource));
1910
1986
  return this;
1911
1987
  }
1912
- /**
1913
- * Adds multiple resources to the transaction by adding coin/message inputs and change
1914
- * outputs from the related assetIds.
1915
- *
1916
- * @param resources - The resources to add.
1917
- * @returns This transaction.
1918
- */
1919
- addPredicateResource(resource, predicate) {
1920
- if (isCoin(resource)) {
1921
- this.addCoinInput(resource, predicate);
1922
- } else {
1923
- this.addMessageInput(resource, predicate);
1924
- }
1925
- return this;
1926
- }
1927
- /**
1928
- * Adds multiple predicate coin/message inputs to the transaction and change outputs
1929
- * from the related assetIds.
1930
- *
1931
- * @param resources - The resources to add.
1932
- * @returns This transaction.
1933
- */
1934
- addPredicateResources(resources, predicate) {
1935
- resources.forEach((resource) => this.addPredicateResource(resource, predicate));
1936
- return this;
1937
- }
1938
1988
  /**
1939
1989
  * Adds a coin output to the transaction.
1940
1990
  *
@@ -1942,12 +1992,12 @@ var BaseTransactionRequest = class {
1942
1992
  * @param amount - Amount of coin.
1943
1993
  * @param assetId - Asset ID of coin.
1944
1994
  */
1945
- addCoinOutput(to, amount, assetId) {
1995
+ addCoinOutput(to, amount, assetId = BaseAssetId2) {
1946
1996
  this.pushOutput({
1947
1997
  type: OutputType2.Coin,
1948
1998
  to: addressify(to).toB256(),
1949
1999
  amount,
1950
- assetId: assetId ?? this.baseAssetId
2000
+ assetId
1951
2001
  });
1952
2002
  return this;
1953
2003
  }
@@ -1974,7 +2024,7 @@ var BaseTransactionRequest = class {
1974
2024
  * @param to - Address of the owner.
1975
2025
  * @param assetId - Asset ID of coin.
1976
2026
  */
1977
- addChangeOutput(to, assetId) {
2027
+ addChangeOutput(to, assetId = BaseAssetId2) {
1978
2028
  const changeOutput = this.getChangeOutputs().find(
1979
2029
  (output) => hexlify7(output.assetId) === assetId
1980
2030
  );
@@ -1982,7 +2032,7 @@ var BaseTransactionRequest = class {
1982
2032
  this.pushOutput({
1983
2033
  type: OutputType2.Change,
1984
2034
  to: addressify(to).toB256(),
1985
- assetId: assetId ?? this.baseAssetId
2035
+ assetId
1986
2036
  });
1987
2037
  }
1988
2038
  }
@@ -2014,7 +2064,7 @@ var BaseTransactionRequest = class {
2014
2064
  }
2015
2065
  calculateMaxGas(chainInfo, minGas) {
2016
2066
  const { consensusParameters } = chainInfo;
2017
- const { gasPerByte } = consensusParameters;
2067
+ const { gasPerByte, maxGasPerTx } = consensusParameters;
2018
2068
  const witnessesLength = this.toTransaction().witnesses.reduce(
2019
2069
  (acc, wit) => acc + wit.dataLength,
2020
2070
  0
@@ -2023,7 +2073,8 @@ var BaseTransactionRequest = class {
2023
2073
  gasPerByte,
2024
2074
  minGas,
2025
2075
  witnessesLength,
2026
- witnessLimit: this.witnessLimit
2076
+ witnessLimit: this.witnessLimit,
2077
+ maxGasPerTx
2027
2078
  });
2028
2079
  }
2029
2080
  /**
@@ -2033,12 +2084,6 @@ var BaseTransactionRequest = class {
2033
2084
  * @param quantities - CoinQuantity Array.
2034
2085
  */
2035
2086
  fundWithFakeUtxos(quantities, resourcesOwner) {
2036
- let idCounter = 0;
2037
- const generateId = () => {
2038
- const counterString = String(idCounter++);
2039
- const id = ZeroBytes324.slice(0, -counterString.length).concat(counterString);
2040
- return id;
2041
- };
2042
2087
  const findAssetInput = (assetId) => this.inputs.find((input) => {
2043
2088
  if ("assetId" in input) {
2044
2089
  return input.assetId === assetId;
@@ -2047,24 +2092,27 @@ var BaseTransactionRequest = class {
2047
2092
  });
2048
2093
  const updateAssetInput = (assetId, quantity) => {
2049
2094
  const assetInput = findAssetInput(assetId);
2095
+ let usedQuantity = quantity;
2096
+ if (assetId === BaseAssetId2) {
2097
+ usedQuantity = bn7("1000000000000000000");
2098
+ }
2050
2099
  if (assetInput && "assetId" in assetInput) {
2051
- assetInput.id = generateId();
2052
- assetInput.amount = quantity;
2100
+ assetInput.id = hexlify7(randomBytes(34));
2101
+ assetInput.amount = usedQuantity;
2053
2102
  } else {
2054
2103
  this.addResources([
2055
2104
  {
2056
- id: generateId(),
2057
- amount: quantity,
2105
+ id: hexlify7(randomBytes(34)),
2106
+ amount: usedQuantity,
2058
2107
  assetId,
2059
2108
  owner: resourcesOwner || Address.fromRandom(),
2060
- maturity: 0,
2061
2109
  blockCreated: bn7(1),
2062
2110
  txCreatedIdx: bn7(1)
2063
2111
  }
2064
2112
  ]);
2065
2113
  }
2066
2114
  };
2067
- updateAssetInput(this.baseAssetId, bn7(1e11));
2115
+ updateAssetInput(BaseAssetId2, bn7(1e11));
2068
2116
  quantities.forEach((q) => updateAssetInput(q.assetId, q.amount));
2069
2117
  }
2070
2118
  /**
@@ -2089,7 +2137,7 @@ var BaseTransactionRequest = class {
2089
2137
  toJSON() {
2090
2138
  return normalizeJSON(this);
2091
2139
  }
2092
- updatePredicateInputs(inputs) {
2140
+ updatePredicateGasUsed(inputs) {
2093
2141
  this.inputs.forEach((i) => {
2094
2142
  let correspondingInput;
2095
2143
  switch (i.type) {
@@ -2111,6 +2159,15 @@ var BaseTransactionRequest = class {
2111
2159
  }
2112
2160
  });
2113
2161
  }
2162
+ shiftPredicateData() {
2163
+ this.inputs.forEach((input) => {
2164
+ if ("predicateData" in input && "paddPredicateData" in input && typeof input.paddPredicateData === "function") {
2165
+ input.predicateData = input.paddPredicateData(
2166
+ BaseTransactionRequest.getPolicyMeta(this).policies.length
2167
+ );
2168
+ }
2169
+ });
2170
+ }
2114
2171
  };
2115
2172
 
2116
2173
  // src/providers/transaction-request/create-transaction-request.ts
@@ -2257,9 +2314,8 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2257
2314
  return {
2258
2315
  type: TransactionType3.Create,
2259
2316
  ...baseTransaction,
2260
- bytecodeLength: baseTransaction.witnesses[bytecodeWitnessIndex].dataLength / 4,
2261
2317
  bytecodeWitnessIndex,
2262
- storageSlotsCount: storageSlots.length,
2318
+ storageSlotsCount: bn9(storageSlots.length),
2263
2319
  salt: this.salt ? hexlify9(this.salt) : ZeroBytes326,
2264
2320
  storageSlots
2265
2321
  };
@@ -2382,8 +2438,8 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2382
2438
  type: TransactionType4.Script,
2383
2439
  scriptGasLimit: this.gasLimit,
2384
2440
  ...super.getBaseTransaction(),
2385
- scriptLength: script.length,
2386
- scriptDataLength: scriptData.length,
2441
+ scriptLength: bn10(script.length),
2442
+ scriptDataLength: bn10(scriptData.length),
2387
2443
  receiptsRoot: ZeroBytes327,
2388
2444
  script: hexlify10(script),
2389
2445
  scriptData: hexlify10(scriptData)
@@ -2447,7 +2503,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2447
2503
  }
2448
2504
  calculateMaxGas(chainInfo, minGas) {
2449
2505
  const { consensusParameters } = chainInfo;
2450
- const { gasPerByte } = consensusParameters;
2506
+ const { gasPerByte, maxGasPerTx } = consensusParameters;
2451
2507
  const witnessesLength = this.toTransaction().witnesses.reduce(
2452
2508
  (acc, wit) => acc + wit.dataLength,
2453
2509
  0
@@ -2457,7 +2513,8 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2457
2513
  minGas,
2458
2514
  witnessesLength,
2459
2515
  witnessLimit: this.witnessLimit,
2460
- gasLimit: this.gasLimit
2516
+ gasLimit: this.gasLimit,
2517
+ maxGasPerTx
2461
2518
  });
2462
2519
  }
2463
2520
  /**
@@ -2514,7 +2571,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2514
2571
 
2515
2572
  // src/providers/transaction-request/utils.ts
2516
2573
  import { ErrorCode as ErrorCode8, FuelError as FuelError8 } from "@fuel-ts/errors";
2517
- import { TransactionType as TransactionType5 } from "@fuel-ts/transactions";
2574
+ import { TransactionType as TransactionType5, InputType as InputType5 } from "@fuel-ts/transactions";
2518
2575
  var transactionRequestify = (obj) => {
2519
2576
  if (obj instanceof ScriptTransactionRequest || obj instanceof CreateTransactionRequest) {
2520
2577
  return obj;
@@ -2532,14 +2589,31 @@ var transactionRequestify = (obj) => {
2532
2589
  }
2533
2590
  }
2534
2591
  };
2592
+ var cacheTxInputsFromOwner = (inputs, owner) => inputs.reduce(
2593
+ (acc, input) => {
2594
+ if (input.type === InputType5.Coin && input.owner === owner) {
2595
+ acc.utxos.push(input.id);
2596
+ }
2597
+ if (input.type === InputType5.Message && input.recipient === owner) {
2598
+ acc.messages.push(input.nonce);
2599
+ }
2600
+ return acc;
2601
+ },
2602
+ {
2603
+ utxos: [],
2604
+ messages: []
2605
+ }
2606
+ );
2535
2607
 
2536
2608
  // src/providers/transaction-response/transaction-response.ts
2537
2609
  import { ErrorCode as ErrorCode12, FuelError as FuelError12 } from "@fuel-ts/errors";
2538
- import { bn as bn14 } from "@fuel-ts/math";
2610
+ import { bn as bn15 } from "@fuel-ts/math";
2539
2611
  import { TransactionCoder as TransactionCoder4 } from "@fuel-ts/transactions";
2540
2612
  import { arrayify as arrayify10 } from "@fuel-ts/utils";
2541
2613
 
2542
2614
  // src/providers/transaction-summary/assemble-transaction-summary.ts
2615
+ import { bn as bn14 } from "@fuel-ts/math";
2616
+ import { PolicyType as PolicyType3 } from "@fuel-ts/transactions";
2543
2617
  import { DateTime, hexlify as hexlify11 } from "@fuel-ts/utils";
2544
2618
 
2545
2619
  // src/providers/transaction-summary/calculate-transaction-fee.ts
@@ -2548,9 +2622,10 @@ import { PolicyType as PolicyType2, TransactionCoder as TransactionCoder3, Trans
2548
2622
  import { arrayify as arrayify9 } from "@fuel-ts/utils";
2549
2623
  var calculateTransactionFee = (params) => {
2550
2624
  const {
2551
- gasUsed,
2625
+ gasPrice,
2552
2626
  rawPayload,
2553
- consensusParameters: { gasCosts, feeParams }
2627
+ tip,
2628
+ consensusParameters: { gasCosts, feeParams, maxGasPerTx }
2554
2629
  } = params;
2555
2630
  const gasPerByte = bn11(feeParams.gasPerByte);
2556
2631
  const gasPriceFactor = bn11(feeParams.gasPriceFactor);
@@ -2560,8 +2635,7 @@ var calculateTransactionFee = (params) => {
2560
2635
  return {
2561
2636
  fee: bn11(0),
2562
2637
  minFee: bn11(0),
2563
- maxFee: bn11(0),
2564
- feeFromGasUsed: bn11(0)
2638
+ maxFee: bn11(0)
2565
2639
  };
2566
2640
  }
2567
2641
  const { type, witnesses, inputs, policies } = transaction;
@@ -2593,7 +2667,6 @@ var calculateTransactionFee = (params) => {
2593
2667
  metadataGas,
2594
2668
  txBytesSize: transactionBytes.length
2595
2669
  });
2596
- const gasPrice = bn11(policies.find((policy) => policy.type === PolicyType2.GasPrice)?.data);
2597
2670
  const witnessLimit = policies.find((policy) => policy.type === PolicyType2.WitnessLimit)?.data;
2598
2671
  const witnessesLength = witnesses.reduce((acc, wit) => acc + wit.dataLength, 0);
2599
2672
  const maxGas = getMaxGas({
@@ -2601,17 +2674,25 @@ var calculateTransactionFee = (params) => {
2601
2674
  minGas,
2602
2675
  witnessesLength,
2603
2676
  gasLimit,
2604
- witnessLimit
2677
+ witnessLimit,
2678
+ maxGasPerTx
2679
+ });
2680
+ const minFee = calculateGasFee({
2681
+ gasPrice,
2682
+ gas: minGas,
2683
+ priceFactor: gasPriceFactor,
2684
+ tip
2685
+ });
2686
+ const maxFee = calculateGasFee({
2687
+ gasPrice,
2688
+ gas: maxGas,
2689
+ priceFactor: gasPriceFactor,
2690
+ tip
2605
2691
  });
2606
- const feeFromGasUsed = calculatePriceWithFactor(gasUsed, gasPrice, gasPriceFactor);
2607
- const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor);
2608
- const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor);
2609
- const fee = minFee.add(feeFromGasUsed);
2610
2692
  return {
2611
- fee,
2612
2693
  minFee,
2613
2694
  maxFee,
2614
- feeFromGasUsed
2695
+ fee: maxFee
2615
2696
  };
2616
2697
  };
2617
2698
 
@@ -2667,7 +2748,7 @@ var getFunctionCall = ({ abi, receipt, rawPayload, maxInputs }) => {
2667
2748
 
2668
2749
  // src/providers/transaction-summary/input.ts
2669
2750
  import { ErrorCode as ErrorCode9, FuelError as FuelError9 } from "@fuel-ts/errors";
2670
- import { InputType as InputType5 } from "@fuel-ts/transactions";
2751
+ import { InputType as InputType6 } from "@fuel-ts/transactions";
2671
2752
  function getInputsByTypes(inputs, types) {
2672
2753
  return inputs.filter((i) => types.includes(i.type));
2673
2754
  }
@@ -2675,16 +2756,16 @@ function getInputsByType(inputs, type) {
2675
2756
  return inputs.filter((i) => i.type === type);
2676
2757
  }
2677
2758
  function getInputsCoin(inputs) {
2678
- return getInputsByType(inputs, InputType5.Coin);
2759
+ return getInputsByType(inputs, InputType6.Coin);
2679
2760
  }
2680
2761
  function getInputsMessage(inputs) {
2681
- return getInputsByType(inputs, InputType5.Message);
2762
+ return getInputsByType(inputs, InputType6.Message);
2682
2763
  }
2683
2764
  function getInputsCoinAndMessage(inputs) {
2684
- return getInputsByTypes(inputs, [InputType5.Coin, InputType5.Message]);
2765
+ return getInputsByTypes(inputs, [InputType6.Coin, InputType6.Message]);
2685
2766
  }
2686
2767
  function getInputsContract(inputs) {
2687
- return getInputsByType(inputs, InputType5.Contract);
2768
+ return getInputsByType(inputs, InputType6.Contract);
2688
2769
  }
2689
2770
  function getInputFromAssetId(inputs, assetId) {
2690
2771
  const coinInputs = getInputsCoin(inputs);
@@ -2703,7 +2784,7 @@ function getInputContractFromIndex(inputs, inputIndex) {
2703
2784
  if (!contractInput) {
2704
2785
  return void 0;
2705
2786
  }
2706
- if (contractInput.type !== InputType5.Contract) {
2787
+ if (contractInput.type !== InputType6.Contract) {
2707
2788
  throw new FuelError9(
2708
2789
  ErrorCode9.INVALID_TRANSACTION_INPUT,
2709
2790
  `Contract input should be of type 'contract'.`
@@ -2712,10 +2793,10 @@ function getInputContractFromIndex(inputs, inputIndex) {
2712
2793
  return contractInput;
2713
2794
  }
2714
2795
  function getInputAccountAddress(input) {
2715
- if (input.type === InputType5.Coin) {
2796
+ if (input.type === InputType6.Coin) {
2716
2797
  return input.owner.toString();
2717
2798
  }
2718
- if (input.type === InputType5.Message) {
2799
+ if (input.type === InputType6.Message) {
2719
2800
  return input.recipient.toString();
2720
2801
  }
2721
2802
  return "";
@@ -3178,7 +3259,9 @@ function assembleTransactionSummary(params) {
3178
3259
  gqlTransactionStatus,
3179
3260
  abiMap = {},
3180
3261
  maxInputs,
3181
- gasCosts
3262
+ gasCosts,
3263
+ maxGasPerTx,
3264
+ gasPrice
3182
3265
  } = params;
3183
3266
  const gasUsed = getGasUsedFromReceipts(receipts);
3184
3267
  const rawPayload = hexlify11(transactionBytes);
@@ -3192,11 +3275,14 @@ function assembleTransactionSummary(params) {
3192
3275
  maxInputs
3193
3276
  });
3194
3277
  const typeName = getTransactionTypeName(transaction.type);
3278
+ const tip = bn14(transaction.policies?.find((policy) => policy.type === PolicyType3.Tip)?.data);
3195
3279
  const { fee } = calculateTransactionFee({
3196
- gasUsed,
3280
+ gasPrice,
3197
3281
  rawPayload,
3282
+ tip,
3198
3283
  consensusParameters: {
3199
3284
  gasCosts,
3285
+ maxGasPerTx,
3200
3286
  feeParams: {
3201
3287
  gasPerByte,
3202
3288
  gasPriceFactor
@@ -3256,7 +3342,7 @@ var TransactionResponse = class {
3256
3342
  /** Current provider */
3257
3343
  provider;
3258
3344
  /** Gas used on the transaction */
3259
- gasUsed = bn14(0);
3345
+ gasUsed = bn15(0);
3260
3346
  /** The graphql Transaction with receipts object. */
3261
3347
  gqlTransaction;
3262
3348
  abis;
@@ -3334,8 +3420,13 @@ var TransactionResponse = class {
3334
3420
  const decodedTransaction = this.decodeTransaction(
3335
3421
  transaction
3336
3422
  );
3337
- const receipts = transaction.receipts?.map(processGqlReceipt) || [];
3338
- const { gasPerByte, gasPriceFactor, gasCosts } = this.provider.getGasConfig();
3423
+ let txReceipts = [];
3424
+ if (transaction?.status && "receipts" in transaction.status) {
3425
+ txReceipts = transaction.status.receipts;
3426
+ }
3427
+ const receipts = txReceipts.map(processGqlReceipt) || [];
3428
+ const { gasPerByte, gasPriceFactor, gasCosts, maxGasPerTx } = this.provider.getGasConfig();
3429
+ const gasPrice = await this.provider.getLatestGasPrice();
3339
3430
  const maxInputs = this.provider.getChain().consensusParameters.maxInputs;
3340
3431
  const transactionSummary = assembleTransactionSummary({
3341
3432
  id: this.id,
@@ -3347,7 +3438,9 @@ var TransactionResponse = class {
3347
3438
  gasPriceFactor,
3348
3439
  abiMap: contractsAbiMap,
3349
3440
  maxInputs,
3350
- gasCosts
3441
+ gasCosts,
3442
+ maxGasPerTx,
3443
+ gasPrice
3351
3444
  });
3352
3445
  return transactionSummary;
3353
3446
  }
@@ -3474,30 +3567,29 @@ var processGqlChain = (chain) => {
3474
3567
  const { contractParams, feeParams, predicateParams, scriptParams, txParams, gasCosts } = consensusParameters;
3475
3568
  return {
3476
3569
  name,
3477
- baseChainHeight: bn15(daHeight),
3570
+ baseChainHeight: bn16(daHeight),
3478
3571
  consensusParameters: {
3479
- contractMaxSize: bn15(contractParams.contractMaxSize),
3480
- maxInputs: bn15(txParams.maxInputs),
3481
- maxOutputs: bn15(txParams.maxOutputs),
3482
- maxWitnesses: bn15(txParams.maxWitnesses),
3483
- maxGasPerTx: bn15(txParams.maxGasPerTx),
3484
- maxScriptLength: bn15(scriptParams.maxScriptLength),
3485
- maxScriptDataLength: bn15(scriptParams.maxScriptDataLength),
3486
- maxStorageSlots: bn15(contractParams.maxStorageSlots),
3487
- maxPredicateLength: bn15(predicateParams.maxPredicateLength),
3488
- maxPredicateDataLength: bn15(predicateParams.maxPredicateDataLength),
3489
- maxGasPerPredicate: bn15(predicateParams.maxGasPerPredicate),
3490
- gasPriceFactor: bn15(feeParams.gasPriceFactor),
3491
- gasPerByte: bn15(feeParams.gasPerByte),
3492
- maxMessageDataLength: bn15(predicateParams.maxMessageDataLength),
3493
- chainId: bn15(consensusParameters.chainId),
3494
- baseAssetId: consensusParameters.baseAssetId,
3572
+ contractMaxSize: bn16(contractParams.contractMaxSize),
3573
+ maxInputs: bn16(txParams.maxInputs),
3574
+ maxOutputs: bn16(txParams.maxOutputs),
3575
+ maxWitnesses: bn16(txParams.maxWitnesses),
3576
+ maxGasPerTx: bn16(txParams.maxGasPerTx),
3577
+ maxScriptLength: bn16(scriptParams.maxScriptLength),
3578
+ maxScriptDataLength: bn16(scriptParams.maxScriptDataLength),
3579
+ maxStorageSlots: bn16(contractParams.maxStorageSlots),
3580
+ maxPredicateLength: bn16(predicateParams.maxPredicateLength),
3581
+ maxPredicateDataLength: bn16(predicateParams.maxPredicateDataLength),
3582
+ maxGasPerPredicate: bn16(predicateParams.maxGasPerPredicate),
3583
+ gasPriceFactor: bn16(feeParams.gasPriceFactor),
3584
+ gasPerByte: bn16(feeParams.gasPerByte),
3585
+ maxMessageDataLength: bn16(predicateParams.maxMessageDataLength),
3586
+ chainId: bn16(consensusParameters.chainId),
3495
3587
  gasCosts
3496
3588
  },
3497
3589
  gasCosts,
3498
3590
  latestBlock: {
3499
3591
  id: latestBlock.id,
3500
- height: bn15(latestBlock.header.height),
3592
+ height: bn16(latestBlock.height),
3501
3593
  time: latestBlock.header.time,
3502
3594
  transactions: latestBlock.transactions.map((i) => ({
3503
3595
  id: i.id
@@ -3591,10 +3683,8 @@ var _Provider = class {
3591
3683
  * Returns some helpful parameters related to gas fees.
3592
3684
  */
3593
3685
  getGasConfig() {
3594
- const { minGasPrice } = this.getNode();
3595
3686
  const { maxGasPerTx, maxGasPerPredicate, gasPriceFactor, gasPerByte, gasCosts } = this.getChain().consensusParameters;
3596
3687
  return {
3597
- minGasPrice,
3598
3688
  maxGasPerTx,
3599
3689
  maxGasPerPredicate,
3600
3690
  gasPriceFactor,
@@ -3692,7 +3782,7 @@ var _Provider = class {
3692
3782
  */
3693
3783
  async getBlockNumber() {
3694
3784
  const { chain } = await this.operations.getChain();
3695
- return bn15(chain.latestBlock.header.height, 10);
3785
+ return bn16(chain.latestBlock.height, 10);
3696
3786
  }
3697
3787
  /**
3698
3788
  * Returns the chain information.
@@ -3702,13 +3792,11 @@ var _Provider = class {
3702
3792
  async fetchNode() {
3703
3793
  const { nodeInfo } = await this.operations.getNodeInfo();
3704
3794
  const processedNodeInfo = {
3705
- maxDepth: bn15(nodeInfo.maxDepth),
3706
- maxTx: bn15(nodeInfo.maxTx),
3707
- minGasPrice: bn15(nodeInfo.minGasPrice),
3795
+ maxDepth: bn16(nodeInfo.maxDepth),
3796
+ maxTx: bn16(nodeInfo.maxTx),
3708
3797
  nodeVersion: nodeInfo.nodeVersion,
3709
3798
  utxoValidation: nodeInfo.utxoValidation,
3710
- vmBacktrace: nodeInfo.vmBacktrace,
3711
- peers: nodeInfo.peers
3799
+ vmBacktrace: nodeInfo.vmBacktrace
3712
3800
  };
3713
3801
  _Provider.nodeInfoCache[this.url] = processedNodeInfo;
3714
3802
  return processedNodeInfo;
@@ -3734,17 +3822,6 @@ var _Provider = class {
3734
3822
  } = this.getChain();
3735
3823
  return chainId.toNumber();
3736
3824
  }
3737
- /**
3738
- * Returns the base asset ID
3739
- *
3740
- * @returns A promise that resolves to the base asset ID
3741
- */
3742
- getBaseAssetId() {
3743
- const {
3744
- consensusParameters: { baseAssetId }
3745
- } = this.getChain();
3746
- return baseAssetId;
3747
- }
3748
3825
  /**
3749
3826
  * Submits a transaction to the chain to be executed.
3750
3827
  *
@@ -3805,14 +3882,13 @@ var _Provider = class {
3805
3882
  return this.estimateTxDependencies(transactionRequest);
3806
3883
  }
3807
3884
  const encodedTransaction = hexlify12(transactionRequest.toTransactionBytes());
3808
- const { dryRun: gqlReceipts } = await this.operations.dryRun({
3809
- encodedTransaction,
3885
+ const { dryRun: dryRunStatuses } = await this.operations.dryRun({
3886
+ encodedTransactions: encodedTransaction,
3810
3887
  utxoValidation: utxoValidation || false
3811
3888
  });
3812
- const receipts = gqlReceipts.map(processGqlReceipt);
3813
- return {
3814
- receipts
3815
- };
3889
+ const [{ receipts: rawReceipts, status }] = dryRunStatuses;
3890
+ const receipts = rawReceipts.map(processGqlReceipt);
3891
+ return { receipts, dryrunStatus: status };
3816
3892
  }
3817
3893
  /**
3818
3894
  * Verifies whether enough gas is available to complete transaction.
@@ -3838,7 +3914,7 @@ var _Provider = class {
3838
3914
  } = response;
3839
3915
  if (inputs) {
3840
3916
  inputs.forEach((input, index) => {
3841
- if ("predicateGasUsed" in input && bn15(input.predicateGasUsed).gt(0)) {
3917
+ if ("predicateGasUsed" in input && bn16(input.predicateGasUsed).gt(0)) {
3842
3918
  transactionRequest.inputs[index].predicateGasUsed = input.predicateGasUsed;
3843
3919
  }
3844
3920
  });
@@ -3851,9 +3927,6 @@ var _Provider = class {
3851
3927
  * If there are missing variable outputs,
3852
3928
  * `addVariableOutputs` is called on the transaction.
3853
3929
  *
3854
- * @privateRemarks
3855
- * TODO: Investigate support for missing contract IDs
3856
- * TODO: Add support for missing output messages
3857
3930
  *
3858
3931
  * @param transactionRequest - The transaction request object.
3859
3932
  * @returns A promise.
@@ -3866,16 +3939,19 @@ var _Provider = class {
3866
3939
  missingContractIds: []
3867
3940
  };
3868
3941
  }
3869
- await this.estimatePredicates(transactionRequest);
3870
3942
  let receipts = [];
3871
3943
  const missingContractIds = [];
3872
3944
  let outputVariables = 0;
3945
+ let dryrunStatus;
3873
3946
  for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
3874
- const { dryRun: gqlReceipts } = await this.operations.dryRun({
3875
- encodedTransaction: hexlify12(transactionRequest.toTransactionBytes()),
3947
+ const {
3948
+ dryRun: [{ receipts: rawReceipts, status }]
3949
+ } = await this.operations.dryRun({
3950
+ encodedTransactions: [hexlify12(transactionRequest.toTransactionBytes())],
3876
3951
  utxoValidation: false
3877
3952
  });
3878
- receipts = gqlReceipts.map(processGqlReceipt);
3953
+ receipts = rawReceipts.map(processGqlReceipt);
3954
+ dryrunStatus = status;
3879
3955
  const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(receipts);
3880
3956
  const hasMissingOutputs = missingOutputVariables.length !== 0 || missingOutputContractIds.length !== 0;
3881
3957
  if (hasMissingOutputs) {
@@ -3885,6 +3961,11 @@ var _Provider = class {
3885
3961
  transactionRequest.addContractInputAndOutput(Address2.fromString(contractId));
3886
3962
  missingContractIds.push(contractId);
3887
3963
  });
3964
+ const { maxFee } = await this.estimateTxGasAndFee({
3965
+ transactionRequest,
3966
+ optimizeGas: false
3967
+ });
3968
+ transactionRequest.maxFee = maxFee;
3888
3969
  } else {
3889
3970
  break;
3890
3971
  }
@@ -3892,7 +3973,133 @@ var _Provider = class {
3892
3973
  return {
3893
3974
  receipts,
3894
3975
  outputVariables,
3895
- missingContractIds
3976
+ missingContractIds,
3977
+ dryrunStatus
3978
+ };
3979
+ }
3980
+ /**
3981
+ * Dry runs multiple transactions and checks for missing dependencies in batches.
3982
+ *
3983
+ * Transactions are dry run in batches. After each dry run, transactions requiring
3984
+ * further modifications are identified. The method iteratively updates these transactions
3985
+ * and performs subsequent dry runs until all dependencies for each transaction are satisfied.
3986
+ *
3987
+ * @param transactionRequests - Array of transaction request objects.
3988
+ * @returns A promise that resolves to an array of results for each transaction.
3989
+ */
3990
+ async estimateMultipleTxDependencies(transactionRequests) {
3991
+ const results = transactionRequests.map(() => ({
3992
+ receipts: [],
3993
+ outputVariables: 0,
3994
+ missingContractIds: [],
3995
+ dryrunStatus: void 0
3996
+ }));
3997
+ const allRequests = clone3(transactionRequests);
3998
+ const serializedTransactionsMap = /* @__PURE__ */ new Map();
3999
+ allRequests.forEach((req, index) => {
4000
+ if (req.type === TransactionType8.Script) {
4001
+ serializedTransactionsMap.set(index, hexlify12(req.toTransactionBytes()));
4002
+ }
4003
+ });
4004
+ let transactionsToProcess = Array.from(serializedTransactionsMap.keys());
4005
+ let attempt = 0;
4006
+ while (transactionsToProcess.length > 0 && attempt < MAX_RETRIES) {
4007
+ const encodedTransactions = transactionsToProcess.map(
4008
+ (index) => serializedTransactionsMap.get(index)
4009
+ );
4010
+ const dryRunResults = await this.operations.dryRun({
4011
+ encodedTransactions,
4012
+ utxoValidation: false
4013
+ });
4014
+ const nextRoundTransactions = [];
4015
+ for (let i = 0; i < dryRunResults.dryRun.length; i++) {
4016
+ const currentResultIndex = transactionsToProcess[i];
4017
+ const { receipts: rawReceipts, status } = dryRunResults.dryRun[i];
4018
+ results[currentResultIndex].receipts = rawReceipts.map(processGqlReceipt);
4019
+ results[currentResultIndex].dryrunStatus = status;
4020
+ const { missingOutputVariables, missingOutputContractIds } = getReceiptsWithMissingData(
4021
+ results[currentResultIndex].receipts
4022
+ );
4023
+ const hasMissingOutputs = missingOutputVariables.length > 0 || missingOutputContractIds.length > 0;
4024
+ const requestToProcess = allRequests[currentResultIndex];
4025
+ if (hasMissingOutputs && requestToProcess?.type === TransactionType8.Script) {
4026
+ results[currentResultIndex].outputVariables += missingOutputVariables.length;
4027
+ requestToProcess.addVariableOutputs(missingOutputVariables.length);
4028
+ missingOutputContractIds.forEach(({ contractId }) => {
4029
+ requestToProcess.addContractInputAndOutput(Address2.fromString(contractId));
4030
+ results[currentResultIndex].missingContractIds.push(contractId);
4031
+ });
4032
+ const { maxFee } = await this.estimateTxGasAndFee({
4033
+ transactionRequest: requestToProcess,
4034
+ optimizeGas: false
4035
+ });
4036
+ requestToProcess.maxFee = maxFee;
4037
+ serializedTransactionsMap.set(
4038
+ currentResultIndex,
4039
+ hexlify12(requestToProcess.toTransactionBytes())
4040
+ );
4041
+ nextRoundTransactions.push(currentResultIndex);
4042
+ allRequests[currentResultIndex] = requestToProcess;
4043
+ }
4044
+ }
4045
+ transactionsToProcess = nextRoundTransactions;
4046
+ attempt += 1;
4047
+ }
4048
+ return results;
4049
+ }
4050
+ async dryRunMultipleTransactions(transactionRequests, { utxoValidation, estimateTxDependencies = true } = {}) {
4051
+ if (estimateTxDependencies) {
4052
+ return this.estimateMultipleTxDependencies(transactionRequests);
4053
+ }
4054
+ const encodedTransactions = transactionRequests.map((tx) => hexlify12(tx.toTransactionBytes()));
4055
+ const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4056
+ encodedTransactions,
4057
+ utxoValidation: utxoValidation || false
4058
+ });
4059
+ const results = dryRunStatuses.map(({ receipts: rawReceipts, status }) => {
4060
+ const receipts = rawReceipts.map(processGqlReceipt);
4061
+ return { receipts, dryrunStatus: status };
4062
+ });
4063
+ return results;
4064
+ }
4065
+ async estimateTxGasAndFee(params) {
4066
+ const { transactionRequest, optimizeGas = true } = params;
4067
+ let { gasPrice } = params;
4068
+ const chainInfo = this.getChain();
4069
+ const { gasPriceFactor } = this.getGasConfig();
4070
+ const minGas = transactionRequest.calculateMinGas(chainInfo);
4071
+ if (!gasPrice) {
4072
+ gasPrice = await this.estimateGasPrice(10);
4073
+ }
4074
+ const minFee = calculateGasFee({
4075
+ gasPrice: bn16(gasPrice),
4076
+ gas: minGas,
4077
+ priceFactor: gasPriceFactor,
4078
+ tip: transactionRequest.tip
4079
+ }).add(1);
4080
+ let gasLimit = bn16(0);
4081
+ if (transactionRequest.type === TransactionType8.Script) {
4082
+ gasLimit = transactionRequest.gasLimit;
4083
+ if (!optimizeGas) {
4084
+ transactionRequest.gasLimit = minGas;
4085
+ gasLimit = transactionRequest.calculateMaxGas(chainInfo, minGas);
4086
+ transactionRequest.gasLimit = gasLimit;
4087
+ }
4088
+ }
4089
+ const maxGas = transactionRequest.calculateMaxGas(chainInfo, minGas);
4090
+ const maxFee = calculateGasFee({
4091
+ gasPrice: bn16(gasPrice),
4092
+ gas: maxGas,
4093
+ priceFactor: gasPriceFactor,
4094
+ tip: transactionRequest.tip
4095
+ }).add(1);
4096
+ return {
4097
+ minGas,
4098
+ minFee,
4099
+ maxGas,
4100
+ maxFee,
4101
+ gasPrice,
4102
+ gasLimit
3896
4103
  };
3897
4104
  }
3898
4105
  /**
@@ -3910,15 +4117,17 @@ var _Provider = class {
3910
4117
  if (estimateTxDependencies) {
3911
4118
  return this.estimateTxDependencies(transactionRequest);
3912
4119
  }
3913
- const encodedTransaction = hexlify12(transactionRequest.toTransactionBytes());
3914
- const { dryRun: gqlReceipts } = await this.operations.dryRun({
3915
- encodedTransaction,
4120
+ const encodedTransactions = [hexlify12(transactionRequest.toTransactionBytes())];
4121
+ const { dryRun: dryRunStatuses } = await this.operations.dryRun({
4122
+ encodedTransactions,
3916
4123
  utxoValidation: true
3917
4124
  });
3918
- const receipts = gqlReceipts.map(processGqlReceipt);
3919
- return {
3920
- receipts
3921
- };
4125
+ const callResult = dryRunStatuses.map((dryRunStatus) => {
4126
+ const { id, receipts, status } = dryRunStatus;
4127
+ const processedReceipts = receipts.map(processGqlReceipt);
4128
+ return { id, receipts: processedReceipts, status };
4129
+ });
4130
+ return { receipts: callResult[0].receipts };
3922
4131
  }
3923
4132
  /**
3924
4133
  * Returns a transaction cost to enable user
@@ -3935,80 +4144,80 @@ var _Provider = class {
3935
4144
  * @param tolerance - The tolerance to add on top of the gasUsed.
3936
4145
  * @returns A promise that resolves to the transaction cost object.
3937
4146
  */
3938
- async getTransactionCost(transactionRequestLike, forwardingQuantities = [], {
3939
- estimateTxDependencies = true,
3940
- estimatePredicates = true,
3941
- resourcesOwner,
3942
- signatureCallback
3943
- } = {}) {
4147
+ async getTransactionCost(transactionRequestLike, { resourcesOwner, signatureCallback, quantitiesToContract = [] } = {}) {
3944
4148
  const txRequestClone = clone3(transactionRequestify(transactionRequestLike));
3945
- const chainInfo = this.getChain();
3946
- const { gasPriceFactor, minGasPrice, maxGasPerTx } = this.getGasConfig();
3947
- const gasPrice = max(txRequestClone.gasPrice, minGasPrice);
3948
4149
  const isScriptTransaction = txRequestClone.type === TransactionType8.Script;
3949
4150
  const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
3950
- const allQuantities = mergeQuantities(coinOutputsQuantities, forwardingQuantities);
4151
+ const allQuantities = mergeQuantities(coinOutputsQuantities, quantitiesToContract);
3951
4152
  txRequestClone.fundWithFakeUtxos(allQuantities, resourcesOwner?.address);
3952
- if (estimatePredicates) {
3953
- if (isScriptTransaction) {
3954
- txRequestClone.gasLimit = bn15(0);
3955
- }
3956
- if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
3957
- resourcesOwner.populateTransactionPredicateData(txRequestClone);
3958
- }
3959
- await this.estimatePredicates(txRequestClone);
4153
+ txRequestClone.maxFee = bn16(0);
4154
+ if (isScriptTransaction) {
4155
+ txRequestClone.gasLimit = bn16(0);
3960
4156
  }
3961
- if (signatureCallback && isScriptTransaction) {
3962
- await signatureCallback(txRequestClone);
4157
+ if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
4158
+ resourcesOwner.populateTransactionPredicateData(txRequestClone);
3963
4159
  }
3964
- const minGas = txRequestClone.calculateMinGas(chainInfo);
3965
- const maxGas = txRequestClone.calculateMaxGas(chainInfo, minGas);
4160
+ const signedRequest = clone3(txRequestClone);
4161
+ let addedSignatures = 0;
4162
+ if (signatureCallback && isScriptTransaction) {
4163
+ const lengthBefore = signedRequest.witnesses.length;
4164
+ await signatureCallback(signedRequest);
4165
+ addedSignatures = signedRequest.witnesses.length - lengthBefore;
4166
+ }
4167
+ await this.estimatePredicates(signedRequest);
4168
+ let { maxFee, maxGas, minFee, minGas, gasPrice, gasLimit } = await this.estimateTxGasAndFee({
4169
+ transactionRequest: signedRequest,
4170
+ optimizeGas: false
4171
+ });
4172
+ txRequestClone.maxFee = maxFee;
3966
4173
  let receipts = [];
3967
4174
  let missingContractIds = [];
3968
4175
  let outputVariables = 0;
3969
- if (isScriptTransaction && estimateTxDependencies) {
3970
- txRequestClone.gasPrice = bn15(0);
3971
- txRequestClone.gasLimit = bn15(maxGasPerTx.sub(maxGas).toNumber() * 0.9);
4176
+ let gasUsed = bn16(0);
4177
+ txRequestClone.updatePredicateGasUsed(signedRequest.inputs);
4178
+ if (isScriptTransaction) {
4179
+ if (signatureCallback) {
4180
+ await signatureCallback(txRequestClone);
4181
+ }
4182
+ txRequestClone.gasLimit = gasLimit;
3972
4183
  const result = await this.estimateTxDependencies(txRequestClone);
3973
4184
  receipts = result.receipts;
3974
4185
  outputVariables = result.outputVariables;
3975
4186
  missingContractIds = result.missingContractIds;
4187
+ gasUsed = getGasUsedFromReceipts(receipts);
4188
+ txRequestClone.gasLimit = gasUsed;
4189
+ ({ maxFee, maxGas, minFee, minGas, gasPrice } = await this.estimateTxGasAndFee({
4190
+ transactionRequest: txRequestClone,
4191
+ gasPrice
4192
+ }));
3976
4193
  }
3977
- const gasUsed = isScriptTransaction ? getGasUsedFromReceipts(receipts) : minGas;
3978
- const usedFee = calculatePriceWithFactor(
3979
- gasUsed,
3980
- gasPrice,
3981
- gasPriceFactor
3982
- ).normalizeZeroToOne();
3983
- const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
3984
- const maxFee = calculatePriceWithFactor(maxGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
3985
4194
  return {
3986
4195
  requiredQuantities: allQuantities,
3987
4196
  receipts,
3988
4197
  gasUsed,
3989
- minGasPrice,
3990
4198
  gasPrice,
3991
4199
  minGas,
3992
4200
  maxGas,
3993
- usedFee,
3994
4201
  minFee,
3995
4202
  maxFee,
3996
- estimatedInputs: txRequestClone.inputs,
3997
4203
  outputVariables,
3998
- missingContractIds
4204
+ missingContractIds,
4205
+ addedSignatures,
4206
+ estimatedPredicates: txRequestClone.inputs
3999
4207
  };
4000
4208
  }
4001
- async getResourcesForTransaction(owner, transactionRequestLike, forwardingQuantities = []) {
4209
+ async getResourcesForTransaction(owner, transactionRequestLike, quantitiesToContract = []) {
4002
4210
  const ownerAddress = Address2.fromAddressOrString(owner);
4003
4211
  const transactionRequest = transactionRequestify(clone3(transactionRequestLike));
4004
- const transactionCost = await this.getTransactionCost(transactionRequest, forwardingQuantities);
4212
+ const transactionCost = await this.getTransactionCost(transactionRequest, {
4213
+ quantitiesToContract
4214
+ });
4005
4215
  transactionRequest.addResources(
4006
4216
  await this.getResourcesToSpend(ownerAddress, transactionCost.requiredQuantities)
4007
4217
  );
4008
- const { requiredQuantities, ...txCost } = await this.getTransactionCost(
4009
- transactionRequest,
4010
- forwardingQuantities
4011
- );
4218
+ const { requiredQuantities, ...txCost } = await this.getTransactionCost(transactionRequest, {
4219
+ quantitiesToContract
4220
+ });
4012
4221
  const resources = await this.getResourcesToSpend(ownerAddress, requiredQuantities);
4013
4222
  return {
4014
4223
  resources,
@@ -4030,11 +4239,10 @@ var _Provider = class {
4030
4239
  return coins.map((coin) => ({
4031
4240
  id: coin.utxoId,
4032
4241
  assetId: coin.assetId,
4033
- amount: bn15(coin.amount),
4242
+ amount: bn16(coin.amount),
4034
4243
  owner: Address2.fromAddressOrString(coin.owner),
4035
- maturity: bn15(coin.maturity).toNumber(),
4036
- blockCreated: bn15(coin.blockCreated),
4037
- txCreatedIdx: bn15(coin.txCreatedIdx)
4244
+ blockCreated: bn16(coin.blockCreated),
4245
+ txCreatedIdx: bn16(coin.txCreatedIdx)
4038
4246
  }));
4039
4247
  }
4040
4248
  /**
@@ -4071,9 +4279,9 @@ var _Provider = class {
4071
4279
  switch (coin.__typename) {
4072
4280
  case "MessageCoin":
4073
4281
  return {
4074
- amount: bn15(coin.amount),
4282
+ amount: bn16(coin.amount),
4075
4283
  assetId: coin.assetId,
4076
- daHeight: bn15(coin.daHeight),
4284
+ daHeight: bn16(coin.daHeight),
4077
4285
  sender: Address2.fromAddressOrString(coin.sender),
4078
4286
  recipient: Address2.fromAddressOrString(coin.recipient),
4079
4287
  nonce: coin.nonce
@@ -4081,12 +4289,11 @@ var _Provider = class {
4081
4289
  case "Coin":
4082
4290
  return {
4083
4291
  id: coin.utxoId,
4084
- amount: bn15(coin.amount),
4292
+ amount: bn16(coin.amount),
4085
4293
  assetId: coin.assetId,
4086
4294
  owner: Address2.fromAddressOrString(coin.owner),
4087
- maturity: bn15(coin.maturity).toNumber(),
4088
- blockCreated: bn15(coin.blockCreated),
4089
- txCreatedIdx: bn15(coin.txCreatedIdx)
4295
+ blockCreated: bn16(coin.blockCreated),
4296
+ txCreatedIdx: bn16(coin.txCreatedIdx)
4090
4297
  };
4091
4298
  default:
4092
4299
  return null;
@@ -4103,13 +4310,13 @@ var _Provider = class {
4103
4310
  async getBlock(idOrHeight) {
4104
4311
  let variables;
4105
4312
  if (typeof idOrHeight === "number") {
4106
- variables = { height: bn15(idOrHeight).toString(10) };
4313
+ variables = { height: bn16(idOrHeight).toString(10) };
4107
4314
  } else if (idOrHeight === "latest") {
4108
4315
  variables = { height: (await this.getBlockNumber()).toString(10) };
4109
4316
  } else if (idOrHeight.length === 66) {
4110
4317
  variables = { blockId: idOrHeight };
4111
4318
  } else {
4112
- variables = { blockId: bn15(idOrHeight).toString(10) };
4319
+ variables = { blockId: bn16(idOrHeight).toString(10) };
4113
4320
  }
4114
4321
  const { block } = await this.operations.getBlock(variables);
4115
4322
  if (!block) {
@@ -4117,7 +4324,7 @@ var _Provider = class {
4117
4324
  }
4118
4325
  return {
4119
4326
  id: block.id,
4120
- height: bn15(block.header.height),
4327
+ height: bn16(block.height),
4121
4328
  time: block.header.time,
4122
4329
  transactionIds: block.transactions.map((tx) => tx.id)
4123
4330
  };
@@ -4132,7 +4339,7 @@ var _Provider = class {
4132
4339
  const { blocks: fetchedData } = await this.operations.getBlocks(params);
4133
4340
  const blocks = fetchedData.edges.map(({ node: block }) => ({
4134
4341
  id: block.id,
4135
- height: bn15(block.header.height),
4342
+ height: bn16(block.height),
4136
4343
  time: block.header.time,
4137
4344
  transactionIds: block.transactions.map((tx) => tx.id)
4138
4345
  }));
@@ -4147,7 +4354,7 @@ var _Provider = class {
4147
4354
  async getBlockWithTransactions(idOrHeight) {
4148
4355
  let variables;
4149
4356
  if (typeof idOrHeight === "number") {
4150
- variables = { blockHeight: bn15(idOrHeight).toString(10) };
4357
+ variables = { blockHeight: bn16(idOrHeight).toString(10) };
4151
4358
  } else if (idOrHeight === "latest") {
4152
4359
  variables = { blockHeight: (await this.getBlockNumber()).toString() };
4153
4360
  } else {
@@ -4159,7 +4366,7 @@ var _Provider = class {
4159
4366
  }
4160
4367
  return {
4161
4368
  id: block.id,
4162
- height: bn15(block.header.height, 10),
4369
+ height: bn16(block.height, 10),
4163
4370
  time: block.header.time,
4164
4371
  transactionIds: block.transactions.map((tx) => tx.id),
4165
4372
  transactions: block.transactions.map(
@@ -4208,7 +4415,7 @@ var _Provider = class {
4208
4415
  contract: Address2.fromAddressOrString(contractId).toB256(),
4209
4416
  asset: hexlify12(assetId)
4210
4417
  });
4211
- return bn15(contractBalance.amount, 10);
4418
+ return bn16(contractBalance.amount, 10);
4212
4419
  }
4213
4420
  /**
4214
4421
  * Returns the balance for the given owner for the given asset ID.
@@ -4222,7 +4429,7 @@ var _Provider = class {
4222
4429
  owner: Address2.fromAddressOrString(owner).toB256(),
4223
4430
  assetId: hexlify12(assetId)
4224
4431
  });
4225
- return bn15(balance.amount, 10);
4432
+ return bn16(balance.amount, 10);
4226
4433
  }
4227
4434
  /**
4228
4435
  * Returns balances for the given owner.
@@ -4240,7 +4447,7 @@ var _Provider = class {
4240
4447
  const balances = result.balances.edges.map((edge) => edge.node);
4241
4448
  return balances.map((balance) => ({
4242
4449
  assetId: balance.assetId,
4243
- amount: bn15(balance.amount)
4450
+ amount: bn16(balance.amount)
4244
4451
  }));
4245
4452
  }
4246
4453
  /**
@@ -4262,15 +4469,15 @@ var _Provider = class {
4262
4469
  sender: message.sender,
4263
4470
  recipient: message.recipient,
4264
4471
  nonce: message.nonce,
4265
- amount: bn15(message.amount),
4472
+ amount: bn16(message.amount),
4266
4473
  data: message.data
4267
4474
  }),
4268
4475
  sender: Address2.fromAddressOrString(message.sender),
4269
4476
  recipient: Address2.fromAddressOrString(message.recipient),
4270
4477
  nonce: message.nonce,
4271
- amount: bn15(message.amount),
4478
+ amount: bn16(message.amount),
4272
4479
  data: InputMessageCoder.decodeData(message.data),
4273
- daHeight: bn15(message.daHeight)
4480
+ daHeight: bn16(message.daHeight)
4274
4481
  }));
4275
4482
  }
4276
4483
  /**
@@ -4323,44 +4530,52 @@ var _Provider = class {
4323
4530
  } = result.messageProof;
4324
4531
  return {
4325
4532
  messageProof: {
4326
- proofIndex: bn15(messageProof.proofIndex),
4533
+ proofIndex: bn16(messageProof.proofIndex),
4327
4534
  proofSet: messageProof.proofSet
4328
4535
  },
4329
4536
  blockProof: {
4330
- proofIndex: bn15(blockProof.proofIndex),
4537
+ proofIndex: bn16(blockProof.proofIndex),
4331
4538
  proofSet: blockProof.proofSet
4332
4539
  },
4333
4540
  messageBlockHeader: {
4334
4541
  id: messageBlockHeader.id,
4335
- daHeight: bn15(messageBlockHeader.daHeight),
4336
- transactionsCount: bn15(messageBlockHeader.transactionsCount),
4542
+ daHeight: bn16(messageBlockHeader.daHeight),
4543
+ transactionsCount: bn16(messageBlockHeader.transactionsCount),
4337
4544
  transactionsRoot: messageBlockHeader.transactionsRoot,
4338
- height: bn15(messageBlockHeader.height),
4545
+ height: bn16(messageBlockHeader.height),
4339
4546
  prevRoot: messageBlockHeader.prevRoot,
4340
4547
  time: messageBlockHeader.time,
4341
4548
  applicationHash: messageBlockHeader.applicationHash,
4342
- messageReceiptRoot: messageBlockHeader.messageReceiptRoot,
4343
- messageReceiptCount: bn15(messageBlockHeader.messageReceiptCount)
4549
+ messageReceiptCount: bn16(messageBlockHeader.messageReceiptCount)
4344
4550
  },
4345
4551
  commitBlockHeader: {
4346
4552
  id: commitBlockHeader.id,
4347
- daHeight: bn15(commitBlockHeader.daHeight),
4348
- transactionsCount: bn15(commitBlockHeader.transactionsCount),
4553
+ daHeight: bn16(commitBlockHeader.daHeight),
4554
+ transactionsCount: bn16(commitBlockHeader.transactionsCount),
4349
4555
  transactionsRoot: commitBlockHeader.transactionsRoot,
4350
- height: bn15(commitBlockHeader.height),
4556
+ height: bn16(commitBlockHeader.height),
4351
4557
  prevRoot: commitBlockHeader.prevRoot,
4352
4558
  time: commitBlockHeader.time,
4353
4559
  applicationHash: commitBlockHeader.applicationHash,
4354
- messageReceiptRoot: commitBlockHeader.messageReceiptRoot,
4355
- messageReceiptCount: bn15(commitBlockHeader.messageReceiptCount)
4560
+ messageReceiptCount: bn16(commitBlockHeader.messageReceiptCount)
4356
4561
  },
4357
4562
  sender: Address2.fromAddressOrString(sender),
4358
4563
  recipient: Address2.fromAddressOrString(recipient),
4359
4564
  nonce,
4360
- amount: bn15(amount),
4565
+ amount: bn16(amount),
4361
4566
  data
4362
4567
  };
4363
4568
  }
4569
+ async getLatestGasPrice() {
4570
+ const { latestGasPrice } = await this.operations.getLatestGasPrice();
4571
+ return bn16(latestGasPrice.gasPrice);
4572
+ }
4573
+ async estimateGasPrice(blockHorizon) {
4574
+ const { estimateGasPrice } = await this.operations.estimateGasPrice({
4575
+ blockHorizon: String(blockHorizon)
4576
+ });
4577
+ return bn16(estimateGasPrice.gasPrice);
4578
+ }
4364
4579
  /**
4365
4580
  * Returns Message Proof for given transaction id and the message id from MessageOut receipt.
4366
4581
  *
@@ -4380,10 +4595,10 @@ var _Provider = class {
4380
4595
  */
4381
4596
  async produceBlocks(amount, startTime) {
4382
4597
  const { produceBlocks: latestBlockHeight } = await this.operations.produceBlocks({
4383
- blocksToProduce: bn15(amount).toString(10),
4598
+ blocksToProduce: bn16(amount).toString(10),
4384
4599
  startTimestamp: startTime ? DateTime2.fromUnixMilliseconds(startTime).toTai64() : void 0
4385
4600
  });
4386
- return bn15(latestBlockHeight);
4601
+ return bn16(latestBlockHeight);
4387
4602
  }
4388
4603
  // eslint-disable-next-line @typescript-eslint/require-await
4389
4604
  async getTransactionResponse(transactionId) {
@@ -4397,7 +4612,7 @@ cacheInputs_fn = function(inputs) {
4397
4612
  return;
4398
4613
  }
4399
4614
  inputs.forEach((input) => {
4400
- if (input.type === InputType6.Coin) {
4615
+ if (input.type === InputType7.Coin) {
4401
4616
  this.cache?.set(input.id);
4402
4617
  }
4403
4618
  });
@@ -4407,7 +4622,7 @@ __publicField(Provider, "nodeInfoCache", {});
4407
4622
 
4408
4623
  // src/providers/transaction-summary/get-transaction-summary.ts
4409
4624
  import { ErrorCode as ErrorCode14, FuelError as FuelError14 } from "@fuel-ts/errors";
4410
- import { bn as bn16 } from "@fuel-ts/math";
4625
+ import { bn as bn17 } from "@fuel-ts/math";
4411
4626
  import { TransactionCoder as TransactionCoder6 } from "@fuel-ts/transactions";
4412
4627
  import { arrayify as arrayify12 } from "@fuel-ts/utils";
4413
4628
 
@@ -4615,9 +4830,8 @@ var Account = class extends AbstractAccount {
4615
4830
  * @param assetId - The asset ID to check the balance for.
4616
4831
  * @returns A promise that resolves to the balance amount.
4617
4832
  */
4618
- async getBalance(assetId) {
4619
- const assetIdToFetch = assetId ?? this.provider.getBaseAssetId();
4620
- const amount = await this.provider.getBalance(this.address, assetIdToFetch);
4833
+ async getBalance(assetId = BaseAssetId3) {
4834
+ const amount = await this.provider.getBalance(this.address, assetId);
4621
4835
  return amount;
4622
4836
  }
4623
4837
  /**
@@ -4654,37 +4868,33 @@ var Account = class extends AbstractAccount {
4654
4868
  * @param fee - The estimated transaction fee.
4655
4869
  * @returns A promise that resolves when the resources are added to the transaction.
4656
4870
  */
4657
- async fund(request, coinQuantities, fee) {
4658
- const baseAssetId = this.provider.getBaseAssetId();
4659
- const updatedQuantities = addAmountToAsset({
4660
- amount: bn17(fee),
4661
- assetId: baseAssetId,
4662
- coinQuantities
4871
+ async fund(request, params) {
4872
+ const { addedSignatures, estimatedPredicates, maxFee: fee, requiredQuantities } = params;
4873
+ const txRequest = request;
4874
+ const requiredQuantitiesWithFee = addAmountToCoinQuantities({
4875
+ amount: bn18(fee),
4876
+ assetId: BaseAssetId3,
4877
+ coinQuantities: requiredQuantities
4663
4878
  });
4664
4879
  const quantitiesDict = {};
4665
- updatedQuantities.forEach(({ amount, assetId }) => {
4880
+ requiredQuantitiesWithFee.forEach(({ amount, assetId }) => {
4666
4881
  quantitiesDict[assetId] = {
4667
4882
  required: amount,
4668
- owned: bn17(0)
4883
+ owned: bn18(0)
4669
4884
  };
4670
4885
  });
4671
- const cachedUtxos = [];
4672
- const cachedMessages = [];
4673
- const owner = this.address.toB256();
4674
- request.inputs.forEach((input) => {
4886
+ txRequest.inputs.forEach((input) => {
4675
4887
  const isResource = "amount" in input;
4676
4888
  if (isResource) {
4677
4889
  const isCoin2 = "owner" in input;
4678
4890
  if (isCoin2) {
4679
4891
  const assetId = String(input.assetId);
4680
- if (input.owner === owner && quantitiesDict[assetId]) {
4681
- const amount = bn17(input.amount);
4892
+ if (quantitiesDict[assetId]) {
4893
+ const amount = bn18(input.amount);
4682
4894
  quantitiesDict[assetId].owned = quantitiesDict[assetId].owned.add(amount);
4683
- cachedUtxos.push(input.id);
4684
4895
  }
4685
- } else if (input.recipient === owner && input.amount && quantitiesDict[baseAssetId]) {
4686
- quantitiesDict[baseAssetId].owned = quantitiesDict[baseAssetId].owned.add(input.amount);
4687
- cachedMessages.push(input.nonce);
4896
+ } else if (input.amount && quantitiesDict[BaseAssetId3]) {
4897
+ quantitiesDict[BaseAssetId3].owned = quantitiesDict[BaseAssetId3].owned.add(input.amount);
4688
4898
  }
4689
4899
  }
4690
4900
  });
@@ -4699,12 +4909,23 @@ var Account = class extends AbstractAccount {
4699
4909
  });
4700
4910
  const needsToBeFunded = missingQuantities.length;
4701
4911
  if (needsToBeFunded) {
4702
- const resources = await this.getResourcesToSpend(missingQuantities, {
4703
- messages: cachedMessages,
4704
- utxos: cachedUtxos
4705
- });
4706
- request.addResources(resources);
4912
+ const excludedIds = cacheTxInputsFromOwner(txRequest.inputs, this.address.toB256());
4913
+ const resources = await this.getResourcesToSpend(missingQuantities, excludedIds);
4914
+ txRequest.addResources(resources);
4915
+ }
4916
+ txRequest.shiftPredicateData();
4917
+ txRequest.updatePredicateGasUsed(estimatedPredicates);
4918
+ const requestToBeReEstimate = clone4(txRequest);
4919
+ if (addedSignatures) {
4920
+ Array.from({ length: addedSignatures }).forEach(
4921
+ () => requestToBeReEstimate.addEmptyWitness()
4922
+ );
4707
4923
  }
4924
+ const { maxFee } = await this.provider.estimateTxGasAndFee({
4925
+ transactionRequest: requestToBeReEstimate
4926
+ });
4927
+ txRequest.maxFee = maxFee;
4928
+ return txRequest;
4708
4929
  }
4709
4930
  /**
4710
4931
  * A helper that creates a transfer transaction request and returns it.
@@ -4712,29 +4933,25 @@ var Account = class extends AbstractAccount {
4712
4933
  * @param destination - The address of the destination.
4713
4934
  * @param amount - The amount of coins to transfer.
4714
4935
  * @param assetId - The asset ID of the coins to transfer.
4715
- * @param txParams - The transaction parameters (gasLimit, gasPrice, maturity).
4936
+ * @param txParams - The transaction parameters (gasLimit, tip, maturity, maxFee, witnessLimit).
4716
4937
  * @returns A promise that resolves to the prepared transaction request.
4717
4938
  */
4718
- async createTransfer(destination, amount, assetId, txParams = {}) {
4719
- const { minGasPrice } = this.provider.getGasConfig();
4720
- const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
4721
- const params = { gasPrice: minGasPrice, ...txParams };
4722
- const request = new ScriptTransactionRequest(params);
4723
- request.addCoinOutput(Address3.fromAddressOrString(destination), amount, assetIdToTransfer);
4724
- const { maxFee, requiredQuantities, gasUsed, estimatedInputs } = await this.provider.getTransactionCost(request, [], {
4939
+ async createTransfer(destination, amount, assetId = BaseAssetId3, txParams = {}) {
4940
+ const request = new ScriptTransactionRequest(txParams);
4941
+ request.addCoinOutput(Address3.fromAddressOrString(destination), amount, assetId);
4942
+ const txCost = await this.provider.getTransactionCost(request, {
4725
4943
  estimateTxDependencies: true,
4726
4944
  resourcesOwner: this
4727
4945
  });
4728
- request.gasPrice = bn17(txParams.gasPrice ?? minGasPrice);
4729
- request.gasLimit = bn17(txParams.gasLimit ?? gasUsed);
4730
- this.validateGas({
4731
- gasUsed,
4732
- gasPrice: request.gasPrice,
4733
- gasLimit: request.gasLimit,
4734
- minGasPrice
4735
- });
4736
- await this.fund(request, requiredQuantities, maxFee);
4737
- request.updatePredicateInputs(estimatedInputs);
4946
+ if ("gasLimit" in txParams) {
4947
+ this.validateGas({
4948
+ gasUsed: txCost.gasUsed,
4949
+ gasLimit: request.gasLimit
4950
+ });
4951
+ }
4952
+ request.gasLimit = txCost.gasUsed;
4953
+ request.maxFee = txCost.maxFee;
4954
+ await this.fund(request, txCost);
4738
4955
  return request;
4739
4956
  }
4740
4957
  /**
@@ -4746,15 +4963,14 @@ var Account = class extends AbstractAccount {
4746
4963
  * @param txParams - The transaction parameters (gasLimit, gasPrice, maturity).
4747
4964
  * @returns A promise that resolves to the transaction response.
4748
4965
  */
4749
- async transfer(destination, amount, assetId, txParams = {}) {
4750
- if (bn17(amount).lte(0)) {
4966
+ async transfer(destination, amount, assetId = BaseAssetId3, txParams = {}) {
4967
+ if (bn18(amount).lte(0)) {
4751
4968
  throw new FuelError15(
4752
4969
  ErrorCode15.INVALID_TRANSFER_AMOUNT,
4753
4970
  "Transfer amount must be a positive number."
4754
4971
  );
4755
4972
  }
4756
- const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
4757
- const request = await this.createTransfer(destination, amount, assetIdToTransfer, txParams);
4973
+ const request = await this.createTransfer(destination, amount, assetId, txParams);
4758
4974
  return this.sendTransaction(request, { estimateTxDependencies: false });
4759
4975
  }
4760
4976
  /**
@@ -4766,40 +4982,38 @@ var Account = class extends AbstractAccount {
4766
4982
  * @param txParams - The optional transaction parameters.
4767
4983
  * @returns A promise that resolves to the transaction response.
4768
4984
  */
4769
- async transferToContract(contractId, amount, assetId, txParams = {}) {
4770
- if (bn17(amount).lte(0)) {
4985
+ async transferToContract(contractId, amount, assetId = BaseAssetId3, txParams = {}) {
4986
+ if (bn18(amount).lte(0)) {
4771
4987
  throw new FuelError15(
4772
4988
  ErrorCode15.INVALID_TRANSFER_AMOUNT,
4773
4989
  "Transfer amount must be a positive number."
4774
4990
  );
4775
4991
  }
4776
4992
  const contractAddress = Address3.fromAddressOrString(contractId);
4777
- const { minGasPrice } = this.provider.getGasConfig();
4778
- const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
4779
- const params = { gasPrice: minGasPrice, ...txParams };
4780
4993
  const { script, scriptData } = await assembleTransferToContractScript({
4781
4994
  hexlifiedContractId: contractAddress.toB256(),
4782
- amountToTransfer: bn17(amount),
4783
- assetId: assetIdToTransfer
4995
+ amountToTransfer: bn18(amount),
4996
+ assetId
4784
4997
  });
4785
4998
  const request = new ScriptTransactionRequest({
4786
- ...params,
4999
+ ...txParams,
4787
5000
  script,
4788
5001
  scriptData
4789
5002
  });
4790
5003
  request.addContractInputAndOutput(contractAddress);
4791
- const { maxFee, requiredQuantities, gasUsed } = await this.provider.getTransactionCost(
4792
- request,
4793
- [{ amount: bn17(amount), assetId: String(assetIdToTransfer) }]
4794
- );
4795
- request.gasLimit = bn17(params.gasLimit ?? gasUsed);
4796
- this.validateGas({
4797
- gasUsed,
4798
- gasPrice: request.gasPrice,
4799
- gasLimit: request.gasLimit,
4800
- minGasPrice
5004
+ const txCost = await this.provider.getTransactionCost(request, {
5005
+ resourcesOwner: this,
5006
+ quantitiesToContract: [{ amount: bn18(amount), assetId: String(assetId) }]
4801
5007
  });
4802
- await this.fund(request, requiredQuantities, maxFee);
5008
+ if (txParams.gasLimit) {
5009
+ this.validateGas({
5010
+ gasUsed: txCost.gasUsed,
5011
+ gasLimit: request.gasLimit
5012
+ });
5013
+ }
5014
+ request.gasLimit = txCost.gasUsed;
5015
+ request.maxFee = txCost.maxFee;
5016
+ await this.fund(request, txCost);
4803
5017
  return this.sendTransaction(request);
4804
5018
  }
4805
5019
  /**
@@ -4811,35 +5025,31 @@ var Account = class extends AbstractAccount {
4811
5025
  * @returns A promise that resolves to the transaction response.
4812
5026
  */
4813
5027
  async withdrawToBaseLayer(recipient, amount, txParams = {}) {
4814
- const { minGasPrice } = this.provider.getGasConfig();
4815
- const baseAssetId = this.provider.getBaseAssetId();
4816
5028
  const recipientAddress = Address3.fromAddressOrString(recipient);
4817
5029
  const recipientDataArray = arrayify14(
4818
5030
  "0x".concat(recipientAddress.toHexString().substring(2).padStart(64, "0"))
4819
5031
  );
4820
5032
  const amountDataArray = arrayify14(
4821
- "0x".concat(bn17(amount).toHex().substring(2).padStart(16, "0"))
5033
+ "0x".concat(bn18(amount).toHex().substring(2).padStart(16, "0"))
4822
5034
  );
4823
5035
  const script = new Uint8Array([
4824
5036
  ...arrayify14(withdrawScript.bytes),
4825
5037
  ...recipientDataArray,
4826
5038
  ...amountDataArray
4827
5039
  ]);
4828
- const params = { script, gasPrice: minGasPrice, ...txParams };
5040
+ const params = { script, ...txParams };
4829
5041
  const request = new ScriptTransactionRequest(params);
4830
- const forwardingQuantities = [{ amount: bn17(amount), assetId: baseAssetId }];
4831
- const { requiredQuantities, maxFee, gasUsed } = await this.provider.getTransactionCost(
4832
- request,
4833
- forwardingQuantities
4834
- );
4835
- request.gasLimit = bn17(params.gasLimit ?? gasUsed);
4836
- this.validateGas({
4837
- gasUsed,
4838
- gasPrice: request.gasPrice,
4839
- gasLimit: request.gasLimit,
4840
- minGasPrice
4841
- });
4842
- await this.fund(request, requiredQuantities, maxFee);
5042
+ const quantitiesToContract = [{ amount: bn18(amount), assetId: BaseAssetId3 }];
5043
+ const txCost = await this.provider.getTransactionCost(request, { quantitiesToContract });
5044
+ if (txParams.gasLimit) {
5045
+ this.validateGas({
5046
+ gasUsed: txCost.gasUsed,
5047
+ gasLimit: request.gasLimit
5048
+ });
5049
+ }
5050
+ request.maxFee = txCost.maxFee;
5051
+ request.gasLimit = txCost.gasUsed;
5052
+ await this.fund(request, txCost);
4843
5053
  return this.sendTransaction(request);
4844
5054
  }
4845
5055
  async signMessage(message) {
@@ -4897,18 +5107,7 @@ var Account = class extends AbstractAccount {
4897
5107
  }
4898
5108
  return this.provider.simulate(transactionRequest, { estimateTxDependencies: false });
4899
5109
  }
4900
- validateGas({
4901
- gasUsed,
4902
- gasPrice,
4903
- gasLimit,
4904
- minGasPrice
4905
- }) {
4906
- if (minGasPrice.gt(gasPrice)) {
4907
- throw new FuelError15(
4908
- ErrorCode15.GAS_PRICE_TOO_LOW,
4909
- `Gas price '${gasPrice}' is lower than the required: '${minGasPrice}'.`
4910
- );
4911
- }
5110
+ validateGas({ gasUsed, gasLimit }) {
4912
5111
  if (gasUsed.gt(gasLimit)) {
4913
5112
  throw new FuelError15(
4914
5113
  ErrorCode15.GAS_LIMIT_TOO_LOW,
@@ -4920,7 +5119,7 @@ var Account = class extends AbstractAccount {
4920
5119
 
4921
5120
  // src/signer/signer.ts
4922
5121
  import { Address as Address4 } from "@fuel-ts/address";
4923
- import { randomBytes } from "@fuel-ts/crypto";
5122
+ import { randomBytes as randomBytes2 } from "@fuel-ts/crypto";
4924
5123
  import { hash } from "@fuel-ts/hasher";
4925
5124
  import { toBytes } from "@fuel-ts/math";
4926
5125
  import { hexlify as hexlify13, concat as concat3, arrayify as arrayify15 } from "@fuel-ts/utils";
@@ -5013,7 +5212,7 @@ var Signer = class {
5013
5212
  * @returns random 32-byte hashed
5014
5213
  */
5015
5214
  static generatePrivateKey(entropy) {
5016
- return entropy ? hash(concat3([randomBytes(32), arrayify15(entropy)])) : randomBytes(32);
5215
+ return entropy ? hash(concat3([randomBytes2(32), arrayify15(entropy)])) : randomBytes2(32);
5017
5216
  }
5018
5217
  /**
5019
5218
  * Extended publicKey from a compact publicKey
@@ -5032,7 +5231,7 @@ import { Address as Address5 } from "@fuel-ts/address";
5032
5231
  import {
5033
5232
  bufferFromString,
5034
5233
  keccak256,
5035
- randomBytes as randomBytes2,
5234
+ randomBytes as randomBytes3,
5036
5235
  scrypt,
5037
5236
  stringFromBuffer,
5038
5237
  decryptJsonWalletData,
@@ -5055,7 +5254,7 @@ var removeHexPrefix = (hexString) => {
5055
5254
  async function encryptKeystoreWallet(privateKey, address, password) {
5056
5255
  const privateKeyBuffer = bufferFromString(removeHexPrefix(privateKey), "hex");
5057
5256
  const ownerAddress = Address5.fromAddressOrString(address);
5058
- const salt = randomBytes2(DEFAULT_KEY_SIZE);
5257
+ const salt = randomBytes3(DEFAULT_KEY_SIZE);
5059
5258
  const key = scrypt({
5060
5259
  password: bufferFromString(password),
5061
5260
  salt,
@@ -5064,7 +5263,7 @@ async function encryptKeystoreWallet(privateKey, address, password) {
5064
5263
  r: DEFAULT_KDF_PARAMS_R,
5065
5264
  p: DEFAULT_KDF_PARAMS_P
5066
5265
  });
5067
- const iv = randomBytes2(DEFAULT_IV_SIZE);
5266
+ const iv = randomBytes3(DEFAULT_IV_SIZE);
5068
5267
  const ciphertext = await encryptJsonWalletData(privateKeyBuffer, key, iv);
5069
5268
  const data = Uint8Array.from([...key.subarray(16, 32), ...ciphertext]);
5070
5269
  const macHashUint8Array = keccak256(data);
@@ -5200,7 +5399,7 @@ var BaseWalletUnlocked = class extends Account {
5200
5399
  * @param transactionRequestLike - The transaction request to send.
5201
5400
  * @returns A promise that resolves to the TransactionResponse object.
5202
5401
  */
5203
- async sendTransaction(transactionRequestLike, { estimateTxDependencies = true, awaitExecution } = {}) {
5402
+ async sendTransaction(transactionRequestLike, { estimateTxDependencies = false, awaitExecution } = {}) {
5204
5403
  const transactionRequest = transactionRequestify(transactionRequestLike);
5205
5404
  if (estimateTxDependencies) {
5206
5405
  await this.provider.estimateTxDependencies(transactionRequest);
@@ -5241,12 +5440,12 @@ __publicField(BaseWalletUnlocked, "defaultPath", "m/44'/1179993420'/0'/0/0");
5241
5440
  // src/hdwallet/hdwallet.ts
5242
5441
  import { ErrorCode as ErrorCode19, FuelError as FuelError19 } from "@fuel-ts/errors";
5243
5442
  import { sha256 as sha2564 } from "@fuel-ts/hasher";
5244
- import { bn as bn18, toBytes as toBytes2, toHex } from "@fuel-ts/math";
5443
+ import { bn as bn19, toBytes as toBytes2, toHex } from "@fuel-ts/math";
5245
5444
  import { arrayify as arrayify18, hexlify as hexlify17, concat as concat5 } from "@fuel-ts/utils";
5246
5445
  import { toBeHex, dataSlice as dataSlice2, encodeBase58 as encodeBase582, decodeBase58, computeHmac as computeHmac2, ripemd160 } from "ethers";
5247
5446
 
5248
5447
  // src/mnemonic/mnemonic.ts
5249
- import { randomBytes as randomBytes3 } from "@fuel-ts/crypto";
5448
+ import { randomBytes as randomBytes4 } from "@fuel-ts/crypto";
5250
5449
  import { ErrorCode as ErrorCode18, FuelError as FuelError18 } from "@fuel-ts/errors";
5251
5450
  import { sha256 as sha2563 } from "@fuel-ts/hasher";
5252
5451
  import { arrayify as arrayify17, hexlify as hexlify16, concat as concat4 } from "@fuel-ts/utils";
@@ -7601,7 +7800,7 @@ var Mnemonic = class {
7601
7800
  * @returns A randomly generated mnemonic
7602
7801
  */
7603
7802
  static generate(size = 32, extraEntropy = "") {
7604
- const entropy = extraEntropy ? sha2563(concat4([randomBytes3(size), arrayify17(extraEntropy)])) : randomBytes3(size);
7803
+ const entropy = extraEntropy ? sha2563(concat4([randomBytes4(size), arrayify17(extraEntropy)])) : randomBytes4(size);
7605
7804
  return Mnemonic.entropyToMnemonic(entropy);
7606
7805
  }
7607
7806
  };
@@ -7707,7 +7906,7 @@ var HDWallet = class {
7707
7906
  const IR = bytes.slice(32);
7708
7907
  if (privateKey) {
7709
7908
  const N = "0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141";
7710
- const ki = bn18(IL).add(privateKey).mod(N).toBytes(32);
7909
+ const ki = bn19(IL).add(privateKey).mod(N).toBytes(32);
7711
7910
  return new HDWallet({
7712
7911
  privateKey: ki,
7713
7912
  chainCode: IR,
@@ -7972,20 +8171,21 @@ __publicField(Wallet, "fromExtendedKey", WalletUnlocked.fromExtendedKey);
7972
8171
  __publicField(Wallet, "fromEncryptedJson", WalletUnlocked.fromEncryptedJson);
7973
8172
 
7974
8173
  // src/test-utils/seedTestWallet.ts
7975
- import { randomBytes as randomBytes4 } from "@fuel-ts/crypto";
8174
+ import { randomBytes as randomBytes5 } from "@fuel-ts/crypto";
7976
8175
  var seedTestWallet = async (wallet, quantities) => {
7977
8176
  const genesisWallet = new WalletUnlocked(
7978
- process.env.GENESIS_SECRET || randomBytes4(32),
8177
+ process.env.GENESIS_SECRET || randomBytes5(32),
7979
8178
  wallet.provider
7980
8179
  );
7981
- const resources = await genesisWallet.getResourcesToSpend(quantities);
7982
- const { minGasPrice } = genesisWallet.provider.getGasConfig();
7983
- const request = new ScriptTransactionRequest({
7984
- gasLimit: 1e4,
7985
- gasPrice: minGasPrice
8180
+ const request = new ScriptTransactionRequest();
8181
+ quantities.forEach((quantity) => {
8182
+ const { amount, assetId } = coinQuantityfy(quantity);
8183
+ request.addCoinOutput(wallet.address, amount, assetId);
7986
8184
  });
7987
- request.addResources(resources);
7988
- quantities.map(coinQuantityfy).forEach(({ amount, assetId }) => request.addCoinOutput(wallet.address, amount, assetId));
8185
+ const txCost = await genesisWallet.provider.getTransactionCost(request);
8186
+ request.gasLimit = txCost.gasUsed;
8187
+ request.maxFee = txCost.maxFee;
8188
+ await genesisWallet.fund(request, txCost);
7989
8189
  await genesisWallet.sendTransaction(request, { awaitExecution: true });
7990
8190
  };
7991
8191
 
@@ -7999,12 +8199,12 @@ var generateTestWallet = async (provider, quantities) => {
7999
8199
  };
8000
8200
 
8001
8201
  // src/test-utils/launchNode.ts
8002
- import { ZeroBytes32 as ZeroBytes329 } from "@fuel-ts/address/configs";
8003
- import { toHex as toHex2 } from "@fuel-ts/math";
8004
- import { defaultChainConfig, defaultConsensusKey, hexlify as hexlify18 } from "@fuel-ts/utils";
8202
+ import { BaseAssetId as BaseAssetId4 } from "@fuel-ts/address/configs";
8203
+ import { defaultChainConfigs, defaultConsensusKey, hexlify as hexlify18 } from "@fuel-ts/utils";
8005
8204
  import { findBinPath } from "@fuel-ts/utils/cli-utils";
8006
8205
  import { spawn } from "child_process";
8007
8206
  import { randomUUID } from "crypto";
8207
+ import { randomBytes as randomBytes6 } from "ethers";
8008
8208
  import { existsSync, mkdirSync, rmSync, writeFileSync } from "fs";
8009
8209
  import os from "os";
8010
8210
  import path from "path";
@@ -8053,12 +8253,12 @@ var launchNode = async ({
8053
8253
  // eslint-disable-next-line no-async-promise-executor
8054
8254
  new Promise(async (resolve, reject) => {
8055
8255
  const remainingArgs = extractRemainingArgs(args, [
8056
- "--chain",
8256
+ "--snapshot",
8057
8257
  "--consensus-key",
8058
8258
  "--db-type",
8059
8259
  "--poa-instant"
8060
8260
  ]);
8061
- const chainConfigPath = getFlagValueFromArgs(args, "--chain");
8261
+ const chainConfigPath = getFlagValueFromArgs(args, "--snapshot");
8062
8262
  const consensusKey = getFlagValueFromArgs(args, "--consensus-key") || defaultConsensusKey;
8063
8263
  const dbTypeFlagValue = getFlagValueFromArgs(args, "--db-type");
8064
8264
  const useInMemoryDb = dbTypeFlagValue === "in-memory" || dbTypeFlagValue === void 0;
@@ -8077,36 +8277,54 @@ var launchNode = async ({
8077
8277
  let chainConfigPathToUse;
8078
8278
  const prefix = basePath || os.tmpdir();
8079
8279
  const suffix = basePath ? "" : randomUUID();
8080
- const tempDirPath = path.join(prefix, ".fuels", suffix);
8280
+ const tempDirPath = path.join(prefix, ".fuels", suffix, "chainConfigs");
8081
8281
  if (chainConfigPath) {
8082
8282
  chainConfigPathToUse = chainConfigPath;
8083
8283
  } else {
8084
8284
  if (!existsSync(tempDirPath)) {
8085
8285
  mkdirSync(tempDirPath, { recursive: true });
8086
8286
  }
8087
- const tempChainConfigFilePath = path.join(tempDirPath, "chainConfig.json");
8088
- let chainConfig = defaultChainConfig;
8287
+ let { stateConfigJson } = defaultChainConfigs;
8288
+ const { chainConfigJson, metadataJson } = defaultChainConfigs;
8289
+ stateConfigJson = {
8290
+ ...stateConfigJson,
8291
+ coins: [
8292
+ ...stateConfigJson.coins.map((coin) => ({
8293
+ ...coin,
8294
+ amount: "18446744073709551615"
8295
+ }))
8296
+ ],
8297
+ messages: stateConfigJson.messages.map((message) => ({
8298
+ ...message,
8299
+ amount: "18446744073709551615"
8300
+ }))
8301
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8302
+ };
8089
8303
  if (!process.env.GENESIS_SECRET) {
8090
8304
  const pk = Signer.generatePrivateKey();
8091
8305
  const signer = new Signer(pk);
8092
8306
  process.env.GENESIS_SECRET = hexlify18(pk);
8093
- chainConfig = {
8094
- ...defaultChainConfig,
8095
- initial_state: {
8096
- ...defaultChainConfig.initial_state,
8097
- coins: [
8098
- ...defaultChainConfig.initial_state.coins,
8099
- {
8100
- owner: signer.address.toHexString(),
8101
- amount: toHex2(1e9),
8102
- asset_id: defaultChainConfig?.consensus_parameters?.base_asset_id ?? ZeroBytes329
8103
- }
8104
- ]
8105
- }
8106
- };
8307
+ stateConfigJson.coins.push({
8308
+ tx_id: hexlify18(randomBytes6(34)),
8309
+ owner: signer.address.toHexString(),
8310
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8311
+ amount: "18446744073709551615",
8312
+ asset_id: BaseAssetId4,
8313
+ output_index: 0,
8314
+ tx_pointer_block_height: 0,
8315
+ tx_pointer_tx_idx: 0
8316
+ });
8107
8317
  }
8108
- writeFileSync(tempChainConfigFilePath, JSON.stringify(chainConfig), "utf8");
8109
- chainConfigPathToUse = tempChainConfigFilePath;
8318
+ let fixedStateConfigJSON = JSON.stringify(stateConfigJson);
8319
+ const regexMakeNumber = /("amount":)"(\d+)"/gm;
8320
+ fixedStateConfigJSON = fixedStateConfigJSON.replace(regexMakeNumber, "$1$2");
8321
+ const chainConfigWritePath = path.join(tempDirPath, "chainConfig.json");
8322
+ const stateConfigWritePath = path.join(tempDirPath, "stateConfig.json");
8323
+ const metadataWritePath = path.join(tempDirPath, "metadata.json");
8324
+ writeFileSync(chainConfigWritePath, JSON.stringify(chainConfigJson), "utf8");
8325
+ writeFileSync(stateConfigWritePath, fixedStateConfigJSON, "utf8");
8326
+ writeFileSync(metadataWritePath, JSON.stringify(metadataJson), "utf8");
8327
+ chainConfigPathToUse = tempDirPath;
8110
8328
  }
8111
8329
  const child = spawn(
8112
8330
  command,
@@ -8115,10 +8333,10 @@ var launchNode = async ({
8115
8333
  ["--ip", ipToUse],
8116
8334
  ["--port", portToUse],
8117
8335
  useInMemoryDb ? ["--db-type", "in-memory"] : ["--db-path", tempDirPath],
8118
- ["--min-gas-price", "0"],
8336
+ ["--min-gas-price", "1"],
8119
8337
  poaInstant ? ["--poa-instant", "true"] : [],
8120
8338
  ["--consensus-key", consensusKey],
8121
- ["--chain", chainConfigPathToUse],
8339
+ ["--snapshot", chainConfigPathToUse],
8122
8340
  "--vm-backtrace",
8123
8341
  "--utxo-validation",
8124
8342
  "--debug",
@@ -8165,10 +8383,9 @@ var launchNode = async ({
8165
8383
  })
8166
8384
  );
8167
8385
  var generateWallets = async (count, provider) => {
8168
- const baseAssetId = provider.getBaseAssetId();
8169
8386
  const wallets = [];
8170
8387
  for (let i = 0; i < count; i += 1) {
8171
- const wallet = await generateTestWallet(provider, [[1e3, baseAssetId]]);
8388
+ const wallet = await generateTestWallet(provider, [[1e3, BaseAssetId4]]);
8172
8389
  wallets.push(wallet);
8173
8390
  }
8174
8391
  return wallets;
@@ -8178,7 +8395,7 @@ var launchNodeAndGetWallets = async ({
8178
8395
  walletCount = 10
8179
8396
  } = {}) => {
8180
8397
  const { cleanup: closeNode, ip, port } = await launchNode(launchNodeOptions || {});
8181
- const provider = await Provider.create(`http://${ip}:${port}/graphql`);
8398
+ const provider = await Provider.create(`http://${ip}:${port}/v1/graphql`);
8182
8399
  const wallets = await generateWallets(walletCount, provider);
8183
8400
  const cleanup = () => {
8184
8401
  closeNode();