@fuel-ts/account 0.0.0-rc-2037-20240411135757 → 0.0.0-rc-1976-20240411153008

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 (32) hide show
  1. package/dist/account.d.ts.map +1 -1
  2. package/dist/index.global.js +98 -65
  3. package/dist/index.global.js.map +1 -1
  4. package/dist/index.js +135 -104
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +96 -65
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/predicate/predicate.d.ts +1 -9
  9. package/dist/predicate/predicate.d.ts.map +1 -1
  10. package/dist/providers/coin-quantity.d.ts +2 -2
  11. package/dist/providers/coin-quantity.d.ts.map +1 -1
  12. package/dist/providers/coin.d.ts +1 -2
  13. package/dist/providers/coin.d.ts.map +1 -1
  14. package/dist/providers/message.d.ts +0 -1
  15. package/dist/providers/message.d.ts.map +1 -1
  16. package/dist/providers/provider.d.ts +7 -0
  17. package/dist/providers/provider.d.ts.map +1 -1
  18. package/dist/providers/transaction-request/create-transaction-request.d.ts +1 -1
  19. package/dist/providers/transaction-request/create-transaction-request.d.ts.map +1 -1
  20. package/dist/providers/transaction-request/script-transaction-request.d.ts +1 -1
  21. package/dist/providers/transaction-request/script-transaction-request.d.ts.map +1 -1
  22. package/dist/providers/transaction-request/transaction-request.d.ts +25 -4
  23. package/dist/providers/transaction-request/transaction-request.d.ts.map +1 -1
  24. package/dist/test-utils/launchNode.d.ts.map +1 -1
  25. package/dist/test-utils/seedTestWallet.d.ts.map +1 -1
  26. package/dist/test-utils.global.js +102 -51
  27. package/dist/test-utils.global.js.map +1 -1
  28. package/dist/test-utils.js +138 -89
  29. package/dist/test-utils.js.map +1 -1
  30. package/dist/test-utils.mjs +99 -50
  31. package/dist/test-utils.mjs.map +1 -1
  32. package/package.json +16 -16
@@ -24,14 +24,12 @@ 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";
28
27
  import { ErrorCode as ErrorCode15, FuelError as FuelError15 } from "@fuel-ts/errors";
29
28
  import { AbstractAccount } from "@fuel-ts/interfaces";
30
29
  import { bn as bn17 } from "@fuel-ts/math";
31
30
  import { arrayify as arrayify14 } from "@fuel-ts/utils";
32
31
 
33
32
  // src/providers/coin-quantity.ts
34
- import { BaseAssetId } from "@fuel-ts/address/configs";
35
33
  import { bn } from "@fuel-ts/math";
36
34
  import { hexlify } from "@fuel-ts/utils";
