@fuel-ts/account 0.0.0-rc-2130-20240422142413 → 0.0.0-rc-2037-20240422145740

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 (39) hide show
  1. package/dist/hdwallet/hdwallet.d.ts.map +1 -1
  2. package/dist/index.global.js +2583 -1402
  3. package/dist/index.global.js.map +1 -1
  4. package/dist/index.js +230 -154
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +140 -70
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/mnemonic/mnemonic.d.ts.map +1 -1
  9. package/dist/predicate/predicate.d.ts +17 -2
  10. package/dist/predicate/predicate.d.ts.map +1 -1
  11. package/dist/providers/coin.d.ts +2 -1
  12. package/dist/providers/coin.d.ts.map +1 -1
  13. package/dist/providers/message.d.ts +1 -0
  14. package/dist/providers/message.d.ts.map +1 -1
  15. package/dist/providers/provider.d.ts +9 -0
  16. package/dist/providers/provider.d.ts.map +1 -1
  17. package/dist/providers/transaction-request/helpers.d.ts +10 -0
  18. package/dist/providers/transaction-request/helpers.d.ts.map +1 -0
  19. package/dist/providers/transaction-request/index.d.ts +1 -0
  20. package/dist/providers/transaction-request/index.d.ts.map +1 -1
  21. package/dist/providers/transaction-request/transaction-request.d.ts +4 -20
  22. package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
  23. package/dist/test-utils/index.d.ts +1 -0
  24. package/dist/test-utils/index.d.ts.map +1 -1
  25. package/dist/test-utils/resources.d.ts +4 -0
  26. package/dist/test-utils/resources.d.ts.map +1 -0
  27. package/dist/test-utils/seedTestWallet.d.ts +1 -1
  28. package/dist/test-utils/seedTestWallet.d.ts.map +1 -1
  29. package/dist/test-utils/transactionRequest.d.ts +5 -0
  30. package/dist/test-utils/transactionRequest.d.ts.map +1 -0
  31. package/dist/test-utils.global.js +2609 -1451
  32. package/dist/test-utils.global.js.map +1 -1
  33. package/dist/test-utils.js +203 -149
  34. package/dist/test-utils.js.map +1 -1
  35. package/dist/test-utils.mjs +121 -70
  36. package/dist/test-utils.mjs.map +1 -1
  37. package/dist/wallet/base-wallet-unlocked.d.ts +2 -2
  38. package/dist/wallet/base-wallet-unlocked.d.ts.map +1 -1
  39. package/package.json +16 -15
