@fuel-ts/account 0.92.1 → 0.93.0
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.
- package/dist/account.d.ts +13 -2
- package/dist/account.d.ts.map +1 -1
- package/dist/connectors/fuel-connector.d.ts +24 -1
- package/dist/connectors/fuel-connector.d.ts.map +1 -1
- package/dist/connectors/fuel.d.ts +14 -1
- package/dist/connectors/fuel.d.ts.map +1 -1
- package/dist/connectors/types/connector-metadata.d.ts.map +1 -1
- package/dist/index.global.js +128 -166
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +74 -88
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +77 -92
- package/dist/index.mjs.map +1 -1
- package/dist/providers/fuel-graphql-subscriber.d.ts +1 -0
- package/dist/providers/fuel-graphql-subscriber.d.ts.map +1 -1
- package/dist/providers/provider.d.ts +9 -43
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/transaction-request/utils.d.ts.map +1 -1
- package/dist/test-utils/launchNode.d.ts +3 -1
- package/dist/test-utils/launchNode.d.ts.map +1 -1
- package/dist/test-utils/seedTestWallet.d.ts.map +1 -1
- package/dist/test-utils.global.js +160 -193
- package/dist/test-utils.global.js.map +1 -1
- package/dist/test-utils.js +82 -93
- package/dist/test-utils.js.map +1 -1
- package/dist/test-utils.mjs +86 -97
- package/dist/test-utils.mjs.map +1 -1
- package/dist/wallet/base-wallet-unlocked.d.ts +1 -2
- package/dist/wallet/base-wallet-unlocked.d.ts.map +1 -1
- package/package.json +17 -17
package/dist/index.mjs
CHANGED
@@ -34,7 +34,7 @@ import { randomBytes as randomBytes2 } from "@fuel-ts/crypto";
|
|
34
34
|
import { ErrorCode as ErrorCode15, FuelError as FuelError15 } from "@fuel-ts/errors";
|
35
35
|
import { AbstractAccount } from "@fuel-ts/interfaces";
|
36
36
|
import { bn as bn19 } from "@fuel-ts/math";
|
37
|
-
import { arrayify as arrayify14, hexlify as hexlify13, isDefined as
|
37
|
+
import { arrayify as arrayify14, hexlify as hexlify13, isDefined as isDefined3 } from "@fuel-ts/utils";
|
38
38
|
import { clone as clone4 } from "ramda";
|
39
39
|
|
40
40
|
// src/providers/coin-quantity.ts
|
@@ -82,7 +82,7 @@ import {
|
|
82
82
|
InputMessageCoder,
|
83
83
|
TransactionCoder as TransactionCoder5
|
84
84
|
} from "@fuel-ts/transactions";
|
85
|
-
import { arrayify as arrayify11, hexlify as hexlify12, DateTime as DateTime2 } from "@fuel-ts/utils";
|
85
|
+
import { arrayify as arrayify11, hexlify as hexlify12, DateTime as DateTime2, isDefined as isDefined2 } from "@fuel-ts/utils";
|
86
86
|
import { checkFuelCoreVersionCompatibility } from "@fuel-ts/versions";
|
87
87
|
import { equalBytes } from "@noble/curves/abstract/utils";
|
88
88
|
import { GraphQLClient } from "graphql-request";
|
@@ -2834,7 +2834,10 @@ var transactionRequestify = (obj) => {
|
|
2834
2834
|
return CreateTransactionRequest.from(obj);
|
2835
2835
|
}
|
2836
2836
|
default: {
|
2837
|
-
throw new FuelError8(
|
2837
|
+
throw new FuelError8(
|
2838
|
+
ErrorCode8.UNSUPPORTED_TRANSACTION_TYPE,
|
2839
|
+
`Unsupported transaction type: ${type}.`
|
2840
|
+
);
|
2838
2841
|
}
|
2839
2842
|
}
|
2840
2843
|
};
|
@@ -3090,8 +3093,8 @@ function getTransactionTypeName(transactionType) {
|
|
3090
3093
|
return "Script" /* Script */;
|
3091
3094
|
default:
|
3092
3095
|
throw new FuelError10(
|
3093
|
-
ErrorCode10.
|
3094
|
-
`
|
3096
|
+
ErrorCode10.UNSUPPORTED_TRANSACTION_TYPE,
|
3097
|
+
`Unsupported transaction type: ${transactionType}.`
|
3095
3098
|
);
|
3096
3099
|
}
|
3097
3100
|
}
|
@@ -3845,24 +3848,11 @@ function autoRetryFetch(fetchFn, options, retryAttemptNum = 0) {
|
|
3845
3848
|
};
|
3846
3849
|
}
|
3847
3850
|
|
3848
|
-
// src/providers/utils/merge-quantities.ts
|
3849
|
-
var mergeQuantities = (...coinQuantities) => {
|
3850
|
-
const resultMap = {};
|
3851
|
-
function addToMap({ amount, assetId }) {
|
3852
|
-
if (resultMap[assetId]) {
|
3853
|
-
resultMap[assetId] = resultMap[assetId].add(amount);
|
3854
|
-
} else {
|
3855
|
-
resultMap[assetId] = amount;
|
3856
|
-
}
|
3857
|
-
}
|
3858
|
-
coinQuantities.forEach((arr) => arr.forEach(addToMap));
|
3859
|
-
return Object.entries(resultMap).map(([assetId, amount]) => ({ assetId, amount }));
|
3860
|
-
};
|
3861
|
-
|
3862
3851
|
// src/providers/provider.ts
|
3863
3852
|
var MAX_RETRIES = 10;
|
3864
3853
|
var RESOURCES_PAGE_SIZE_LIMIT = 512;
|
3865
3854
|
var BLOCKS_PAGE_SIZE_LIMIT = 5;
|
3855
|
+
var DEFAULT_UTXOS_CACHE_TTL = 2e4;
|
3866
3856
|
var processGqlChain = (chain) => {
|
3867
3857
|
const { name, daHeight, consensusParameters, latestBlock } = chain;
|
3868
3858
|
const {
|
@@ -3952,7 +3942,16 @@ var _Provider = class {
|
|
3952
3942
|
this.options = { ...this.options, ...options };
|
3953
3943
|
this.url = url;
|
3954
3944
|
this.operations = this.createOperations();
|
3955
|
-
|
3945
|
+
const { cacheUtxo } = this.options;
|
3946
|
+
if (isDefined2(cacheUtxo)) {
|
3947
|
+
if (cacheUtxo !== -1) {
|
3948
|
+
this.cache = new MemoryCache(cacheUtxo);
|
3949
|
+
} else {
|
3950
|
+
this.cache = void 0;
|
3951
|
+
}
|
3952
|
+
} else {
|
3953
|
+
this.cache = new MemoryCache(DEFAULT_UTXOS_CACHE_TTL);
|
3954
|
+
}
|
3956
3955
|
}
|
3957
3956
|
/** @hidden */
|
3958
3957
|
static clearChainAndNodeCaches() {
|
@@ -4194,9 +4193,8 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
4194
4193
|
* @returns A promise that resolves to the transaction response object.
|
4195
4194
|
*/
|
4196
4195
|
// #region Provider-sendTransaction
|
4197
|
-
async sendTransaction(transactionRequestLike, { estimateTxDependencies = true
|
4196
|
+
async sendTransaction(transactionRequestLike, { estimateTxDependencies = true } = {}) {
|
4198
4197
|
const transactionRequest = transactionRequestify(transactionRequestLike);
|
4199
|
-
__privateMethod(this, _cacheInputs, cacheInputs_fn).call(this, transactionRequest.inputs);
|
4200
4198
|
if (estimateTxDependencies) {
|
4201
4199
|
await this.estimateTxDependencies(transactionRequest);
|
4202
4200
|
}
|
@@ -4205,27 +4203,10 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
4205
4203
|
if (transactionRequest.type === TransactionType8.Script) {
|
4206
4204
|
abis = transactionRequest.abis;
|
4207
4205
|
}
|
4208
|
-
if (awaitExecution) {
|
4209
|
-
const subscription = this.operations.submitAndAwait({ encodedTransaction });
|
4210
|
-
for await (const { submitAndAwait } of subscription) {
|
4211
|
-
if (submitAndAwait.type === "SqueezedOutStatus") {
|
4212
|
-
throw new FuelError13(
|
4213
|
-
ErrorCode13.TRANSACTION_SQUEEZED_OUT,
|
4214
|
-
`Transaction Squeezed Out with reason: ${submitAndAwait.reason}`
|
4215
|
-
);
|
4216
|
-
}
|
4217
|
-
if (submitAndAwait.type !== "SubmittedStatus") {
|
4218
|
-
break;
|
4219
|
-
}
|
4220
|
-
}
|
4221
|
-
const transactionId2 = transactionRequest.getTransactionId(this.getChainId());
|
4222
|
-
const response = new TransactionResponse(transactionId2, this, abis);
|
4223
|
-
await response.fetch();
|
4224
|
-
return response;
|
4225
|
-
}
|
4226
4206
|
const {
|
4227
4207
|
submit: { id: transactionId }
|
4228
4208
|
} = await this.operations.submit({ encodedTransaction });
|
4209
|
+
__privateMethod(this, _cacheInputs, cacheInputs_fn).call(this, transactionRequest.inputs);
|
4229
4210
|
return new TransactionResponse(transactionId, this, abis);
|
4230
4211
|
}
|
4231
4212
|
/**
|
@@ -4504,6 +4485,8 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
4504
4485
|
return { receipts: callResult[0].receipts };
|
4505
4486
|
}
|
4506
4487
|
/**
|
4488
|
+
* @hidden
|
4489
|
+
*
|
4507
4490
|
* Returns a transaction cost to enable user
|
4508
4491
|
* to set gasLimit and also reserve balance amounts
|
4509
4492
|
* on the transaction.
|
@@ -4513,20 +4496,13 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
4513
4496
|
*
|
4514
4497
|
* @returns A promise that resolves to the transaction cost object.
|
4515
4498
|
*/
|
4516
|
-
async getTransactionCost(transactionRequestLike, {
|
4499
|
+
async getTransactionCost(transactionRequestLike, { signatureCallback } = {}) {
|
4517
4500
|
const txRequestClone = clone3(transactionRequestify(transactionRequestLike));
|
4518
4501
|
const isScriptTransaction = txRequestClone.type === TransactionType8.Script;
|
4519
|
-
const baseAssetId = this.getBaseAssetId();
|
4520
4502
|
const updateMaxFee = txRequestClone.maxFee.eq(0);
|
4521
|
-
const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
|
4522
|
-
const allQuantities = mergeQuantities(coinOutputsQuantities, quantitiesToContract);
|
4523
|
-
txRequestClone.fundWithFakeUtxos(allQuantities, baseAssetId, resourcesOwner?.address);
|
4524
4503
|
if (isScriptTransaction) {
|
4525
4504
|
txRequestClone.gasLimit = bn17(0);
|
4526
4505
|
}
|
4527
|
-
if (resourcesOwner && "populateTransactionPredicateData" in resourcesOwner) {
|
4528
|
-
resourcesOwner.populateTransactionPredicateData(txRequestClone);
|
4529
|
-
}
|
4530
4506
|
const signedRequest = clone3(txRequestClone);
|
4531
4507
|
let addedSignatures = 0;
|
4532
4508
|
if (signatureCallback && isScriptTransaction) {
|
@@ -4562,7 +4538,6 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
4562
4538
|
}));
|
4563
4539
|
}
|
4564
4540
|
return {
|
4565
|
-
requiredQuantities: allQuantities,
|
4566
4541
|
receipts,
|
4567
4542
|
gasUsed,
|
4568
4543
|
gasPrice,
|
@@ -4578,34 +4553,6 @@ Supported fuel-core version: ${supportedVersion}.`
|
|
4578
4553
|
updateMaxFee
|
4579
4554
|
};
|
4580
4555
|
}
|
4581
|
-
/**
|
4582
|
-
* Get the required quantities and associated resources for a transaction.
|
4583
|
-
*
|
4584
|
-
* @param owner - address to add resources from.
|
4585
|
-
* @param transactionRequestLike - transaction request to populate resources for.
|
4586
|
-
* @param quantitiesToContract - quantities for the contract (optional).
|
4587
|
-
*
|
4588
|
-
* @returns a promise resolving to the required quantities for the transaction.
|
4589
|
-
*/
|
4590
|
-
async getResourcesForTransaction(owner, transactionRequestLike, quantitiesToContract = []) {
|
4591
|
-
const ownerAddress = Address2.fromAddressOrString(owner);
|
4592
|
-
const transactionRequest = transactionRequestify(clone3(transactionRequestLike));
|
4593
|
-
const transactionCost = await this.getTransactionCost(transactionRequest, {
|
4594
|
-
quantitiesToContract
|
4595
|
-
});
|
4596
|
-
transactionRequest.addResources(
|
4597
|
-
await this.getResourcesToSpend(ownerAddress, transactionCost.requiredQuantities)
|
4598
|
-
);
|
4599
|
-
const { requiredQuantities, ...txCost } = await this.getTransactionCost(transactionRequest, {
|
4600
|
-
quantitiesToContract
|
4601
|
-
});
|
4602
|
-
const resources = await this.getResourcesToSpend(ownerAddress, requiredQuantities);
|
4603
|
-
return {
|
4604
|
-
resources,
|
4605
|
-
requiredQuantities,
|
4606
|
-
...txCost
|
4607
|
-
};
|
4608
|
-
}
|
4609
4556
|
/**
|
4610
4557
|
* Returns coins for the given owner.
|
4611
4558
|
*
|
@@ -5409,6 +5356,20 @@ var rawAssets = [
|
|
5409
5356
|
];
|
5410
5357
|
var assets = resolveIconPaths(rawAssets, fuelAssetsBaseUrl);
|
5411
5358
|
|
5359
|
+
// src/providers/utils/merge-quantities.ts
|
5360
|
+
var mergeQuantities = (...coinQuantities) => {
|
5361
|
+
const resultMap = {};
|
5362
|
+
function addToMap({ amount, assetId }) {
|
5363
|
+
if (resultMap[assetId]) {
|
5364
|
+
resultMap[assetId] = resultMap[assetId].add(amount);
|
5365
|
+
} else {
|
5366
|
+
resultMap[assetId] = amount;
|
5367
|
+
}
|
5368
|
+
}
|
5369
|
+
coinQuantities.forEach((arr) => arr.forEach(addToMap));
|
5370
|
+
return Object.entries(resultMap).map(([assetId, amount]) => ({ assetId, amount }));
|
5371
|
+
};
|
5372
|
+
|
5412
5373
|
// src/utils/formatTransferToContractScriptData.ts
|
5413
5374
|
import { BigNumberCoder as BigNumberCoder2 } from "@fuel-ts/abi-coder";
|
5414
5375
|
import { BN as BN2 } from "@fuel-ts/math";
|
@@ -5749,9 +5710,8 @@ var Account = class extends AbstractAccount {
|
|
5749
5710
|
scriptData
|
5750
5711
|
});
|
5751
5712
|
request.addContractInputAndOutput(contractAddress);
|
5752
|
-
const txCost = await this.
|
5753
|
-
|
5754
|
-
quantitiesToContract: [{ amount: bn19(amount), assetId: String(assetIdToTransfer) }]
|
5713
|
+
const txCost = await this.getTransactionCost(request, {
|
5714
|
+
quantities: [{ amount: bn19(amount), assetId: String(assetIdToTransfer) }]
|
5755
5715
|
});
|
5756
5716
|
request = this.validateGasLimitAndMaxFee({
|
5757
5717
|
transactionRequest: request,
|
@@ -5786,8 +5746,8 @@ var Account = class extends AbstractAccount {
|
|
5786
5746
|
const params = { script, ...txParams };
|
5787
5747
|
const baseAssetId = this.provider.getBaseAssetId();
|
5788
5748
|
let request = new ScriptTransactionRequest(params);
|
5789
|
-
const
|
5790
|
-
const txCost = await this.
|
5749
|
+
const quantities = [{ amount: bn19(amount), assetId: baseAssetId }];
|
5750
|
+
const txCost = await this.getTransactionCost(request, { quantities });
|
5791
5751
|
request = this.validateGasLimitAndMaxFee({
|
5792
5752
|
transactionRequest: request,
|
5793
5753
|
gasUsed: txCost.gasUsed,
|
@@ -5797,6 +5757,34 @@ var Account = class extends AbstractAccount {
|
|
5797
5757
|
await this.fund(request, txCost);
|
5798
5758
|
return this.sendTransaction(request);
|
5799
5759
|
}
|
5760
|
+
/**
|
5761
|
+
* Returns a transaction cost to enable user
|
5762
|
+
* to set gasLimit and also reserve balance amounts
|
5763
|
+
* on the transaction.
|
5764
|
+
*
|
5765
|
+
* @param transactionRequestLike - The transaction request object.
|
5766
|
+
* @param transactionCostParams - The transaction cost parameters (optional).
|
5767
|
+
*
|
5768
|
+
* @returns A promise that resolves to the transaction cost object.
|
5769
|
+
*/
|
5770
|
+
async getTransactionCost(transactionRequestLike, { signatureCallback, quantities = [] } = {}) {
|
5771
|
+
const txRequestClone = clone4(transactionRequestify(transactionRequestLike));
|
5772
|
+
const baseAssetId = this.provider.getBaseAssetId();
|
5773
|
+
const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
|
5774
|
+
const requiredQuantities = mergeQuantities(coinOutputsQuantities, quantities);
|
5775
|
+
const transactionFeeForDryRun = [{ assetId: baseAssetId, amount: bn19("100000000000000000") }];
|
5776
|
+
const resources = this.generateFakeResources(
|
5777
|
+
mergeQuantities(requiredQuantities, transactionFeeForDryRun)
|
5778
|
+
);
|
5779
|
+
txRequestClone.addResources(resources);
|
5780
|
+
const txCost = await this.provider.getTransactionCost(txRequestClone, {
|
5781
|
+
signatureCallback
|
5782
|
+
});
|
5783
|
+
return {
|
5784
|
+
...txCost,
|
5785
|
+
requiredQuantities
|
5786
|
+
};
|
5787
|
+
}
|
5800
5788
|
/**
|
5801
5789
|
* Sign a message from the account via the connector.
|
5802
5790
|
*
|
@@ -5833,7 +5821,7 @@ var Account = class extends AbstractAccount {
|
|
5833
5821
|
* @param sendTransactionParams - The provider send transaction parameters (optional).
|
5834
5822
|
* @returns A promise that resolves to the transaction response.
|
5835
5823
|
*/
|
5836
|
-
async sendTransaction(transactionRequestLike, { estimateTxDependencies = true
|
5824
|
+
async sendTransaction(transactionRequestLike, { estimateTxDependencies = true } = {}) {
|
5837
5825
|
if (this._connector) {
|
5838
5826
|
return this.provider.getTransactionResponse(
|
5839
5827
|
await this._connector.sendTransaction(this.address.toString(), transactionRequestLike)
|
@@ -5844,7 +5832,6 @@ var Account = class extends AbstractAccount {
|
|
5844
5832
|
await this.provider.estimateTxDependencies(transactionRequest);
|
5845
5833
|
}
|
5846
5834
|
return this.provider.sendTransaction(transactionRequest, {
|
5847
|
-
awaitExecution,
|
5848
5835
|
estimateTxDependencies: false
|
5849
5836
|
});
|
5850
5837
|
}
|
@@ -5889,9 +5876,7 @@ var Account = class extends AbstractAccount {
|
|
5889
5876
|
/** @hidden * */
|
5890
5877
|
async estimateAndFundTransaction(transactionRequest, txParams) {
|
5891
5878
|
let request = transactionRequest;
|
5892
|
-
const txCost = await this.
|
5893
|
-
resourcesOwner: this
|
5894
|
-
});
|
5879
|
+
const txCost = await this.getTransactionCost(request);
|
5895
5880
|
request = this.validateGasLimitAndMaxFee({
|
5896
5881
|
transactionRequest: request,
|
5897
5882
|
gasUsed: txCost.gasUsed,
|
@@ -5909,7 +5894,7 @@ var Account = class extends AbstractAccount {
|
|
5909
5894
|
txParams: { gasLimit: setGasLimit, maxFee: setMaxFee }
|
5910
5895
|
}) {
|
5911
5896
|
const request = transactionRequestify(transactionRequest);
|
5912
|
-
if (!
|
5897
|
+
if (!isDefined3(setGasLimit)) {
|
5913
5898
|
request.gasLimit = gasUsed;
|
5914
5899
|
} else if (gasUsed.gt(setGasLimit)) {
|
5915
5900
|
throw new FuelError15(
|
@@ -5917,7 +5902,7 @@ var Account = class extends AbstractAccount {
|
|
5917
5902
|
`Gas limit '${setGasLimit}' is lower than the required: '${gasUsed}'.`
|
5918
5903
|
);
|
5919
5904
|
}
|
5920
|
-
if (!
|
5905
|
+
if (!isDefined3(setMaxFee)) {
|
5921
5906
|
request.maxFee = maxFee;
|
5922
5907
|
} else if (maxFee.gt(setMaxFee)) {
|
5923
5908
|
throw new FuelError15(
|
@@ -6214,17 +6199,16 @@ var BaseWalletUnlocked = class extends Account {
|
|
6214
6199
|
*
|
6215
6200
|
* @param transactionRequestLike - The transaction request to send.
|
6216
6201
|
* @param estimateTxDependencies - Whether to estimate the transaction dependencies.
|
6217
|
-
* @param awaitExecution - Whether to wait for the transaction to be executed.
|
6218
6202
|
* @returns A promise that resolves to the TransactionResponse object.
|
6219
6203
|
*/
|
6220
|
-
async sendTransaction(transactionRequestLike, { estimateTxDependencies = false
|
6204
|
+
async sendTransaction(transactionRequestLike, { estimateTxDependencies = false } = {}) {
|
6221
6205
|
const transactionRequest = transactionRequestify(transactionRequestLike);
|
6222
6206
|
if (estimateTxDependencies) {
|
6223
6207
|
await this.provider.estimateTxDependencies(transactionRequest);
|
6224
6208
|
}
|
6225
6209
|
return this.provider.sendTransaction(
|
6226
6210
|
await this.populateTransactionWitnessesSignature(transactionRequest),
|
6227
|
-
{
|
6211
|
+
{ estimateTxDependencies: false }
|
6228
6212
|
);
|
6229
6213
|
}
|
6230
6214
|
/**
|
@@ -10287,6 +10271,7 @@ export {
|
|
10287
10271
|
ChainName,
|
10288
10272
|
ChangeOutputCollisionError,
|
10289
10273
|
CreateTransactionRequest,
|
10274
|
+
DEFAULT_UTXOS_CACHE_TTL,
|
10290
10275
|
Fuel,
|
10291
10276
|
FuelConnector,
|
10292
10277
|
FuelConnectorEventType,
|