37
35
  var coinQuantityfy = (coinQuantityLike) => {
@@ -40,11 +38,11 @@ var coinQuantityfy = (coinQuantityLike) => {
40
38
  let max2;
41
39
  if (Array.isArray(coinQuantityLike)) {
42
40
  amount = coinQuantityLike[0];
43
- assetId = coinQuantityLike[1] ?? BaseAssetId;
44
- max2 = coinQuantityLike[2] ?? void 0;
41
+ assetId = coinQuantityLike[1];
42
+ max2 = coinQuantityLike[2];
45
43
  } else {
46
44
  amount = coinQuantityLike.amount;
47
- assetId = coinQuantityLike.assetId ?? BaseAssetId;
45
+ assetId = coinQuantityLike.assetId;
48
46
  max2 = coinQuantityLike.max ?? void 0;
49
47
  }
50
48
  const bnAmount = bn(amount);
@@ -1151,7 +1149,7 @@ var outputify = (value) => {
1151
1149
 
1152
1150
  // src/providers/transaction-request/transaction-request.ts
1153
1151
  import { Address, addressify } from "@fuel-ts/address";
1154
- import { BaseAssetId as BaseAssetId2, ZeroBytes32 as ZeroBytes324 } from "@fuel-ts/address/configs";
1152
+ import { ZeroBytes32 as ZeroBytes324 } from "@fuel-ts/address/configs";
1155
1153
  import { bn as bn7 } from "@fuel-ts/math";
1156
1154
  import {
1157
1155
  PolicyType,
@@ -1611,6 +1609,8 @@ var BaseTransactionRequest = class {
1611
1609
  outputs = [];
1612
1610
  /** List of witnesses */
1613
1611
  witnesses = [];
1612
+ /** Base asset ID - should be fetched from the chain */
1613
+ baseAssetId;
1614
1614
  /**
1615
1615
  * Constructor for initializing a base transaction request.
1616
1616
  *
@@ -1623,8 +1623,9 @@ var BaseTransactionRequest = class {
1623
1623
  witnessLimit,
1624
1624
  inputs,
1625
1625
  outputs,
1626
- witnesses
1627
- } = {}) {
1626
+ witnesses,
1627
+ baseAssetId
1628
+ }) {
1628
1629
  this.gasPrice = bn7(gasPrice);
1629
1630
  this.maturity = maturity ?? 0;
1630
1631
  this.witnessLimit = witnessLimit ? bn7(witnessLimit) : void 0;
@@ -1632,6 +1633,7 @@ var BaseTransactionRequest = class {
1632
1633
  this.inputs = inputs ?? [];
1633
1634
  this.outputs = outputs ?? [];
1634
1635
  this.witnesses = witnesses ?? [];
1636
+ this.baseAssetId = baseAssetId;
1635
1637
  }
1636
1638
  static getPolicyMeta(req) {
1637
1639
  let policyTypes = 0;
@@ -1825,8 +1827,8 @@ var BaseTransactionRequest = class {
1825
1827
  * @param predicate - Predicate bytes.
1826
1828
  * @param predicateData - Predicate data bytes.
1827
1829
  */
1828
- addCoinInput(coin) {
1829
- const { assetId, owner, amount, id, predicate } = coin;
1830
+ addCoinInput(coin, predicate) {
1831
+ const { assetId, owner, amount } = coin;
1830
1832
  let witnessIndex;
1831
1833
  if (predicate) {
1832
1834
  witnessIndex = 0;
@@ -1837,14 +1839,14 @@ var BaseTransactionRequest = class {
1837
1839
  }
1838
1840
  }
1839
1841
  const input = {
1840
- id,
1842
+ ...coin,
1841
1843
  type: InputType2.Coin,
1842
1844
  owner: owner.toB256(),
1843
1845
  amount,
1844
1846
  assetId,
1845
1847
  txPointer: "0x00000000000000000000000000000000",
1846
1848
  witnessIndex,
1847
- predicate
1849
+ predicate: predicate?.bytes
1848
1850
  };
1849
1851
  this.pushInput(input);
1850
1852
  this.addChangeOutput(owner, assetId);
@@ -1855,11 +1857,9 @@ var BaseTransactionRequest = class {
1855
1857
  *
1856
1858
  * @param message - Message resource.
1857
1859
  * @param predicate - Predicate bytes.
1858
- * @param predicateData - Predicate data bytes.
1859
1860
  */
1860
- addMessageInput(message) {
1861
- const { recipient, sender, amount, predicate, nonce } = message;
1862
- const assetId = BaseAssetId2;
1861
+ addMessageInput(message, predicate) {
1862
+ const { recipient, sender, amount } = message;
1863
1863
  let witnessIndex;
1864
1864
  if (predicate) {
1865
1865
  witnessIndex = 0;
@@ -1870,16 +1870,16 @@ var BaseTransactionRequest = class {
1870
1870
  }
1871
1871
  }
1872
1872
  const input = {
1873
- nonce,
1873
+ ...message,
1874
1874
  type: InputType2.Message,
1875
1875
  sender: sender.toB256(),
1876
1876
  recipient: recipient.toB256(),
1877
1877
  amount,
1878
1878
  witnessIndex,
1879
- predicate
1879
+ predicate: predicate?.bytes
1880
1880
  };
1881
1881
  this.pushInput(input);
1882
- this.addChangeOutput(recipient, assetId);
1882
+ this.addChangeOutput(recipient, this.baseAssetId);
1883
1883
  }
1884
1884
  /**
1885
1885
  * Adds a single resource to the transaction by adding a coin/message input and a
@@ -1907,6 +1907,32 @@ var BaseTransactionRequest = class {
1907
1907
  resources.forEach((resource) => this.addResource(resource));
1908
1908
  return this;
1909
1909
  }
1910
+ /**
1911
+ * Adds multiple resources to the transaction by adding coin/message inputs and change
1912
+ * outputs from the related assetIds.
1913
+ *
1914
+ * @param resources - The resources to add.
1915
+ * @returns This transaction.
1916
+ */
1917
+ addPredicateResource(resource, predicate) {
1918
+ if (isCoin(resource)) {
1919
+ this.addCoinInput(resource, predicate);
1920
+ } else {
1921
+ this.addMessageInput(resource, predicate);
1922
+ }
1923
+ return this;
1924
+ }
1925
+ /**
1926
+ * Adds multiple predicate coin/message inputs to the transaction and change outputs
1927
+ * from the related assetIds.
1928
+ *
1929
+ * @param resources - The resources to add.
1930
+ * @returns This transaction.
1931
+ */
1932
+ addPredicateResources(resources, predicate) {
1933
+ resources.forEach((resource) => this.addPredicateResource(resource, predicate));
1934
+ return this;
1935
+ }
1910
1936
  /**
1911
1937
  * Adds a coin output to the transaction.
1912
1938
  *
@@ -1914,12 +1940,12 @@ var BaseTransactionRequest = class {
1914
1940
  * @param amount - Amount of coin.
1915
1941
  * @param assetId - Asset ID of coin.
1916
1942
  */
1917
- addCoinOutput(to, amount, assetId = BaseAssetId2) {
1943
+ addCoinOutput(to, amount, assetId) {
1918
1944
  this.pushOutput({
1919
1945
  type: OutputType2.Coin,
1920
1946
  to: addressify(to).toB256(),
1921
1947
  amount,
1922
- assetId
1948
+ assetId: assetId ?? this.baseAssetId
1923
1949
  });
1924
1950
  return this;
1925
1951
  }
@@ -1946,7 +1972,7 @@ var BaseTransactionRequest = class {
1946
1972
  * @param to - Address of the owner.
1947
1973
  * @param assetId - Asset ID of coin.
1948
1974
  */
1949
- addChangeOutput(to, assetId = BaseAssetId2) {
1975
+ addChangeOutput(to, assetId) {
1950
1976
  const changeOutput = this.getChangeOutputs().find(
1951
1977
  (output) => hexlify7(output.assetId) === assetId
1952
1978
  );
@@ -1954,7 +1980,7 @@ var BaseTransactionRequest = class {
1954
1980
  this.pushOutput({
1955
1981
  type: OutputType2.Change,
1956
1982
  to: addressify(to).toB256(),
1957
- assetId
1983
+ assetId: assetId ?? this.baseAssetId
1958
1984
  });
1959
1985
  }
1960
1986
  }
@@ -2036,7 +2062,7 @@ var BaseTransactionRequest = class {
2036
2062
  ]);
2037
2063
  }
2038
2064
  };
2039
- updateAssetInput(BaseAssetId2, bn7(1e11));
2065
+ updateAssetInput(this.baseAssetId, bn7(1e11));
2040
2066
  quantities.forEach((q) => updateAssetInput(q.assetId, q.amount));
2041
2067
  }
2042
2068
  /**
@@ -2206,12 +2232,7 @@ var CreateTransactionRequest = class extends BaseTransactionRequest {
2206
2232
  *
2207
2233
  * @param createTransactionRequestLike - The initial values for the instance
2208
2234
  */
2209
- constructor({
2210
- bytecodeWitnessIndex,
2211
- salt,
2212
- storageSlots,
2213
- ...rest
2214
- } = {}) {
2235
+ constructor({ bytecodeWitnessIndex, salt, storageSlots, ...rest }) {
2215
2236
  super(rest);
2216
2237
  this.bytecodeWitnessIndex = bytecodeWitnessIndex ?? 0;
2217
2238
  this.salt = hexlify9(salt ?? ZeroBytes326);
@@ -2335,7 +2356,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
2335
2356
  *
2336
2357
  * @param scriptTransactionRequestLike - The initial values for the instance.
2337
2358
  */
2338
- constructor({ script, scriptData, gasLimit, ...rest } = {}) {
2359
+ constructor({ script, scriptData, gasLimit, ...rest }) {
2339
2360
  super(rest);
2340
2361
  this.gasLimit = bn10(gasLimit);
2341
2362
  this.script = arrayify8(script ?? returnZeroScript.bytes);
@@ -3463,6 +3484,7 @@ var processGqlChain = (chain) => {
3463
3484
  gasPerByte: bn15(feeParams.gasPerByte),
3464
3485
  maxMessageDataLength: bn15(predicateParams.maxMessageDataLength),
3465
3486
  chainId: bn15(consensusParameters.chainId),
3487
+ baseAssetId: consensusParameters.baseAssetId,
3466
3488
  gasCosts
3467
3489
  },
3468
3490
  gasCosts,
@@ -3705,6 +3727,17 @@ var _Provider = class {
3705
3727
  } = this.getChain();
3706
3728
  return chainId.toNumber();
3707
3729
  }
3730
+ /**
3731
+ * Returns the base asset ID
3732
+ *
3733
+ * @returns A promise that resolves to the base asset ID
3734
+ */
3735
+ getBaseAssetId() {
3736
+ const {
3737
+ consensusParameters: { baseAssetId }
3738
+ } = this.getChain();
3739
+ return baseAssetId;
3740
+ }
3708
3741
  /**
3709
3742
  * Submits a transaction to the chain to be executed.
3710
3743
  *
@@ -4575,8 +4608,9 @@ var Account = class extends AbstractAccount {
4575
4608
  * @param assetId - The asset ID to check the balance for.
4576
4609
  * @returns A promise that resolves to the balance amount.
4577
4610
  */
4578
- async getBalance(assetId = BaseAssetId3) {
4579
- const amount = await this.provider.getBalance(this.address, assetId);
4611
+ async getBalance(assetId) {
4612
+ const assetIdToFetch = assetId ?? this.provider.getBaseAssetId();
4613
+ const amount = await this.provider.getBalance(this.address, assetIdToFetch);
4580
4614
  return amount;
4581
4615
  }
4582
4616
  /**
@@ -4614,9 +4648,10 @@ var Account = class extends AbstractAccount {
4614
4648
  * @returns A promise that resolves when the resources are added to the transaction.
4615
4649
  */
4616
4650
  async fund(request, coinQuantities, fee) {
4651
+ const baseAssetId = this.provider.getBaseAssetId();
4617
4652
  const updatedQuantities = addAmountToAsset({
4618
4653
  amount: bn17(fee),
4619
- assetId: BaseAssetId3,
4654
+ assetId: baseAssetId,
4620
4655
  coinQuantities
4621
4656
  });
4622
4657
  const quantitiesDict = {};
@@ -4640,8 +4675,8 @@ var Account = class extends AbstractAccount {
4640
4675
  quantitiesDict[assetId].owned = quantitiesDict[assetId].owned.add(amount);
4641
4676
  cachedUtxos.push(input.id);
4642
4677
  }
4643
- } else if (input.recipient === owner && input.amount && quantitiesDict[BaseAssetId3]) {
4644
- quantitiesDict[BaseAssetId3].owned = quantitiesDict[BaseAssetId3].owned.add(input.amount);
4678
+ } else if (input.recipient === owner && input.amount && quantitiesDict[baseAssetId]) {
4679
+ quantitiesDict[baseAssetId].owned = quantitiesDict[baseAssetId].owned.add(input.amount);
4645
4680
  cachedMessages.push(input.nonce);
4646
4681
  }
4647
4682
  }
@@ -4673,11 +4708,13 @@ var Account = class extends AbstractAccount {
4673
4708
  * @param txParams - The transaction parameters (gasLimit, gasPrice, maturity).
4674
4709
  * @returns A promise that resolves to the prepared transaction request.
4675
4710
  */
4676
- async createTransfer(destination, amount, assetId = BaseAssetId3, txParams = {}) {
4711
+ async createTransfer(destination, amount, assetId, txParams = {}) {
4677
4712
  const { minGasPrice } = this.provider.getGasConfig();
4678
- const params = { gasPrice: minGasPrice, ...txParams };
4713
+ const baseAssetId = this.provider.getBaseAssetId();
4714
+ const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
4715
+ const params = { gasPrice: minGasPrice, baseAssetId, ...txParams };
4679
4716
  const request = new ScriptTransactionRequest(params);
4680
- request.addCoinOutput(Address3.fromAddressOrString(destination), amount, assetId);
4717
+ request.addCoinOutput(Address3.fromAddressOrString(destination), amount, assetIdToTransfer);
4681
4718
  const { maxFee, requiredQuantities, gasUsed, estimatedInputs } = await this.provider.getTransactionCost(request, [], {
4682
4719
  estimateTxDependencies: true,
4683
4720
  resourcesOwner: this
@@ -4703,14 +4740,15 @@ var Account = class extends AbstractAccount {
4703
4740
  * @param txParams - The transaction parameters (gasLimit, gasPrice, maturity).
4704
4741
  * @returns A promise that resolves to the transaction response.
4705
4742
  */
4706
- async transfer(destination, amount, assetId = BaseAssetId3, txParams = {}) {
4743
+ async transfer(destination, amount, assetId, txParams = {}) {
4707
4744
  if (bn17(amount).lte(0)) {
4708
4745
  throw new FuelError15(
4709
4746
  ErrorCode15.INVALID_TRANSFER_AMOUNT,
4710
4747
  "Transfer amount must be a positive number."
4711
4748
  );
4712
4749
  }
4713
- const request = await this.createTransfer(destination, amount, assetId, txParams);
4750
+ const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
4751
+ const request = await this.createTransfer(destination, amount, assetIdToTransfer, txParams);
4714
4752
  return this.sendTransaction(request, { estimateTxDependencies: false });
4715
4753
  }
4716
4754
  /**
@@ -4722,7 +4760,7 @@ var Account = class extends AbstractAccount {
4722
4760
  * @param txParams - The optional transaction parameters.
4723
4761
  * @returns A promise that resolves to the transaction response.
4724
4762
  */
4725
- async transferToContract(contractId, amount, assetId = BaseAssetId3, txParams = {}) {
4763
+ async transferToContract(contractId, amount, assetId, txParams = {}) {
4726
4764
  if (bn17(amount).lte(0)) {
4727
4765
  throw new FuelError15(
4728
4766
  ErrorCode15.INVALID_TRANSFER_AMOUNT,
@@ -4731,11 +4769,13 @@ var Account = class extends AbstractAccount {
4731
4769
  }
4732
4770
  const contractAddress = Address3.fromAddressOrString(contractId);
4733
4771
  const { minGasPrice } = this.provider.getGasConfig();
4734
- const params = { gasPrice: minGasPrice, ...txParams };
4772
+ const baseAssetId = this.provider.getBaseAssetId();
4773
+ const assetIdToTransfer = assetId ?? this.provider.getBaseAssetId();
4774
+ const params = { gasPrice: minGasPrice, baseAssetId, ...txParams };
4735
4775
  const { script, scriptData } = await assembleTransferToContractScript({
4736
4776
  hexlifiedContractId: contractAddress.toB256(),
4737
4777
  amountToTransfer: bn17(amount),
4738
- assetId
4778
+ assetId: assetIdToTransfer
4739
4779
  });
4740
4780
  const request = new ScriptTransactionRequest({
4741
4781
  ...params,
@@ -4745,7 +4785,7 @@ var Account = class extends AbstractAccount {
4745
4785
  request.addContractInputAndOutput(contractAddress);
4746
4786
  const { maxFee, requiredQuantities, gasUsed } = await this.provider.getTransactionCost(
4747
4787
  request,
4748
- [{ amount: bn17(amount), assetId: String(assetId) }]
4788
+ [{ amount: bn17(amount), assetId: String(assetIdToTransfer) }]
4749
4789
  );
4750
4790
  request.gasLimit = bn17(params.gasLimit ?? gasUsed);
4751
4791
  this.validateGas({
@@ -4767,6 +4807,7 @@ var Account = class extends AbstractAccount {
4767
4807
  */
4768
4808
  async withdrawToBaseLayer(recipient, amount, txParams = {}) {
4769
4809
  const { minGasPrice } = this.provider.getGasConfig();
4810
+ const baseAssetId = this.provider.getBaseAssetId();
4770
4811
  const recipientAddress = Address3.fromAddressOrString(recipient);
4771
4812
  const recipientDataArray = arrayify14(
4772
4813
  "0x".concat(recipientAddress.toHexString().substring(2).padStart(64, "0"))
@@ -4779,9 +4820,14 @@ var Account = class extends AbstractAccount {
4779
4820
  ...recipientDataArray,
4780
4821
  ...amountDataArray
4781
4822
  ]);
4782
- const params = { script, gasPrice: minGasPrice, ...txParams };
4823
+ const params = {
4824
+ script,
4825
+ gasPrice: minGasPrice,
4826
+ baseAssetId,
4827
+ ...txParams
4828
+ };
4783
4829
  const request = new ScriptTransactionRequest(params);
4784
- const forwardingQuantities = [{ amount: bn17(amount), assetId: BaseAssetId3 }];
4830
+ const forwardingQuantities = [{ amount: bn17(amount), assetId: baseAssetId }];
4785
4831
  const { requiredQuantities, maxFee, gasUsed } = await this.provider.getTransactionCost(
4786
4832
  request,
4787
4833
  forwardingQuantities
@@ -7934,7 +7980,9 @@ var seedTestWallet = async (wallet, quantities) => {
7934
7980
  );
7935
7981
  const resources = await genesisWallet.getResourcesToSpend(quantities);
7936
7982
  const { minGasPrice } = genesisWallet.provider.getGasConfig();
7983
+ const baseAssetId = genesisWallet.provider.getBaseAssetId();
7937
7984
  const request = new ScriptTransactionRequest({
7985
+ baseAssetId,
7938
7986
  gasLimit: 1e4,
7939
7987
  gasPrice: minGasPrice
7940
7988
  });
@@ -7953,7 +8001,7 @@ var generateTestWallet = async (provider, quantities) => {
7953
8001
  };
7954
8002
 
7955
8003
  // src/test-utils/launchNode.ts
7956
- import { BaseAssetId as BaseAssetId4 } from "@fuel-ts/address/configs";
8004
+ import { ZeroBytes32 as ZeroBytes329 } from "@fuel-ts/address/configs";
7957
8005
  import { toHex as toHex2 } from "@fuel-ts/math";
7958
8006
  import { defaultChainConfig, defaultConsensusKey, hexlify as hexlify18 } from "@fuel-ts/utils";
7959
8007
  import { findBinPath } from "@fuel-ts/utils/cli-utils";
@@ -8053,7 +8101,7 @@ var launchNode = async ({
8053
8101
  {
8054
8102
  owner: signer.address.toHexString(),
8055
8103
  amount: toHex2(1e9),
8056
- asset_id: BaseAssetId4
8104
+ asset_id: defaultChainConfig?.consensus_parameters?.base_asset_id ?? ZeroBytes329
8057
8105
  }
8058
8106
  ]
8059
8107
  }
@@ -8119,9 +8167,10 @@ var launchNode = async ({
8119
8167
  })
8120
8168
  );
8121
8169
  var generateWallets = async (count, provider) => {
8170
+ const baseAssetId = provider.getBaseAssetId();
8122
8171
  const wallets = [];
8123
8172
  for (let i = 0; i < count; i += 1) {
8124
- const wallet = await generateTestWallet(provider, [[1e3, BaseAssetId4]]);
8173
+ const wallet = await generateTestWallet(provider, [[1e3, baseAssetId]]);
8125
8174
  wallets.push(wallet);
8126
8175
  }
8127
8176
  return wallets;