package/dist/index.js CHANGED
@@ -88,7 +88,7 @@ __export(src_exports, {
88
88
  StorageAbstract: () => StorageAbstract,
89
89
  TransactionResponse: () => TransactionResponse,
90
90
  TransactionStatus: () => TransactionStatus,
91
- TransactionType: () => import_transactions6.TransactionType,
91
+ TransactionType: () => import_transactions7.TransactionType,
92
92
  TransactionTypeName: () => TransactionTypeName,
93
93
  Vault: () => Vault,
94
94
  Wallet: () => Wallet,
@@ -104,6 +104,7 @@ __export(src_exports, {
104
104
  assets: () => assets,
105
105
  buildBlockExplorerUrl: () => buildBlockExplorerUrl,
106
106
  cacheFor: () => cacheFor,
107
+ cacheResources: () => cacheResources,
107
108
  calculateMetadataGasForTxCreate: () => calculateMetadataGasForTxCreate,
108
109
  calculateMetadataGasForTxScript: () => calculateMetadataGasForTxScript,
109
110
  calculatePriceWithFactor: () => calculatePriceWithFactor,
@@ -150,6 +151,7 @@ __export(src_exports, {
150
151
  getReceiptsMessageOut: () => getReceiptsMessageOut,
151
152
  getReceiptsTransferOut: () => getReceiptsTransferOut,
152
153
  getReceiptsWithMissingData: () => getReceiptsWithMissingData,
154
+ getRequestInputResourceOwner: () => getRequestInputResourceOwner,
153
155
  getTransactionStatusName: () => getTransactionStatusName,
154
156
  getTransactionSummary: () => getTransactionSummary,
155
157
  getTransactionSummaryFromRequest: () => getTransactionSummaryFromRequest,
@@ -163,6 +165,10 @@ __export(src_exports, {
163
165
  isMessage: () => isMessage,
164
166
  isRawCoin: () => isRawCoin,
165
167
  isRawMessage: () => isRawMessage,
168
+ isRequestInputCoin: () => isRequestInputCoin,
169
+ isRequestInputMessage: () => isRequestInputMessage,
170
+ isRequestInputResource: () => isRequestInputResource,
171
+ isRequestInputResourceFromOwner: () => isRequestInputResourceFromOwner,
166
172
  isType: () => isType,
167
173
  isTypeCreate: () => isTypeCreate,
168
174
  isTypeMint: () => isTypeMint,
@@ -230,10 +236,11 @@ var addAmountToAsset = (params) => {
230
236
  var import_address3 = require("@fuel-ts/address");
231
237
  var import_errors14 = require("@fuel-ts/errors");
232
238
  var import_math15 = require("@fuel-ts/math");
233
- var import_transactions18 = require("@fuel-ts/transactions");
239
+ var import_transactions19 = require("@fuel-ts/transactions");
234
240
  var import_utils23 = require("@fuel-ts/utils");
235
241
  var import_versions = require("@fuel-ts/versions");
236
242
  var import_utils24 = require("@noble/curves/abstract/utils");
243
+ var import_ethers = require("ethers");
237
244
  var import_graphql_request = require("graphql-request");
238
245
  var import_ramda3 = require("ramda");
239
246
 
@@ -1319,7 +1326,7 @@ var import_address = require("@fuel-ts/address");
1319
1326
  var import_configs7 = require("@fuel-ts/address/configs");
1320
1327
  var import_crypto = require("@fuel-ts/crypto");
1321
1328
  var import_math7 = require("@fuel-ts/math");
1322
- var import_transactions6 = require("@fuel-ts/transactions");
1329
+ var import_transactions7 = require("@fuel-ts/transactions");
1323
1330
  var import_utils9 = require("@fuel-ts/utils");
1324
1331
 
1325
1332
  // src/providers/resource.ts
@@ -1806,6 +1813,28 @@ var NoWitnessByOwnerError = class extends Error {
1806
1813
  name = "NoWitnessByOwnerError";
1807
1814
  };
1808
1815
 
1816
+ // src/providers/transaction-request/helpers.ts
1817
+ var import_transactions6 = require("@fuel-ts/transactions");
1818
+ var isRequestInputCoin = (input) => input.type === import_transactions6.InputType.Coin;
1819
+ var isRequestInputMessage = (input) => input.type === import_transactions6.InputType.Message;
1820
+ var isRequestInputResource = (input) => isRequestInputCoin(input) || isRequestInputMessage(input);
1821
+ var getRequestInputResourceOwner = (input) => isRequestInputCoin(input) ? input.owner : input.recipient;
1822
+ var isRequestInputResourceFromOwner = (input, owner) => getRequestInputResourceOwner(input) === owner.toB256();
1823
+ var cacheResources = (resources) => resources.reduce(
1824
+ (cache2, resource) => {
1825
+ if (isCoin(resource)) {
1826
+ cache2.utxos.push(resource.id);
1827
+ } else {
1828
+ cache2.messages.push(resource.nonce);
1829
+ }
1830
+ return cache2;
1831
+ },
1832
+ {
1833
+ utxos: [],
1834
+ messages: []
1835
+ }
1836
+ );
1837
+
1809
1838
  // src/providers/transaction-request/witness.ts
1810
1839
  var import_utils8 = require("@fuel-ts/utils");
1811
1840
  var witnessify = (value) => {
@@ -1858,20 +1887,20 @@ var BaseTransactionRequest = class {
1858
1887
  let policyTypes = 0;
1859
1888
  const policies = [];
1860
1889
  if (req.gasPrice) {
1861
- policyTypes += import_transactions6.PolicyType.GasPrice;
1862
- policies.push({ data: req.gasPrice, type: import_transactions6.PolicyType.GasPrice });
1890
+ policyTypes += import_transactions7.PolicyType.GasPrice;
1891
+ policies.push({ data: req.gasPrice, type: import_transactions7.PolicyType.GasPrice });
1863
1892
  }
1864
1893
  if (req.witnessLimit) {
1865
- policyTypes += import_transactions6.PolicyType.WitnessLimit;
1866
- policies.push({ data: req.witnessLimit, type: import_transactions6.PolicyType.WitnessLimit });
1894
+ policyTypes += import_transactions7.PolicyType.WitnessLimit;
1895
+ policies.push({ data: req.witnessLimit, type: import_transactions7.PolicyType.WitnessLimit });
1867
1896
  }
1868
1897
  if (req.maturity > 0) {
1869
- policyTypes += import_transactions6.PolicyType.Maturity;
1870
- policies.push({ data: req.maturity, type: import_transactions6.PolicyType.Maturity });
1898
+ policyTypes += import_transactions7.PolicyType.Maturity;
1899
+ policies.push({ data: req.maturity, type: import_transactions7.PolicyType.Maturity });
1871
1900
  }
1872
1901
  if (req.maxFee) {
1873
- policyTypes += import_transactions6.PolicyType.MaxFee;
1874
- policies.push({ data: req.maxFee, type: import_transactions6.PolicyType.MaxFee });
1902
+ policyTypes += import_transactions7.PolicyType.MaxFee;
1903
+ policies.push({ data: req.maxFee, type: import_transactions7.PolicyType.MaxFee });
1875
1904
  }
1876
1905
  return {
1877
1906
  policyTypes,
@@ -1905,7 +1934,7 @@ var BaseTransactionRequest = class {
1905
1934
  * @returns The transaction bytes.
1906
1935
  */
1907
1936
  toTransactionBytes() {
1908
- return new import_transactions6.TransactionCoder().encode(this.toTransaction());
1937
+ return new import_transactions7.TransactionCoder().encode(this.toTransaction());
1909
1938
  }
1910
1939
  /**
1911
1940
  * @hidden
@@ -1996,7 +2025,7 @@ var BaseTransactionRequest = class {
1996
2025
  */
1997
2026
  getCoinInputs() {
1998
2027
  return this.inputs.filter(
1999
- (input) => input.type === import_transactions6.InputType.Coin
2028
+ (input) => input.type === import_transactions7.InputType.Coin
2000
2029
  );
2001
2030
  }
2002
2031
  /**
@@ -2006,7 +2035,7 @@ var BaseTransactionRequest = class {
2006
2035
  */
2007
2036
  getCoinOutputs() {
2008
2037
  return this.outputs.filter(
2009
- (output) => output.type === import_transactions6.OutputType.Coin
2038
+ (output) => output.type === import_transactions7.OutputType.Coin
2010
2039
  );
2011
2040
  }
2012
2041
  /**
@@ -2016,7 +2045,7 @@ var BaseTransactionRequest = class {
2016
2045
  */
2017
2046
  getChangeOutputs() {
2018
2047
  return this.outputs.filter(
2019
- (output) => output.type === import_transactions6.OutputType.Change
2048
+ (output) => output.type === import_transactions7.OutputType.Change
2020
2049
  );
2021
2050
  }
2022
2051
  /**
@@ -2028,9 +2057,9 @@ var BaseTransactionRequest = class {
2028
2057
  const ownerAddress = (0, import_address.addressify)(owner);
2029
2058
  const found = this.inputs.find((input) => {
2030
2059
  switch (input.type) {
2031
- case import_transactions6.InputType.Coin:
2060
+ case import_transactions7.InputType.Coin:
2032
2061
  return (0, import_utils9.hexlify)(input.owner) === ownerAddress.toB256();
2033
- case import_transactions6.InputType.Message:
2062
+ case import_transactions7.InputType.Message:
2034
2063
  return (0, import_utils9.hexlify)(input.recipient) === ownerAddress.toB256();
2035
2064
  default:
2036
2065
  return false;
@@ -2046,8 +2075,8 @@ var BaseTransactionRequest = class {
2046
2075
  * @param predicate - Predicate bytes.
2047
2076
  * @param predicateData - Predicate data bytes.
2048
2077
  */
2049
- addCoinInput(coin, predicate) {
2050
- const { assetId, owner, amount } = coin;
2078
+ addCoinInput(coin) {
2079
+ const { assetId, owner, amount, id, predicate } = coin;
2051
2080
  let witnessIndex;
2052
2081
  if (predicate) {
2053
2082
  witnessIndex = 0;
@@ -2058,14 +2087,14 @@ var BaseTransactionRequest = class {
2058
2087
  }
2059
2088
  }
2060
2089
  const input = {
2061
- ...coin,
2062
- type: import_transactions6.InputType.Coin,
2090
+ id,
2091
+ type: import_transactions7.InputType.Coin,
2063
2092
  owner: owner.toB256(),
2064
2093
  amount,
2065
2094
  assetId,
2066
2095
  txPointer: "0x00000000000000000000000000000000",
2067
2096
  witnessIndex,
2068
- predicate: predicate?.bytes
2097
+ predicate
2069
2098
  };
2070
2099
  this.pushInput(input);
2071
2100
  this.addChangeOutput(owner, assetId);
@@ -2078,8 +2107,8 @@ var BaseTransactionRequest = class {
2078
2107
  * @param predicate - Predicate bytes.
2079
2108
  * @param predicateData - Predicate data bytes.
2080
2109
  */
2081
- addMessageInput(message, predicate) {
2082
- const { recipient, sender, amount } = message;
2110
+ addMessageInput(message) {
2111
+ const { recipient, sender, amount, predicate, nonce } = message;
2083
2112
  const assetId = import_configs7.BaseAssetId;
2084
2113
  let witnessIndex;
2085
2114
  if (predicate) {
@@ -2091,13 +2120,13 @@ var BaseTransactionRequest = class {
2091
2120
  }
2092
2121
  }
2093
2122
  const input = {
2094
- ...message,
2095
- type: import_transactions6.InputType.Message,
2123
+ nonce,
2124
+ type: import_transactions7.InputType.Message,
2096
2125
  sender: sender.toB256(),
2097
2126
  recipient: recipient.toB256(),
2098
2127
  amount,
2099
2128
  witnessIndex,
2100
- predicate: predicate?.bytes
2129
+ predicate
2101
2130
  };
2102
2131
  this.pushInput(input);
2103
2132
  this.addChangeOutput(recipient, assetId);
@@ -2128,32 +2157,6 @@ var BaseTransactionRequest = class {
2128
2157
  resources.forEach((resource) => this.addResource(resource));
2129
2158
  return this;
2130
2159
  }
2131
- /**
2132
- * Adds multiple resources to the transaction by adding coin/message inputs and change
2133
- * outputs from the related assetIds.
2134
- *
2135
- * @param resources - The resources to add.
2136
- * @returns This transaction.
2137
- */
2138
- addPredicateResource(resource, predicate) {
2139
- if (isCoin(resource)) {
2140
- this.addCoinInput(resource, predicate);
2141
- } else {
2142
- this.addMessageInput(resource, predicate);
2143
- }
2144
- return this;
2145
- }
2146
- /**
2147
- * Adds multiple predicate coin/message inputs to the transaction and change outputs
2148
- * from the related assetIds.
2149
- *
2150
- * @param resources - The resources to add.
2151
- * @returns This transaction.
2152
- */
2153
- addPredicateResources(resources, predicate) {
2154
- resources.forEach((resource) => this.addPredicateResource(resource, predicate));
2155
- return this;
2156
- }
2157
2160
  /**
2158
2161
  * Adds a coin output to the transaction.
2159
2162
  *
@@ -2163,7 +2166,7 @@ var BaseTransactionRequest = class {
2163
2166
  */
2164
2167
  addCoinOutput(to, amount, assetId = import_configs7.BaseAssetId) {
2165
2168
  this.pushOutput({
2166
- type: import_transactions6.OutputType.Coin,
2169
+ type: import_transactions7.OutputType.Coin,
2167
2170
  to: (0, import_address.addressify)(to).toB256(),
2168
2171
  amount,
2169
2172
  assetId
@@ -2179,7 +2182,7 @@ var BaseTransactionRequest = class {
2179
2182
  addCoinOutputs(to, quantities) {
2180
2183
  quantities.map(coinQuantityfy).forEach((quantity) => {
2181
2184
  this.pushOutput({
2182
- type: import_transactions6.OutputType.Coin,
2185
+ type: import_transactions7.OutputType.Coin,
2183
2186
  to: (0, import_address.addressify)(to).toB256(),
2184
2187
  amount: quantity.amount,
2185
2188
  assetId: quantity.assetId
@@ -2199,7 +2202,7 @@ var BaseTransactionRequest = class {
2199
2202
  );
2200
2203
  if (!changeOutput) {
2201
2204
  this.pushOutput({
2202
- type: import_transactions6.OutputType.Change,
2205
+ type: import_transactions7.OutputType.Change,
2203
2206
  to: (0, import_address.addressify)(to).toB256(),
2204
2207
  assetId
2205
2208
  });
@@ -2302,16 +2305,20 @@ var BaseTransactionRequest = class {
2302
2305
  toJSON() {
2303
2306
  return normalizeJSON(this);
2304
2307
  }
2308
+ removeWitness(index) {
2309
+ this.witnesses.splice(index, 1);
2310
+ this.adjustWitnessIndexes(index);
2311
+ }
2305
2312
  updatePredicateInputs(inputs) {
2306
2313
  this.inputs.forEach((i) => {
2307
2314
  let correspondingInput;
2308
2315
  switch (i.type) {
2309
- case import_transactions6.InputType.Coin:
2310
- correspondingInput = inputs.find((x) => x.type === import_transactions6.InputType.Coin && x.owner === i.owner);
2316
+ case import_transactions7.InputType.Coin:
2317
+ correspondingInput = inputs.find((x) => x.type === import_transactions7.InputType.Coin && x.owner === i.owner);
2311
2318
  break;
2312
- case import_transactions6.InputType.Message:
2319
+ case import_transactions7.InputType.Message:
2313
2320
  correspondingInput = inputs.find(
2314
- (x) => x.type === import_transactions6.InputType.Message && x.sender === i.sender
2321
+ (x) => x.type === import_transactions7.InputType.Message && x.sender === i.sender
2315
2322
  );
2316
2323
  break;
2317
2324
  default:
@@ -2324,30 +2331,37 @@ var BaseTransactionRequest = class {
2324
2331
  }
2325
2332
  });
2326
2333
  }
2334
+ adjustWitnessIndexes(removedIndex) {
2335
+ this.inputs.filter(isRequestInputResource).forEach((input) => {
2336
+ if (input.witnessIndex > removedIndex) {
2337
+ input.witnessIndex -= 1;
2338
+ }
2339
+ });
2340
+ }
2327
2341
  };
2328
2342
 
2329
2343
  // src/providers/transaction-request/create-transaction-request.ts
2330
2344
  var import_configs9 = require("@fuel-ts/address/configs");
2331
2345
  var import_math9 = require("@fuel-ts/math");
2332
- var import_transactions8 = require("@fuel-ts/transactions");
2346
+ var import_transactions9 = require("@fuel-ts/transactions");
2333
2347
  var import_utils13 = require("@fuel-ts/utils");
2334
2348
 
2335
2349
  // src/providers/transaction-request/hash-transaction.ts
2336
2350
  var import_configs8 = require("@fuel-ts/address/configs");
2337
2351
  var import_hasher = require("@fuel-ts/hasher");
2338
2352
  var import_math8 = require("@fuel-ts/math");
2339
- var import_transactions7 = require("@fuel-ts/transactions");
2353
+ var import_transactions8 = require("@fuel-ts/transactions");
2340
2354
  var import_utils11 = require("@fuel-ts/utils");
2341
2355
  var import_ramda2 = require("ramda");
2342
2356
  function hashTransaction(transactionRequest, chainId) {
2343
2357
  const transaction = transactionRequest.toTransaction();
2344
- if (transaction.type === import_transactions7.TransactionType.Script) {
2358
+ if (transaction.type === import_transactions8.TransactionType.Script) {
2345
2359
  transaction.receiptsRoot = import_configs8.ZeroBytes32;
2346
2360
  }
2347
2361
  transaction.inputs = transaction.inputs.map((input) => {
2348
2362
  const inputClone = (0, import_ramda2.clone)(input);
2349
2363
  switch (inputClone.type) {
2350
- case import_transactions7.InputType.Coin: {
2364
+ case import_transactions8.InputType.Coin: {
2351
2365
  inputClone.txPointer = {
2352
2366
  blockHeight: 0,
2353
2367
  txIndex: 0
@@ -2355,11 +2369,11 @@ function hashTransaction(transactionRequest, chainId) {
2355
2369
  inputClone.predicateGasUsed = (0, import_math8.bn)(0);
2356
2370
  return inputClone;
2357
2371
  }
2358
- case import_transactions7.InputType.Message: {
2372
+ case import_transactions8.InputType.Message: {
2359
2373
  inputClone.predicateGasUsed = (0, import_math8.bn)(0);
2360
2374
  return inputClone;
2361
2375
  }
2362
- case import_transactions7.InputType.Contract: {
2376
+ case import_transactions8.InputType.Contract: {
2363
2377
  inputClone.txPointer = {
2364
2378
  blockHeight: 0,
2365
2379
  txIndex: 0
@@ -2377,16 +2391,16 @@ function hashTransaction(transactionRequest, chainId) {
2377
2391
  transaction.outputs = transaction.outputs.map((output) => {
2378
2392
  const outputClone = (0, import_ramda2.clone)(output);
2379
2393
  switch (outputClone.type) {
2380
- case import_transactions7.OutputType.Contract: {
2394
+ case import_transactions8.OutputType.Contract: {
2381
2395
  outputClone.balanceRoot = import_configs8.ZeroBytes32;
2382
2396
  outputClone.stateRoot = import_configs8.ZeroBytes32;
2383
2397
  return outputClone;
2384
2398
  }
2385
- case import_transactions7.OutputType.Change: {
2399
+ case import_transactions8.OutputType.Change: {
2386
2400
  outputClone.amount = (0, import_math8.bn)(0);
2387
2401
  return outputClone;
2388
2402
  }
2389
- case import_transactions7.OutputType.Variable: {
2403
+ case import_transactions8.OutputType.Variable: {
2390
2404
  outputClone.to = import_configs8.ZeroBytes32;
2391
2405
  outputClone.amount = (0, import_math8.bn)(0);
2392
2406
  outputClone.assetId = import_configs8.ZeroBytes32;
@@ -2399,7 +2413,7 @@ function hashTransaction(transactionRequest, chainId) {
2399
2413
  transaction.witnessesCount = 0;
2400
2414
  transaction.witnesses = [];
2401
2415
  const chainIdBytes = (0, import_hasher.uint64ToBytesBE)(chainId);
2402
- const concatenatedData = (0, import_utils11.concat)([chainIdBytes, new import_transactions7.TransactionCoder().encode(transaction)]);
2416
+ const concatenatedData = (0, import_utils11.concat)([chainIdBytes, new import_transactions8.TransactionCoder().encode(transaction)]);
2403
2417
  return (0, import_hasher.sha256)(concatenatedData);
2404
2418
  }
2405
2419
 
@@ -2435,7 +2449,7 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2435
2449
  return new this(obj);
2436
2450
  }
2437
2451
  /** Type of the transaction */
2438
- type = import_transactions8.TransactionType.Create;
2452
+ type = import_transactions9.TransactionType.Create;
2439
2453
  /** Witness index of contract bytecode to create */
2440
2454
  bytecodeWitnessIndex;
2441
2455
  /** Salt */
@@ -2468,7 +2482,7 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2468
2482
  const bytecodeWitnessIndex = this.bytecodeWitnessIndex;
2469
2483
  const storageSlots = this.storageSlots?.map(storageSlotify) ?? [];
2470
2484
  return {
2471
- type: import_transactions8.TransactionType.Create,
2485
+ type: import_transactions9.TransactionType.Create,
2472
2486
  ...baseTransaction,
2473
2487
  bytecodeLength: baseTransaction.witnesses[bytecodeWitnessIndex].dataLength / 4,
2474
2488
  bytecodeWitnessIndex,
@@ -2484,7 +2498,7 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2484
2498
  */
2485
2499
  getContractCreatedOutputs() {
2486
2500
  return this.outputs.filter(
2487
- (output) => output.type === import_transactions8.OutputType.ContractCreated
2501
+ (output) => output.type === import_transactions9.OutputType.ContractCreated
2488
2502
  );
2489
2503
  }
2490
2504
  /**
@@ -2505,7 +2519,7 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2505
2519
  */
2506
2520
  addContractCreatedOutput(contractId, stateRoot) {
2507
2521
  this.pushOutput({
2508
- type: import_transactions8.OutputType.ContractCreated,
2522
+ type: import_transactions9.OutputType.ContractCreated,
2509
2523
  contractId,
2510
2524
  stateRoot
2511
2525
  });
@@ -2525,7 +2539,7 @@ var import_abi_coder3 = require("@fuel-ts/abi-coder");
2525
2539
  var import_address2 = require("@fuel-ts/address");
2526
2540
  var import_configs10 = require("@fuel-ts/address/configs");
2527
2541
  var import_math10 = require("@fuel-ts/math");
2528
- var import_transactions9 = require("@fuel-ts/transactions");
2542
+ var import_transactions10 = require("@fuel-ts/transactions");
2529
2543
  var import_utils15 = require("@fuel-ts/utils");
2530
2544
 
2531
2545
  // src/providers/transaction-request/scripts.ts
@@ -2563,7 +2577,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2563
2577
  return new this(obj);
2564
2578
  }
2565
2579
  /** Type of the transaction */
2566
- type = import_transactions9.TransactionType.Script;
2580
+ type = import_transactions10.TransactionType.Script;
2567
2581
  /** Gas limit for transaction */
2568
2582
  gasLimit;
2569
2583
  /** Script to execute */
@@ -2592,7 +2606,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2592
2606
  const script = (0, import_utils15.arrayify)(this.script ?? "0x");
2593
2607
  const scriptData = (0, import_utils15.arrayify)(this.scriptData ?? "0x");
2594
2608
  return {
2595
- type: import_transactions9.TransactionType.Script,
2609
+ type: import_transactions10.TransactionType.Script,
2596
2610
  scriptGasLimit: this.gasLimit,
2597
2611
  ...super.getBaseTransaction(),
2598
2612
  scriptLength: script.length,
@@ -2609,7 +2623,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2609
2623
  */
2610
2624
  getContractInputs() {
2611
2625
  return this.inputs.filter(
2612
- (input) => input.type === import_transactions9.InputType.Contract
2626
+ (input) => input.type === import_transactions10.InputType.Contract
2613
2627
  );
2614
2628
  }
2615
2629
  /**
@@ -2619,7 +2633,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2619
2633
  */
2620
2634
  getContractOutputs() {
2621
2635
  return this.outputs.filter(
2622
- (output) => output.type === import_transactions9.OutputType.Contract
2636
+ (output) => output.type === import_transactions10.OutputType.Contract
2623
2637
  );
2624
2638
  }
2625
2639
  /**
@@ -2629,7 +2643,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2629
2643
  */
2630
2644
  getVariableOutputs() {
2631
2645
  return this.outputs.filter(
2632
- (output) => output.type === import_transactions9.OutputType.Variable
2646
+ (output) => output.type === import_transactions10.OutputType.Variable
2633
2647
  );
2634
2648
  }
2635
2649
  /**
@@ -2652,7 +2666,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2652
2666
  let outputsNumber = numberOfVariables;
2653
2667
  while (outputsNumber) {
2654
2668
  this.pushOutput({
2655
- type: import_transactions9.OutputType.Variable
2669
+ type: import_transactions10.OutputType.Variable
2656
2670
  });
2657
2671
  outputsNumber -= 1;
2658
2672
  }
@@ -2685,12 +2699,12 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2685
2699
  return this;
2686
2700
  }
2687
2701
  const inputIndex = super.pushInput({
2688
- type: import_transactions9.InputType.Contract,
2702
+ type: import_transactions10.InputType.Contract,
2689
2703
  contractId: contractAddress.toB256(),
2690
2704
  txPointer: "0x00000000000000000000000000000000"
2691
2705
  });
2692
2706
  this.pushOutput({
2693
- type: import_transactions9.OutputType.Contract,
2707
+ type: import_transactions10.OutputType.Contract,
2694
2708
  inputIndex
2695
2709
  });
2696
2710
  return this;
@@ -2727,17 +2741,17 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2727
2741
 
2728
2742
  // src/providers/transaction-request/utils.ts
2729
2743
  var import_errors9 = require("@fuel-ts/errors");
2730
- var import_transactions10 = require("@fuel-ts/transactions");
2744
+ var import_transactions11 = require("@fuel-ts/transactions");
2731
2745
  var transactionRequestify = (obj) => {
2732
2746
  if (obj instanceof ScriptTransactionRequest || obj instanceof CreateTransactionRequest) {
2733
2747
  return obj;
2734
2748
  }
2735
2749
  const { type } = obj;
2736
2750
  switch (obj.type) {
2737
- case import_transactions10.TransactionType.Script: {
2751
+ case import_transactions11.TransactionType.Script: {
2738
2752
  return ScriptTransactionRequest.from(obj);
2739
2753
  }
2740
- case import_transactions10.TransactionType.Create: {
2754
+ case import_transactions11.TransactionType.Create: {
2741
2755
  return CreateTransactionRequest.from(obj);
2742
2756
  }
2743
2757
  default: {
@@ -2749,7 +2763,7 @@ var transactionRequestify = (obj) => {
2749
2763
  // src/providers/transaction-response/transaction-response.ts
2750
2764
  var import_errors13 = require("@fuel-ts/errors");
2751
2765
  var import_math14 = require("@fuel-ts/math");
2752
- var import_transactions17 = require("@fuel-ts/transactions");
2766
+ var import_transactions18 = require("@fuel-ts/transactions");
2753
2767
  var import_utils21 = require("@fuel-ts/utils");
2754
2768
 
2755
2769
  // src/providers/transaction-summary/assemble-transaction-summary.ts
@@ -2757,7 +2771,7 @@ var import_utils19 = require("@fuel-ts/utils");
2757
2771
 
2758
2772
  // src/providers/transaction-summary/calculate-transaction-fee.ts
2759
2773
  var import_math11 = require("@fuel-ts/math");
2760
- var import_transactions11 = require("@fuel-ts/transactions");
2774
+ var import_transactions12 = require("@fuel-ts/transactions");
2761
2775
  var import_utils16 = require("@fuel-ts/utils");
2762
2776
  var calculateTransactionFee = (params) => {
2763
2777
  const {
@@ -2768,8 +2782,8 @@ var calculateTransactionFee = (params) => {
2768
2782
  const gasPerByte = (0, import_math11.bn)(feeParams.gasPerByte);
2769
2783
  const gasPriceFactor = (0, import_math11.bn)(feeParams.gasPriceFactor);
2770
2784
  const transactionBytes = (0, import_utils16.arrayify)(rawPayload);
2771
- const [transaction] = new import_transactions11.TransactionCoder().decode(transactionBytes, 0);
2772
- if (transaction.type === import_transactions11.TransactionType.Mint) {
2785
+ const [transaction] = new import_transactions12.TransactionCoder().decode(transactionBytes, 0);
2786
+ if (transaction.type === import_transactions12.TransactionType.Mint) {
2773
2787
  return {
2774
2788
  fee: (0, import_math11.bn)(0),
2775
2789
  minFee: (0, import_math11.bn)(0),
@@ -2780,7 +2794,7 @@ var calculateTransactionFee = (params) => {
2780
2794
  const { type, witnesses, inputs, policies } = transaction;
2781
2795
  let metadataGas = (0, import_math11.bn)(0);
2782
2796
  let gasLimit = (0, import_math11.bn)(0);
2783
- if (type === import_transactions11.TransactionType.Create) {
2797
+ if (type === import_transactions12.TransactionType.Create) {
2784
2798
  const { bytecodeWitnessIndex, storageSlots } = transaction;
2785
2799
  const contractBytesSize = (0, import_math11.bn)((0, import_utils16.arrayify)(witnesses[bytecodeWitnessIndex].data).length);
2786
2800
  metadataGas = calculateMetadataGasForTxCreate({
@@ -2806,8 +2820,8 @@ var calculateTransactionFee = (params) => {
2806
2820
  metadataGas,
2807
2821
  txBytesSize: transactionBytes.length
2808
2822
  });
2809
- const gasPrice = (0, import_math11.bn)(policies.find((policy) => policy.type === import_transactions11.PolicyType.GasPrice)?.data);
2810
- const witnessLimit = policies.find((policy) => policy.type === import_transactions11.PolicyType.WitnessLimit)?.data;
2823
+ const gasPrice = (0, import_math11.bn)(policies.find((policy) => policy.type === import_transactions12.PolicyType.GasPrice)?.data);
2824
+ const witnessLimit = policies.find((policy) => policy.type === import_transactions12.PolicyType.WitnessLimit)?.data;
2811
2825
  const witnessesLength = witnesses.reduce((acc, wit) => acc + wit.dataLength, 0);
2812
2826
  const maxGas = getMaxGas({
2813
2827
  gasPerByte,
@@ -2832,7 +2846,7 @@ var calculateTransactionFee = (params) => {
2832
2846
  var import_configs11 = require("@fuel-ts/address/configs");
2833
2847
  var import_errors11 = require("@fuel-ts/errors");
2834
2848
  var import_math13 = require("@fuel-ts/math");
2835
- var import_transactions14 = require("@fuel-ts/transactions");
2849
+ var import_transactions15 = require("@fuel-ts/transactions");
2836
2850
 
2837
2851
  // src/providers/transaction-summary/call.ts
2838
2852
  var import_abi_coder4 = require("@fuel-ts/abi-coder");
@@ -2880,7 +2894,7 @@ var getFunctionCall = ({ abi, receipt, rawPayload, maxInputs }) => {
2880
2894
 
2881
2895
  // src/providers/transaction-summary/input.ts
2882
2896
  var import_errors10 = require("@fuel-ts/errors");
2883
- var import_transactions12 = require("@fuel-ts/transactions");
2897
+ var import_transactions13 = require("@fuel-ts/transactions");
2884
2898
  function getInputsByTypes(inputs, types) {
2885
2899
  return inputs.filter((i) => types.includes(i.type));
2886
2900
  }
@@ -2888,16 +2902,16 @@ function getInputsByType(inputs, type) {
2888
2902
  return inputs.filter((i) => i.type === type);
2889
2903
  }
2890
2904
  function getInputsCoin(inputs) {
2891
- return getInputsByType(inputs, import_transactions12.InputType.Coin);
2905
+ return getInputsByType(inputs, import_transactions13.InputType.Coin);
2892
2906
  }
2893
2907
  function getInputsMessage(inputs) {
2894
- return getInputsByType(inputs, import_transactions12.InputType.Message);
2908
+ return getInputsByType(inputs, import_transactions13.InputType.Message);
2895
2909
  }
2896
2910
  function getInputsCoinAndMessage(inputs) {
2897
- return getInputsByTypes(inputs, [import_transactions12.InputType.Coin, import_transactions12.InputType.Message]);
2911
+ return getInputsByTypes(inputs, [import_transactions13.InputType.Coin, import_transactions13.InputType.Message]);
2898
2912
  }
2899
2913
  function getInputsContract(inputs) {
2900
- return getInputsByType(inputs, import_transactions12.InputType.Contract);
2914
+ return getInputsByType(inputs, import_transactions13.InputType.Contract);
2901
2915
  }
2902
2916
  function getInputFromAssetId(inputs, assetId) {
2903
2917
  const coinInputs = getInputsCoin(inputs);
@@ -2916,7 +2930,7 @@ function getInputContractFromIndex(inputs, inputIndex) {
2916
2930
  if (!contractInput) {
2917
2931
  return void 0;
2918
2932
  }
2919
- if (contractInput.type !== import_transactions12.InputType.Contract) {
2933
+ if (contractInput.type !== import_transactions13.InputType.Contract) {
2920
2934
  throw new import_errors10.FuelError(
2921
2935
  import_errors10.ErrorCode.INVALID_TRANSACTION_INPUT,
2922
2936
  `Contract input should be of type 'contract'.`
@@ -2925,34 +2939,34 @@ function getInputContractFromIndex(inputs, inputIndex) {
2925
2939
  return contractInput;
2926
2940
  }
2927
2941
  function getInputAccountAddress(input) {
2928
- if (input.type === import_transactions12.InputType.Coin) {
2942
+ if (input.type === import_transactions13.InputType.Coin) {
2929
2943
  return input.owner.toString();
2930
2944
  }
2931
- if (input.type === import_transactions12.InputType.Message) {
2945
+ if (input.type === import_transactions13.InputType.Message) {
2932
2946
  return input.recipient.toString();
2933
2947
  }
2934
2948
  return "";
2935
2949
  }
2936
2950
 
2937
2951
  // src/providers/transaction-summary/output.ts
2938
- var import_transactions13 = require("@fuel-ts/transactions");
2952
+ var import_transactions14 = require("@fuel-ts/transactions");
2939
2953
  function getOutputsByType(outputs, type) {
2940
2954
  return outputs.filter((o) => o.type === type);
2941
2955
  }
2942
2956
  function getOutputsContractCreated(outputs) {
2943
- return getOutputsByType(outputs, import_transactions13.OutputType.ContractCreated);
2957
+ return getOutputsByType(outputs, import_transactions14.OutputType.ContractCreated);
2944
2958
  }
2945
2959
  function getOutputsCoin(outputs) {
2946
- return getOutputsByType(outputs, import_transactions13.OutputType.Coin);
2960
+ return getOutputsByType(outputs, import_transactions14.OutputType.Coin);
2947
2961
  }
2948
2962
  function getOutputsChange(outputs) {
2949
- return getOutputsByType(outputs, import_transactions13.OutputType.Change);
2963
+ return getOutputsByType(outputs, import_transactions14.OutputType.Change);
2950
2964
  }
2951
2965
  function getOutputsContract(outputs) {
2952
- return getOutputsByType(outputs, import_transactions13.OutputType.Contract);
2966
+ return getOutputsByType(outputs, import_transactions14.OutputType.Contract);
2953
2967
  }
2954
2968
  function getOutputsVariable(outputs) {
2955
- return getOutputsByType(outputs, import_transactions13.OutputType.Variable);
2969
+ return getOutputsByType(outputs, import_transactions14.OutputType.Variable);
2956
2970
  }
2957
2971
 
2958
2972
  // src/providers/transaction-summary/types.ts
@@ -2999,11 +3013,11 @@ function getReceiptsByType(receipts, type) {
2999
3013
  }
3000
3014
  function getTransactionTypeName(transactionType) {
3001
3015
  switch (transactionType) {
3002
- case import_transactions14.TransactionType.Mint:
3016
+ case import_transactions15.TransactionType.Mint:
3003
3017
  return "Mint" /* Mint */;
3004
- case import_transactions14.TransactionType.Create:
3018
+ case import_transactions15.TransactionType.Create:
3005
3019
  return "Create" /* Create */;
3006
- case import_transactions14.TransactionType.Script:
3020
+ case import_transactions15.TransactionType.Script:
3007
3021
  return "Script" /* Script */;
3008
3022
  default:
3009
3023
  throw new import_errors11.FuelError(
@@ -3029,10 +3043,10 @@ function hasSameAssetId(a) {
3029
3043
  return (b) => a.assetId === b.assetId;
3030
3044
  }
3031
3045
  function getReceiptsCall(receipts) {
3032
- return getReceiptsByType(receipts, import_transactions14.ReceiptType.Call);
3046
+ return getReceiptsByType(receipts, import_transactions15.ReceiptType.Call);
3033
3047
  }
3034
3048
  function getReceiptsMessageOut(receipts) {
3035
- return getReceiptsByType(receipts, import_transactions14.ReceiptType.MessageOut);
3049
+ return getReceiptsByType(receipts, import_transactions15.ReceiptType.MessageOut);
3036
3050
  }
3037
3051
  var mergeAssets = (op1, op2) => {
3038
3052
  const assets1 = op1.assetsSent || [];
@@ -3071,7 +3085,7 @@ function addOperation(operations, toAdd) {
3071
3085
  return allOperations;
3072
3086
  }
3073
3087
  function getReceiptsTransferOut(receipts) {
3074
- return getReceiptsByType(receipts, import_transactions14.ReceiptType.TransferOut);
3088
+ return getReceiptsByType(receipts, import_transactions15.ReceiptType.TransferOut);
3075
3089
  }
3076
3090
  function getWithdrawFromFuelOperations({
3077
3091
  inputs,
@@ -3231,11 +3245,11 @@ function getTransferOperations({
3231
3245
  });
3232
3246
  const transferReceipts = getReceiptsByType(
3233
3247
  receipts,
3234
- import_transactions14.ReceiptType.Transfer
3248
+ import_transactions15.ReceiptType.Transfer
3235
3249
  );
3236
3250
  const transferOutReceipts = getReceiptsByType(
3237
3251
  receipts,
3238
- import_transactions14.ReceiptType.TransferOut
3252
+ import_transactions15.ReceiptType.TransferOut
3239
3253
  );
3240
3254
  [...transferReceipts, ...transferOutReceipts].forEach((receipt) => {
3241
3255
  const operation = extractTransferOperationFromReceipt(receipt, contractInputs, changeOutputs);
@@ -3320,17 +3334,17 @@ function getOperations({
3320
3334
  }
3321
3335
 
3322
3336
  // src/providers/transaction-summary/receipt.ts
3323
- var import_transactions15 = require("@fuel-ts/transactions");
3337
+ var import_transactions16 = require("@fuel-ts/transactions");
3324
3338
  var processGqlReceipt = (gqlReceipt) => {
3325
3339
  const receipt = assembleReceiptByType(gqlReceipt);
3326
3340
  switch (receipt.type) {
3327
- case import_transactions15.ReceiptType.ReturnData: {
3341
+ case import_transactions16.ReceiptType.ReturnData: {
3328
3342
  return {
3329
3343
  ...receipt,
3330
3344
  data: gqlReceipt.data || "0x"
3331
3345
  };
3332
3346
  }
3333
- case import_transactions15.ReceiptType.LogData: {
3347
+ case import_transactions16.ReceiptType.LogData: {
3334
3348
  return {
3335
3349
  ...receipt,
3336
3350
  data: gqlReceipt.data || "0x"
@@ -3343,7 +3357,7 @@ var processGqlReceipt = (gqlReceipt) => {
3343
3357
  var extractMintedAssetsFromReceipts = (receipts) => {
3344
3358
  const mintedAssets = [];
3345
3359
  receipts.forEach((receipt) => {
3346
- if (receipt.type === import_transactions15.ReceiptType.Mint) {
3360
+ if (receipt.type === import_transactions16.ReceiptType.Mint) {
3347
3361
  mintedAssets.push({
3348
3362
  subId: receipt.subId,
3349
3363
  contractId: receipt.contractId,
@@ -3357,7 +3371,7 @@ var extractMintedAssetsFromReceipts = (receipts) => {
3357
3371
  var extractBurnedAssetsFromReceipts = (receipts) => {
3358
3372
  const burnedAssets = [];
3359
3373
  receipts.forEach((receipt) => {
3360
- if (receipt.type === import_transactions15.ReceiptType.Burn) {
3374
+ if (receipt.type === import_transactions16.ReceiptType.Burn) {
3361
3375
  burnedAssets.push({
3362
3376
  subId: receipt.subId,
3363
3377
  contractId: receipt.contractId,
@@ -3496,12 +3510,12 @@ function assembleTransactionSummary(params) {
3496
3510
 
3497
3511
  // src/providers/transaction-response/getDecodedLogs.ts
3498
3512
  var import_abi_coder5 = require("@fuel-ts/abi-coder");
3499
- var import_transactions16 = require("@fuel-ts/transactions");
3513
+ var import_transactions17 = require("@fuel-ts/transactions");
3500
3514
  function getDecodedLogs(receipts, mainAbi, externalAbis = {}) {
3501
3515
  return receipts.reduce((logs, receipt) => {
3502
- if (receipt.type === import_transactions16.ReceiptType.LogData || receipt.type === import_transactions16.ReceiptType.Log) {
3516
+ if (receipt.type === import_transactions17.ReceiptType.LogData || receipt.type === import_transactions17.ReceiptType.Log) {
3503
3517
  const interfaceToUse = new import_abi_coder5.Interface(externalAbis[receipt.id] || mainAbi);
3504
- const data = receipt.type === import_transactions16.ReceiptType.Log ? new import_abi_coder5.BigNumberCoder("u64").encode(receipt.val0) : receipt.data;
3518
+ const data = receipt.type === import_transactions17.ReceiptType.Log ? new import_abi_coder5.BigNumberCoder("u64").encode(receipt.val0) : receipt.data;
3505
3519
  const [decodedLog] = interfaceToUse.decodeLog(data, receipt.val1.toNumber());
3506
3520
  logs.push(decodedLog);
3507
3521
  }
@@ -3574,7 +3588,7 @@ var TransactionResponse = class {
3574
3588
  * @returns The decoded transaction.
3575
3589
  */
3576
3590
  decodeTransaction(transactionWithReceipts) {
3577
- return new import_transactions17.TransactionCoder().decode(
3591
+ return new import_transactions18.TransactionCoder().decode(
3578
3592
  (0, import_utils21.arrayify)(transactionWithReceipts.rawPayload),
3579
3593
  0
3580
3594
  )?.[0];
@@ -3929,6 +3943,21 @@ var _Provider = class {
3929
3943
  } = await this.operations.getVersion();
3930
3944
  return nodeVersion;
3931
3945
  }
3946
+ /**
3947
+ * @hidden
3948
+ *
3949
+ * Returns the network configuration of the connected Fuel node.
3950
+ *
3951
+ * @returns A promise that resolves to the network configuration object
3952
+ */
3953
+ async getNetwork() {
3954
+ const {
3955
+ name,
3956
+ consensusParameters: { chainId }
3957
+ } = await this.getChain();
3958
+ const network = new import_ethers.Network(name, chainId.toNumber());
3959
+ return Promise.resolve(network);
3960
+ }
3932
3961
  /**
3933
3962
  * Returns the block number.
3934
3963
  *
@@ -3996,7 +4025,7 @@ var _Provider = class {
3996
4025
  }
3997
4026
  const encodedTransaction = (0, import_utils23.hexlify)(transactionRequest.toTransactionBytes());
3998
4027
  let abis;
3999
- if (transactionRequest.type === import_transactions18.TransactionType.Script) {
4028
+ if (transactionRequest.type === import_transactions19.TransactionType.Script) {
4000
4029
  abis = transactionRequest.abis;
4001
4030
  }
4002
4031
  if (awaitExecution) {
@@ -4092,7 +4121,7 @@ var _Provider = class {
4092
4121
  * @returns A promise.
4093
4122
  */
4094
4123
  async estimateTxDependencies(transactionRequest) {
4095
- if (transactionRequest.type === import_transactions18.TransactionType.Create) {
4124
+ if (transactionRequest.type === import_transactions19.TransactionType.Create) {
4096
4125
  return {
4097
4126
  receipts: [],
4098
4127
  outputVariables: 0,
@@ -4141,7 +4170,7 @@ var _Provider = class {
4141
4170
  transactionRequest.gasPrice = gasPrice;
4142
4171
  const minGas = transactionRequest.calculateMinGas(chainInfo);
4143
4172
  const minFee = calculatePriceWithFactor(minGas, gasPrice, gasPriceFactor).normalizeZeroToOne();
4144
- if (transactionRequest.type === import_transactions18.TransactionType.Script) {
4173
+ if (transactionRequest.type === import_transactions19.TransactionType.Script) {
4145
4174
  if (transactionRequest.gasLimit.eq(0)) {
4146
4175
  transactionRequest.gasLimit = minGas;
4147
4176
  transactionRequest.gasLimit = maxGasPerTx.sub(
@@ -4207,7 +4236,7 @@ var _Provider = class {
4207
4236
  const txRequestClone = (0, import_ramda3.clone)(transactionRequestify(transactionRequestLike));
4208
4237
  const { minGasPrice } = this.getGasConfig();
4209
4238
  const setGasPrice = (0, import_math15.max)(txRequestClone.gasPrice, minGasPrice);
4210
- const isScriptTransaction = txRequestClone.type === import_transactions18.TransactionType.Script;
4239
+ const isScriptTransaction = txRequestClone.type === import_transactions19.TransactionType.Script;
4211
4240
  const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
4212
4241
  const allQuantities = mergeQuantities(coinOutputsQuantities, forwardingQuantities);
4213
4242
  txRequestClone.fundWithFakeUtxos(allQuantities, resourcesOwner?.address);
@@ -4423,7 +4452,7 @@ var _Provider = class {
4423
4452
  time: block.header.time,
4424
4453
  transactionIds: block.transactions.map((tx) => tx.id),
4425
4454
  transactions: block.transactions.map(
4426
- (tx) => new import_transactions18.TransactionCoder().decode((0, import_utils23.arrayify)(tx.rawPayload), 0)?.[0]
4455
+ (tx) => new import_transactions19.TransactionCoder().decode((0, import_utils23.arrayify)(tx.rawPayload), 0)?.[0]
4427
4456
  )
4428
4457
  };
4429
4458
  }
@@ -4438,7 +4467,7 @@ var _Provider = class {
4438
4467
  if (!transaction) {
4439
4468
  return null;
4440
4469
  }
4441
- return new import_transactions18.TransactionCoder().decode(
4470
+ return new import_transactions19.TransactionCoder().decode(
4442
4471
  (0, import_utils23.arrayify)(transaction.rawPayload),
4443
4472
  0
4444
4473
  )?.[0];
@@ -4518,7 +4547,7 @@ var _Provider = class {
4518
4547
  });
4519
4548
  const messages = result.messages.edges.map((edge) => edge.node);
4520
4549
  return messages.map((message) => ({
4521
- messageId: import_transactions18.InputMessageCoder.getMessageId({
4550
+ messageId: import_transactions19.InputMessageCoder.getMessageId({
4522
4551
  sender: message.sender,
4523
4552
  recipient: message.recipient,
4524
4553
  nonce: message.nonce,
@@ -4529,7 +4558,7 @@ var _Provider = class {
4529
4558
  recipient: import_address3.Address.fromAddressOrString(message.recipient),
4530
4559
  nonce: message.nonce,
4531
4560
  amount: (0, import_math15.bn)(message.amount),
4532
- data: import_transactions18.InputMessageCoder.decodeData(message.data),
4561
+ data: import_transactions19.InputMessageCoder.decodeData(message.data),
4533
4562
  daHeight: (0, import_math15.bn)(message.daHeight)
4534
4563
  }));
4535
4564
  }
@@ -4657,7 +4686,7 @@ cacheInputs_fn = function(inputs) {
4657
4686
  return;
4658
4687
  }
4659
4688
  inputs.forEach((input) => {
4660
- if (input.type === import_transactions18.InputType.Coin) {
4689
+ if (input.type === import_transactions19.InputType.Coin) {
4661
4690
  this.cache?.set(input.id);
4662
4691
  }
4663
4692
  });
@@ -4668,7 +4697,7 @@ __publicField(Provider, "nodeInfoCache", {});
4668
4697
  // src/providers/transaction-summary/get-transaction-summary.ts
4669
4698
  var import_errors15 = require("@fuel-ts/errors");
4670
4699
  var import_math16 = require("@fuel-ts/math");
4671
- var import_transactions19 = require("@fuel-ts/transactions");
4700
+ var import_transactions20 = require("@fuel-ts/transactions");
4672
4701
  var import_utils26 = require("@fuel-ts/utils");
4673
4702
  async function getTransactionSummary(params) {
4674
4703
  const { id, provider, abiMap } = params;
@@ -4681,7 +4710,7 @@ async function getTransactionSummary(params) {
4681
4710
  `Transaction not found for given id: ${id}.`
4682
4711
  );
4683
4712
  }
4684
- const [decodedTransaction] = new import_transactions19.TransactionCoder().decode(
4713
+ const [decodedTransaction] = new import_transactions20.TransactionCoder().decode(
4685
4714
  (0, import_utils26.arrayify)(gqlTransaction.rawPayload),
4686
4715
  0
4687
4716
  );
@@ -4735,7 +4764,7 @@ async function getTransactionsSummaries(params) {
4735
4764
  const transactions = edges.map((edge) => {
4736
4765
  const { node: gqlTransaction } = edge;
4737
4766
  const { id, rawPayload, receipts: gqlReceipts, status } = gqlTransaction;
4738
- const [decodedTransaction] = new import_transactions19.TransactionCoder().decode((0, import_utils26.arrayify)(rawPayload), 0);
4767
+ const [decodedTransaction] = new import_transactions20.TransactionCoder().decode((0, import_utils26.arrayify)(rawPayload), 0);
4739
4768
  const receipts = gqlReceipts?.map(processGqlReceipt) || [];
4740
4769
  const transactionSummary = assembleTransactionSummary({
4741
4770
  id,
@@ -5655,17 +5684,18 @@ var BaseWalletUnlocked = class extends Account {
5655
5684
  __publicField(BaseWalletUnlocked, "defaultPath", "m/44'/1179993420'/0'/0/0");
5656
5685
 
5657
5686
  // src/hdwallet/hdwallet.ts
5658
- var import_crypto5 = require("@fuel-ts/crypto");
5659
5687
  var import_errors20 = require("@fuel-ts/errors");
5660
5688
  var import_hasher6 = require("@fuel-ts/hasher");
5661
5689
  var import_math20 = require("@fuel-ts/math");
5662
5690
  var import_utils35 = require("@fuel-ts/utils");
5691
+ var import_ethers3 = require("ethers");
5663
5692
 
5664
5693
  // src/mnemonic/mnemonic.ts
5665
5694
  var import_crypto4 = require("@fuel-ts/crypto");
5666
5695
  var import_errors19 = require("@fuel-ts/errors");
5667
5696
  var import_hasher5 = require("@fuel-ts/hasher");
5668
5697
  var import_utils33 = require("@fuel-ts/utils");
5698
+ var import_ethers2 = require("ethers");
5669
5699
 
5670
5700
  // src/wordlists/words/english.ts
5671
5701
  var english = [
@@ -7919,7 +7949,7 @@ var Mnemonic = class {
7919
7949
  assertMnemonic(getWords(phrase));
7920
7950
  const phraseBytes = toUtf8Bytes(getPhrase(phrase));
7921
7951
  const salt = toUtf8Bytes(`mnemonic${passphrase}`);
7922
- return (0, import_crypto4.pbkdf2)(phraseBytes, salt, 2048, 64, "sha512");
7952
+ return (0, import_ethers2.pbkdf2)(phraseBytes, salt, 2048, 64, "sha512");
7923
7953
  }
7924
7954
  /**
7925
7955
  * @param phrase - Mnemonic phrase composed by words from the provided wordlist
@@ -7981,7 +8011,7 @@ var Mnemonic = class {
7981
8011
  `Seed length should be between 16 and 64 bytes, but received ${seedArray.length} bytes.`
7982
8012
  );
7983
8013
  }
7984
- return (0, import_utils33.arrayify)((0, import_crypto4.computeHmac)("sha512", MasterSecret, seedArray));
8014
+ return (0, import_utils33.arrayify)((0, import_ethers2.computeHmac)("sha512", MasterSecret, seedArray));
7985
8015
  }
7986
8016
  /**
7987
8017
  * Get the extendKey as defined on BIP-32 from the provided seed
@@ -8006,8 +8036,8 @@ var Mnemonic = class {
8006
8036
  chainCode,
8007
8037
  (0, import_utils33.concat)(["0x00", privateKey])
8008
8038
  ]);
8009
- const checksum = (0, import_utils33.dataSlice)((0, import_hasher5.sha256)((0, import_hasher5.sha256)(extendedKey)), 0, 4);
8010
- return (0, import_utils33.encodeBase58)((0, import_utils33.concat)([extendedKey, checksum]));
8039
+ const checksum = (0, import_ethers2.dataSlice)((0, import_hasher5.sha256)((0, import_hasher5.sha256)(extendedKey)), 0, 4);
8040
+ return (0, import_ethers2.encodeBase58)((0, import_utils33.concat)([extendedKey, checksum]));
8011
8041
  }
8012
8042
  /**
8013
8043
  * Create a new mnemonic using a randomly generated number as entropy.
@@ -8035,7 +8065,7 @@ var MainnetPUB = (0, import_utils35.hexlify)("0x0488b21e");
8035
8065
  var TestnetPRV2 = (0, import_utils35.hexlify)("0x04358394");
8036
8066
  var TestnetPUB = (0, import_utils35.hexlify)("0x043587cf");
8037
8067
  function base58check(data) {
8038
- return (0, import_utils35.encodeBase58)((0, import_utils35.concat)([data, (0, import_utils35.dataSlice)((0, import_hasher6.sha256)((0, import_hasher6.sha256)(data)), 0, 4)]));
8068
+ return (0, import_ethers3.encodeBase58)((0, import_utils35.concat)([data, (0, import_ethers3.dataSlice)((0, import_hasher6.sha256)((0, import_hasher6.sha256)(data)), 0, 4)]));
8039
8069
  }
8040
8070
  function getExtendedKeyPrefix(isPublic = false, testnet = false) {
8041
8071
  if (isPublic) {
@@ -8091,7 +8121,7 @@ var HDWallet = class {
8091
8121
  this.publicKey = (0, import_utils35.hexlify)(config.publicKey);
8092
8122
  }
8093
8123
  this.parentFingerprint = config.parentFingerprint || this.parentFingerprint;
8094
- this.fingerprint = (0, import_utils35.dataSlice)((0, import_crypto5.ripemd160)((0, import_hasher6.sha256)(this.publicKey)), 0, 4);
8124
+ this.fingerprint = (0, import_ethers3.dataSlice)((0, import_ethers3.ripemd160)((0, import_hasher6.sha256)(this.publicKey)), 0, 4);
8095
8125
  this.depth = config.depth || this.depth;
8096
8126
  this.index = config.index || this.index;
8097
8127
  this.chainCode = config.chainCode;
@@ -8123,7 +8153,7 @@ var HDWallet = class {
8123
8153
  data.set((0, import_utils35.arrayify)(this.publicKey));
8124
8154
  }
8125
8155
  data.set((0, import_math20.toBytes)(index, 4), 33);
8126
- const bytes = (0, import_utils35.arrayify)((0, import_crypto5.computeHmac)("sha512", chainCode, data));
8156
+ const bytes = (0, import_utils35.arrayify)((0, import_ethers3.computeHmac)("sha512", chainCode, data));
8127
8157
  const IL = bytes.slice(0, 32);
8128
8158
  const IR = bytes.slice(32);
8129
8159
  if (privateKey) {
@@ -8194,8 +8224,7 @@ var HDWallet = class {
8194
8224
  });
8195
8225
  }
8196
8226
  static fromExtendedKey(extendedKey) {
8197
- let decoded = (0, import_math20.toHex)((0, import_utils35.decodeBase58)(extendedKey));
8198
- decoded = `${decoded.substring(0, 2)}0${decoded.substring(2)}`;
8227
+ const decoded = (0, import_ethers3.toBeHex)((0, import_ethers3.decodeBase58)(extendedKey));
8199
8228
  const bytes = (0, import_utils35.arrayify)(decoded);
8200
8229
  const validChecksum = base58check(bytes.slice(0, 78)) === extendedKey;
8201
8230
  if (bytes.length !== 82 || !isValidExtendedKey(bytes)) {
@@ -8395,7 +8424,7 @@ __publicField(Wallet, "fromEncryptedJson", WalletUnlocked.fromEncryptedJson);
8395
8424
 
8396
8425
  // src/wallet-manager/wallet-manager.ts
8397
8426
  var import_address9 = require("@fuel-ts/address");
8398
- var import_crypto6 = require("@fuel-ts/crypto");
8427
+ var import_crypto5 = require("@fuel-ts/crypto");
8399
8428
  var import_errors23 = require("@fuel-ts/errors");
8400
8429
  var import_events = require("events");
8401
8430
 
@@ -8723,7 +8752,7 @@ var _WalletManager = class extends import_events.EventEmitter {
8723
8752
  await assert(!__privateGet(this, _isLocked), ERROR_MESSAGES.wallet_not_unlocked);
8724
8753
  const data = await this.storage.getItem(this.STORAGE_KEY);
8725
8754
  if (data) {
8726
- const state = await (0, import_crypto6.decrypt)(__privateGet(this, _passphrase), JSON.parse(data));
8755
+ const state = await (0, import_crypto5.decrypt)(__privateGet(this, _passphrase), JSON.parse(data));
8727
8756
  __privateSet(this, _vaults, __privateMethod(this, _deserializeVaults, deserializeVaults_fn).call(this, state.vaults));
8728
8757
  }
8729
8758
  }
@@ -8732,7 +8761,7 @@ var _WalletManager = class extends import_events.EventEmitter {
8732
8761
  */
8733
8762
  async saveState() {
8734
8763
  await assert(!__privateGet(this, _isLocked), ERROR_MESSAGES.wallet_not_unlocked);
8735
- const encryptedData = await (0, import_crypto6.encrypt)(__privateGet(this, _passphrase), {
8764
+ const encryptedData = await (0, import_crypto5.encrypt)(__privateGet(this, _passphrase), {
8736
8765
  vaults: __privateMethod(this, _serializeVaults, serializeVaults_fn).call(this, __privateGet(this, _vaults))
8737
8766
  });
8738
8767
  await this.storage.setItem(this.STORAGE_KEY, JSON.stringify(encryptedData));
@@ -8812,7 +8841,7 @@ var import_abi_coder7 = require("@fuel-ts/abi-coder");
8812
8841
  var import_address10 = require("@fuel-ts/address");
8813
8842
  var import_configs13 = require("@fuel-ts/address/configs");
8814
8843
  var import_errors25 = require("@fuel-ts/errors");
8815
- var import_transactions20 = require("@fuel-ts/transactions");
8844
+ var import_transactions21 = require("@fuel-ts/transactions");
8816
8845
  var import_utils37 = require("@fuel-ts/utils");
8817
8846
 
8818
8847
  // src/predicate/utils/getPredicateRoot.ts
@@ -8871,10 +8900,15 @@ var Predicate = class extends Account {
8871
8900
  populateTransactionPredicateData(transactionRequestLike) {
8872
8901
  const request = transactionRequestify(transactionRequestLike);
8873
8902
  const { policies } = BaseTransactionRequest.getPolicyMeta(request);
8874
- request.inputs?.forEach((input) => {
8875
- if (input.type === import_transactions20.InputType.Coin && (0, import_utils37.hexlify)(input.owner) === this.address.toB256()) {
8903
+ const placeholderIndex = this.getIndexFromPlaceholderWitness(request);
8904
+ if (placeholderIndex !== -1) {
8905
+ request.removeWitness(placeholderIndex);
8906
+ }
8907
+ request.inputs.filter(isRequestInputResource).forEach((input) => {
8908
+ if (isRequestInputResourceFromOwner(input, this.address)) {
8876
8909
  input.predicate = this.bytes;
8877
8910
  input.predicateData = this.getPredicateData(policies.length);
8911
+ input.witnessIndex = 0;
8878
8912
  }
8879
8913
  });
8880
8914
  return request;
@@ -8912,12 +8946,26 @@ var Predicate = class extends Account {
8912
8946
  const transactionRequest = this.populateTransactionPredicateData(transactionRequestLike);
8913
8947
  return super.simulateTransaction(transactionRequest);
8914
8948
  }
8949
+ /**
8950
+ * Retrieves resources satisfying the spend query for the account.
8951
+ *
8952
+ * @param quantities - Coins to retrieve.
8953
+ * @param excludedIds - IDs of resources to be excluded from the query.
8954
+ * @returns A promise that resolves to an array of Resources.
8955
+ */
8956
+ async getResourcesToSpend(quantities, excludedIds) {
8957
+ const resources = await super.getResourcesToSpend(quantities, excludedIds);
8958
+ return resources.map((resource) => ({
8959
+ ...resource,
8960
+ predicate: (0, import_utils37.hexlify)(this.bytes)
8961
+ }));
8962
+ }
8915
8963
  getPredicateData(policiesLength) {
8916
8964
  if (!this.predicateData.length) {
8917
8965
  return new Uint8Array();
8918
8966
  }
8919
8967
  const mainFn = this.interface?.functions.main;
8920
- const paddedCode = new import_transactions20.ByteArrayCoder(this.bytes.length).encode(this.bytes);
8968
+ const paddedCode = new import_transactions21.ByteArrayCoder(this.bytes.length).encode(this.bytes);
8921
8969
  const VM_TX_MEMORY = (0, import_abi_coder7.calculateVmTxMemory)({
8922
8970
  maxInputs: this.provider.getChain().consensusParameters.maxInputs.toNumber()
8923
8971
  });
@@ -8991,6 +9039,28 @@ var Predicate = class extends Account {
8991
9039
  }
8992
9040
  return mutatedBytes;
8993
9041
  }
9042
+ /**
9043
+ * Returns the index of the witness placeholder that was added to this predicate.
9044
+ * If no witness placeholder was added, it returns -1.
9045
+ * @param request - The transaction request.
9046
+ * @returns The index of the witness placeholder, or -1 if there is no witness placeholder.
9047
+ */
9048
+ getIndexFromPlaceholderWitness(request) {
9049
+ const predicateInputs = request.inputs.filter(isRequestInputResource).filter((input) => isRequestInputResourceFromOwner(input, this.address));
9050
+ let index = -1;
9051
+ const hasEmptyPredicateInputs = predicateInputs.find((input) => !input.predicate);
9052
+ if (hasEmptyPredicateInputs) {
9053
+ index = hasEmptyPredicateInputs.witnessIndex;
9054
+ const allInputsAreEmpty = predicateInputs.every((input) => !input.predicate);
9055
+ if (!allInputsAreEmpty) {
9056
+ const wasFilledInputAddedFirst = !!predicateInputs[0]?.predicate;
9057
+ if (wasFilledInputAddedFirst) {
9058
+ index = -1;
9059
+ }
9060
+ }
9061
+ }
9062
+ return index;
9063
+ }
8994
9064
  };
8995
9065
 
8996
9066
  // src/connectors/fuel.ts
@@ -9714,6 +9784,7 @@ __publicField(Fuel, "defaultConfig", {});
9714
9784
  assets,
9715
9785
  buildBlockExplorerUrl,
9716
9786
  cacheFor,
9787
+ cacheResources,
9717
9788
  calculateMetadataGasForTxCreate,
9718
9789
  calculateMetadataGasForTxScript,
9719
9790
  calculatePriceWithFactor,
@@ -9760,6 +9831,7 @@ __publicField(Fuel, "defaultConfig", {});
9760
9831
  getReceiptsMessageOut,
9761
9832
  getReceiptsTransferOut,
9762
9833
  getReceiptsWithMissingData,
9834
+ getRequestInputResourceOwner,
9763
9835
  getTransactionStatusName,
9764
9836
  getTransactionSummary,
9765
9837
  getTransactionSummaryFromRequest,
@@ -9773,6 +9845,10 @@ __publicField(Fuel, "defaultConfig", {});
9773
9845
  isMessage,
9774
9846
  isRawCoin,
9775
9847
  isRawMessage,
9848
+ isRequestInputCoin,
9849
+ isRequestInputMessage,
9850
+ isRequestInputResource,
9851
+ isRequestInputResourceFromOwner,
9776
9852
  isType,
9777
9853
  isTypeCreate,
9778
9854
  isTypeMint,