@fuel-ts/account 0.100.0 → 0.100.2
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/index.global.js +3790 -1886
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +895 -720
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +851 -677
- package/dist/index.mjs.map +1 -1
- package/dist/providers/__generated__/operations.d.ts +17 -1
- package/dist/providers/__generated__/operations.d.ts.map +1 -1
- package/dist/providers/provider.d.ts +15 -13
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/providers/transaction-response/getDecodedLogs.d.ts.map +1 -1
- package/dist/providers/utils/serialization.d.ts.map +1 -1
- package/dist/test-utils.global.js +3226 -1721
- package/dist/test-utils.global.js.map +1 -1
- package/dist/test-utils.js +659 -501
- package/dist/test-utils.js.map +1 -1
- package/dist/test-utils.mjs +625 -467
- package/dist/test-utils.mjs.map +1 -1
- package/package.json +14 -14
package/dist/index.mjs
CHANGED
@@ -1,31 +1,5 @@
|
|
1
1
|
var __defProp = Object.defineProperty;
|
2
|
-
var
|
3
|
-
var __publicField = (obj, key, value) => {
|
4
|
-
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
5
|
-
return value;
|
6
|
-
};
|
7
|
-
var __accessCheck = (obj, member, msg) => {
|
8
|
-
if (!member.has(obj))
|
9
|
-
throw TypeError("Cannot " + msg);
|
10
|
-
};
|
11
|
-
var __privateGet = (obj, member, getter) => {
|
12
|
-
__accessCheck(obj, member, "read from private field");
|
13
|
-
return getter ? getter.call(obj) : member.get(obj);
|
14
|
-
};
|
15
|
-
var __privateAdd = (obj, member, value) => {
|
16
|
-
if (member.has(obj))
|
17
|
-
throw TypeError("Cannot add the same private member more than once");
|
18
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
19
|
-
};
|
20
|
-
var __privateSet = (obj, member, value, setter) => {
|
21
|
-
__accessCheck(obj, member, "write to private field");
|
22
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
23
|
-
return value;
|
24
|
-
};
|
25
|
-
var __privateMethod = (obj, member, method) => {
|
26
|
-
__accessCheck(obj, member, "access private method");
|
27
|
-
return method;
|
28
|
-
};
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
29
3
|
|
30
4
|
// src/providers/chains.ts
|
31
5
|
var CHAIN_IDS = {
|
@@ -42,7 +16,7 @@ var CHAIN_IDS = {
|
|
42
16
|
};
|
43
17
|
|
44
18
|
// src/assets/utils/network.ts
|
45
|
-
var getDefaultChainId = (networkType) => {
|
19
|
+
var getDefaultChainId = /* @__PURE__ */ __name((networkType) => {
|
46
20
|
if (networkType === "ethereum") {
|
47
21
|
return CHAIN_IDS.eth.sepolia;
|
48
22
|
}
|
@@ -50,8 +24,8 @@ var getDefaultChainId = (networkType) => {
|
|
50
24
|
return CHAIN_IDS.fuel.testnet;
|
51
25
|
}
|
52
26
|
return void 0;
|
53
|
-
};
|
54
|
-
var getAssetNetwork = ({
|
27
|
+
}, "getDefaultChainId");
|
28
|
+
var getAssetNetwork = /* @__PURE__ */ __name(({
|
55
29
|
asset,
|
56
30
|
chainId,
|
57
31
|
networkType
|
@@ -60,8 +34,8 @@ var getAssetNetwork = ({
|
|
60
34
|
(item) => item.chainId === chainId && item.type === networkType
|
61
35
|
);
|
62
36
|
return network;
|
63
|
-
};
|
64
|
-
var getAssetWithNetwork = ({
|
37
|
+
}, "getAssetNetwork");
|
38
|
+
var getAssetWithNetwork = /* @__PURE__ */ __name(({
|
65
39
|
asset,
|
66
40
|
chainId,
|
67
41
|
networkType
|
@@ -83,22 +57,22 @@ var getAssetWithNetwork = ({
|
|
83
57
|
...assetRest,
|
84
58
|
...assetNetwork
|
85
59
|
};
|
86
|
-
};
|
87
|
-
var getAssetEth = (asset, chainId) => getAssetWithNetwork({
|
60
|
+
}, "getAssetWithNetwork");
|
61
|
+
var getAssetEth = /* @__PURE__ */ __name((asset, chainId) => getAssetWithNetwork({
|
88
62
|
asset,
|
89
63
|
networkType: "ethereum",
|
90
64
|
chainId
|
91
|
-
});
|
92
|
-
var getAssetFuel = (asset, chainId) => getAssetWithNetwork({
|
65
|
+
}), "getAssetEth");
|
66
|
+
var getAssetFuel = /* @__PURE__ */ __name((asset, chainId) => getAssetWithNetwork({
|
93
67
|
asset,
|
94
68
|
networkType: "fuel",
|
95
69
|
chainId
|
96
|
-
});
|
70
|
+
}), "getAssetFuel");
|
97
71
|
|
98
72
|
// src/assets/utils/url.ts
|
99
73
|
var DELIMITER_PATH = "/";
|
100
74
|
var trimRegex = /^\/|\/$/g;
|
101
|
-
var trimPath = (path = "") => path.replace(trimRegex, "");
|
75
|
+
var trimPath = /* @__PURE__ */ __name((path = "") => path.replace(trimRegex, ""), "trimPath");
|
102
76
|
function urlJoin(baseUrl, ...paths) {
|
103
77
|
const hasBaseUrl = baseUrl !== null && baseUrl !== void 0;
|
104
78
|
const rootPath = baseUrl?.[0] === "/" && baseUrl.length > 1;
|
@@ -108,6 +82,7 @@ function urlJoin(baseUrl, ...paths) {
|
|
108
82
|
}
|
109
83
|
return allPaths.join(DELIMITER_PATH);
|
110
84
|
}
|
85
|
+
__name(urlJoin, "urlJoin");
|
111
86
|
|
112
87
|
// src/assets/utils/resolveIconPaths.ts
|
113
88
|
function resolveIconPaths(assets2, basePath = "./") {
|
@@ -116,6 +91,7 @@ function resolveIconPaths(assets2, basePath = "./") {
|
|
116
91
|
icon: urlJoin(basePath, asset.icon)
|
117
92
|
}));
|
118
93
|
}
|
94
|
+
__name(resolveIconPaths, "resolveIconPaths");
|
119
95
|
|
120
96
|
// src/assets/utils/fuelAssetsBaseUrl.ts
|
121
97
|
var fuelAssetsBaseUrl = "https://assets.fuel.network/providers/";
|
@@ -690,7 +666,7 @@ var networks = {
|
|
690
666
|
mainnet: "https://mainnet-explorer.fuel.network",
|
691
667
|
testnet: "https://explorer-indexer-testnet.fuel.network"
|
692
668
|
};
|
693
|
-
var request = async (url, slug) => {
|
669
|
+
var request = /* @__PURE__ */ __name(async (url, slug) => {
|
694
670
|
const response = await fetch(`${url}${slug}`, {
|
695
671
|
headers: {
|
696
672
|
"Content-Type": "application/json",
|
@@ -702,20 +678,20 @@ var request = async (url, slug) => {
|
|
702
678
|
} catch (error) {
|
703
679
|
return null;
|
704
680
|
}
|
705
|
-
};
|
706
|
-
var buildQueryString = (parameters) => {
|
681
|
+
}, "request");
|
682
|
+
var buildQueryString = /* @__PURE__ */ __name((parameters) => {
|
707
683
|
const query = new URLSearchParams();
|
708
684
|
Object.entries(parameters).forEach(([key, value]) => {
|
709
685
|
query.set(key, value.toString());
|
710
686
|
});
|
711
687
|
return query.size > 0 ? `?${query.toString()}` : "";
|
712
|
-
};
|
713
|
-
var getAssetById = (opts) => {
|
688
|
+
}, "buildQueryString");
|
689
|
+
var getAssetById = /* @__PURE__ */ __name((opts) => {
|
714
690
|
const { network = "mainnet", assetId } = opts;
|
715
691
|
const url = networks[network];
|
716
692
|
return request(url, `/assets/${assetId}`);
|
717
|
-
};
|
718
|
-
var getAssetsByOwner = async (opts) => {
|
693
|
+
}, "getAssetById");
|
694
|
+
var getAssetsByOwner = /* @__PURE__ */ __name(async (opts) => {
|
719
695
|
const { network = "mainnet", owner, pagination = { last: 10 } } = opts;
|
720
696
|
const url = networks[network];
|
721
697
|
const { last } = pagination;
|
@@ -725,13 +701,13 @@ var getAssetsByOwner = async (opts) => {
|
|
725
701
|
return { data: [], pageInfo: { count: 0 } };
|
726
702
|
}
|
727
703
|
return response;
|
728
|
-
};
|
704
|
+
}, "getAssetsByOwner");
|
729
705
|
|
730
706
|
// src/account.ts
|
731
707
|
import { UTXO_ID_LEN as UTXO_ID_LEN3 } from "@fuel-ts/abi-coder";
|
732
708
|
import { Address as Address4 } from "@fuel-ts/address";
|
733
709
|
import { randomBytes as randomBytes2 } from "@fuel-ts/crypto";
|
734
|
-
import { ErrorCode as ErrorCode18, FuelError as
|
710
|
+
import { ErrorCode as ErrorCode18, FuelError as FuelError21 } from "@fuel-ts/errors";
|
735
711
|
import { bn as bn20 } from "@fuel-ts/math";
|
736
712
|
import { InputType as InputType7 } from "@fuel-ts/transactions";
|
737
713
|
import { arrayify as arrayify16, hexlify as hexlify17, isDefined as isDefined3 } from "@fuel-ts/utils";
|
@@ -740,7 +716,7 @@ import { clone as clone9 } from "ramda";
|
|
740
716
|
// src/providers/coin-quantity.ts
|
741
717
|
import { bn } from "@fuel-ts/math";
|
742
718
|
import { hexlify } from "@fuel-ts/utils";
|
743
|
-
var coinQuantityfy = (coinQuantityLike) => {
|
719
|
+
var coinQuantityfy = /* @__PURE__ */ __name((coinQuantityLike) => {
|
744
720
|
let assetId;
|
745
721
|
let amount;
|
746
722
|
let max;
|
@@ -758,8 +734,8 @@ var coinQuantityfy = (coinQuantityLike) => {
|
|
758
734
|
amount: bn(amount),
|
759
735
|
max: max ? bn(max) : void 0
|
760
736
|
};
|
761
|
-
};
|
762
|
-
var addAmountToCoinQuantities = (params) => {
|
737
|
+
}, "coinQuantityfy");
|
738
|
+
var addAmountToCoinQuantities = /* @__PURE__ */ __name((params) => {
|
763
739
|
const { amount, assetId } = params;
|
764
740
|
const coinQuantities = [...params.coinQuantities];
|
765
741
|
const assetIdx = coinQuantities.findIndex((coinQuantity) => coinQuantity.assetId === assetId);
|
@@ -769,19 +745,40 @@ var addAmountToCoinQuantities = (params) => {
|
|
769
745
|
coinQuantities.push({ assetId, amount });
|
770
746
|
}
|
771
747
|
return coinQuantities;
|
772
|
-
};
|
748
|
+
}, "addAmountToCoinQuantities");
|
773
749
|
|
774
750
|
// src/providers/provider.ts
|
775
751
|
import { Address as Address2, isB256 } from "@fuel-ts/address";
|
776
|
-
import { ErrorCode as ErrorCode16, FuelError as
|
752
|
+
import { ErrorCode as ErrorCode16, FuelError as FuelError19 } from "@fuel-ts/errors";
|
777
753
|
import { bn as bn17 } from "@fuel-ts/math";
|
778
754
|
import { InputMessageCoder as InputMessageCoder2, TransactionCoder as TransactionCoder5 } from "@fuel-ts/transactions";
|
779
755
|
import { arrayify as arrayify12, hexlify as hexlify16, DateTime as DateTime2, isDefined as isDefined2 } from "@fuel-ts/utils";
|
780
|
-
import { checkFuelCoreVersionCompatibility,
|
756
|
+
import { checkFuelCoreVersionCompatibility, versions } from "@fuel-ts/versions";
|
781
757
|
import { GraphQLClient } from "graphql-request";
|
782
758
|
import gql2 from "graphql-tag";
|
783
759
|
import { clone as clone8 } from "ramda";
|
784
760
|
|
761
|
+
// src/connectors/utils/promises.ts
|
762
|
+
import { FuelError } from "@fuel-ts/errors";
|
763
|
+
function deferPromise() {
|
764
|
+
const defer = {};
|
765
|
+
defer.promise = new Promise((resolve, reject) => {
|
766
|
+
defer.reject = reject;
|
767
|
+
defer.resolve = resolve;
|
768
|
+
});
|
769
|
+
return defer;
|
770
|
+
}
|
771
|
+
__name(deferPromise, "deferPromise");
|
772
|
+
async function withTimeout(promise, timeout = 1050) {
|
773
|
+
const timeoutPromise = new Promise((resolve, reject) => {
|
774
|
+
setTimeout(() => {
|
775
|
+
reject(new FuelError(FuelError.CODES.TIMEOUT_EXCEEDED, "Promise timed out"));
|
776
|
+
}, timeout);
|
777
|
+
});
|
778
|
+
return Promise.race([timeoutPromise, promise]);
|
779
|
+
}
|
780
|
+
__name(withTimeout, "withTimeout");
|
781
|
+
|
785
782
|
// src/providers/__generated__/operations.ts
|
786
783
|
import gql from "graphql-tag";
|
787
784
|
var SubmittedStatusFragmentDoc = gql`
|
@@ -1273,6 +1270,11 @@ var NodeInfoFragmentDoc = gql`
|
|
1273
1270
|
maxTx
|
1274
1271
|
maxDepth
|
1275
1272
|
nodeVersion
|
1273
|
+
indexation {
|
1274
|
+
balances
|
1275
|
+
coinsToSpend
|
1276
|
+
assetMetadata
|
1277
|
+
}
|
1276
1278
|
}
|
1277
1279
|
`;
|
1278
1280
|
var RelayedTransactionStatusFragmentDoc = gql`
|
@@ -1554,7 +1556,7 @@ var GetBalancesDocument = gql`
|
|
1554
1556
|
}
|
1555
1557
|
`;
|
1556
1558
|
var GetBalancesV2Document = gql`
|
1557
|
-
query getBalancesV2($filter: BalanceFilterInput!, $after: String, $before: String, $first: Int, $last: Int) {
|
1559
|
+
query getBalancesV2($filter: BalanceFilterInput!, $after: String, $before: String, $first: Int, $last: Int, $supportsPagination: Boolean!) {
|
1558
1560
|
balances(
|
1559
1561
|
filter: $filter
|
1560
1562
|
after: $after
|
@@ -1562,7 +1564,7 @@ var GetBalancesV2Document = gql`
|
|
1562
1564
|
first: $first
|
1563
1565
|
last: $last
|
1564
1566
|
) {
|
1565
|
-
pageInfo {
|
1567
|
+
pageInfo @include(if: $supportsPagination) {
|
1566
1568
|
...pageInfoFragment
|
1567
1569
|
}
|
1568
1570
|
edges {
|
@@ -1832,16 +1834,17 @@ function getSdk(requester) {
|
|
1832
1834
|
}
|
1833
1835
|
};
|
1834
1836
|
}
|
1837
|
+
__name(getSdk, "getSdk");
|
1835
1838
|
|
1836
1839
|
// src/providers/fuel-graphql-subscriber.ts
|
1837
|
-
import { ErrorCode as ErrorCode2, FuelError as
|
1840
|
+
import { ErrorCode as ErrorCode2, FuelError as FuelError3 } from "@fuel-ts/errors";
|
1838
1841
|
import { print } from "graphql";
|
1839
1842
|
|
1840
1843
|
// src/providers/utils/handle-gql-error-message.ts
|
1841
|
-
import { ErrorCode, FuelError } from "@fuel-ts/errors";
|
1842
|
-
var mapGqlErrorMessage = (error) => {
|
1844
|
+
import { ErrorCode, FuelError as FuelError2 } from "@fuel-ts/errors";
|
1845
|
+
var mapGqlErrorMessage = /* @__PURE__ */ __name((error) => {
|
1843
1846
|
if (new RegExp("the target cannot be met due to no coins available or exceeding the \\d+ coin limit." /* NOT_ENOUGH_COINS_MAX_COINS */).test(error.message)) {
|
1844
|
-
return new
|
1847
|
+
return new FuelError2(
|
1845
1848
|
ErrorCode.INSUFFICIENT_FUNDS_OR_MAX_COINS,
|
1846
1849
|
`Insufficient funds or too many small value coins. Consider combining UTXOs.`,
|
1847
1850
|
{},
|
@@ -1849,20 +1852,20 @@ var mapGqlErrorMessage = (error) => {
|
|
1849
1852
|
);
|
1850
1853
|
}
|
1851
1854
|
if (new RegExp("resource was not found in table" /* ASSET_NOT_FOUND */).test(error.message)) {
|
1852
|
-
return new
|
1855
|
+
return new FuelError2(
|
1853
1856
|
ErrorCode.ASSET_NOT_FOUND,
|
1854
1857
|
`Asset not found for given asset id.`,
|
1855
1858
|
{},
|
1856
1859
|
error
|
1857
1860
|
);
|
1858
1861
|
}
|
1859
|
-
return new
|
1860
|
-
};
|
1861
|
-
var mapGqlErrorWithIncompatibleNodeVersion = (error, incompatibleNodeVersionMessage) => {
|
1862
|
+
return new FuelError2(ErrorCode.INVALID_REQUEST, error.message, {}, error);
|
1863
|
+
}, "mapGqlErrorMessage");
|
1864
|
+
var mapGqlErrorWithIncompatibleNodeVersion = /* @__PURE__ */ __name((error, incompatibleNodeVersionMessage) => {
|
1862
1865
|
if (!incompatibleNodeVersionMessage) {
|
1863
1866
|
return error;
|
1864
1867
|
}
|
1865
|
-
return new
|
1868
|
+
return new FuelError2(
|
1866
1869
|
error.code,
|
1867
1870
|
`${error.message}
|
1868
1871
|
|
@@ -1870,8 +1873,8 @@ ${incompatibleNodeVersionMessage}`,
|
|
1870
1873
|
error.metadata,
|
1871
1874
|
error.rawError
|
1872
1875
|
);
|
1873
|
-
};
|
1874
|
-
var assertGqlResponseHasNoErrors = (errors, incompatibleNodeVersionMessage = false) => {
|
1876
|
+
}, "mapGqlErrorWithIncompatibleNodeVersion");
|
1877
|
+
var assertGqlResponseHasNoErrors = /* @__PURE__ */ __name((errors, incompatibleNodeVersionMessage = false) => {
|
1875
1878
|
if (!Array.isArray(errors)) {
|
1876
1879
|
return;
|
1877
1880
|
}
|
@@ -1881,16 +1884,21 @@ var assertGqlResponseHasNoErrors = (errors, incompatibleNodeVersionMessage = fal
|
|
1881
1884
|
}
|
1882
1885
|
const errorMessage = mappedErrors.map((err) => err.message).join("\n");
|
1883
1886
|
throw mapGqlErrorWithIncompatibleNodeVersion(
|
1884
|
-
new
|
1887
|
+
new FuelError2(ErrorCode.INVALID_REQUEST, errorMessage, {}, mappedErrors),
|
1885
1888
|
incompatibleNodeVersionMessage
|
1886
1889
|
);
|
1887
|
-
};
|
1890
|
+
}, "assertGqlResponseHasNoErrors");
|
1888
1891
|
|
1889
1892
|
// src/providers/fuel-graphql-subscriber.ts
|
1890
|
-
var
|
1893
|
+
var FuelGraphqlSubscriber = class _FuelGraphqlSubscriber {
|
1891
1894
|
constructor(stream) {
|
1892
1895
|
this.stream = stream;
|
1893
1896
|
}
|
1897
|
+
static {
|
1898
|
+
__name(this, "FuelGraphqlSubscriber");
|
1899
|
+
}
|
1900
|
+
static incompatibleNodeVersionMessage = false;
|
1901
|
+
static textDecoder = new TextDecoder();
|
1894
1902
|
static async create(options) {
|
1895
1903
|
const { url, query, variables, fetchFn } = options;
|
1896
1904
|
const response = await fetchFn(`${url}-sub`, {
|
@@ -1932,7 +1940,7 @@ var _FuelGraphqlSubscriber = class {
|
|
1932
1940
|
try {
|
1933
1941
|
this.events.push(JSON.parse(match.replace(/^data:/, "")));
|
1934
1942
|
} catch (e) {
|
1935
|
-
throw new
|
1943
|
+
throw new FuelError3(
|
1936
1944
|
ErrorCode2.STREAM_PARSING_ERROR,
|
1937
1945
|
`Error while parsing stream data response: ${text}`
|
1938
1946
|
);
|
@@ -1951,22 +1959,19 @@ var _FuelGraphqlSubscriber = class {
|
|
1951
1959
|
return this;
|
1952
1960
|
}
|
1953
1961
|
};
|
1954
|
-
var FuelGraphqlSubscriber = _FuelGraphqlSubscriber;
|
1955
|
-
__publicField(FuelGraphqlSubscriber, "incompatibleNodeVersionMessage", false);
|
1956
|
-
__publicField(FuelGraphqlSubscriber, "textDecoder", new TextDecoder());
|
1957
1962
|
|
1958
1963
|
// src/providers/resource-cache.ts
|
1959
|
-
import { FuelError as
|
1964
|
+
import { FuelError as FuelError13, ErrorCode as ErrorCode10 } from "@fuel-ts/errors";
|
1960
1965
|
import { hexlify as hexlify14 } from "@fuel-ts/utils";
|
1961
1966
|
|
1962
1967
|
// src/providers/transaction-request/input.ts
|
1963
1968
|
import { BYTES_32, UTXO_ID_LEN } from "@fuel-ts/abi-coder";
|
1964
1969
|
import { ZeroBytes32 } from "@fuel-ts/address/configs";
|
1965
|
-
import { ErrorCode as ErrorCode3, FuelError as
|
1970
|
+
import { ErrorCode as ErrorCode3, FuelError as FuelError4 } from "@fuel-ts/errors";
|
1966
1971
|
import { bn as bn2, toNumber } from "@fuel-ts/math";
|
1967
1972
|
import { InputType } from "@fuel-ts/transactions";
|
1968
1973
|
import { arrayify, hexlify as hexlify2 } from "@fuel-ts/utils";
|
1969
|
-
var inputify = (value) => {
|
1974
|
+
var inputify = /* @__PURE__ */ __name((value) => {
|
1970
1975
|
const { type } = value;
|
1971
1976
|
switch (value.type) {
|
1972
1977
|
case InputType.Coin: {
|
@@ -2026,21 +2031,21 @@ var inputify = (value) => {
|
|
2026
2031
|
};
|
2027
2032
|
}
|
2028
2033
|
default: {
|
2029
|
-
throw new
|
2034
|
+
throw new FuelError4(
|
2030
2035
|
ErrorCode3.INVALID_TRANSACTION_INPUT,
|
2031
2036
|
`Invalid transaction input type: ${type}.`
|
2032
2037
|
);
|
2033
2038
|
}
|
2034
2039
|
}
|
2035
|
-
};
|
2040
|
+
}, "inputify");
|
2036
2041
|
|
2037
2042
|
// src/providers/transaction-request/output.ts
|
2038
2043
|
import { ZeroBytes32 as ZeroBytes322 } from "@fuel-ts/address/configs";
|
2039
|
-
import { ErrorCode as ErrorCode4, FuelError as
|
2044
|
+
import { ErrorCode as ErrorCode4, FuelError as FuelError5 } from "@fuel-ts/errors";
|
2040
2045
|
import { bn as bn3 } from "@fuel-ts/math";
|
2041
2046
|
import { OutputType } from "@fuel-ts/transactions";
|
2042
2047
|
import { hexlify as hexlify3 } from "@fuel-ts/utils";
|
2043
|
-
var outputify = (value) => {
|
2048
|
+
var outputify = /* @__PURE__ */ __name((value) => {
|
2044
2049
|
const { type } = value;
|
2045
2050
|
switch (type) {
|
2046
2051
|
case OutputType.Coin: {
|
@@ -2083,20 +2088,20 @@ var outputify = (value) => {
|
|
2083
2088
|
};
|
2084
2089
|
}
|
2085
2090
|
default: {
|
2086
|
-
throw new
|
2091
|
+
throw new FuelError5(
|
2087
2092
|
ErrorCode4.INVALID_TRANSACTION_INPUT,
|
2088
2093
|
`Invalid transaction output type: ${type}.`
|
2089
2094
|
);
|
2090
2095
|
}
|
2091
2096
|
}
|
2092
|
-
};
|
2097
|
+
}, "outputify");
|
2093
2098
|
|
2094
2099
|
// src/providers/transaction-request/transaction-request.ts
|
2095
2100
|
import { UTXO_ID_LEN as UTXO_ID_LEN2 } from "@fuel-ts/abi-coder";
|
2096
2101
|
import { Address, addressify } from "@fuel-ts/address";
|
2097
2102
|
import { ZeroBytes32 as ZeroBytes324 } from "@fuel-ts/address/configs";
|
2098
2103
|
import { randomBytes } from "@fuel-ts/crypto";
|
2099
|
-
import { FuelError as
|
2104
|
+
import { FuelError as FuelError10 } from "@fuel-ts/errors";
|
2100
2105
|
import { bn as bn8 } from "@fuel-ts/math";
|
2101
2106
|
import {
|
2102
2107
|
PolicyType,
|
@@ -2108,13 +2113,13 @@ import {
|
|
2108
2113
|
import { concat, hexlify as hexlify8, isDefined } from "@fuel-ts/utils";
|
2109
2114
|
|
2110
2115
|
// src/providers/message.ts
|
2111
|
-
var isMessageCoin = (message) => !("data" in message);
|
2116
|
+
var isMessageCoin = /* @__PURE__ */ __name((message) => !("data" in message), "isMessageCoin");
|
2112
2117
|
|
2113
2118
|
// src/providers/resource.ts
|
2114
|
-
var isRawCoin = (resource) => "utxoId" in resource;
|
2115
|
-
var isRawMessage = (resource) => "recipient" in resource;
|
2116
|
-
var isCoin = (resource) => "id" in resource;
|
2117
|
-
var isMessage = (resource) => "recipient" in resource;
|
2119
|
+
var isRawCoin = /* @__PURE__ */ __name((resource) => "utxoId" in resource, "isRawCoin");
|
2120
|
+
var isRawMessage = /* @__PURE__ */ __name((resource) => "recipient" in resource, "isRawMessage");
|
2121
|
+
var isCoin = /* @__PURE__ */ __name((resource) => "id" in resource, "isCoin");
|
2122
|
+
var isMessage = /* @__PURE__ */ __name((resource) => "recipient" in resource, "isMessage");
|
2118
2123
|
|
2119
2124
|
// src/providers/utils/receipts.ts
|
2120
2125
|
import { ReceiptType as ReceiptType2 } from "@fuel-ts/transactions";
|
@@ -2122,11 +2127,11 @@ import { FAILED_TRANSFER_TO_ADDRESS_SIGNAL } from "@fuel-ts/transactions/configs
|
|
2122
2127
|
|
2123
2128
|
// src/providers/utils/serialization.ts
|
2124
2129
|
import { ZeroBytes32 as ZeroBytes323 } from "@fuel-ts/address/configs";
|
2125
|
-
import { ErrorCode as ErrorCode5, FuelError as
|
2130
|
+
import { ErrorCode as ErrorCode5, FuelError as FuelError6 } from "@fuel-ts/errors";
|
2126
2131
|
import { bn as bn4 } from "@fuel-ts/math";
|
2127
2132
|
import { getMintedAssetId, InputMessageCoder, ReceiptType } from "@fuel-ts/transactions";
|
2128
2133
|
import { hexlify as hexlify4, arrayify as arrayify2 } from "@fuel-ts/utils";
|
2129
|
-
var deserializeChain = (chain) => {
|
2134
|
+
var deserializeChain = /* @__PURE__ */ __name((chain) => {
|
2130
2135
|
const { name, daHeight, consensusParameters } = chain;
|
2131
2136
|
const {
|
2132
2137
|
contractParams,
|
@@ -2180,8 +2185,8 @@ var deserializeChain = (chain) => {
|
|
2180
2185
|
gasCosts
|
2181
2186
|
}
|
2182
2187
|
};
|
2183
|
-
};
|
2184
|
-
var serializeChain = (chain) => {
|
2188
|
+
}, "deserializeChain");
|
2189
|
+
var serializeChain = /* @__PURE__ */ __name((chain) => {
|
2185
2190
|
const { name, baseChainHeight, consensusParameters } = chain;
|
2186
2191
|
const {
|
2187
2192
|
contractParameters,
|
@@ -2235,39 +2240,41 @@ var serializeChain = (chain) => {
|
|
2235
2240
|
gasCosts
|
2236
2241
|
}
|
2237
2242
|
};
|
2238
|
-
};
|
2239
|
-
var deserializeNodeInfo = (nodeInfo) => {
|
2240
|
-
const { maxDepth, maxTx, nodeVersion, utxoValidation, vmBacktrace } = nodeInfo;
|
2243
|
+
}, "serializeChain");
|
2244
|
+
var deserializeNodeInfo = /* @__PURE__ */ __name((nodeInfo) => {
|
2245
|
+
const { maxDepth, maxTx, nodeVersion, utxoValidation, vmBacktrace, indexation } = nodeInfo;
|
2241
2246
|
return {
|
2242
2247
|
maxDepth: bn4(maxDepth),
|
2243
2248
|
maxTx: bn4(maxTx),
|
2244
2249
|
nodeVersion,
|
2245
2250
|
utxoValidation,
|
2246
|
-
vmBacktrace
|
2251
|
+
vmBacktrace,
|
2252
|
+
indexation
|
2247
2253
|
};
|
2248
|
-
};
|
2249
|
-
var serializeNodeInfo = (nodeInfo) => {
|
2250
|
-
const { maxDepth, maxTx, nodeVersion, utxoValidation, vmBacktrace } = nodeInfo;
|
2254
|
+
}, "deserializeNodeInfo");
|
2255
|
+
var serializeNodeInfo = /* @__PURE__ */ __name((nodeInfo) => {
|
2256
|
+
const { maxDepth, maxTx, nodeVersion, utxoValidation, vmBacktrace, indexation } = nodeInfo;
|
2251
2257
|
return {
|
2252
2258
|
maxDepth: maxDepth.toString(),
|
2253
2259
|
maxTx: maxTx.toString(),
|
2254
2260
|
nodeVersion,
|
2255
2261
|
utxoValidation,
|
2256
|
-
vmBacktrace
|
2262
|
+
vmBacktrace,
|
2263
|
+
indexation
|
2257
2264
|
};
|
2258
|
-
};
|
2259
|
-
var deserializeProviderCache = (cache2) => ({
|
2265
|
+
}, "serializeNodeInfo");
|
2266
|
+
var deserializeProviderCache = /* @__PURE__ */ __name((cache2) => ({
|
2260
2267
|
consensusParametersTimestamp: cache2.consensusParametersTimestamp,
|
2261
2268
|
chain: deserializeChain(cache2.chain),
|
2262
2269
|
nodeInfo: deserializeNodeInfo(cache2.nodeInfo)
|
2263
|
-
});
|
2264
|
-
var serializeProviderCache = async (provider) => ({
|
2270
|
+
}), "deserializeProviderCache");
|
2271
|
+
var serializeProviderCache = /* @__PURE__ */ __name(async (provider) => ({
|
2265
2272
|
consensusParametersTimestamp: provider.consensusParametersTimestamp,
|
2266
2273
|
chain: serializeChain(await provider.getChain()),
|
2267
2274
|
nodeInfo: serializeNodeInfo(await provider.getNode())
|
2268
|
-
});
|
2269
|
-
var hexOrZero = (hex) => hex || ZeroBytes323;
|
2270
|
-
var deserializeReceipt = (receipt) => {
|
2275
|
+
}), "serializeProviderCache");
|
2276
|
+
var hexOrZero = /* @__PURE__ */ __name((hex) => hex || ZeroBytes323, "hexOrZero");
|
2277
|
+
var deserializeReceipt = /* @__PURE__ */ __name((receipt) => {
|
2271
2278
|
const { receiptType } = receipt;
|
2272
2279
|
switch (receiptType) {
|
2273
2280
|
case "CALL" /* Call */: {
|
@@ -2457,14 +2464,14 @@ var deserializeReceipt = (receipt) => {
|
|
2457
2464
|
return burnReceipt;
|
2458
2465
|
}
|
2459
2466
|
default:
|
2460
|
-
throw new
|
2467
|
+
throw new FuelError6(ErrorCode5.INVALID_RECEIPT_TYPE, `Invalid receipt type: ${receiptType}.`);
|
2461
2468
|
}
|
2462
|
-
};
|
2469
|
+
}, "deserializeReceipt");
|
2463
2470
|
|
2464
2471
|
// src/providers/utils/receipts.ts
|
2465
|
-
var doesReceiptHaveMissingOutputVariables = (receipt) => receipt.type === ReceiptType2.Revert && receipt.val.toString("hex") === FAILED_TRANSFER_TO_ADDRESS_SIGNAL;
|
2466
|
-
var doesReceiptHaveMissingContractId = (receipt) => receipt.type === ReceiptType2.Panic && receipt.contractId !== "0x0000000000000000000000000000000000000000000000000000000000000000";
|
2467
|
-
var getReceiptsWithMissingData = (receipts) => receipts.reduce(
|
2472
|
+
var doesReceiptHaveMissingOutputVariables = /* @__PURE__ */ __name((receipt) => receipt.type === ReceiptType2.Revert && receipt.val.toString("hex") === FAILED_TRANSFER_TO_ADDRESS_SIGNAL, "doesReceiptHaveMissingOutputVariables");
|
2473
|
+
var doesReceiptHaveMissingContractId = /* @__PURE__ */ __name((receipt) => receipt.type === ReceiptType2.Panic && receipt.contractId !== "0x0000000000000000000000000000000000000000000000000000000000000000", "doesReceiptHaveMissingContractId");
|
2474
|
+
var getReceiptsWithMissingData = /* @__PURE__ */ __name((receipts) => receipts.reduce(
|
2468
2475
|
(memo, receipt) => {
|
2469
2476
|
if (doesReceiptHaveMissingOutputVariables(receipt)) {
|
2470
2477
|
memo.missingOutputVariables.push(receipt);
|
@@ -2478,13 +2485,13 @@ var getReceiptsWithMissingData = (receipts) => receipts.reduce(
|
|
2478
2485
|
missingOutputVariables: [],
|
2479
2486
|
missingOutputContractIds: []
|
2480
2487
|
}
|
2481
|
-
);
|
2482
|
-
var assembleReceiptByType = (gqlReceipt) => deserializeReceipt(gqlReceipt);
|
2488
|
+
), "getReceiptsWithMissingData");
|
2489
|
+
var assembleReceiptByType = /* @__PURE__ */ __name((gqlReceipt) => deserializeReceipt(gqlReceipt), "assembleReceiptByType");
|
2483
2490
|
|
2484
2491
|
// src/providers/utils/block-explorer.ts
|
2485
|
-
import { ErrorCode as ErrorCode6, FuelError as
|
2492
|
+
import { ErrorCode as ErrorCode6, FuelError as FuelError7 } from "@fuel-ts/errors";
|
2486
2493
|
var DEFAULT_BLOCK_EXPLORER_URL = "https://app.fuel.network";
|
2487
|
-
var getPathFromInput = (key, value) => {
|
2494
|
+
var getPathFromInput = /* @__PURE__ */ __name((key, value) => {
|
2488
2495
|
const pathMap = {
|
2489
2496
|
address: `address`,
|
2490
2497
|
txId: `transaction`,
|
@@ -2492,8 +2499,8 @@ var getPathFromInput = (key, value) => {
|
|
2492
2499
|
};
|
2493
2500
|
const path = pathMap[key] || key;
|
2494
2501
|
return `${path}/${value}`;
|
2495
|
-
};
|
2496
|
-
var buildBlockExplorerUrl = (options = {}) => {
|
2502
|
+
}, "getPathFromInput");
|
2503
|
+
var buildBlockExplorerUrl = /* @__PURE__ */ __name((options = {}) => {
|
2497
2504
|
const { blockExplorerUrl, path, providerUrl, address, txId, blockNumber } = options;
|
2498
2505
|
const explorerUrl = blockExplorerUrl || DEFAULT_BLOCK_EXPLORER_URL;
|
2499
2506
|
const customInputParams = [
|
@@ -2516,14 +2523,14 @@ var buildBlockExplorerUrl = (options = {}) => {
|
|
2516
2523
|
}));
|
2517
2524
|
const hasAnyDefinedValues = definedValues.length > 0;
|
2518
2525
|
if (definedValues.length > 1) {
|
2519
|
-
throw new
|
2526
|
+
throw new FuelError7(
|
2520
2527
|
ErrorCode6.ERROR_BUILDING_BLOCK_EXPLORER_URL,
|
2521
2528
|
`Only one of the following can be passed in to buildBlockExplorerUrl: ${customInputParams.map((param) => param.key).join(", ")}.`
|
2522
2529
|
);
|
2523
2530
|
}
|
2524
2531
|
if (path && definedValues.length > 0) {
|
2525
2532
|
const inputKeys = customInputParams.map(({ key }) => key).join(", ");
|
2526
|
-
throw new
|
2533
|
+
throw new FuelError7(
|
2527
2534
|
ErrorCode6.ERROR_BUILDING_BLOCK_EXPLORER_URL,
|
2528
2535
|
`You cannot pass in a path to 'buildBlockExplorerUrl' along with any of the following: ${inputKeys}.`
|
2529
2536
|
);
|
@@ -2541,19 +2548,19 @@ var buildBlockExplorerUrl = (options = {}) => {
|
|
2541
2548
|
const providerUrlProtocol = cleanProviderUrl?.match(/^https?:\/\//) ? "" : "https://";
|
2542
2549
|
const url = `${protocol}${cleanBlockExplorerUrl}/${cleanPath}${encodedProviderUrl ? `?providerUrl=${providerUrlProtocol}${encodedProviderUrl}` : ""}`;
|
2543
2550
|
return url;
|
2544
|
-
};
|
2551
|
+
}, "buildBlockExplorerUrl");
|
2545
2552
|
|
2546
2553
|
// src/providers/utils/gas.ts
|
2547
2554
|
import { bn as bn5 } from "@fuel-ts/math";
|
2548
2555
|
import { ReceiptType as ReceiptType3 } from "@fuel-ts/transactions";
|
2549
2556
|
import { arrayify as arrayify3 } from "@fuel-ts/utils";
|
2550
|
-
var getGasUsedFromReceipts = (receipts) => {
|
2557
|
+
var getGasUsedFromReceipts = /* @__PURE__ */ __name((receipts) => {
|
2551
2558
|
const scriptResult = receipts.filter(
|
2552
2559
|
(receipt) => receipt.type === ReceiptType3.ScriptResult
|
2553
2560
|
);
|
2554
2561
|
const gasUsed = scriptResult.reduce((prev, receipt) => prev.add(receipt.gasUsed), bn5(0));
|
2555
2562
|
return gasUsed;
|
2556
|
-
};
|
2563
|
+
}, "getGasUsedFromReceipts");
|
2557
2564
|
function resolveGasDependentCosts(byteSize, gasDependentCost) {
|
2558
2565
|
const base = bn5(gasDependentCost.base);
|
2559
2566
|
let dependentValue = bn5(0);
|
@@ -2564,6 +2571,7 @@ function resolveGasDependentCosts(byteSize, gasDependentCost) {
|
|
2564
2571
|
}
|
2565
2572
|
return base.add(dependentValue);
|
2566
2573
|
}
|
2574
|
+
__name(resolveGasDependentCosts, "resolveGasDependentCosts");
|
2567
2575
|
function gasUsedByInputs(inputs, txBytesSize, gasCosts) {
|
2568
2576
|
const witnessCache = [];
|
2569
2577
|
const chargeableInputs = inputs.filter((input) => {
|
@@ -2590,6 +2598,7 @@ function gasUsedByInputs(inputs, txBytesSize, gasCosts) {
|
|
2590
2598
|
}, bn5(0));
|
2591
2599
|
return totalGas;
|
2592
2600
|
}
|
2601
|
+
__name(gasUsedByInputs, "gasUsedByInputs");
|
2593
2602
|
function getMinGas(params) {
|
2594
2603
|
const { gasCosts, gasPerByte, inputs, metadataGas, txBytesSize } = params;
|
2595
2604
|
const vmInitGas = resolveGasDependentCosts(txBytesSize, gasCosts.vmInitialization);
|
@@ -2598,6 +2607,7 @@ function getMinGas(params) {
|
|
2598
2607
|
const minGas = vmInitGas.add(bytesGas).add(inputsGas).add(metadataGas).maxU64();
|
2599
2608
|
return minGas;
|
2600
2609
|
}
|
2610
|
+
__name(getMinGas, "getMinGas");
|
2601
2611
|
function getMaxGas(params) {
|
2602
2612
|
const {
|
2603
2613
|
gasPerByte,
|
@@ -2614,6 +2624,7 @@ function getMaxGas(params) {
|
|
2614
2624
|
const maxGas = remainingAllowedWitnessGas.add(minGas).add(gasLimit);
|
2615
2625
|
return maxGas.gte(maxGasPerTx) ? maxGasPerTx : maxGas;
|
2616
2626
|
}
|
2627
|
+
__name(getMaxGas, "getMaxGas");
|
2617
2628
|
function calculateMetadataGasForTxCreate({
|
2618
2629
|
gasCosts,
|
2619
2630
|
stateRootSize,
|
@@ -2628,12 +2639,14 @@ function calculateMetadataGasForTxCreate({
|
|
2628
2639
|
const metadataGas = contractRootGas.add(stateRootGas).add(txIdGas).add(contractIdGas);
|
2629
2640
|
return metadataGas.maxU64();
|
2630
2641
|
}
|
2642
|
+
__name(calculateMetadataGasForTxCreate, "calculateMetadataGasForTxCreate");
|
2631
2643
|
function calculateMetadataGasForTxScript({
|
2632
2644
|
gasCosts,
|
2633
2645
|
txBytesSize
|
2634
2646
|
}) {
|
2635
2647
|
return resolveGasDependentCosts(txBytesSize, gasCosts.s256);
|
2636
2648
|
}
|
2649
|
+
__name(calculateMetadataGasForTxScript, "calculateMetadataGasForTxScript");
|
2637
2650
|
function calculateMetadataGasForTxBlob({
|
2638
2651
|
gasCosts,
|
2639
2652
|
txBytesSize,
|
@@ -2643,6 +2656,7 @@ function calculateMetadataGasForTxBlob({
|
|
2643
2656
|
const blobLen = resolveGasDependentCosts(witnessBytesSize, gasCosts.s256);
|
2644
2657
|
return txId.add(blobLen);
|
2645
2658
|
}
|
2659
|
+
__name(calculateMetadataGasForTxBlob, "calculateMetadataGasForTxBlob");
|
2646
2660
|
function calculateMetadataGasForTxUpgrade({
|
2647
2661
|
gasCosts,
|
2648
2662
|
txBytesSize,
|
@@ -2655,6 +2669,7 @@ function calculateMetadataGasForTxUpgrade({
|
|
2655
2669
|
}
|
2656
2670
|
return txId;
|
2657
2671
|
}
|
2672
|
+
__name(calculateMetadataGasForTxUpgrade, "calculateMetadataGasForTxUpgrade");
|
2658
2673
|
function calculateMetadataGasForTxUpload({
|
2659
2674
|
gasCosts,
|
2660
2675
|
txBytesSize,
|
@@ -2668,6 +2683,7 @@ function calculateMetadataGasForTxUpload({
|
|
2668
2683
|
txId.add(subsectionsLen);
|
2669
2684
|
return txId;
|
2670
2685
|
}
|
2686
|
+
__name(calculateMetadataGasForTxUpload, "calculateMetadataGasForTxUpload");
|
2671
2687
|
function calculateMinGasForTxUpload({
|
2672
2688
|
gasCosts,
|
2673
2689
|
baseMinGas,
|
@@ -2676,10 +2692,11 @@ function calculateMinGasForTxUpload({
|
|
2676
2692
|
const additionalStoragePerByte = bn5(gasCosts.newStoragePerByte).mul(subsectionSize);
|
2677
2693
|
return bn5(baseMinGas).add(additionalStoragePerByte);
|
2678
2694
|
}
|
2679
|
-
|
2695
|
+
__name(calculateMinGasForTxUpload, "calculateMinGasForTxUpload");
|
2696
|
+
var calculateGasFee = /* @__PURE__ */ __name((params) => {
|
2680
2697
|
const { gas, gasPrice, priceFactor, tip } = params;
|
2681
2698
|
return gas.mul(gasPrice).div(priceFactor).add(bn5(tip));
|
2682
|
-
};
|
2699
|
+
}, "calculateGasFee");
|
2683
2700
|
|
2684
2701
|
// src/providers/utils/json.ts
|
2685
2702
|
import { hexlify as hexlify5 } from "@fuel-ts/utils";
|
@@ -2708,12 +2725,14 @@ function normalize(object) {
|
|
2708
2725
|
});
|
2709
2726
|
return object;
|
2710
2727
|
}
|
2728
|
+
__name(normalize, "normalize");
|
2711
2729
|
function normalizeJSON(root) {
|
2712
2730
|
return normalize(clone(root));
|
2713
2731
|
}
|
2732
|
+
__name(normalizeJSON, "normalizeJSON");
|
2714
2733
|
|
2715
2734
|
// src/providers/utils/extract-tx-error.ts
|
2716
|
-
import { ErrorCode as ErrorCode7, FuelError as
|
2735
|
+
import { ErrorCode as ErrorCode7, FuelError as FuelError8 } from "@fuel-ts/errors";
|
2717
2736
|
import { bn as bn6 } from "@fuel-ts/math";
|
2718
2737
|
import { ReceiptType as ReceiptType4 } from "@fuel-ts/transactions";
|
2719
2738
|
import {
|
@@ -2725,7 +2744,7 @@ import {
|
|
2725
2744
|
PANIC_REASONS,
|
2726
2745
|
PANIC_DOC_URL
|
2727
2746
|
} from "@fuel-ts/transactions/configs";
|
2728
|
-
var assemblePanicError = (statusReason, metadata) => {
|
2747
|
+
var assemblePanicError = /* @__PURE__ */ __name((statusReason, metadata) => {
|
2729
2748
|
let errorMessage = `The transaction reverted with reason: "${statusReason}".`;
|
2730
2749
|
if (PANIC_REASONS.includes(statusReason)) {
|
2731
2750
|
errorMessage = `${errorMessage}
|
@@ -2734,13 +2753,13 @@ You can read more about this error at:
|
|
2734
2753
|
|
2735
2754
|
${PANIC_DOC_URL}#variant.${statusReason}`;
|
2736
2755
|
}
|
2737
|
-
return new
|
2756
|
+
return new FuelError8(ErrorCode7.SCRIPT_REVERTED, errorMessage, {
|
2738
2757
|
...metadata,
|
2739
2758
|
reason: statusReason
|
2740
2759
|
});
|
2741
|
-
};
|
2742
|
-
var stringify = (obj) => JSON.stringify(obj, null, 2);
|
2743
|
-
var assembleRevertError = (receipts, logs, metadata) => {
|
2760
|
+
}, "assemblePanicError");
|
2761
|
+
var stringify = /* @__PURE__ */ __name((obj) => JSON.stringify(obj, null, 2), "stringify");
|
2762
|
+
var assembleRevertError = /* @__PURE__ */ __name((receipts, logs, metadata) => {
|
2744
2763
|
let errorMessage = "The transaction reverted with an unknown reason.";
|
2745
2764
|
const revertReceipt = receipts.find(({ type }) => type === ReceiptType4.Revert);
|
2746
2765
|
let reason = "";
|
@@ -2775,7 +2794,7 @@ var assembleRevertError = (receipts, logs, metadata) => {
|
|
2775
2794
|
errorMessage = `The transaction reverted because it's missing an "OutputVariable".`;
|
2776
2795
|
break;
|
2777
2796
|
default:
|
2778
|
-
throw new
|
2797
|
+
throw new FuelError8(
|
2779
2798
|
ErrorCode7.UNKNOWN,
|
2780
2799
|
`The transaction reverted with an unknown reason: ${revertReceipt.val}`,
|
2781
2800
|
{
|
@@ -2785,12 +2804,12 @@ var assembleRevertError = (receipts, logs, metadata) => {
|
|
2785
2804
|
);
|
2786
2805
|
}
|
2787
2806
|
}
|
2788
|
-
return new
|
2807
|
+
return new FuelError8(ErrorCode7.SCRIPT_REVERTED, errorMessage, {
|
2789
2808
|
...metadata,
|
2790
2809
|
reason
|
2791
2810
|
});
|
2792
|
-
};
|
2793
|
-
var extractTxError = (params) => {
|
2811
|
+
}, "assembleRevertError");
|
2812
|
+
var extractTxError = /* @__PURE__ */ __name((params) => {
|
2794
2813
|
const { receipts, statusReason, logs } = params;
|
2795
2814
|
const isPanic = receipts.some(({ type }) => type === ReceiptType4.Panic);
|
2796
2815
|
const isRevert = receipts.some(({ type }) => type === ReceiptType4.Revert);
|
@@ -2805,10 +2824,13 @@ var extractTxError = (params) => {
|
|
2805
2824
|
return assemblePanicError(statusReason, metadata);
|
2806
2825
|
}
|
2807
2826
|
return assembleRevertError(receipts, logs, metadata);
|
2808
|
-
};
|
2827
|
+
}, "extractTxError");
|
2809
2828
|
|
2810
2829
|
// src/providers/transaction-request/errors.ts
|
2811
2830
|
var ChangeOutputCollisionError = class extends Error {
|
2831
|
+
static {
|
2832
|
+
__name(this, "ChangeOutputCollisionError");
|
2833
|
+
}
|
2812
2834
|
name = "ChangeOutputCollisionError";
|
2813
2835
|
message = 'A ChangeOutput with the same "assetId" already exists for a different "to" address';
|
2814
2836
|
};
|
@@ -2818,6 +2840,9 @@ var NoWitnessAtIndexError = class extends Error {
|
|
2818
2840
|
this.index = index;
|
2819
2841
|
this.message = `Witness at index "${index}" was not found`;
|
2820
2842
|
}
|
2843
|
+
static {
|
2844
|
+
__name(this, "NoWitnessAtIndexError");
|
2845
|
+
}
|
2821
2846
|
name = "NoWitnessAtIndexError";
|
2822
2847
|
};
|
2823
2848
|
var NoWitnessByOwnerError = class extends Error {
|
@@ -2826,23 +2851,26 @@ var NoWitnessByOwnerError = class extends Error {
|
|
2826
2851
|
this.owner = owner;
|
2827
2852
|
this.message = `A witness for the given owner "${owner}" was not found`;
|
2828
2853
|
}
|
2854
|
+
static {
|
2855
|
+
__name(this, "NoWitnessByOwnerError");
|
2856
|
+
}
|
2829
2857
|
name = "NoWitnessByOwnerError";
|
2830
2858
|
};
|
2831
2859
|
|
2832
2860
|
// src/providers/transaction-request/helpers.ts
|
2833
|
-
import { ErrorCode as ErrorCode8, FuelError as
|
2861
|
+
import { ErrorCode as ErrorCode8, FuelError as FuelError9 } from "@fuel-ts/errors";
|
2834
2862
|
import { bn as bn7 } from "@fuel-ts/math";
|
2835
2863
|
import { InputType as InputType2, OutputType as OutputType2 } from "@fuel-ts/transactions";
|
2836
2864
|
import { hexlify as hexlify6 } from "@fuel-ts/utils";
|
2837
|
-
var isRequestInputCoin = (input) => input.type === InputType2.Coin;
|
2838
|
-
var isRequestInputMessage = (input) => input.type === InputType2.Message;
|
2839
|
-
var isRequestInputMessageWithoutData = (input) => input.type === InputType2.Message && bn7(input.data).isZero();
|
2840
|
-
var isRequestInputCoinOrMessage = (input) => isRequestInputCoin(input) || isRequestInputMessage(input);
|
2841
|
-
var isRequestInputResource = (input) => isRequestInputCoin(input) || isRequestInputMessageWithoutData(input);
|
2842
|
-
var getRequestInputResourceOwner = (input) => isRequestInputCoin(input) ? input.owner : input.recipient;
|
2843
|
-
var isRequestInputResourceFromOwner = (input, owner) => getRequestInputResourceOwner(input) === owner.toB256();
|
2844
|
-
var isPredicate = (input) => isRequestInputCoinOrMessage(input) && !!input.predicate && hexlify6(input.predicate) !== "0x";
|
2845
|
-
var getAssetAmountInRequestInputs = (inputs, assetId, baseAsset) => inputs.filter(isRequestInputResource).reduce((acc, input) => {
|
2865
|
+
var isRequestInputCoin = /* @__PURE__ */ __name((input) => input.type === InputType2.Coin, "isRequestInputCoin");
|
2866
|
+
var isRequestInputMessage = /* @__PURE__ */ __name((input) => input.type === InputType2.Message, "isRequestInputMessage");
|
2867
|
+
var isRequestInputMessageWithoutData = /* @__PURE__ */ __name((input) => input.type === InputType2.Message && bn7(input.data).isZero(), "isRequestInputMessageWithoutData");
|
2868
|
+
var isRequestInputCoinOrMessage = /* @__PURE__ */ __name((input) => isRequestInputCoin(input) || isRequestInputMessage(input), "isRequestInputCoinOrMessage");
|
2869
|
+
var isRequestInputResource = /* @__PURE__ */ __name((input) => isRequestInputCoin(input) || isRequestInputMessageWithoutData(input), "isRequestInputResource");
|
2870
|
+
var getRequestInputResourceOwner = /* @__PURE__ */ __name((input) => isRequestInputCoin(input) ? input.owner : input.recipient, "getRequestInputResourceOwner");
|
2871
|
+
var isRequestInputResourceFromOwner = /* @__PURE__ */ __name((input, owner) => getRequestInputResourceOwner(input) === owner.toB256(), "isRequestInputResourceFromOwner");
|
2872
|
+
var isPredicate = /* @__PURE__ */ __name((input) => isRequestInputCoinOrMessage(input) && !!input.predicate && hexlify6(input.predicate) !== "0x", "isPredicate");
|
2873
|
+
var getAssetAmountInRequestInputs = /* @__PURE__ */ __name((inputs, assetId, baseAsset) => inputs.filter(isRequestInputResource).reduce((acc, input) => {
|
2846
2874
|
if (isRequestInputCoin(input) && input.assetId === assetId) {
|
2847
2875
|
return acc.add(input.amount);
|
2848
2876
|
}
|
@@ -2850,8 +2878,8 @@ var getAssetAmountInRequestInputs = (inputs, assetId, baseAsset) => inputs.filte
|
|
2850
2878
|
return acc.add(input.amount);
|
2851
2879
|
}
|
2852
2880
|
return acc;
|
2853
|
-
}, bn7(0));
|
2854
|
-
var cacheRequestInputsResources = (inputs) => inputs.filter(isRequestInputResource).reduce(
|
2881
|
+
}, bn7(0)), "getAssetAmountInRequestInputs");
|
2882
|
+
var cacheRequestInputsResources = /* @__PURE__ */ __name((inputs) => inputs.filter(isRequestInputResource).reduce(
|
2855
2883
|
(cache2, input) => {
|
2856
2884
|
if (isRequestInputCoin(input)) {
|
2857
2885
|
cache2.utxos.push(input.id);
|
@@ -2864,8 +2892,8 @@ var cacheRequestInputsResources = (inputs) => inputs.filter(isRequestInputResour
|
|
2864
2892
|
utxos: [],
|
2865
2893
|
messages: []
|
2866
2894
|
}
|
2867
|
-
);
|
2868
|
-
var cacheRequestInputsResourcesFromOwner = (inputs, owner) => inputs.reduce(
|
2895
|
+
), "cacheRequestInputsResources");
|
2896
|
+
var cacheRequestInputsResourcesFromOwner = /* @__PURE__ */ __name((inputs, owner) => inputs.reduce(
|
2869
2897
|
(acc, input) => {
|
2870
2898
|
if (isRequestInputCoin(input) && input.owner === owner.toB256()) {
|
2871
2899
|
acc.utxos.push(input.id);
|
@@ -2878,8 +2906,8 @@ var cacheRequestInputsResourcesFromOwner = (inputs, owner) => inputs.reduce(
|
|
2878
2906
|
utxos: [],
|
2879
2907
|
messages: []
|
2880
2908
|
}
|
2881
|
-
);
|
2882
|
-
var getBurnableAssetCount = (baseAssetId, transactionRequest) => {
|
2909
|
+
), "cacheRequestInputsResourcesFromOwner");
|
2910
|
+
var getBurnableAssetCount = /* @__PURE__ */ __name((baseAssetId, transactionRequest) => {
|
2883
2911
|
const { inputs, outputs } = transactionRequest;
|
2884
2912
|
const coinInputs = new Set(inputs.filter(isRequestInputCoin).map((input) => input.assetId));
|
2885
2913
|
if (inputs.some((i) => isRequestInputMessage(i) && bn7(i.amount).gt(0))) {
|
@@ -2890,8 +2918,8 @@ var getBurnableAssetCount = (baseAssetId, transactionRequest) => {
|
|
2890
2918
|
);
|
2891
2919
|
const difference = new Set([...coinInputs].filter((x) => !changeOutputs.has(x)));
|
2892
2920
|
return difference.size;
|
2893
|
-
};
|
2894
|
-
var validateTransactionForAssetBurn = (baseAssetId, transactionRequest, enableAssetBurn = false) => {
|
2921
|
+
}, "getBurnableAssetCount");
|
2922
|
+
var validateTransactionForAssetBurn = /* @__PURE__ */ __name((baseAssetId, transactionRequest, enableAssetBurn = false) => {
|
2895
2923
|
if (enableAssetBurn === true) {
|
2896
2924
|
return;
|
2897
2925
|
}
|
@@ -2903,21 +2931,24 @@ var validateTransactionForAssetBurn = (baseAssetId, transactionRequest, enableAs
|
|
2903
2931
|
"Add the relevant change outputs to the transaction to avoid burning assets.",
|
2904
2932
|
"Or enable asset burn, upon sending the transaction."
|
2905
2933
|
].join("\n");
|
2906
|
-
throw new
|
2907
|
-
};
|
2934
|
+
throw new FuelError9(ErrorCode8.ASSET_BURN_DETECTED, message);
|
2935
|
+
}, "validateTransactionForAssetBurn");
|
2908
2936
|
|
2909
2937
|
// src/providers/transaction-request/witness.ts
|
2910
2938
|
import { arrayify as arrayify4, hexlify as hexlify7 } from "@fuel-ts/utils";
|
2911
|
-
var witnessify = (value) => {
|
2939
|
+
var witnessify = /* @__PURE__ */ __name((value) => {
|
2912
2940
|
const data = arrayify4(value);
|
2913
2941
|
return {
|
2914
2942
|
data: hexlify7(data),
|
2915
2943
|
dataLength: data.length
|
2916
2944
|
};
|
2917
|
-
};
|
2945
|
+
}, "witnessify");
|
2918
2946
|
|
2919
2947
|
// src/providers/transaction-request/transaction-request.ts
|
2920
|
-
var BaseTransactionRequest = class {
|
2948
|
+
var BaseTransactionRequest = class _BaseTransactionRequest {
|
2949
|
+
static {
|
2950
|
+
__name(this, "BaseTransactionRequest");
|
2951
|
+
}
|
2921
2952
|
/** Gas price for transaction */
|
2922
2953
|
tip;
|
2923
2954
|
/** Block until which tx cannot be included */
|
@@ -3000,7 +3031,7 @@ var BaseTransactionRequest = class {
|
|
3000
3031
|
const inputs = this.inputs?.map(inputify) ?? [];
|
3001
3032
|
const outputs = this.outputs?.map(outputify) ?? [];
|
3002
3033
|
const witnesses = this.witnesses?.map(witnessify) ?? [];
|
3003
|
-
const { policyTypes, policies } =
|
3034
|
+
const { policyTypes, policies } = _BaseTransactionRequest.getPolicyMeta(this);
|
3004
3035
|
return {
|
3005
3036
|
policyTypes,
|
3006
3037
|
inputs,
|
@@ -3301,7 +3332,7 @@ var BaseTransactionRequest = class {
|
|
3301
3332
|
* @hidden
|
3302
3333
|
*/
|
3303
3334
|
metadataGas(_gasCosts) {
|
3304
|
-
throw new
|
3335
|
+
throw new FuelError10(FuelError10.CODES.NOT_IMPLEMENTED, "Not implemented");
|
3305
3336
|
}
|
3306
3337
|
/**
|
3307
3338
|
* @hidden
|
@@ -3348,13 +3379,13 @@ var BaseTransactionRequest = class {
|
|
3348
3379
|
* Please use `Account.generateFakeResources` along with `this.addResources` instead.
|
3349
3380
|
*/
|
3350
3381
|
fundWithFakeUtxos(quantities, baseAssetId, resourcesOwner) {
|
3351
|
-
const findAssetInput = (assetId) => this.inputs.find((input) => {
|
3382
|
+
const findAssetInput = /* @__PURE__ */ __name((assetId) => this.inputs.find((input) => {
|
3352
3383
|
if ("assetId" in input) {
|
3353
3384
|
return input.assetId === assetId;
|
3354
3385
|
}
|
3355
3386
|
return false;
|
3356
|
-
});
|
3357
|
-
const updateAssetInput = (assetId, quantity) => {
|
3387
|
+
}), "findAssetInput");
|
3388
|
+
const updateAssetInput = /* @__PURE__ */ __name((assetId, quantity) => {
|
3358
3389
|
const assetInput = findAssetInput(assetId);
|
3359
3390
|
let usedQuantity = quantity;
|
3360
3391
|
if (assetId === baseAssetId) {
|
@@ -3375,7 +3406,7 @@ var BaseTransactionRequest = class {
|
|
3375
3406
|
}
|
3376
3407
|
]);
|
3377
3408
|
}
|
3378
|
-
};
|
3409
|
+
}, "updateAssetInput");
|
3379
3410
|
updateAssetInput(baseAssetId, bn8(1e11));
|
3380
3411
|
quantities.forEach((q) => updateAssetInput(q.assetId, q.amount));
|
3381
3412
|
return this;
|
@@ -3463,6 +3494,7 @@ function hashTransaction(transactionRequest, chainId) {
|
|
3463
3494
|
transaction.inputs = transaction.inputs.map((input) => {
|
3464
3495
|
const inputClone = clone2(input);
|
3465
3496
|
switch (inputClone.type) {
|
3497
|
+
// Zero out on signing: txPointer, predicateGasUsed
|
3466
3498
|
case InputType4.Coin: {
|
3467
3499
|
inputClone.txPointer = {
|
3468
3500
|
blockHeight: 0,
|
@@ -3471,10 +3503,12 @@ function hashTransaction(transactionRequest, chainId) {
|
|
3471
3503
|
inputClone.predicateGasUsed = bn9(0);
|
3472
3504
|
return inputClone;
|
3473
3505
|
}
|
3506
|
+
// Zero out on signing: predicateGasUsed
|
3474
3507
|
case InputType4.Message: {
|
3475
3508
|
inputClone.predicateGasUsed = bn9(0);
|
3476
3509
|
return inputClone;
|
3477
3510
|
}
|
3511
|
+
// Zero out on signing: txID, outputIndex, balanceRoot, stateRoot, and txPointer
|
3478
3512
|
case InputType4.Contract: {
|
3479
3513
|
inputClone.txPointer = {
|
3480
3514
|
blockHeight: 0,
|
@@ -3493,15 +3527,18 @@ function hashTransaction(transactionRequest, chainId) {
|
|
3493
3527
|
transaction.outputs = transaction.outputs.map((output) => {
|
3494
3528
|
const outputClone = clone2(output);
|
3495
3529
|
switch (outputClone.type) {
|
3530
|
+
// Zero out on signing: balanceRoot, stateRoot
|
3496
3531
|
case OutputType4.Contract: {
|
3497
3532
|
outputClone.balanceRoot = ZeroBytes325;
|
3498
3533
|
outputClone.stateRoot = ZeroBytes325;
|
3499
3534
|
return outputClone;
|
3500
3535
|
}
|
3536
|
+
// Zero out on signing: amount
|
3501
3537
|
case OutputType4.Change: {
|
3502
3538
|
outputClone.amount = bn9(0);
|
3503
3539
|
return outputClone;
|
3504
3540
|
}
|
3541
|
+
// Zero out on signing: amount, to and assetId
|
3505
3542
|
case OutputType4.Variable: {
|
3506
3543
|
outputClone.to = ZeroBytes325;
|
3507
3544
|
outputClone.amount = bn9(0);
|
@@ -3518,9 +3555,13 @@ function hashTransaction(transactionRequest, chainId) {
|
|
3518
3555
|
const concatenatedData = concat2([chainIdBytes, new TransactionCoder2().encode(transaction)]);
|
3519
3556
|
return sha256(concatenatedData);
|
3520
3557
|
}
|
3558
|
+
__name(hashTransaction, "hashTransaction");
|
3521
3559
|
|
3522
3560
|
// src/providers/transaction-request/blob-transaction-request.ts
|
3523
3561
|
var BlobTransactionRequest = class extends BaseTransactionRequest {
|
3562
|
+
static {
|
3563
|
+
__name(this, "BlobTransactionRequest");
|
3564
|
+
}
|
3524
3565
|
static from(obj) {
|
3525
3566
|
return new this(clone3(obj));
|
3526
3567
|
}
|
@@ -3589,12 +3630,12 @@ import { clone as clone4 } from "ramda";
|
|
3589
3630
|
|
3590
3631
|
// src/providers/transaction-request/storage-slot.ts
|
3591
3632
|
import { arrayify as arrayify5, hexlify as hexlify9 } from "@fuel-ts/utils";
|
3592
|
-
var getStorageValue = (value) => {
|
3633
|
+
var getStorageValue = /* @__PURE__ */ __name((value) => {
|
3593
3634
|
const v = new Uint8Array(32);
|
3594
3635
|
v.set(arrayify5(value));
|
3595
3636
|
return v;
|
3596
|
-
};
|
3597
|
-
var storageSlotify = (storageSlot) => {
|
3637
|
+
}, "getStorageValue");
|
3638
|
+
var storageSlotify = /* @__PURE__ */ __name((storageSlot) => {
|
3598
3639
|
let key;
|
3599
3640
|
let value;
|
3600
3641
|
if (Array.isArray(storageSlot)) {
|
@@ -3608,10 +3649,13 @@ var storageSlotify = (storageSlot) => {
|
|
3608
3649
|
key: hexlify9(key),
|
3609
3650
|
value: hexlify9(getStorageValue(value))
|
3610
3651
|
};
|
3611
|
-
};
|
3652
|
+
}, "storageSlotify");
|
3612
3653
|
|
3613
3654
|
// src/providers/transaction-request/create-transaction-request.ts
|
3614
3655
|
var CreateTransactionRequest = class extends BaseTransactionRequest {
|
3656
|
+
static {
|
3657
|
+
__name(this, "CreateTransactionRequest");
|
3658
|
+
}
|
3615
3659
|
static from(obj) {
|
3616
3660
|
return new this(clone4(obj));
|
3617
3661
|
}
|
@@ -3713,7 +3757,7 @@ var returnZeroScript = {
|
|
3713
3757
|
*/
|
3714
3758
|
// TODO: Don't use hardcoded scripts: https://github.com/FuelLabs/fuels-ts/issues/281
|
3715
3759
|
bytes: arrayify7("0x24000000"),
|
3716
|
-
encodeScriptData: () => new Uint8Array(0)
|
3760
|
+
encodeScriptData: /* @__PURE__ */ __name(() => new Uint8Array(0), "encodeScriptData")
|
3717
3761
|
};
|
3718
3762
|
var withdrawScript = {
|
3719
3763
|
/*
|
@@ -3727,11 +3771,14 @@ var withdrawScript = {
|
|
3727
3771
|
*/
|
3728
3772
|
// TODO: Don't use hardcoded scripts: https://github.com/FuelLabs/fuels-ts/issues/281
|
3729
3773
|
bytes: arrayify7("0x5040C0105D44C0064C40001124000000"),
|
3730
|
-
encodeScriptData: () => new Uint8Array(0)
|
3774
|
+
encodeScriptData: /* @__PURE__ */ __name(() => new Uint8Array(0), "encodeScriptData")
|
3731
3775
|
};
|
3732
3776
|
|
3733
3777
|
// src/providers/transaction-request/script-transaction-request.ts
|
3734
3778
|
var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
3779
|
+
static {
|
3780
|
+
__name(this, "ScriptTransactionRequest");
|
3781
|
+
}
|
3735
3782
|
static from(obj) {
|
3736
3783
|
return new this(clone5(obj));
|
3737
3784
|
}
|
@@ -3924,7 +3971,7 @@ var ScriptTransactionRequest = class extends BaseTransactionRequest {
|
|
3924
3971
|
};
|
3925
3972
|
|
3926
3973
|
// src/providers/transaction-request/upgrade-transaction-request.ts
|
3927
|
-
import { FuelError as
|
3974
|
+
import { FuelError as FuelError11 } from "@fuel-ts/errors";
|
3928
3975
|
import { hash } from "@fuel-ts/hasher";
|
3929
3976
|
import {
|
3930
3977
|
TransactionType as TransactionType5,
|
@@ -3932,9 +3979,12 @@ import {
|
|
3932
3979
|
} from "@fuel-ts/transactions";
|
3933
3980
|
import { hexlify as hexlify12 } from "@fuel-ts/utils";
|
3934
3981
|
import { clone as clone6 } from "ramda";
|
3935
|
-
var UpgradeTransactionRequest = class extends BaseTransactionRequest {
|
3982
|
+
var UpgradeTransactionRequest = class _UpgradeTransactionRequest extends BaseTransactionRequest {
|
3983
|
+
static {
|
3984
|
+
__name(this, "UpgradeTransactionRequest");
|
3985
|
+
}
|
3936
3986
|
static from(obj) {
|
3937
|
-
if (obj instanceof
|
3987
|
+
if (obj instanceof _UpgradeTransactionRequest) {
|
3938
3988
|
return obj;
|
3939
3989
|
}
|
3940
3990
|
return new this(clone6(obj));
|
@@ -4031,7 +4081,7 @@ var UpgradeTransactionRequest = class extends BaseTransactionRequest {
|
|
4031
4081
|
}
|
4032
4082
|
};
|
4033
4083
|
} else {
|
4034
|
-
throw new
|
4084
|
+
throw new FuelError11(FuelError11.CODES.NOT_IMPLEMENTED, "Invalid upgrade purpose");
|
4035
4085
|
}
|
4036
4086
|
return {
|
4037
4087
|
type: TransactionType5.Upgrade,
|
@@ -4073,7 +4123,7 @@ var UpgradeTransactionRequest = class extends BaseTransactionRequest {
|
|
4073
4123
|
txBytesSize
|
4074
4124
|
});
|
4075
4125
|
}
|
4076
|
-
throw new
|
4126
|
+
throw new FuelError11(FuelError11.CODES.NOT_IMPLEMENTED, "Invalid upgrade purpose");
|
4077
4127
|
}
|
4078
4128
|
};
|
4079
4129
|
|
@@ -4082,9 +4132,12 @@ import { ZeroBytes32 as ZeroBytes328 } from "@fuel-ts/address/configs";
|
|
4082
4132
|
import { TransactionType as TransactionType6 } from "@fuel-ts/transactions";
|
4083
4133
|
import { arrayify as arrayify9, hexlify as hexlify13 } from "@fuel-ts/utils";
|
4084
4134
|
import { clone as clone7 } from "ramda";
|
4085
|
-
var UploadTransactionRequest = class extends BaseTransactionRequest {
|
4135
|
+
var UploadTransactionRequest = class _UploadTransactionRequest extends BaseTransactionRequest {
|
4136
|
+
static {
|
4137
|
+
__name(this, "UploadTransactionRequest");
|
4138
|
+
}
|
4086
4139
|
static from(obj) {
|
4087
|
-
if (obj instanceof
|
4140
|
+
if (obj instanceof _UploadTransactionRequest) {
|
4088
4141
|
return obj;
|
4089
4142
|
}
|
4090
4143
|
return new this(clone7(obj));
|
@@ -4185,12 +4238,15 @@ var UploadTransactionRequest = class extends BaseTransactionRequest {
|
|
4185
4238
|
|
4186
4239
|
// src/providers/transaction-request/types.ts
|
4187
4240
|
var AbstractScriptRequest = class {
|
4241
|
+
static {
|
4242
|
+
__name(this, "AbstractScriptRequest");
|
4243
|
+
}
|
4188
4244
|
};
|
4189
4245
|
|
4190
4246
|
// src/providers/transaction-request/utils.ts
|
4191
|
-
import { ErrorCode as ErrorCode9, FuelError as
|
4247
|
+
import { ErrorCode as ErrorCode9, FuelError as FuelError12 } from "@fuel-ts/errors";
|
4192
4248
|
import { TransactionType as TransactionType7 } from "@fuel-ts/transactions";
|
4193
|
-
var transactionRequestify = (obj) => {
|
4249
|
+
var transactionRequestify = /* @__PURE__ */ __name((obj) => {
|
4194
4250
|
if (obj instanceof ScriptTransactionRequest || obj instanceof CreateTransactionRequest || obj instanceof BlobTransactionRequest || obj instanceof UpgradeTransactionRequest || obj instanceof UploadTransactionRequest) {
|
4195
4251
|
return obj;
|
4196
4252
|
}
|
@@ -4212,27 +4268,30 @@ var transactionRequestify = (obj) => {
|
|
4212
4268
|
return UploadTransactionRequest.from(obj);
|
4213
4269
|
}
|
4214
4270
|
default: {
|
4215
|
-
throw new
|
4271
|
+
throw new FuelError12(
|
4216
4272
|
ErrorCode9.UNSUPPORTED_TRANSACTION_TYPE,
|
4217
4273
|
`Unsupported transaction type: ${type}.`
|
4218
4274
|
);
|
4219
4275
|
}
|
4220
4276
|
}
|
4221
|
-
};
|
4222
|
-
var isTransactionTypeScript = (request2) => request2.type === TransactionType7.Script;
|
4223
|
-
var isTransactionTypeCreate = (request2) => request2.type === TransactionType7.Create;
|
4224
|
-
var isTransactionTypeBlob = (request2) => request2.type === TransactionType7.Blob;
|
4225
|
-
var isTransactionTypeUpgrade = (request2) => request2.type === TransactionType7.Upgrade;
|
4226
|
-
var isTransactionTypeUpload = (request2) => request2.type === TransactionType7.Upload;
|
4277
|
+
}, "transactionRequestify");
|
4278
|
+
var isTransactionTypeScript = /* @__PURE__ */ __name((request2) => request2.type === TransactionType7.Script, "isTransactionTypeScript");
|
4279
|
+
var isTransactionTypeCreate = /* @__PURE__ */ __name((request2) => request2.type === TransactionType7.Create, "isTransactionTypeCreate");
|
4280
|
+
var isTransactionTypeBlob = /* @__PURE__ */ __name((request2) => request2.type === TransactionType7.Blob, "isTransactionTypeBlob");
|
4281
|
+
var isTransactionTypeUpgrade = /* @__PURE__ */ __name((request2) => request2.type === TransactionType7.Upgrade, "isTransactionTypeUpgrade");
|
4282
|
+
var isTransactionTypeUpload = /* @__PURE__ */ __name((request2) => request2.type === TransactionType7.Upload, "isTransactionTypeUpload");
|
4227
4283
|
|
4228
4284
|
// src/providers/resource-cache.ts
|
4229
4285
|
var cache = /* @__PURE__ */ new Map();
|
4230
4286
|
var ResourceCache = class {
|
4287
|
+
static {
|
4288
|
+
__name(this, "ResourceCache");
|
4289
|
+
}
|
4231
4290
|
ttl;
|
4232
4291
|
constructor(ttl) {
|
4233
4292
|
this.ttl = ttl;
|
4234
4293
|
if (typeof ttl !== "number" || this.ttl <= 0) {
|
4235
|
-
throw new
|
4294
|
+
throw new FuelError13(
|
4236
4295
|
ErrorCode10.INVALID_TTL,
|
4237
4296
|
`Invalid TTL: ${this.ttl}. Use a value greater than zero.`
|
4238
4297
|
);
|
@@ -4317,7 +4376,7 @@ var ResourceCache = class {
|
|
4317
4376
|
};
|
4318
4377
|
|
4319
4378
|
// src/providers/transaction-response/transaction-response.ts
|
4320
|
-
import { ErrorCode as ErrorCode14, FuelError as
|
4379
|
+
import { ErrorCode as ErrorCode14, FuelError as FuelError17 } from "@fuel-ts/errors";
|
4321
4380
|
import { bn as bn16 } from "@fuel-ts/math";
|
4322
4381
|
import { OutputType as OutputType8, TransactionCoder as TransactionCoder4, TxPointerCoder } from "@fuel-ts/transactions";
|
4323
4382
|
import { arrayify as arrayify11, assertUnreachable } from "@fuel-ts/utils";
|
@@ -4331,7 +4390,7 @@ import { DateTime, hexlify as hexlify15 } from "@fuel-ts/utils";
|
|
4331
4390
|
import { bn as bn12 } from "@fuel-ts/math";
|
4332
4391
|
import { PolicyType as PolicyType2, TransactionCoder as TransactionCoder3, TransactionType as TransactionType8 } from "@fuel-ts/transactions";
|
4333
4392
|
import { arrayify as arrayify10 } from "@fuel-ts/utils";
|
4334
|
-
var calculateTXFeeForSummary = (params) => {
|
4393
|
+
var calculateTXFeeForSummary = /* @__PURE__ */ __name((params) => {
|
4335
4394
|
const {
|
4336
4395
|
gasPrice,
|
4337
4396
|
rawPayload,
|
@@ -4391,43 +4450,51 @@ var calculateTXFeeForSummary = (params) => {
|
|
4391
4450
|
tip
|
4392
4451
|
});
|
4393
4452
|
return maxFee;
|
4394
|
-
};
|
4453
|
+
}, "calculateTXFeeForSummary");
|
4395
4454
|
|
4396
4455
|
// src/providers/transaction-summary/operations.ts
|
4397
4456
|
import { ZeroBytes32 as ZeroBytes329 } from "@fuel-ts/address/configs";
|
4398
|
-
import { ErrorCode as ErrorCode12, FuelError as
|
4457
|
+
import { ErrorCode as ErrorCode12, FuelError as FuelError15 } from "@fuel-ts/errors";
|
4399
4458
|
import { bn as bn13 } from "@fuel-ts/math";
|
4400
4459
|
import { ReceiptType as ReceiptType5, TransactionType as TransactionType9 } from "@fuel-ts/transactions";
|
4401
4460
|
|
4402
4461
|
// src/providers/transaction-summary/input.ts
|
4403
|
-
import { ErrorCode as ErrorCode11, FuelError as
|
4462
|
+
import { ErrorCode as ErrorCode11, FuelError as FuelError14 } from "@fuel-ts/errors";
|
4404
4463
|
import { BN } from "@fuel-ts/math";
|
4405
4464
|
import { InputType as InputType6 } from "@fuel-ts/transactions";
|
4406
4465
|
function getInputsByTypes(inputs, types) {
|
4407
4466
|
return inputs.filter((i) => types.includes(i.type));
|
4408
4467
|
}
|
4468
|
+
__name(getInputsByTypes, "getInputsByTypes");
|
4409
4469
|
function getInputsByType(inputs, type) {
|
4410
4470
|
return inputs.filter((i) => i.type === type);
|
4411
4471
|
}
|
4472
|
+
__name(getInputsByType, "getInputsByType");
|
4412
4473
|
function getInputsCoin(inputs) {
|
4413
4474
|
return getInputsByType(inputs, InputType6.Coin);
|
4414
4475
|
}
|
4476
|
+
__name(getInputsCoin, "getInputsCoin");
|
4415
4477
|
function getInputsMessage(inputs) {
|
4416
4478
|
return getInputsByType(inputs, InputType6.Message);
|
4417
4479
|
}
|
4480
|
+
__name(getInputsMessage, "getInputsMessage");
|
4418
4481
|
function getInputsCoinAndMessage(inputs) {
|
4419
4482
|
return getInputsByTypes(inputs, [InputType6.Coin, InputType6.Message]);
|
4420
4483
|
}
|
4484
|
+
__name(getInputsCoinAndMessage, "getInputsCoinAndMessage");
|
4421
4485
|
function isInputCoin(input) {
|
4422
4486
|
return input.type === InputType6.Coin;
|
4423
4487
|
}
|
4488
|
+
__name(isInputCoin, "isInputCoin");
|
4424
4489
|
function getInputsContract(inputs) {
|
4425
4490
|
return getInputsByType(inputs, InputType6.Contract);
|
4426
4491
|
}
|
4492
|
+
__name(getInputsContract, "getInputsContract");
|
4427
4493
|
function findCoinInput(inputs, assetId) {
|
4428
4494
|
const coinInputs = getInputsCoin(inputs);
|
4429
4495
|
return coinInputs.find((i) => i.assetId === assetId);
|
4430
4496
|
}
|
4497
|
+
__name(findCoinInput, "findCoinInput");
|
4431
4498
|
function aggregateInputsAmountsByAssetAndOwner(inputs, baseAssetId) {
|
4432
4499
|
const aggregated = /* @__PURE__ */ new Map();
|
4433
4500
|
getInputsCoinAndMessage(inputs).forEach((input) => {
|
@@ -4447,9 +4514,11 @@ function aggregateInputsAmountsByAssetAndOwner(inputs, baseAssetId) {
|
|
4447
4514
|
});
|
4448
4515
|
return aggregated;
|
4449
4516
|
}
|
4517
|
+
__name(aggregateInputsAmountsByAssetAndOwner, "aggregateInputsAmountsByAssetAndOwner");
|
4450
4518
|
function findMessageInput(inputs) {
|
4451
4519
|
return getInputsMessage(inputs)?.[0];
|
4452
4520
|
}
|
4521
|
+
__name(findMessageInput, "findMessageInput");
|
4453
4522
|
function getInputFromAssetId(inputs, assetId, isBaseAsset = false) {
|
4454
4523
|
const coinInput = findCoinInput(inputs, assetId);
|
4455
4524
|
if (coinInput) {
|
@@ -4460,6 +4529,7 @@ function getInputFromAssetId(inputs, assetId, isBaseAsset = false) {
|
|
4460
4529
|
}
|
4461
4530
|
return void 0;
|
4462
4531
|
}
|
4532
|
+
__name(getInputFromAssetId, "getInputFromAssetId");
|
4463
4533
|
function getInputContractFromIndex(inputs, inputIndex) {
|
4464
4534
|
if (inputIndex == null) {
|
4465
4535
|
return void 0;
|
@@ -4469,13 +4539,14 @@ function getInputContractFromIndex(inputs, inputIndex) {
|
|
4469
4539
|
return void 0;
|
4470
4540
|
}
|
4471
4541
|
if (contractInput.type !== InputType6.Contract) {
|
4472
|
-
throw new
|
4542
|
+
throw new FuelError14(
|
4473
4543
|
ErrorCode11.INVALID_TRANSACTION_INPUT,
|
4474
4544
|
`Contract input should be of type 'contract'.`
|
4475
4545
|
);
|
4476
4546
|
}
|
4477
4547
|
return contractInput;
|
4478
4548
|
}
|
4549
|
+
__name(getInputContractFromIndex, "getInputContractFromIndex");
|
4479
4550
|
function getInputAccountAddress(input) {
|
4480
4551
|
if (input.type === InputType6.Coin) {
|
4481
4552
|
return input.owner.toString();
|
@@ -4485,27 +4556,34 @@ function getInputAccountAddress(input) {
|
|
4485
4556
|
}
|
4486
4557
|
return "";
|
4487
4558
|
}
|
4559
|
+
__name(getInputAccountAddress, "getInputAccountAddress");
|
4488
4560
|
|
4489
4561
|
// src/providers/transaction-summary/output.ts
|
4490
4562
|
import { OutputType as OutputType7 } from "@fuel-ts/transactions";
|
4491
4563
|
function getOutputsByType(outputs, type) {
|
4492
4564
|
return outputs.filter((o) => o.type === type);
|
4493
4565
|
}
|
4566
|
+
__name(getOutputsByType, "getOutputsByType");
|
4494
4567
|
function getOutputsContractCreated(outputs) {
|
4495
4568
|
return getOutputsByType(outputs, OutputType7.ContractCreated);
|
4496
4569
|
}
|
4570
|
+
__name(getOutputsContractCreated, "getOutputsContractCreated");
|
4497
4571
|
function getOutputsCoin(outputs) {
|
4498
4572
|
return getOutputsByType(outputs, OutputType7.Coin);
|
4499
4573
|
}
|
4574
|
+
__name(getOutputsCoin, "getOutputsCoin");
|
4500
4575
|
function getOutputsChange(outputs) {
|
4501
4576
|
return getOutputsByType(outputs, OutputType7.Change);
|
4502
4577
|
}
|
4578
|
+
__name(getOutputsChange, "getOutputsChange");
|
4503
4579
|
function getOutputsContract(outputs) {
|
4504
4580
|
return getOutputsByType(outputs, OutputType7.Contract);
|
4505
4581
|
}
|
4582
|
+
__name(getOutputsContract, "getOutputsContract");
|
4506
4583
|
function getOutputsVariable(outputs) {
|
4507
4584
|
return getOutputsByType(outputs, OutputType7.Variable);
|
4508
4585
|
}
|
4586
|
+
__name(getOutputsVariable, "getOutputsVariable");
|
4509
4587
|
|
4510
4588
|
// src/providers/transaction-summary/types.ts
|
4511
4589
|
var TransactionTypeName = /* @__PURE__ */ ((TransactionTypeName2) => {
|
@@ -4548,6 +4626,7 @@ var ChainName = /* @__PURE__ */ ((ChainName2) => {
|
|
4548
4626
|
function getReceiptsByType(receipts, type) {
|
4549
4627
|
return (receipts ?? []).filter((r) => r.type === type);
|
4550
4628
|
}
|
4629
|
+
__name(getReceiptsByType, "getReceiptsByType");
|
4551
4630
|
function getTransactionTypeName(transactionType) {
|
4552
4631
|
switch (transactionType) {
|
4553
4632
|
case TransactionType9.Mint:
|
@@ -4563,43 +4642,54 @@ function getTransactionTypeName(transactionType) {
|
|
4563
4642
|
case TransactionType9.Upload:
|
4564
4643
|
return "Upload" /* Upload */;
|
4565
4644
|
default:
|
4566
|
-
throw new
|
4645
|
+
throw new FuelError15(
|
4567
4646
|
ErrorCode12.UNSUPPORTED_TRANSACTION_TYPE,
|
4568
4647
|
`Unsupported transaction type: ${transactionType}.`
|
4569
4648
|
);
|
4570
4649
|
}
|
4571
4650
|
}
|
4651
|
+
__name(getTransactionTypeName, "getTransactionTypeName");
|
4572
4652
|
function isType(transactionType, type) {
|
4573
4653
|
const txType = getTransactionTypeName(transactionType);
|
4574
4654
|
return txType === type;
|
4575
4655
|
}
|
4656
|
+
__name(isType, "isType");
|
4576
4657
|
function isTypeMint(transactionType) {
|
4577
4658
|
return isType(transactionType, "Mint" /* Mint */);
|
4578
4659
|
}
|
4660
|
+
__name(isTypeMint, "isTypeMint");
|
4579
4661
|
function isTypeCreate(transactionType) {
|
4580
4662
|
return isType(transactionType, "Create" /* Create */);
|
4581
4663
|
}
|
4664
|
+
__name(isTypeCreate, "isTypeCreate");
|
4582
4665
|
function isTypeScript(transactionType) {
|
4583
4666
|
return isType(transactionType, "Script" /* Script */);
|
4584
4667
|
}
|
4668
|
+
__name(isTypeScript, "isTypeScript");
|
4585
4669
|
function isTypeUpgrade(transactionType) {
|
4586
4670
|
return isType(transactionType, "Upgrade" /* Upgrade */);
|
4587
4671
|
}
|
4672
|
+
__name(isTypeUpgrade, "isTypeUpgrade");
|
4588
4673
|
function isTypeUpload(transactionType) {
|
4589
4674
|
return isType(transactionType, "Upload" /* Upload */);
|
4590
4675
|
}
|
4676
|
+
__name(isTypeUpload, "isTypeUpload");
|
4591
4677
|
function isTypeBlob(transactionType) {
|
4592
4678
|
return isType(transactionType, "Blob" /* Blob */);
|
4593
4679
|
}
|
4680
|
+
__name(isTypeBlob, "isTypeBlob");
|
4594
4681
|
function hasSameAssetId(a) {
|
4595
4682
|
return (b) => a.assetId === b.assetId;
|
4596
4683
|
}
|
4684
|
+
__name(hasSameAssetId, "hasSameAssetId");
|
4597
4685
|
function getReceiptsCall(receipts) {
|
4598
4686
|
return getReceiptsByType(receipts, ReceiptType5.Call);
|
4599
4687
|
}
|
4688
|
+
__name(getReceiptsCall, "getReceiptsCall");
|
4600
4689
|
function getReceiptsMessageOut(receipts) {
|
4601
4690
|
return getReceiptsByType(receipts, ReceiptType5.MessageOut);
|
4602
4691
|
}
|
4692
|
+
__name(getReceiptsMessageOut, "getReceiptsMessageOut");
|
4603
4693
|
function mergeAssets(op1, op2) {
|
4604
4694
|
const assets1 = op1.assetsSent || [];
|
4605
4695
|
const assets2 = op2.assetsSent || [];
|
@@ -4617,21 +4707,25 @@ function mergeAssets(op1, op2) {
|
|
4617
4707
|
});
|
4618
4708
|
return Array.from(assetMap.values());
|
4619
4709
|
}
|
4710
|
+
__name(mergeAssets, "mergeAssets");
|
4620
4711
|
function isSameOperation(a, b) {
|
4621
4712
|
return a.name === b.name && a.from?.address === b.from?.address && a.to?.address === b.to?.address && a.from?.type === b.from?.type && a.to?.type === b.to?.type;
|
4622
4713
|
}
|
4714
|
+
__name(isSameOperation, "isSameOperation");
|
4623
4715
|
function mergeAssetsSent(existing, toAdd) {
|
4624
4716
|
if (!toAdd.assetsSent?.length) {
|
4625
4717
|
return existing.assetsSent;
|
4626
4718
|
}
|
4627
4719
|
return existing.assetsSent?.length ? mergeAssets(existing, toAdd) : toAdd.assetsSent;
|
4628
4720
|
}
|
4721
|
+
__name(mergeAssetsSent, "mergeAssetsSent");
|
4629
4722
|
function mergeCalls(existing, toAdd) {
|
4630
4723
|
if (!toAdd.calls?.length) {
|
4631
4724
|
return existing.calls;
|
4632
4725
|
}
|
4633
4726
|
return [...existing.calls || [], ...toAdd.calls];
|
4634
4727
|
}
|
4728
|
+
__name(mergeCalls, "mergeCalls");
|
4635
4729
|
function mergeOperations(existing, toAdd) {
|
4636
4730
|
return {
|
4637
4731
|
...existing,
|
@@ -4643,6 +4737,7 @@ function mergeOperations(existing, toAdd) {
|
|
4643
4737
|
]
|
4644
4738
|
};
|
4645
4739
|
}
|
4740
|
+
__name(mergeOperations, "mergeOperations");
|
4646
4741
|
function addOperation(operations, toAdd) {
|
4647
4742
|
const existingIndex = operations.findIndex((op) => isSameOperation(op, toAdd));
|
4648
4743
|
if (existingIndex === -1) {
|
@@ -4650,9 +4745,11 @@ function addOperation(operations, toAdd) {
|
|
4650
4745
|
}
|
4651
4746
|
return operations.map((op, index) => index === existingIndex ? mergeOperations(op, toAdd) : op);
|
4652
4747
|
}
|
4748
|
+
__name(addOperation, "addOperation");
|
4653
4749
|
function getReceiptsTransferOut(receipts) {
|
4654
4750
|
return getReceiptsByType(receipts, ReceiptType5.TransferOut);
|
4655
4751
|
}
|
4752
|
+
__name(getReceiptsTransferOut, "getReceiptsTransferOut");
|
4656
4753
|
function getWithdrawFromFuelOperations({
|
4657
4754
|
inputs,
|
4658
4755
|
receipts,
|
@@ -4691,6 +4788,7 @@ function getWithdrawFromFuelOperations({
|
|
4691
4788
|
);
|
4692
4789
|
return withdrawFromFuelOperations;
|
4693
4790
|
}
|
4791
|
+
__name(getWithdrawFromFuelOperations, "getWithdrawFromFuelOperations");
|
4694
4792
|
function getContractCalls(contractInput, abiMap, _receipt, _rawPayload, _maxInputs) {
|
4695
4793
|
const abi = abiMap?.[contractInput.contractID];
|
4696
4794
|
if (!abi) {
|
@@ -4698,6 +4796,7 @@ function getContractCalls(contractInput, abiMap, _receipt, _rawPayload, _maxInpu
|
|
4698
4796
|
}
|
4699
4797
|
return [];
|
4700
4798
|
}
|
4799
|
+
__name(getContractCalls, "getContractCalls");
|
4701
4800
|
function getAssetsSent(receipt) {
|
4702
4801
|
return receipt.amount?.isZero() ? void 0 : [
|
4703
4802
|
{
|
@@ -4706,6 +4805,7 @@ function getAssetsSent(receipt) {
|
|
4706
4805
|
}
|
4707
4806
|
];
|
4708
4807
|
}
|
4808
|
+
__name(getAssetsSent, "getAssetsSent");
|
4709
4809
|
function processCallReceipt(receipt, contractInput, inputs, abiMap, rawPayload, maxInputs, baseAssetId) {
|
4710
4810
|
const assetId = receipt.assetId === ZeroBytes329 ? baseAssetId : receipt.assetId;
|
4711
4811
|
const input = getInputFromAssetId(inputs, assetId, assetId === baseAssetId);
|
@@ -4731,6 +4831,7 @@ function processCallReceipt(receipt, contractInput, inputs, abiMap, rawPayload,
|
|
4731
4831
|
}
|
4732
4832
|
];
|
4733
4833
|
}
|
4834
|
+
__name(processCallReceipt, "processCallReceipt");
|
4734
4835
|
function getContractCallOperations({
|
4735
4836
|
inputs,
|
4736
4837
|
outputs,
|
@@ -4760,6 +4861,7 @@ function getContractCallOperations({
|
|
4760
4861
|
);
|
4761
4862
|
});
|
4762
4863
|
}
|
4864
|
+
__name(getContractCallOperations, "getContractCallOperations");
|
4763
4865
|
function extractTransferOperationFromReceipt(receipt, contractInputs, changeOutputs) {
|
4764
4866
|
const { to: toAddress, assetId, amount } = receipt;
|
4765
4867
|
let { id: fromAddress } = receipt;
|
@@ -4788,6 +4890,7 @@ function extractTransferOperationFromReceipt(receipt, contractInputs, changeOutp
|
|
4788
4890
|
receipts: [receipt]
|
4789
4891
|
};
|
4790
4892
|
}
|
4893
|
+
__name(extractTransferOperationFromReceipt, "extractTransferOperationFromReceipt");
|
4791
4894
|
function getTransferOperations({
|
4792
4895
|
inputs,
|
4793
4896
|
outputs,
|
@@ -4842,6 +4945,7 @@ function getTransferOperations({
|
|
4842
4945
|
});
|
4843
4946
|
return operations;
|
4844
4947
|
}
|
4948
|
+
__name(getTransferOperations, "getTransferOperations");
|
4845
4949
|
function getPayProducerOperations(outputs) {
|
4846
4950
|
const coinOutputs = getOutputsCoin(outputs);
|
4847
4951
|
const payProducerOperations = coinOutputs.reduce((prev, output) => {
|
@@ -4866,6 +4970,7 @@ function getPayProducerOperations(outputs) {
|
|
4866
4970
|
}, []);
|
4867
4971
|
return payProducerOperations;
|
4868
4972
|
}
|
4973
|
+
__name(getPayProducerOperations, "getPayProducerOperations");
|
4869
4974
|
function getContractCreatedOperations({ inputs, outputs }) {
|
4870
4975
|
const contractCreatedOutputs = getOutputsContractCreated(outputs);
|
4871
4976
|
const input = getInputsCoinAndMessage(inputs)[0];
|
@@ -4886,6 +4991,7 @@ function getContractCreatedOperations({ inputs, outputs }) {
|
|
4886
4991
|
}, []);
|
4887
4992
|
return contractCreatedOperations;
|
4888
4993
|
}
|
4994
|
+
__name(getContractCreatedOperations, "getContractCreatedOperations");
|
4889
4995
|
function getOperations({
|
4890
4996
|
transactionType,
|
4891
4997
|
inputs,
|
@@ -4916,11 +5022,12 @@ function getOperations({
|
|
4916
5022
|
}
|
4917
5023
|
return [...getPayProducerOperations(outputs)];
|
4918
5024
|
}
|
5025
|
+
__name(getOperations, "getOperations");
|
4919
5026
|
|
4920
5027
|
// src/providers/transaction-summary/receipt.ts
|
4921
5028
|
import { ReceiptType as ReceiptType6 } from "@fuel-ts/transactions";
|
4922
|
-
var processGqlReceipt = (gqlReceipt) => deserializeReceipt(gqlReceipt);
|
4923
|
-
var extractMintedAssetsFromReceipts = (receipts) => {
|
5029
|
+
var processGqlReceipt = /* @__PURE__ */ __name((gqlReceipt) => deserializeReceipt(gqlReceipt), "processGqlReceipt");
|
5030
|
+
var extractMintedAssetsFromReceipts = /* @__PURE__ */ __name((receipts) => {
|
4924
5031
|
const mintedAssets = [];
|
4925
5032
|
receipts.forEach((receipt) => {
|
4926
5033
|
if (receipt.type === ReceiptType6.Mint) {
|
@@ -4933,8 +5040,8 @@ var extractMintedAssetsFromReceipts = (receipts) => {
|
|
4933
5040
|
}
|
4934
5041
|
});
|
4935
5042
|
return mintedAssets;
|
4936
|
-
};
|
4937
|
-
var extractBurnedAssetsFromReceipts = (receipts) => {
|
5043
|
+
}, "extractMintedAssetsFromReceipts");
|
5044
|
+
var extractBurnedAssetsFromReceipts = /* @__PURE__ */ __name((receipts) => {
|
4938
5045
|
const burnedAssets = [];
|
4939
5046
|
receipts.forEach((receipt) => {
|
4940
5047
|
if (receipt.type === ReceiptType6.Burn) {
|
@@ -4947,12 +5054,12 @@ var extractBurnedAssetsFromReceipts = (receipts) => {
|
|
4947
5054
|
}
|
4948
5055
|
});
|
4949
5056
|
return burnedAssets;
|
4950
|
-
};
|
5057
|
+
}, "extractBurnedAssetsFromReceipts");
|
4951
5058
|
|
4952
5059
|
// src/providers/transaction-summary/status.ts
|
4953
|
-
import { ErrorCode as ErrorCode13, FuelError as
|
5060
|
+
import { ErrorCode as ErrorCode13, FuelError as FuelError16 } from "@fuel-ts/errors";
|
4954
5061
|
import { bn as bn14 } from "@fuel-ts/math";
|
4955
|
-
var getTransactionStatusName = (gqlStatus) => {
|
5062
|
+
var getTransactionStatusName = /* @__PURE__ */ __name((gqlStatus) => {
|
4956
5063
|
switch (gqlStatus) {
|
4957
5064
|
case "FailureStatus":
|
4958
5065
|
return "failure" /* failure */;
|
@@ -4963,13 +5070,13 @@ var getTransactionStatusName = (gqlStatus) => {
|
|
4963
5070
|
case "SqueezedOutStatus":
|
4964
5071
|
return "squeezedout" /* squeezedout */;
|
4965
5072
|
default:
|
4966
|
-
throw new
|
5073
|
+
throw new FuelError16(
|
4967
5074
|
ErrorCode13.INVALID_TRANSACTION_STATUS,
|
4968
5075
|
`Invalid transaction status: ${gqlStatus}.`
|
4969
5076
|
);
|
4970
5077
|
}
|
4971
|
-
};
|
4972
|
-
var processGraphqlStatus = (gqlTransactionStatus) => {
|
5078
|
+
}, "getTransactionStatusName");
|
5079
|
+
var processGraphqlStatus = /* @__PURE__ */ __name((gqlTransactionStatus) => {
|
4973
5080
|
let time;
|
4974
5081
|
let blockId;
|
4975
5082
|
let status;
|
@@ -5013,8 +5120,8 @@ var processGraphqlStatus = (gqlTransactionStatus) => {
|
|
5013
5120
|
isStatusPending
|
5014
5121
|
};
|
5015
5122
|
return processedGraphqlStatus;
|
5016
|
-
};
|
5017
|
-
var getTotalFeeFromStatus = (status) => status && "totalFee" in status ? bn14(status.totalFee) : void 0;
|
5123
|
+
}, "processGraphqlStatus");
|
5124
|
+
var getTotalFeeFromStatus = /* @__PURE__ */ __name((status) => status && "totalFee" in status ? bn14(status.totalFee) : void 0, "getTotalFeeFromStatus");
|
5018
5125
|
|
5019
5126
|
// src/providers/transaction-summary/assemble-transaction-summary.ts
|
5020
5127
|
function assembleTransactionSummary(params) {
|
@@ -5094,21 +5201,35 @@ function assembleTransactionSummary(params) {
|
|
5094
5201
|
};
|
5095
5202
|
return transactionSummary;
|
5096
5203
|
}
|
5204
|
+
__name(assembleTransactionSummary, "assembleTransactionSummary");
|
5097
5205
|
|
5098
5206
|
// src/providers/transaction-response/getDecodedLogs.ts
|
5099
5207
|
import { Interface as Interface2, BigNumberCoder } from "@fuel-ts/abi-coder";
|
5208
|
+
import { ZeroBytes32 as ZeroBytes3210 } from "@fuel-ts/address/configs";
|
5100
5209
|
import { ReceiptType as ReceiptType7 } from "@fuel-ts/transactions";
|
5101
5210
|
function getDecodedLogs(receipts, mainAbi, externalAbis = {}) {
|
5211
|
+
let mainContract = "";
|
5212
|
+
if (mainAbi.programType === "contract") {
|
5213
|
+
const firstCallReceipt = receipts.find(
|
5214
|
+
(r) => r.type === ReceiptType7.Call && r.id === ZeroBytes3210
|
5215
|
+
);
|
5216
|
+
mainContract = firstCallReceipt.to;
|
5217
|
+
}
|
5102
5218
|
return receipts.reduce((logs, receipt) => {
|
5103
5219
|
if (receipt.type === ReceiptType7.LogData || receipt.type === ReceiptType7.Log) {
|
5104
|
-
const
|
5105
|
-
const
|
5106
|
-
|
5107
|
-
|
5220
|
+
const isLogFromMainAbi = receipt.id === ZeroBytes3210 || mainContract === receipt.id;
|
5221
|
+
const isDecodable = isLogFromMainAbi || externalAbis[receipt.id];
|
5222
|
+
if (isDecodable) {
|
5223
|
+
const interfaceToUse = isLogFromMainAbi ? new Interface2(mainAbi) : new Interface2(externalAbis[receipt.id]);
|
5224
|
+
const data = receipt.type === ReceiptType7.Log ? new BigNumberCoder("u64").encode(receipt.ra) : receipt.data;
|
5225
|
+
const [decodedLog] = interfaceToUse.decodeLog(data, receipt.rb.toString());
|
5226
|
+
logs.push(decodedLog);
|
5227
|
+
}
|
5108
5228
|
}
|
5109
5229
|
return logs;
|
5110
5230
|
}, []);
|
5111
5231
|
}
|
5232
|
+
__name(getDecodedLogs, "getDecodedLogs");
|
5112
5233
|
|
5113
5234
|
// src/providers/transaction-response/transaction-response.ts
|
5114
5235
|
function mapGqlOutputsToTxOutputs(outputs) {
|
@@ -5141,7 +5262,8 @@ function mapGqlOutputsToTxOutputs(outputs) {
|
|
5141
5262
|
}
|
5142
5263
|
});
|
5143
5264
|
}
|
5144
|
-
|
5265
|
+
__name(mapGqlOutputsToTxOutputs, "mapGqlOutputsToTxOutputs");
|
5266
|
+
var TransactionResponse = class _TransactionResponse {
|
5145
5267
|
/**
|
5146
5268
|
* Constructor for `TransactionResponse`.
|
5147
5269
|
*
|
@@ -5156,6 +5278,9 @@ var TransactionResponse = class {
|
|
5156
5278
|
this.request = typeof tx === "string" ? void 0 : tx;
|
5157
5279
|
this.waitForResult = this.waitForResult.bind(this);
|
5158
5280
|
}
|
5281
|
+
static {
|
5282
|
+
__name(this, "TransactionResponse");
|
5283
|
+
}
|
5159
5284
|
/** Transaction ID */
|
5160
5285
|
id;
|
5161
5286
|
/** Current provider */
|
@@ -5177,7 +5302,7 @@ var TransactionResponse = class {
|
|
5177
5302
|
*/
|
5178
5303
|
static async create(id, provider, abis) {
|
5179
5304
|
const chainId = await provider.getChainId();
|
5180
|
-
const response = new
|
5305
|
+
const response = new _TransactionResponse(id, provider, chainId, abis);
|
5181
5306
|
await response.fetch();
|
5182
5307
|
return response;
|
5183
5308
|
}
|
@@ -5309,7 +5434,7 @@ var TransactionResponse = class {
|
|
5309
5434
|
this.status = statusChange;
|
5310
5435
|
if (statusChange.type === "SqueezedOutStatus") {
|
5311
5436
|
this.unsetResourceCache();
|
5312
|
-
throw new
|
5437
|
+
throw new FuelError17(
|
5313
5438
|
ErrorCode14.TRANSACTION_SQUEEZED_OUT,
|
5314
5439
|
`Transaction Squeezed Out with reason: ${statusChange.reason}`
|
5315
5440
|
);
|
@@ -5394,6 +5519,7 @@ function getWaitDelay(options, retryAttemptNum) {
|
|
5394
5519
|
return 2 ** (retryAttemptNum - 1) * duration;
|
5395
5520
|
}
|
5396
5521
|
}
|
5522
|
+
__name(getWaitDelay, "getWaitDelay");
|
5397
5523
|
function autoRetryFetch(fetchFn, options, retryAttemptNum = 0) {
|
5398
5524
|
if (options === void 0) {
|
5399
5525
|
return fetchFn;
|
@@ -5416,9 +5542,10 @@ function autoRetryFetch(fetchFn, options, retryAttemptNum = 0) {
|
|
5416
5542
|
}
|
5417
5543
|
};
|
5418
5544
|
}
|
5545
|
+
__name(autoRetryFetch, "autoRetryFetch");
|
5419
5546
|
|
5420
5547
|
// src/providers/utils/helpers.ts
|
5421
|
-
var adjustResourcesToExclude = (params) => {
|
5548
|
+
var adjustResourcesToExclude = /* @__PURE__ */ __name((params) => {
|
5422
5549
|
const { userInput, cached, maxInputs } = params;
|
5423
5550
|
const final = { ...userInput };
|
5424
5551
|
let total = final.utxos.length + final.messages.length;
|
@@ -5431,33 +5558,33 @@ var adjustResourcesToExclude = (params) => {
|
|
5431
5558
|
final.messages = [...final.messages, ...cached.messages.slice(0, maxInputs - total)];
|
5432
5559
|
}
|
5433
5560
|
return final;
|
5434
|
-
};
|
5561
|
+
}, "adjustResourcesToExclude");
|
5435
5562
|
|
5436
5563
|
// src/providers/utils/validate-pagination-args.ts
|
5437
|
-
import { FuelError as
|
5438
|
-
var validatePaginationArgs = (params) => {
|
5564
|
+
import { FuelError as FuelError18, ErrorCode as ErrorCode15 } from "@fuel-ts/errors";
|
5565
|
+
var validatePaginationArgs = /* @__PURE__ */ __name((params) => {
|
5439
5566
|
const { paginationLimit, inputArgs = {} } = params;
|
5440
5567
|
const { first, last, after, before } = inputArgs;
|
5441
5568
|
if (after && before) {
|
5442
|
-
throw new
|
5569
|
+
throw new FuelError18(
|
5443
5570
|
ErrorCode15.INVALID_INPUT_PARAMETERS,
|
5444
5571
|
'Pagination arguments "after" and "before" cannot be used together'
|
5445
5572
|
);
|
5446
5573
|
}
|
5447
5574
|
if ((first || 0) > paginationLimit || (last || 0) > paginationLimit) {
|
5448
|
-
throw new
|
5575
|
+
throw new FuelError18(
|
5449
5576
|
ErrorCode15.INVALID_INPUT_PARAMETERS,
|
5450
5577
|
`Pagination limit for this query cannot exceed ${paginationLimit} items`
|
5451
5578
|
);
|
5452
5579
|
}
|
5453
5580
|
if (first && before) {
|
5454
|
-
throw new
|
5581
|
+
throw new FuelError18(
|
5455
5582
|
ErrorCode15.INVALID_INPUT_PARAMETERS,
|
5456
5583
|
'The use of pagination argument "first" with "before" is not supported'
|
5457
5584
|
);
|
5458
5585
|
}
|
5459
5586
|
if (last && after) {
|
5460
|
-
throw new
|
5587
|
+
throw new FuelError18(
|
5461
5588
|
ErrorCode15.INVALID_INPUT_PARAMETERS,
|
5462
5589
|
'The use of pagination argument "last" with "after" is not supported'
|
5463
5590
|
);
|
@@ -5466,18 +5593,71 @@ var validatePaginationArgs = (params) => {
|
|
5466
5593
|
inputArgs.first = paginationLimit;
|
5467
5594
|
}
|
5468
5595
|
return inputArgs;
|
5469
|
-
};
|
5596
|
+
}, "validatePaginationArgs");
|
5470
5597
|
|
5471
5598
|
// src/providers/provider.ts
|
5472
5599
|
var MAX_RETRIES = 10;
|
5473
5600
|
var RESOURCES_PAGE_SIZE_LIMIT = 512;
|
5474
5601
|
var TRANSACTIONS_PAGE_SIZE_LIMIT = 60;
|
5475
5602
|
var BALANCES_PAGE_SIZE_LIMIT = 100;
|
5603
|
+
var NON_PAGINATED_BALANCES_SIZE = 1e4;
|
5476
5604
|
var BLOCKS_PAGE_SIZE_LIMIT = 5;
|
5477
5605
|
var DEFAULT_RESOURCE_CACHE_TTL = 2e4;
|
5478
5606
|
var GAS_USED_MODIFIER = 1.2;
|
5479
|
-
var
|
5480
|
-
|
5607
|
+
var Provider = class _Provider {
|
5608
|
+
static {
|
5609
|
+
__name(this, "Provider");
|
5610
|
+
}
|
5611
|
+
operations;
|
5612
|
+
cache;
|
5613
|
+
/** @hidden */
|
5614
|
+
static clearChainAndNodeCaches() {
|
5615
|
+
_Provider.inflightFetchChainAndNodeInfoRequests = {};
|
5616
|
+
_Provider.nodeInfoCache = {};
|
5617
|
+
_Provider.chainInfoCache = {};
|
5618
|
+
}
|
5619
|
+
/** @hidden */
|
5620
|
+
url;
|
5621
|
+
/** @hidden */
|
5622
|
+
urlWithoutAuth;
|
5623
|
+
/** @hidden */
|
5624
|
+
static inflightFetchChainAndNodeInfoRequests = {};
|
5625
|
+
/** @hidden */
|
5626
|
+
static chainInfoCache = {};
|
5627
|
+
/** @hidden */
|
5628
|
+
static nodeInfoCache = {};
|
5629
|
+
/** @hidden */
|
5630
|
+
static incompatibleNodeVersionMessage = "";
|
5631
|
+
/** @hidden */
|
5632
|
+
consensusParametersTimestamp;
|
5633
|
+
options = {
|
5634
|
+
timeout: void 0,
|
5635
|
+
resourceCacheTTL: void 0,
|
5636
|
+
fetch: void 0,
|
5637
|
+
retryOptions: void 0,
|
5638
|
+
headers: void 0,
|
5639
|
+
cache: void 0
|
5640
|
+
};
|
5641
|
+
/**
|
5642
|
+
* @hidden
|
5643
|
+
*/
|
5644
|
+
static getFetchFn(options) {
|
5645
|
+
const { retryOptions, timeout, headers } = options;
|
5646
|
+
return autoRetryFetch(async (...args) => {
|
5647
|
+
const url = args[0];
|
5648
|
+
const request2 = args[1];
|
5649
|
+
const signal = timeout ? AbortSignal.timeout(timeout) : void 0;
|
5650
|
+
let fullRequest = {
|
5651
|
+
...request2,
|
5652
|
+
signal,
|
5653
|
+
headers: { ...request2?.headers, ...headers }
|
5654
|
+
};
|
5655
|
+
if (options.requestMiddleware) {
|
5656
|
+
fullRequest = await options.requestMiddleware(fullRequest);
|
5657
|
+
}
|
5658
|
+
return options.fetch ? options.fetch(url, fullRequest, options) : fetch(url, fullRequest);
|
5659
|
+
}, retryOptions);
|
5660
|
+
}
|
5481
5661
|
/**
|
5482
5662
|
* Constructor to initialize a Provider.
|
5483
5663
|
*
|
@@ -5486,31 +5666,6 @@ var _Provider = class {
|
|
5486
5666
|
* @hidden
|
5487
5667
|
*/
|
5488
5668
|
constructor(url, options = {}) {
|
5489
|
-
/**
|
5490
|
-
* @hidden
|
5491
|
-
*/
|
5492
|
-
__privateAdd(this, _cacheInputs);
|
5493
|
-
__publicField(this, "operations");
|
5494
|
-
__publicField(this, "cache");
|
5495
|
-
/** @hidden */
|
5496
|
-
__publicField(this, "url");
|
5497
|
-
/** @hidden */
|
5498
|
-
__publicField(this, "urlWithoutAuth");
|
5499
|
-
/** @hidden */
|
5500
|
-
__publicField(this, "features", {
|
5501
|
-
balancePagination: false,
|
5502
|
-
amount128: false
|
5503
|
-
});
|
5504
|
-
/** @hidden */
|
5505
|
-
__publicField(this, "consensusParametersTimestamp");
|
5506
|
-
__publicField(this, "options", {
|
5507
|
-
timeout: void 0,
|
5508
|
-
resourceCacheTTL: void 0,
|
5509
|
-
fetch: void 0,
|
5510
|
-
retryOptions: void 0,
|
5511
|
-
headers: void 0,
|
5512
|
-
cache: void 0
|
5513
|
-
});
|
5514
5669
|
const { url: rawUrl, urlWithoutAuth, headers: authHeaders } = _Provider.extractBasicAuth(url);
|
5515
5670
|
this.url = rawUrl;
|
5516
5671
|
this.urlWithoutAuth = urlWithoutAuth;
|
@@ -5540,37 +5695,12 @@ var _Provider = class {
|
|
5540
5695
|
this.cache = new ResourceCache(DEFAULT_RESOURCE_CACHE_TTL);
|
5541
5696
|
}
|
5542
5697
|
}
|
5543
|
-
/** @hidden */
|
5544
|
-
static clearChainAndNodeCaches() {
|
5545
|
-
_Provider.nodeInfoCache = {};
|
5546
|
-
_Provider.chainInfoCache = {};
|
5547
|
-
}
|
5548
|
-
/**
|
5549
|
-
* @hidden
|
5550
|
-
*/
|
5551
|
-
static getFetchFn(options) {
|
5552
|
-
const { retryOptions, timeout, headers } = options;
|
5553
|
-
return autoRetryFetch(async (...args) => {
|
5554
|
-
const url = args[0];
|
5555
|
-
const request2 = args[1];
|
5556
|
-
const signal = timeout ? AbortSignal.timeout(timeout) : void 0;
|
5557
|
-
let fullRequest = {
|
5558
|
-
...request2,
|
5559
|
-
signal,
|
5560
|
-
headers: { ...request2?.headers, ...headers }
|
5561
|
-
};
|
5562
|
-
if (options.requestMiddleware) {
|
5563
|
-
fullRequest = await options.requestMiddleware(fullRequest);
|
5564
|
-
}
|
5565
|
-
return options.fetch ? options.fetch(url, fullRequest, options) : fetch(url, fullRequest);
|
5566
|
-
}, retryOptions);
|
5567
|
-
}
|
5568
5698
|
static extractBasicAuth(url) {
|
5569
5699
|
let parsedUrl;
|
5570
5700
|
try {
|
5571
5701
|
parsedUrl = new URL(url);
|
5572
5702
|
} catch (error) {
|
5573
|
-
throw new
|
5703
|
+
throw new FuelError19(FuelError19.CODES.INVALID_URL, "Invalid URL provided.", { url }, error);
|
5574
5704
|
}
|
5575
5705
|
const username = parsedUrl.username;
|
5576
5706
|
const password = parsedUrl.password;
|
@@ -5588,8 +5718,7 @@ var _Provider = class {
|
|
5588
5718
|
* Initialize Provider async stuff
|
5589
5719
|
*/
|
5590
5720
|
async init() {
|
5591
|
-
|
5592
|
-
this.setupFeatures(nodeInfo.nodeVersion);
|
5721
|
+
await this.fetchChainAndNodeInfo();
|
5593
5722
|
return this;
|
5594
5723
|
}
|
5595
5724
|
/**
|
@@ -5659,13 +5788,24 @@ var _Provider = class {
|
|
5659
5788
|
throw new Error(`Jumps to the catch block and re-fetch`);
|
5660
5789
|
}
|
5661
5790
|
} catch (_err) {
|
5791
|
+
const inflightRequest = _Provider.inflightFetchChainAndNodeInfoRequests[this.urlWithoutAuth];
|
5792
|
+
if (inflightRequest) {
|
5793
|
+
const now2 = await inflightRequest;
|
5794
|
+
this.consensusParametersTimestamp = now2;
|
5795
|
+
return this.fetchChainAndNodeInfo();
|
5796
|
+
}
|
5797
|
+
const { promise, resolve } = deferPromise();
|
5798
|
+
_Provider.inflightFetchChainAndNodeInfoRequests[this.urlWithoutAuth] = promise;
|
5662
5799
|
const data = await this.operations.getChainAndNodeInfo();
|
5663
5800
|
nodeInfo = deserializeNodeInfo(data.nodeInfo);
|
5664
|
-
_Provider.setIncompatibleNodeVersionMessage(nodeInfo);
|
5665
5801
|
chain = deserializeChain(data.chain);
|
5802
|
+
_Provider.setIncompatibleNodeVersionMessage(nodeInfo);
|
5666
5803
|
_Provider.chainInfoCache[this.urlWithoutAuth] = chain;
|
5667
5804
|
_Provider.nodeInfoCache[this.urlWithoutAuth] = nodeInfo;
|
5668
|
-
|
5805
|
+
const now = Date.now();
|
5806
|
+
this.consensusParametersTimestamp = now;
|
5807
|
+
resolve(now);
|
5808
|
+
delete _Provider.inflightFetchChainAndNodeInfoRequests[this.urlWithoutAuth];
|
5669
5809
|
}
|
5670
5810
|
return {
|
5671
5811
|
chain,
|
@@ -5695,8 +5835,8 @@ var _Provider = class {
|
|
5695
5835
|
createOperations() {
|
5696
5836
|
const fetchFn = _Provider.getFetchFn(this.options);
|
5697
5837
|
const gqlClient = new GraphQLClient(this.urlWithoutAuth, {
|
5698
|
-
fetch: (input, requestInit) => fetchFn(input.toString(), requestInit || {}, this.options),
|
5699
|
-
responseMiddleware: (response) => {
|
5838
|
+
fetch: /* @__PURE__ */ __name((input, requestInit) => fetchFn(input.toString(), requestInit || {}, this.options), "fetch"),
|
5839
|
+
responseMiddleware: /* @__PURE__ */ __name((response) => {
|
5700
5840
|
if ("response" in response) {
|
5701
5841
|
const graphQlResponse = response.response;
|
5702
5842
|
assertGqlResponseHasNoErrors(
|
@@ -5704,22 +5844,22 @@ var _Provider = class {
|
|
5704
5844
|
_Provider.incompatibleNodeVersionMessage
|
5705
5845
|
);
|
5706
5846
|
}
|
5707
|
-
}
|
5847
|
+
}, "responseMiddleware")
|
5708
5848
|
});
|
5709
|
-
const executeQuery = (query, vars) => {
|
5849
|
+
const executeQuery = /* @__PURE__ */ __name((query, vars) => {
|
5710
5850
|
const opDefinition = query.definitions.find((x) => x.kind === "OperationDefinition");
|
5711
5851
|
const isSubscription = opDefinition?.operation === "subscription";
|
5712
5852
|
if (isSubscription) {
|
5713
5853
|
return FuelGraphqlSubscriber.create({
|
5714
5854
|
url: this.urlWithoutAuth,
|
5715
5855
|
query,
|
5716
|
-
fetchFn: (url, requestInit) => fetchFn(url, requestInit, this.options),
|
5856
|
+
fetchFn: /* @__PURE__ */ __name((url, requestInit) => fetchFn(url, requestInit, this.options), "fetchFn"),
|
5717
5857
|
variables: vars
|
5718
5858
|
});
|
5719
5859
|
}
|
5720
5860
|
return gqlClient.request(query, vars);
|
5721
|
-
};
|
5722
|
-
const customOperations = (requester) => ({
|
5861
|
+
}, "executeQuery");
|
5862
|
+
const customOperations = /* @__PURE__ */ __name((requester) => ({
|
5723
5863
|
getBlobs(variables) {
|
5724
5864
|
const queryParams = variables.blobIds.map((_, i) => `$blobId${i}: BlobId!`).join(", ");
|
5725
5865
|
const blobParams = variables.blobIds.map((_, i) => `blob${i}: blob(id: $blobId${i}) { id }`).join("\n");
|
@@ -5737,18 +5877,9 @@ var _Provider = class {
|
|
5737
5877
|
`;
|
5738
5878
|
return requester(document2, updatedVariables);
|
5739
5879
|
}
|
5740
|
-
});
|
5880
|
+
}), "customOperations");
|
5741
5881
|
return { ...getSdk(executeQuery), ...customOperations(executeQuery) };
|
5742
5882
|
}
|
5743
|
-
/**
|
5744
|
-
* @hidden
|
5745
|
-
*/
|
5746
|
-
setupFeatures(nodeVersion) {
|
5747
|
-
if (gte(nodeVersion, "0.41.0")) {
|
5748
|
-
this.features.balancePagination = true;
|
5749
|
-
this.features.amount128 = true;
|
5750
|
-
}
|
5751
|
-
}
|
5752
5883
|
/**
|
5753
5884
|
* Returns the version of the connected node.
|
5754
5885
|
*
|
@@ -5825,6 +5956,13 @@ var _Provider = class {
|
|
5825
5956
|
* @returns A promise that resolves to an object containing the asset details.
|
5826
5957
|
*/
|
5827
5958
|
async getAssetDetails(assetId) {
|
5959
|
+
const { assetMetadata } = await this.getNodeFeatures();
|
5960
|
+
if (!assetMetadata) {
|
5961
|
+
throw new FuelError19(
|
5962
|
+
ErrorCode16.UNSUPPORTED_FEATURE,
|
5963
|
+
"The current node does not supports fetching asset details"
|
5964
|
+
);
|
5965
|
+
}
|
5828
5966
|
const { assetDetails } = await this.operations.getAssetDetails({ assetId });
|
5829
5967
|
const { contractId, subId, totalSupply } = assetDetails;
|
5830
5968
|
return {
|
@@ -5833,6 +5971,15 @@ var _Provider = class {
|
|
5833
5971
|
totalSupply: bn17(totalSupply)
|
5834
5972
|
};
|
5835
5973
|
}
|
5974
|
+
/**
|
5975
|
+
* @hidden
|
5976
|
+
*/
|
5977
|
+
#cacheInputs(inputs, transactionId) {
|
5978
|
+
if (!this.cache) {
|
5979
|
+
return;
|
5980
|
+
}
|
5981
|
+
this.cache.set(transactionId, inputs);
|
5982
|
+
}
|
5836
5983
|
/**
|
5837
5984
|
* @hidden
|
5838
5985
|
*/
|
@@ -5843,13 +5990,13 @@ var _Provider = class {
|
|
5843
5990
|
}
|
5844
5991
|
} = await this.getChain();
|
5845
5992
|
if (bn17(tx.inputs.length).gt(maxInputs)) {
|
5846
|
-
throw new
|
5993
|
+
throw new FuelError19(
|
5847
5994
|
ErrorCode16.MAX_INPUTS_EXCEEDED,
|
5848
5995
|
`The transaction exceeds the maximum allowed number of inputs. Tx inputs: ${tx.inputs.length}, max inputs: ${maxInputs}`
|
5849
5996
|
);
|
5850
5997
|
}
|
5851
5998
|
if (bn17(tx.outputs.length).gt(maxOutputs)) {
|
5852
|
-
throw new
|
5999
|
+
throw new FuelError19(
|
5853
6000
|
ErrorCode16.MAX_OUTPUTS_EXCEEDED,
|
5854
6001
|
`The transaction exceeds the maximum allowed number of outputs. Tx outputs: ${tx.outputs.length}, max outputs: ${maxOutputs}`
|
5855
6002
|
);
|
@@ -5882,7 +6029,10 @@ var _Provider = class {
|
|
5882
6029
|
abis = transactionRequest.abis;
|
5883
6030
|
}
|
5884
6031
|
const subscription = await this.operations.submitAndAwaitStatus({ encodedTransaction });
|
5885
|
-
|
6032
|
+
this.#cacheInputs(
|
6033
|
+
transactionRequest.inputs,
|
6034
|
+
transactionRequest.getTransactionId(await this.getChainId())
|
6035
|
+
);
|
5886
6036
|
const chainId = await this.getChainId();
|
5887
6037
|
return new TransactionResponse(transactionRequest, this, chainId, abis, subscription);
|
5888
6038
|
}
|
@@ -6549,7 +6699,7 @@ var _Provider = class {
|
|
6549
6699
|
0
|
6550
6700
|
)?.[0];
|
6551
6701
|
} catch (error) {
|
6552
|
-
if (error instanceof
|
6702
|
+
if (error instanceof FuelError19 && error.code === ErrorCode16.UNSUPPORTED_TRANSACTION_TYPE) {
|
6553
6703
|
console.warn("Unsupported transaction type encountered");
|
6554
6704
|
return null;
|
6555
6705
|
}
|
@@ -6575,7 +6725,7 @@ var _Provider = class {
|
|
6575
6725
|
try {
|
6576
6726
|
return coder.decode(arrayify12(rawPayload), 0)[0];
|
6577
6727
|
} catch (error) {
|
6578
|
-
if (error instanceof
|
6728
|
+
if (error instanceof FuelError19 && error.code === ErrorCode16.UNSUPPORTED_TRANSACTION_TYPE) {
|
6579
6729
|
console.warn("Unsupported transaction type encountered");
|
6580
6730
|
return null;
|
6581
6731
|
}
|
@@ -6634,18 +6784,9 @@ var _Provider = class {
|
|
6634
6784
|
* @returns A promise that resolves to the balance.
|
6635
6785
|
*/
|
6636
6786
|
async getBalance(owner, assetId) {
|
6637
|
-
const ownerStr = new Address2(owner).toB256();
|
6638
|
-
const assetIdStr = hexlify16(assetId);
|
6639
|
-
if (!this.features.amount128) {
|
6640
|
-
const { balance: balance2 } = await this.operations.getBalance({
|
6641
|
-
owner: ownerStr,
|
6642
|
-
assetId: assetIdStr
|
6643
|
-
});
|
6644
|
-
return bn17(balance2.amount, 10);
|
6645
|
-
}
|
6646
6787
|
const { balance } = await this.operations.getBalanceV2({
|
6647
|
-
owner:
|
6648
|
-
assetId:
|
6788
|
+
owner: new Address2(owner).toB256(),
|
6789
|
+
assetId: hexlify16(assetId)
|
6649
6790
|
});
|
6650
6791
|
return bn17(balance.amountU128, 10);
|
6651
6792
|
}
|
@@ -6657,49 +6798,29 @@ var _Provider = class {
|
|
6657
6798
|
* @returns A promise that resolves to the balances.
|
6658
6799
|
*/
|
6659
6800
|
async getBalances(owner, paginationArgs) {
|
6660
|
-
|
6661
|
-
|
6801
|
+
let args = { first: NON_PAGINATED_BALANCES_SIZE };
|
6802
|
+
const { balancesPagination: supportsPagination } = await this.getNodeFeatures();
|
6803
|
+
if (supportsPagination) {
|
6804
|
+
args = validatePaginationArgs({
|
6805
|
+
inputArgs: paginationArgs,
|
6806
|
+
paginationLimit: BALANCES_PAGE_SIZE_LIMIT
|
6807
|
+
});
|
6662
6808
|
}
|
6663
|
-
return this.getBalancesV2(owner, paginationArgs);
|
6664
|
-
}
|
6665
|
-
/**
|
6666
|
-
* @hidden
|
6667
|
-
*/
|
6668
|
-
async getBalancesV1(owner, _paginationArgs) {
|
6669
|
-
const {
|
6670
|
-
balances: { edges }
|
6671
|
-
} = await this.operations.getBalances({
|
6672
|
-
/**
|
6673
|
-
* The query parameters for this method were designed to support pagination,
|
6674
|
-
* but the current Fuel-Core implementation does not support pagination yet.
|
6675
|
-
*/
|
6676
|
-
first: 1e4,
|
6677
|
-
filter: { owner: new Address2(owner).toB256() }
|
6678
|
-
});
|
6679
|
-
const balances = edges.map(({ node }) => ({
|
6680
|
-
assetId: node.assetId,
|
6681
|
-
amount: bn17(node.amount)
|
6682
|
-
}));
|
6683
|
-
return { balances };
|
6684
|
-
}
|
6685
|
-
/**
|
6686
|
-
* @hidden
|
6687
|
-
*/
|
6688
|
-
async getBalancesV2(owner, paginationArgs) {
|
6689
6809
|
const {
|
6690
6810
|
balances: { edges, pageInfo }
|
6691
6811
|
} = await this.operations.getBalancesV2({
|
6692
|
-
...
|
6693
|
-
|
6694
|
-
|
6695
|
-
}),
|
6696
|
-
filter: { owner: new Address2(owner).toB256() }
|
6812
|
+
...args,
|
6813
|
+
filter: { owner: new Address2(owner).toB256() },
|
6814
|
+
supportsPagination
|
6697
6815
|
});
|
6698
6816
|
const balances = edges.map(({ node }) => ({
|
6699
6817
|
assetId: node.assetId,
|
6700
6818
|
amount: bn17(node.amountU128)
|
6701
6819
|
}));
|
6702
|
-
return {
|
6820
|
+
return {
|
6821
|
+
balances,
|
6822
|
+
...supportsPagination ? { pageInfo } : {}
|
6823
|
+
};
|
6703
6824
|
}
|
6704
6825
|
/**
|
6705
6826
|
* Returns message for the given address.
|
@@ -6753,7 +6874,7 @@ var _Provider = class {
|
|
6753
6874
|
nonce
|
6754
6875
|
};
|
6755
6876
|
if (commitBlockId && commitBlockHeight) {
|
6756
|
-
throw new
|
6877
|
+
throw new FuelError19(
|
6757
6878
|
ErrorCode16.INVALID_INPUT_PARAMETERS,
|
6758
6879
|
"commitBlockId and commitBlockHeight cannot be used together"
|
6759
6880
|
);
|
@@ -6986,6 +7107,17 @@ var _Provider = class {
|
|
6986
7107
|
statusReason: status.reason
|
6987
7108
|
});
|
6988
7109
|
}
|
7110
|
+
/**
|
7111
|
+
* @hidden
|
7112
|
+
*/
|
7113
|
+
async getNodeFeatures() {
|
7114
|
+
const { indexation } = await this.getNode();
|
7115
|
+
return {
|
7116
|
+
assetMetadata: Boolean(indexation?.assetMetadata),
|
7117
|
+
balancesPagination: Boolean(indexation?.balances),
|
7118
|
+
coinsToSpend: Boolean(indexation?.coinsToSpend)
|
7119
|
+
};
|
7120
|
+
}
|
6989
7121
|
/**
|
6990
7122
|
* @hidden
|
6991
7123
|
*/
|
@@ -7000,23 +7132,9 @@ var _Provider = class {
|
|
7000
7132
|
return transactionRequest;
|
7001
7133
|
}
|
7002
7134
|
};
|
7003
|
-
var Provider = _Provider;
|
7004
|
-
_cacheInputs = new WeakSet();
|
7005
|
-
cacheInputs_fn = function(inputs, transactionId) {
|
7006
|
-
if (!this.cache) {
|
7007
|
-
return;
|
7008
|
-
}
|
7009
|
-
this.cache.set(transactionId, inputs);
|
7010
|
-
};
|
7011
|
-
/** @hidden */
|
7012
|
-
__publicField(Provider, "chainInfoCache", {});
|
7013
|
-
/** @hidden */
|
7014
|
-
__publicField(Provider, "nodeInfoCache", {});
|
7015
|
-
/** @hidden */
|
7016
|
-
__publicField(Provider, "incompatibleNodeVersionMessage", "");
|
7017
7135
|
|
7018
7136
|
// src/providers/transaction-summary/get-transaction-summary.ts
|
7019
|
-
import { ErrorCode as ErrorCode17, FuelError as
|
7137
|
+
import { ErrorCode as ErrorCode17, FuelError as FuelError20 } from "@fuel-ts/errors";
|
7020
7138
|
import { bn as bn18 } from "@fuel-ts/math";
|
7021
7139
|
import { TransactionCoder as TransactionCoder6 } from "@fuel-ts/transactions";
|
7022
7140
|
import { arrayify as arrayify13 } from "@fuel-ts/utils";
|
@@ -7026,7 +7144,7 @@ async function getTransactionSummary(params) {
|
|
7026
7144
|
transactionId: id
|
7027
7145
|
});
|
7028
7146
|
if (!gqlTransaction) {
|
7029
|
-
throw new
|
7147
|
+
throw new FuelError20(
|
7030
7148
|
ErrorCode17.TRANSACTION_NOT_FOUND,
|
7031
7149
|
`Transaction not found for given id: ${id}.`
|
7032
7150
|
);
|
@@ -7069,6 +7187,7 @@ async function getTransactionSummary(params) {
|
|
7069
7187
|
...transactionInfo
|
7070
7188
|
};
|
7071
7189
|
}
|
7190
|
+
__name(getTransactionSummary, "getTransactionSummary");
|
7072
7191
|
async function getTransactionSummaryFromRequest(params) {
|
7073
7192
|
const { provider, transactionRequest, abiMap } = params;
|
7074
7193
|
const { receipts } = await provider.dryRun(transactionRequest);
|
@@ -7094,6 +7213,7 @@ async function getTransactionSummaryFromRequest(params) {
|
|
7094
7213
|
});
|
7095
7214
|
return transactionSummary;
|
7096
7215
|
}
|
7216
|
+
__name(getTransactionSummaryFromRequest, "getTransactionSummaryFromRequest");
|
7097
7217
|
async function getTransactionsSummaries(params) {
|
7098
7218
|
const { filters, provider, abiMap } = params;
|
7099
7219
|
const { owner, ...inputArgs } = filters;
|
@@ -7149,12 +7269,13 @@ async function getTransactionsSummaries(params) {
|
|
7149
7269
|
pageInfo
|
7150
7270
|
};
|
7151
7271
|
}
|
7272
|
+
__name(getTransactionsSummaries, "getTransactionsSummaries");
|
7152
7273
|
|
7153
7274
|
// src/providers/transaction-summary/assemble-transaction-summary-from-serialized.ts
|
7154
7275
|
import { bn as bn19 } from "@fuel-ts/math";
|
7155
7276
|
import { TransactionCoder as TransactionCoder7 } from "@fuel-ts/transactions";
|
7156
7277
|
import { arrayify as arrayify14 } from "@fuel-ts/utils";
|
7157
|
-
var assembleTransactionSummaryFromJson = async (opts) => {
|
7278
|
+
var assembleTransactionSummaryFromJson = /* @__PURE__ */ __name(async (opts) => {
|
7158
7279
|
const { provider, transactionSummary } = opts;
|
7159
7280
|
const { id, transactionBytes, gasPrice, receipts } = transactionSummary;
|
7160
7281
|
const {
|
@@ -7181,10 +7302,10 @@ var assembleTransactionSummaryFromJson = async (opts) => {
|
|
7181
7302
|
gasPerByte,
|
7182
7303
|
gasPriceFactor
|
7183
7304
|
});
|
7184
|
-
};
|
7305
|
+
}, "assembleTransactionSummaryFromJson");
|
7185
7306
|
|
7186
7307
|
// src/providers/utils/merge-quantities.ts
|
7187
|
-
var mergeQuantities = (...coinQuantities) => {
|
7308
|
+
var mergeQuantities = /* @__PURE__ */ __name((...coinQuantities) => {
|
7188
7309
|
const resultMap = {};
|
7189
7310
|
function addToMap({ amount, assetId }) {
|
7190
7311
|
if (resultMap[assetId]) {
|
@@ -7193,12 +7314,16 @@ var mergeQuantities = (...coinQuantities) => {
|
|
7193
7314
|
resultMap[assetId] = amount;
|
7194
7315
|
}
|
7195
7316
|
}
|
7317
|
+
__name(addToMap, "addToMap");
|
7196
7318
|
coinQuantities.forEach((arr) => arr.forEach(addToMap));
|
7197
7319
|
return Object.entries(resultMap).map(([assetId, amount]) => ({ assetId, amount }));
|
7198
|
-
};
|
7320
|
+
}, "mergeQuantities");
|
7199
7321
|
|
7200
7322
|
// src/types.ts
|
7201
7323
|
var AbstractAccount = class {
|
7324
|
+
static {
|
7325
|
+
__name(this, "AbstractAccount");
|
7326
|
+
}
|
7202
7327
|
};
|
7203
7328
|
|
7204
7329
|
// src/utils/formatTransferToContractScriptData.ts
|
@@ -7206,7 +7331,7 @@ import { ASSET_ID_LEN, BigNumberCoder as BigNumberCoder2, CONTRACT_ID_LEN, WORD_
|
|
7206
7331
|
import { Address as Address3 } from "@fuel-ts/address";
|
7207
7332
|
import { arrayify as arrayify15, concat as concat3 } from "@fuel-ts/utils";
|
7208
7333
|
import * as asm from "@fuels/vm-asm";
|
7209
|
-
var formatTransferToContractScriptData = (transferParams) => {
|
7334
|
+
var formatTransferToContractScriptData = /* @__PURE__ */ __name((transferParams) => {
|
7210
7335
|
const numberCoder = new BigNumberCoder2("u64");
|
7211
7336
|
return transferParams.reduce((acc, transferParam) => {
|
7212
7337
|
const { assetId, amount, contractId } = transferParam;
|
@@ -7214,8 +7339,8 @@ var formatTransferToContractScriptData = (transferParams) => {
|
|
7214
7339
|
const scriptData = concat3([new Address3(contractId).toBytes(), encoded, arrayify15(assetId)]);
|
7215
7340
|
return concat3([acc, scriptData]);
|
7216
7341
|
}, new Uint8Array());
|
7217
|
-
};
|
7218
|
-
var assembleTransferToContractScript = async (transferParams) => {
|
7342
|
+
}, "formatTransferToContractScriptData");
|
7343
|
+
var assembleTransferToContractScript = /* @__PURE__ */ __name(async (transferParams) => {
|
7219
7344
|
const scriptData = formatTransferToContractScriptData(transferParams);
|
7220
7345
|
await asm.initWasm();
|
7221
7346
|
let script = new Uint8Array();
|
@@ -7239,11 +7364,14 @@ var assembleTransferToContractScript = async (transferParams) => {
|
|
7239
7364
|
});
|
7240
7365
|
script = concat3([script, asm.ret(1).to_bytes()]);
|
7241
7366
|
return { script, scriptData };
|
7242
|
-
};
|
7367
|
+
}, "assembleTransferToContractScript");
|
7243
7368
|
|
7244
7369
|
// src/account.ts
|
7245
7370
|
var MAX_FUNDING_ATTEMPTS = 5;
|
7246
7371
|
var Account = class extends AbstractAccount {
|
7372
|
+
static {
|
7373
|
+
__name(this, "Account");
|
7374
|
+
}
|
7247
7375
|
/**
|
7248
7376
|
* The address associated with the account.
|
7249
7377
|
*/
|
@@ -7278,7 +7406,7 @@ var Account = class extends AbstractAccount {
|
|
7278
7406
|
*/
|
7279
7407
|
get provider() {
|
7280
7408
|
if (!this._provider) {
|
7281
|
-
throw new
|
7409
|
+
throw new FuelError21(ErrorCode18.MISSING_PROVIDER, "Provider not set");
|
7282
7410
|
}
|
7283
7411
|
return this._provider;
|
7284
7412
|
}
|
@@ -7437,7 +7565,7 @@ var Account = class extends AbstractAccount {
|
|
7437
7565
|
fundingAttempts += 1;
|
7438
7566
|
}
|
7439
7567
|
if (needsToBeFunded) {
|
7440
|
-
throw new
|
7568
|
+
throw new FuelError21(
|
7441
7569
|
ErrorCode18.INSUFFICIENT_FUNDS_OR_MAX_COINS,
|
7442
7570
|
`The account ${this.address} does not have enough base asset funds to cover the transaction execution.`
|
7443
7571
|
);
|
@@ -7557,7 +7685,7 @@ var Account = class extends AbstractAccount {
|
|
7557
7685
|
const contractAddress = new Address4(transferParam.contractId);
|
7558
7686
|
const assetId = transferParam.assetId ? hexlify17(transferParam.assetId) : defaultAssetId;
|
7559
7687
|
if (amount.lte(0)) {
|
7560
|
-
throw new
|
7688
|
+
throw new FuelError21(
|
7561
7689
|
ErrorCode18.INVALID_TRANSFER_AMOUNT,
|
7562
7690
|
"Transfer amount must be a positive number."
|
7563
7691
|
);
|
@@ -7627,7 +7755,7 @@ var Account = class extends AbstractAccount {
|
|
7627
7755
|
const coinOutputsQuantities = txRequestClone.getCoinOutputsQuantities();
|
7628
7756
|
const requiredQuantities = mergeQuantities(coinOutputsQuantities, quantities);
|
7629
7757
|
const transactionFeeForDryRun = [{ assetId: baseAssetId, amount: bn20("100000000000000000") }];
|
7630
|
-
const findAssetInput = (assetId) => txRequestClone.inputs.find((input) => {
|
7758
|
+
const findAssetInput = /* @__PURE__ */ __name((assetId) => txRequestClone.inputs.find((input) => {
|
7631
7759
|
if (input.type === InputType7.Coin) {
|
7632
7760
|
return input.assetId === assetId;
|
7633
7761
|
}
|
@@ -7635,8 +7763,8 @@ var Account = class extends AbstractAccount {
|
|
7635
7763
|
return baseAssetId === assetId;
|
7636
7764
|
}
|
7637
7765
|
return false;
|
7638
|
-
});
|
7639
|
-
const updateAssetInput = (assetId, quantity) => {
|
7766
|
+
}), "findAssetInput");
|
7767
|
+
const updateAssetInput = /* @__PURE__ */ __name((assetId, quantity) => {
|
7640
7768
|
const assetInput = findAssetInput(assetId);
|
7641
7769
|
const usedQuantity = quantity;
|
7642
7770
|
if (assetInput && "amount" in assetInput) {
|
@@ -7651,7 +7779,7 @@ var Account = class extends AbstractAccount {
|
|
7651
7779
|
])
|
7652
7780
|
);
|
7653
7781
|
}
|
7654
|
-
};
|
7782
|
+
}, "updateAssetInput");
|
7655
7783
|
mergeQuantities(requiredQuantities, transactionFeeForDryRun).forEach(
|
7656
7784
|
({ amount, assetId }) => updateAssetInput(assetId, amount)
|
7657
7785
|
);
|
@@ -7674,7 +7802,7 @@ var Account = class extends AbstractAccount {
|
|
7674
7802
|
*/
|
7675
7803
|
async signMessage(message) {
|
7676
7804
|
if (!this._connector) {
|
7677
|
-
throw new
|
7805
|
+
throw new FuelError21(ErrorCode18.MISSING_CONNECTOR, "A connector is required to sign messages.");
|
7678
7806
|
}
|
7679
7807
|
return this._connector.signMessage(this.address.toString(), message);
|
7680
7808
|
}
|
@@ -7686,7 +7814,7 @@ var Account = class extends AbstractAccount {
|
|
7686
7814
|
*/
|
7687
7815
|
async signTransaction(transactionRequestLike) {
|
7688
7816
|
if (!this._connector) {
|
7689
|
-
throw new
|
7817
|
+
throw new FuelError21(
|
7690
7818
|
ErrorCode18.MISSING_CONNECTOR,
|
7691
7819
|
"A connector is required to sign transactions."
|
7692
7820
|
);
|
@@ -7783,7 +7911,7 @@ var Account = class extends AbstractAccount {
|
|
7783
7911
|
/** @hidden * */
|
7784
7912
|
validateTransferAmount(amount) {
|
7785
7913
|
if (bn20(amount).lte(0)) {
|
7786
|
-
throw new
|
7914
|
+
throw new FuelError21(
|
7787
7915
|
ErrorCode18.INVALID_TRANSFER_AMOUNT,
|
7788
7916
|
"Transfer amount must be a positive number."
|
7789
7917
|
);
|
@@ -7813,7 +7941,7 @@ var Account = class extends AbstractAccount {
|
|
7813
7941
|
if (!isDefined3(setGasLimit)) {
|
7814
7942
|
request2.gasLimit = gasUsed;
|
7815
7943
|
} else if (gasUsed.gt(setGasLimit)) {
|
7816
|
-
throw new
|
7944
|
+
throw new FuelError21(
|
7817
7945
|
ErrorCode18.GAS_LIMIT_TOO_LOW,
|
7818
7946
|
`Gas limit '${setGasLimit}' is lower than the required: '${gasUsed}'.`
|
7819
7947
|
);
|
@@ -7821,7 +7949,7 @@ var Account = class extends AbstractAccount {
|
|
7821
7949
|
if (!isDefined3(setMaxFee)) {
|
7822
7950
|
request2.maxFee = maxFee;
|
7823
7951
|
} else if (maxFee.gt(setMaxFee)) {
|
7824
|
-
throw new
|
7952
|
+
throw new FuelError21(
|
7825
7953
|
ErrorCode18.MAX_FEE_TOO_LOW,
|
7826
7954
|
`Max fee '${setMaxFee}' is lower than the required: '${maxFee}'.`
|
7827
7955
|
);
|
@@ -7841,7 +7969,10 @@ import { hash as hash2 } from "@fuel-ts/hasher";
|
|
7841
7969
|
import { toBytes } from "@fuel-ts/math";
|
7842
7970
|
import { hexlify as hexlify18, concat as concat4, arrayify as arrayify17 } from "@fuel-ts/utils";
|
7843
7971
|
import { secp256k1 } from "@noble/curves/secp256k1";
|
7844
|
-
var Signer = class {
|
7972
|
+
var Signer = class _Signer {
|
7973
|
+
static {
|
7974
|
+
__name(this, "Signer");
|
7975
|
+
}
|
7845
7976
|
address;
|
7846
7977
|
publicKey;
|
7847
7978
|
compressedPublicKey;
|
@@ -7920,7 +8051,7 @@ var Signer = class {
|
|
7920
8051
|
* @returns Address from signature
|
7921
8052
|
*/
|
7922
8053
|
static recoverAddress(data, signature) {
|
7923
|
-
return new Address5(
|
8054
|
+
return new Address5(_Signer.recoverPublicKey(data, signature));
|
7924
8055
|
}
|
7925
8056
|
/**
|
7926
8057
|
* Generate a random privateKey
|
@@ -7955,19 +8086,19 @@ import {
|
|
7955
8086
|
encryptJsonWalletData,
|
7956
8087
|
randomUUID
|
7957
8088
|
} from "@fuel-ts/crypto";
|
7958
|
-
import { ErrorCode as ErrorCode19, FuelError as
|
8089
|
+
import { ErrorCode as ErrorCode19, FuelError as FuelError22 } from "@fuel-ts/errors";
|
7959
8090
|
import { hexlify as hexlify19 } from "@fuel-ts/utils";
|
7960
8091
|
var DEFAULT_KDF_PARAMS_LOG_N = 13;
|
7961
8092
|
var DEFAULT_KDF_PARAMS_R = 8;
|
7962
8093
|
var DEFAULT_KDF_PARAMS_P = 1;
|
7963
8094
|
var DEFAULT_KEY_SIZE = 32;
|
7964
8095
|
var DEFAULT_IV_SIZE = 16;
|
7965
|
-
var removeHexPrefix = (hexString) => {
|
8096
|
+
var removeHexPrefix = /* @__PURE__ */ __name((hexString) => {
|
7966
8097
|
if (/^0x/.test(hexString)) {
|
7967
8098
|
return hexString.slice(2);
|
7968
8099
|
}
|
7969
8100
|
return hexString;
|
7970
|
-
};
|
8101
|
+
}, "removeHexPrefix");
|
7971
8102
|
async function encryptKeystoreWallet(privateKey, address, password) {
|
7972
8103
|
const privateKeyBuffer = bufferFromString(removeHexPrefix(privateKey), "hex");
|
7973
8104
|
const ownerAddress = new Address6(address);
|
@@ -8006,6 +8137,7 @@ async function encryptKeystoreWallet(privateKey, address, password) {
|
|
8006
8137
|
};
|
8007
8138
|
return JSON.stringify(keystore);
|
8008
8139
|
}
|
8140
|
+
__name(encryptKeystoreWallet, "encryptKeystoreWallet");
|
8009
8141
|
async function decryptKeystoreWallet(jsonWallet, password) {
|
8010
8142
|
const keystoreWallet = JSON.parse(jsonWallet);
|
8011
8143
|
const {
|
@@ -8032,7 +8164,7 @@ async function decryptKeystoreWallet(jsonWallet, password) {
|
|
8032
8164
|
const macHashUint8Array = keccak256(data);
|
8033
8165
|
const macHash = stringFromBuffer(macHashUint8Array, "hex");
|
8034
8166
|
if (mac !== macHash) {
|
8035
|
-
throw new
|
8167
|
+
throw new FuelError22(
|
8036
8168
|
ErrorCode19.INVALID_PASSWORD,
|
8037
8169
|
"Failed to decrypt the keystore wallet, the provided password is incorrect."
|
8038
8170
|
);
|
@@ -8041,9 +8173,17 @@ async function decryptKeystoreWallet(jsonWallet, password) {
|
|
8041
8173
|
const privateKey = hexlify19(buffer);
|
8042
8174
|
return privateKey;
|
8043
8175
|
}
|
8176
|
+
__name(decryptKeystoreWallet, "decryptKeystoreWallet");
|
8044
8177
|
|
8045
8178
|
// src/wallet/base-wallet-unlocked.ts
|
8046
8179
|
var BaseWalletUnlocked = class extends Account {
|
8180
|
+
static {
|
8181
|
+
__name(this, "BaseWalletUnlocked");
|
8182
|
+
}
|
8183
|
+
/**
|
8184
|
+
* Default HDWallet path.
|
8185
|
+
*/
|
8186
|
+
static defaultPath = "m/44'/1179993420'/0'/0/0";
|
8047
8187
|
/**
|
8048
8188
|
* A function that returns the wallet's signer.
|
8049
8189
|
*/
|
@@ -8161,21 +8301,17 @@ var BaseWalletUnlocked = class extends Account {
|
|
8161
8301
|
return encryptKeystoreWallet(this.privateKey, this.address, password);
|
8162
8302
|
}
|
8163
8303
|
};
|
8164
|
-
/**
|
8165
|
-
* Default HDWallet path.
|
8166
|
-
*/
|
8167
|
-
__publicField(BaseWalletUnlocked, "defaultPath", "m/44'/1179993420'/0'/0/0");
|
8168
8304
|
|
8169
8305
|
// src/hdwallet/hdwallet.ts
|
8170
8306
|
import { computeHmac as computeHmac2, ripemd160 } from "@fuel-ts/crypto";
|
8171
|
-
import { ErrorCode as ErrorCode22, FuelError as
|
8307
|
+
import { ErrorCode as ErrorCode22, FuelError as FuelError25 } from "@fuel-ts/errors";
|
8172
8308
|
import { sha256 as sha2564 } from "@fuel-ts/hasher";
|
8173
8309
|
import { bn as bn21, toBytes as toBytes2, toHex } from "@fuel-ts/math";
|
8174
8310
|
import { arrayify as arrayify20, hexlify as hexlify22, concat as concat6, dataSlice as dataSlice2, encodeBase58 as encodeBase582, decodeBase58 } from "@fuel-ts/utils";
|
8175
8311
|
|
8176
8312
|
// src/mnemonic/mnemonic.ts
|
8177
8313
|
import { randomBytes as randomBytes5, pbkdf2, computeHmac } from "@fuel-ts/crypto";
|
8178
|
-
import { ErrorCode as ErrorCode21, FuelError as
|
8314
|
+
import { ErrorCode as ErrorCode21, FuelError as FuelError24 } from "@fuel-ts/errors";
|
8179
8315
|
import { sha256 as sha2563 } from "@fuel-ts/hasher";
|
8180
8316
|
import { arrayify as arrayify19, hexlify as hexlify21, concat as concat5, dataSlice, encodeBase58, toUtf8Bytes } from "@fuel-ts/utils";
|
8181
8317
|
|
@@ -10238,27 +10374,31 @@ var Language = /* @__PURE__ */ ((Language2) => {
|
|
10238
10374
|
})(Language || {});
|
10239
10375
|
|
10240
10376
|
// src/mnemonic/utils.ts
|
10241
|
-
import { ErrorCode as ErrorCode20, FuelError as
|
10377
|
+
import { ErrorCode as ErrorCode20, FuelError as FuelError23 } from "@fuel-ts/errors";
|
10242
10378
|
import { sha256 as sha2562 } from "@fuel-ts/hasher";
|
10243
10379
|
import { arrayify as arrayify18 } from "@fuel-ts/utils";
|
10244
10380
|
function getLowerMask(bits) {
|
10245
10381
|
return (1 << bits) - 1;
|
10246
10382
|
}
|
10383
|
+
__name(getLowerMask, "getLowerMask");
|
10247
10384
|
function getUpperMask(bits) {
|
10248
10385
|
return (1 << bits) - 1 << 8 - bits;
|
10249
10386
|
}
|
10387
|
+
__name(getUpperMask, "getUpperMask");
|
10250
10388
|
function getWords(mnemonic) {
|
10251
10389
|
if (!Array.isArray(mnemonic)) {
|
10252
10390
|
return mnemonic.split(/\s+/);
|
10253
10391
|
}
|
10254
10392
|
return mnemonic;
|
10255
10393
|
}
|
10394
|
+
__name(getWords, "getWords");
|
10256
10395
|
function getPhrase(mnemonic) {
|
10257
10396
|
if (Array.isArray(mnemonic)) {
|
10258
10397
|
return mnemonic.join(" ");
|
10259
10398
|
}
|
10260
10399
|
return mnemonic;
|
10261
10400
|
}
|
10401
|
+
__name(getPhrase, "getPhrase");
|
10262
10402
|
function entropyToMnemonicIndices(entropy) {
|
10263
10403
|
const indices = [0];
|
10264
10404
|
let remainingBits = 11;
|
@@ -10280,6 +10420,7 @@ function entropyToMnemonicIndices(entropy) {
|
|
10280
10420
|
indices[indices.length - 1] |= checksum >> 8 - checksumBits;
|
10281
10421
|
return indices;
|
10282
10422
|
}
|
10423
|
+
__name(entropyToMnemonicIndices, "entropyToMnemonicIndices");
|
10283
10424
|
function mnemonicWordsToEntropy(words, wordlist) {
|
10284
10425
|
const size = Math.ceil(11 * words.length / 8);
|
10285
10426
|
const entropy = arrayify18(new Uint8Array(size));
|
@@ -10287,7 +10428,7 @@ function mnemonicWordsToEntropy(words, wordlist) {
|
|
10287
10428
|
for (let i = 0; i < words.length; i += 1) {
|
10288
10429
|
const index = wordlist.indexOf(words[i].normalize("NFKD"));
|
10289
10430
|
if (index === -1) {
|
10290
|
-
throw new
|
10431
|
+
throw new FuelError23(
|
10291
10432
|
ErrorCode20.INVALID_MNEMONIC,
|
10292
10433
|
`Invalid mnemonic: the word '${words[i]}' is not found in the provided wordlist.`
|
10293
10434
|
);
|
@@ -10304,13 +10445,14 @@ function mnemonicWordsToEntropy(words, wordlist) {
|
|
10304
10445
|
const checksumMask = getUpperMask(checksumBits);
|
10305
10446
|
const checksum = arrayify18(sha2562(entropy.slice(0, entropyBits / 8)))[0] & checksumMask;
|
10306
10447
|
if (checksum !== (entropy[entropy.length - 1] & checksumMask)) {
|
10307
|
-
throw new
|
10448
|
+
throw new FuelError23(
|
10308
10449
|
ErrorCode20.INVALID_CHECKSUM,
|
10309
10450
|
"Checksum validation failed for the provided mnemonic."
|
10310
10451
|
);
|
10311
10452
|
}
|
10312
10453
|
return entropy.slice(0, entropyBits / 8);
|
10313
10454
|
}
|
10455
|
+
__name(mnemonicWordsToEntropy, "mnemonicWordsToEntropy");
|
10314
10456
|
|
10315
10457
|
// src/mnemonic/mnemonic.ts
|
10316
10458
|
var MasterSecret = toUtf8Bytes("Bitcoin seed");
|
@@ -10319,29 +10461,35 @@ var TestnetPRV = "0x04358394";
|
|
10319
10461
|
var MNEMONIC_SIZES = [12, 15, 18, 21, 24];
|
10320
10462
|
function assertWordList(wordlist) {
|
10321
10463
|
if (wordlist.length !== 2048) {
|
10322
|
-
throw new
|
10464
|
+
throw new FuelError24(
|
10323
10465
|
ErrorCode21.INVALID_WORD_LIST,
|
10324
10466
|
`Expected word list length of 2048, but got ${wordlist.length}.`
|
10325
10467
|
);
|
10326
10468
|
}
|
10327
10469
|
}
|
10470
|
+
__name(assertWordList, "assertWordList");
|
10328
10471
|
function assertEntropy(entropy) {
|
10329
10472
|
if (entropy.length % 4 !== 0 || entropy.length < 16 || entropy.length > 32) {
|
10330
|
-
throw new
|
10473
|
+
throw new FuelError24(
|
10331
10474
|
ErrorCode21.INVALID_ENTROPY,
|
10332
10475
|
`Entropy should be between 16 and 32 bytes and a multiple of 4, but got ${entropy.length} bytes.`
|
10333
10476
|
);
|
10334
10477
|
}
|
10335
10478
|
}
|
10479
|
+
__name(assertEntropy, "assertEntropy");
|
10336
10480
|
function assertMnemonic(words) {
|
10337
10481
|
if (!MNEMONIC_SIZES.includes(words.length)) {
|
10338
10482
|
const errorMsg = `Invalid mnemonic size. Expected one of [${MNEMONIC_SIZES.join(
|
10339
10483
|
", "
|
10340
10484
|
)}] words, but got ${words.length}.`;
|
10341
|
-
throw new
|
10485
|
+
throw new FuelError24(ErrorCode21.INVALID_MNEMONIC, errorMsg);
|
10342
10486
|
}
|
10343
10487
|
}
|
10344
|
-
|
10488
|
+
__name(assertMnemonic, "assertMnemonic");
|
10489
|
+
var Mnemonic = class _Mnemonic {
|
10490
|
+
static {
|
10491
|
+
__name(this, "Mnemonic");
|
10492
|
+
}
|
10345
10493
|
wordlist;
|
10346
10494
|
/**
|
10347
10495
|
*
|
@@ -10358,7 +10506,7 @@ var Mnemonic = class {
|
|
10358
10506
|
* @returns Entropy hash
|
10359
10507
|
*/
|
10360
10508
|
mnemonicToEntropy(phrase) {
|
10361
|
-
return
|
10509
|
+
return _Mnemonic.mnemonicToEntropy(phrase, this.wordlist);
|
10362
10510
|
}
|
10363
10511
|
/**
|
10364
10512
|
*
|
@@ -10366,7 +10514,7 @@ var Mnemonic = class {
|
|
10366
10514
|
* @returns Mnemonic phrase
|
10367
10515
|
*/
|
10368
10516
|
entropyToMnemonic(entropy) {
|
10369
|
-
return
|
10517
|
+
return _Mnemonic.entropyToMnemonic(entropy, this.wordlist);
|
10370
10518
|
}
|
10371
10519
|
/**
|
10372
10520
|
*
|
@@ -10407,8 +10555,8 @@ var Mnemonic = class {
|
|
10407
10555
|
* @returns 64-byte array contains privateKey and chainCode as described on BIP39
|
10408
10556
|
*/
|
10409
10557
|
static mnemonicToMasterKeys(phrase, passphrase = "") {
|
10410
|
-
const seed =
|
10411
|
-
return
|
10558
|
+
const seed = _Mnemonic.mnemonicToSeed(phrase, passphrase);
|
10559
|
+
return _Mnemonic.masterKeysFromSeed(seed);
|
10412
10560
|
}
|
10413
10561
|
/**
|
10414
10562
|
* Validates if given mnemonic is valid
|
@@ -10424,7 +10572,7 @@ var Mnemonic = class {
|
|
10424
10572
|
return false;
|
10425
10573
|
}
|
10426
10574
|
while (i < words.length) {
|
10427
|
-
if (
|
10575
|
+
if (_Mnemonic.binarySearch(words[i]) === false) {
|
10428
10576
|
return false;
|
10429
10577
|
}
|
10430
10578
|
i += 1;
|
@@ -10456,7 +10604,7 @@ var Mnemonic = class {
|
|
10456
10604
|
static masterKeysFromSeed(seed) {
|
10457
10605
|
const seedArray = arrayify19(seed);
|
10458
10606
|
if (seedArray.length < 16 || seedArray.length > 64) {
|
10459
|
-
throw new
|
10607
|
+
throw new FuelError24(
|
10460
10608
|
ErrorCode21.INVALID_SEED,
|
10461
10609
|
`Seed length should be between 16 and 64 bytes, but received ${seedArray.length} bytes.`
|
10462
10610
|
);
|
@@ -10471,7 +10619,7 @@ var Mnemonic = class {
|
|
10471
10619
|
* @returns BIP-32 extended private key
|
10472
10620
|
*/
|
10473
10621
|
static seedToExtendedKey(seed, testnet = false) {
|
10474
|
-
const masterKey =
|
10622
|
+
const masterKey = _Mnemonic.masterKeysFromSeed(seed);
|
10475
10623
|
const prefix = arrayify19(testnet ? TestnetPRV : MainnetPRV);
|
10476
10624
|
const depth = "0x00";
|
10477
10625
|
const fingerprint = "0x00000000";
|
@@ -10503,7 +10651,7 @@ var Mnemonic = class {
|
|
10503
10651
|
*/
|
10504
10652
|
static generate(size = 32, extraEntropy = "") {
|
10505
10653
|
const entropy = extraEntropy ? sha2563(concat5([randomBytes5(size), arrayify19(extraEntropy)])) : randomBytes5(size);
|
10506
|
-
return
|
10654
|
+
return _Mnemonic.entropyToMnemonic(entropy);
|
10507
10655
|
}
|
10508
10656
|
};
|
10509
10657
|
var mnemonic_default = Mnemonic;
|
@@ -10517,24 +10665,28 @@ var TestnetPUB = hexlify22("0x043587cf");
|
|
10517
10665
|
function base58check(data) {
|
10518
10666
|
return encodeBase582(concat6([data, dataSlice2(sha2564(sha2564(data)), 0, 4)]));
|
10519
10667
|
}
|
10668
|
+
__name(base58check, "base58check");
|
10520
10669
|
function getExtendedKeyPrefix(isPublic = false, testnet = false) {
|
10521
10670
|
if (isPublic) {
|
10522
10671
|
return testnet ? TestnetPUB : MainnetPUB;
|
10523
10672
|
}
|
10524
10673
|
return testnet ? TestnetPRV2 : MainnetPRV2;
|
10525
10674
|
}
|
10675
|
+
__name(getExtendedKeyPrefix, "getExtendedKeyPrefix");
|
10526
10676
|
function isPublicExtendedKey(extendedKey) {
|
10527
10677
|
return [MainnetPUB, TestnetPUB].includes(hexlify22(extendedKey.slice(0, 4)));
|
10528
10678
|
}
|
10679
|
+
__name(isPublicExtendedKey, "isPublicExtendedKey");
|
10529
10680
|
function isValidExtendedKey(extendedKey) {
|
10530
10681
|
return [MainnetPRV2, TestnetPRV2, MainnetPUB, TestnetPUB].includes(
|
10531
10682
|
hexlify22(extendedKey.slice(0, 4))
|
10532
10683
|
);
|
10533
10684
|
}
|
10685
|
+
__name(isValidExtendedKey, "isValidExtendedKey");
|
10534
10686
|
function parsePath(path, depth = 0) {
|
10535
10687
|
const components = path.split("/");
|
10536
10688
|
if (components.length === 0 || components[0] === "m" && depth !== 0) {
|
10537
|
-
throw new
|
10689
|
+
throw new FuelError25(ErrorCode22.HD_WALLET_ERROR, `invalid path - ${path}`);
|
10538
10690
|
}
|
10539
10691
|
if (components[0] === "m") {
|
10540
10692
|
components.shift();
|
@@ -10543,7 +10695,11 @@ function parsePath(path, depth = 0) {
|
|
10543
10695
|
(p) => ~p.indexOf(`'`) ? parseInt(p, 10) + HARDENED_INDEX : parseInt(p, 10)
|
10544
10696
|
);
|
10545
10697
|
}
|
10546
|
-
|
10698
|
+
__name(parsePath, "parsePath");
|
10699
|
+
var HDWallet = class _HDWallet {
|
10700
|
+
static {
|
10701
|
+
__name(this, "HDWallet");
|
10702
|
+
}
|
10547
10703
|
depth = 0;
|
10548
10704
|
index = 0;
|
10549
10705
|
fingerprint = hexlify22("0x00000000");
|
@@ -10563,7 +10719,7 @@ var HDWallet = class {
|
|
10563
10719
|
this.privateKey = hexlify22(config.privateKey);
|
10564
10720
|
} else {
|
10565
10721
|
if (!config.publicKey) {
|
10566
|
-
throw new
|
10722
|
+
throw new FuelError25(
|
10567
10723
|
ErrorCode22.HD_WALLET_ERROR,
|
10568
10724
|
"Both public and private Key cannot be missing. At least one should be provided."
|
10569
10725
|
);
|
@@ -10593,7 +10749,7 @@ var HDWallet = class {
|
|
10593
10749
|
const data = new Uint8Array(37);
|
10594
10750
|
if (index & HARDENED_INDEX) {
|
10595
10751
|
if (!privateKey) {
|
10596
|
-
throw new
|
10752
|
+
throw new FuelError25(
|
10597
10753
|
ErrorCode22.HD_WALLET_ERROR,
|
10598
10754
|
"Cannot derive a hardened index without a private Key."
|
10599
10755
|
);
|
@@ -10609,7 +10765,7 @@ var HDWallet = class {
|
|
10609
10765
|
if (privateKey) {
|
10610
10766
|
const N = "0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141";
|
10611
10767
|
const ki = bn21(IL).add(privateKey).mod(N).toBytes(32);
|
10612
|
-
return new
|
10768
|
+
return new _HDWallet({
|
10613
10769
|
privateKey: ki,
|
10614
10770
|
chainCode: IR,
|
10615
10771
|
index,
|
@@ -10619,7 +10775,7 @@ var HDWallet = class {
|
|
10619
10775
|
}
|
10620
10776
|
const signer = new Signer(hexlify22(IL));
|
10621
10777
|
const Ki = signer.addPoint(publicKey);
|
10622
|
-
return new
|
10778
|
+
return new _HDWallet({
|
10623
10779
|
publicKey: Ki,
|
10624
10780
|
chainCode: IR,
|
10625
10781
|
index,
|
@@ -10646,7 +10802,7 @@ var HDWallet = class {
|
|
10646
10802
|
*/
|
10647
10803
|
toExtendedKey(isPublic = false, testnet = false) {
|
10648
10804
|
if (this.depth >= 256) {
|
10649
|
-
throw new
|
10805
|
+
throw new FuelError25(
|
10650
10806
|
ErrorCode22.HD_WALLET_ERROR,
|
10651
10807
|
`Exceeded max depth of 255. Current depth: ${this.depth}.`
|
10652
10808
|
);
|
@@ -10668,7 +10824,7 @@ var HDWallet = class {
|
|
10668
10824
|
*/
|
10669
10825
|
static fromSeed(seed) {
|
10670
10826
|
const masterKey = mnemonic_default.masterKeysFromSeed(seed);
|
10671
|
-
return new
|
10827
|
+
return new _HDWallet({
|
10672
10828
|
chainCode: arrayify20(masterKey.slice(32)),
|
10673
10829
|
privateKey: arrayify20(masterKey.slice(0, 32))
|
10674
10830
|
});
|
@@ -10678,10 +10834,10 @@ var HDWallet = class {
|
|
10678
10834
|
const bytes = arrayify20(decoded);
|
10679
10835
|
const validChecksum = base58check(bytes.slice(0, 78)) === extendedKey;
|
10680
10836
|
if (bytes.length !== 82 || !isValidExtendedKey(bytes)) {
|
10681
|
-
throw new
|
10837
|
+
throw new FuelError25(ErrorCode22.HD_WALLET_ERROR, "Provided key is not a valid extended key.");
|
10682
10838
|
}
|
10683
10839
|
if (!validChecksum) {
|
10684
|
-
throw new
|
10840
|
+
throw new FuelError25(ErrorCode22.HD_WALLET_ERROR, "Provided key has an invalid checksum.");
|
10685
10841
|
}
|
10686
10842
|
const depth = bytes[4];
|
10687
10843
|
const parentFingerprint = hexlify22(bytes.slice(5, 9));
|
@@ -10689,16 +10845,16 @@ var HDWallet = class {
|
|
10689
10845
|
const chainCode = hexlify22(bytes.slice(13, 45));
|
10690
10846
|
const key = bytes.slice(45, 78);
|
10691
10847
|
if (depth === 0 && parentFingerprint !== "0x00000000" || depth === 0 && index !== 0) {
|
10692
|
-
throw new
|
10848
|
+
throw new FuelError25(
|
10693
10849
|
ErrorCode22.HD_WALLET_ERROR,
|
10694
10850
|
"Inconsistency detected: Depth is zero but fingerprint/index is non-zero."
|
10695
10851
|
);
|
10696
10852
|
}
|
10697
10853
|
if (isPublicExtendedKey(bytes)) {
|
10698
10854
|
if (key[0] !== 3) {
|
10699
|
-
throw new
|
10855
|
+
throw new FuelError25(ErrorCode22.HD_WALLET_ERROR, "Invalid public extended key.");
|
10700
10856
|
}
|
10701
|
-
return new
|
10857
|
+
return new _HDWallet({
|
10702
10858
|
publicKey: key,
|
10703
10859
|
chainCode,
|
10704
10860
|
index,
|
@@ -10707,9 +10863,9 @@ var HDWallet = class {
|
|
10707
10863
|
});
|
10708
10864
|
}
|
10709
10865
|
if (key[0] !== 0) {
|
10710
|
-
throw new
|
10866
|
+
throw new FuelError25(ErrorCode22.HD_WALLET_ERROR, "Invalid private extended key.");
|
10711
10867
|
}
|
10712
|
-
return new
|
10868
|
+
return new _HDWallet({
|
10713
10869
|
privateKey: key.slice(1),
|
10714
10870
|
chainCode,
|
10715
10871
|
index,
|
@@ -10722,6 +10878,9 @@ var hdwallet_default = HDWallet;
|
|
10722
10878
|
|
10723
10879
|
// src/wallet/wallets.ts
|
10724
10880
|
var WalletLocked = class extends Account {
|
10881
|
+
static {
|
10882
|
+
__name(this, "WalletLocked");
|
10883
|
+
}
|
10725
10884
|
/**
|
10726
10885
|
* Unlocks the wallet using the provided private key and returns an instance of WalletUnlocked.
|
10727
10886
|
*
|
@@ -10732,7 +10891,10 @@ var WalletLocked = class extends Account {
|
|
10732
10891
|
return new WalletUnlocked(privateKey, this._provider);
|
10733
10892
|
}
|
10734
10893
|
};
|
10735
|
-
var WalletUnlocked = class extends BaseWalletUnlocked {
|
10894
|
+
var WalletUnlocked = class _WalletUnlocked extends BaseWalletUnlocked {
|
10895
|
+
static {
|
10896
|
+
__name(this, "WalletUnlocked");
|
10897
|
+
}
|
10736
10898
|
/**
|
10737
10899
|
* Locks the wallet and returns an instance of WalletLocked.
|
10738
10900
|
*
|
@@ -10750,7 +10912,7 @@ var WalletUnlocked = class extends BaseWalletUnlocked {
|
|
10750
10912
|
*/
|
10751
10913
|
static generate(generateOptions) {
|
10752
10914
|
const privateKey = Signer.generatePrivateKey(generateOptions?.entropy);
|
10753
|
-
return new
|
10915
|
+
return new _WalletUnlocked(privateKey, generateOptions?.provider);
|
10754
10916
|
}
|
10755
10917
|
/**
|
10756
10918
|
* Create a Wallet Unlocked from a seed.
|
@@ -10762,8 +10924,8 @@ var WalletUnlocked = class extends BaseWalletUnlocked {
|
|
10762
10924
|
*/
|
10763
10925
|
static fromSeed(seed, path, provider) {
|
10764
10926
|
const hdWallet = hdwallet_default.fromSeed(seed);
|
10765
|
-
const childWallet = hdWallet.derivePath(path ||
|
10766
|
-
return new
|
10927
|
+
const childWallet = hdWallet.derivePath(path || _WalletUnlocked.defaultPath);
|
10928
|
+
return new _WalletUnlocked(childWallet.privateKey, provider);
|
10767
10929
|
}
|
10768
10930
|
/**
|
10769
10931
|
* Create a Wallet Unlocked from a mnemonic phrase.
|
@@ -10777,8 +10939,8 @@ var WalletUnlocked = class extends BaseWalletUnlocked {
|
|
10777
10939
|
static fromMnemonic(mnemonic, path, passphrase, provider) {
|
10778
10940
|
const seed = mnemonic_default.mnemonicToSeed(mnemonic, passphrase);
|
10779
10941
|
const hdWallet = hdwallet_default.fromSeed(seed);
|
10780
|
-
const childWallet = hdWallet.derivePath(path ||
|
10781
|
-
return new
|
10942
|
+
const childWallet = hdWallet.derivePath(path || _WalletUnlocked.defaultPath);
|
10943
|
+
return new _WalletUnlocked(childWallet.privateKey, provider);
|
10782
10944
|
}
|
10783
10945
|
/**
|
10784
10946
|
* Create a Wallet Unlocked from an extended key.
|
@@ -10789,7 +10951,7 @@ var WalletUnlocked = class extends BaseWalletUnlocked {
|
|
10789
10951
|
*/
|
10790
10952
|
static fromExtendedKey(extendedKey, provider) {
|
10791
10953
|
const hdWallet = hdwallet_default.fromExtendedKey(extendedKey);
|
10792
|
-
return new
|
10954
|
+
return new _WalletUnlocked(hdWallet.privateKey, provider);
|
10793
10955
|
}
|
10794
10956
|
/**
|
10795
10957
|
* Create a Wallet Unlocked from an encrypted JSON.
|
@@ -10801,12 +10963,15 @@ var WalletUnlocked = class extends BaseWalletUnlocked {
|
|
10801
10963
|
*/
|
10802
10964
|
static async fromEncryptedJson(jsonWallet, password, provider) {
|
10803
10965
|
const privateKey = await decryptKeystoreWallet(jsonWallet, password);
|
10804
|
-
return new
|
10966
|
+
return new _WalletUnlocked(privateKey, provider);
|
10805
10967
|
}
|
10806
10968
|
};
|
10807
10969
|
|
10808
10970
|
// src/wallet/wallet.ts
|
10809
10971
|
var Wallet = class {
|
10972
|
+
static {
|
10973
|
+
__name(this, "Wallet");
|
10974
|
+
}
|
10810
10975
|
/**
|
10811
10976
|
* Creates a locked wallet instance from an address and a provider.
|
10812
10977
|
*
|
@@ -10827,59 +10992,62 @@ var Wallet = class {
|
|
10827
10992
|
static fromPrivateKey(privateKey, provider) {
|
10828
10993
|
return new WalletUnlocked(privateKey, provider);
|
10829
10994
|
}
|
10995
|
+
/**
|
10996
|
+
* Generate a new Wallet Unlocked with a random key pair.
|
10997
|
+
*
|
10998
|
+
* @param generateOptions - Options to customize the generation process (optional).
|
10999
|
+
* @returns An unlocked wallet instance.
|
11000
|
+
*/
|
11001
|
+
static generate = WalletUnlocked.generate;
|
11002
|
+
/**
|
11003
|
+
* Create a Wallet Unlocked from a seed.
|
11004
|
+
*
|
11005
|
+
* @param seed - The seed phrase.
|
11006
|
+
* @param provider - A Provider instance (optional).
|
11007
|
+
* @param path - The derivation path (optional).
|
11008
|
+
* @returns An unlocked wallet instance.
|
11009
|
+
*/
|
11010
|
+
static fromSeed = WalletUnlocked.fromSeed;
|
11011
|
+
/**
|
11012
|
+
* Create a Wallet Unlocked from a mnemonic phrase.
|
11013
|
+
*
|
11014
|
+
* @param mnemonic - The mnemonic phrase.
|
11015
|
+
* @param provider - A Provider instance (optional).
|
11016
|
+
* @param path - The derivation path (optional).
|
11017
|
+
* @param passphrase - The passphrase for the mnemonic (optional).
|
11018
|
+
* @returns An unlocked wallet instance.
|
11019
|
+
*/
|
11020
|
+
static fromMnemonic = WalletUnlocked.fromMnemonic;
|
11021
|
+
/**
|
11022
|
+
* Create a Wallet Unlocked from an extended key.
|
11023
|
+
*
|
11024
|
+
* @param extendedKey - The extended key.
|
11025
|
+
* @param provider - A Provider instance (optional).
|
11026
|
+
* @returns An unlocked wallet instance.
|
11027
|
+
*/
|
11028
|
+
static fromExtendedKey = WalletUnlocked.fromExtendedKey;
|
11029
|
+
/**
|
11030
|
+
* Create a Wallet Unlocked from an encrypted JSON.
|
11031
|
+
*
|
11032
|
+
* @param jsonWallet - The encrypted JSON keystore.
|
11033
|
+
* @param password - The password to decrypt the JSON.
|
11034
|
+
* @param provider - A Provider instance (optional).
|
11035
|
+
* @returns An unlocked wallet instance.
|
11036
|
+
*/
|
11037
|
+
static fromEncryptedJson = WalletUnlocked.fromEncryptedJson;
|
10830
11038
|
};
|
10831
|
-
/**
|
10832
|
-
* Generate a new Wallet Unlocked with a random key pair.
|
10833
|
-
*
|
10834
|
-
* @param generateOptions - Options to customize the generation process (optional).
|
10835
|
-
* @returns An unlocked wallet instance.
|
10836
|
-
*/
|
10837
|
-
__publicField(Wallet, "generate", WalletUnlocked.generate);
|
10838
|
-
/**
|
10839
|
-
* Create a Wallet Unlocked from a seed.
|
10840
|
-
*
|
10841
|
-
* @param seed - The seed phrase.
|
10842
|
-
* @param provider - A Provider instance (optional).
|
10843
|
-
* @param path - The derivation path (optional).
|
10844
|
-
* @returns An unlocked wallet instance.
|
10845
|
-
*/
|
10846
|
-
__publicField(Wallet, "fromSeed", WalletUnlocked.fromSeed);
|
10847
|
-
/**
|
10848
|
-
* Create a Wallet Unlocked from a mnemonic phrase.
|
10849
|
-
*
|
10850
|
-
* @param mnemonic - The mnemonic phrase.
|
10851
|
-
* @param provider - A Provider instance (optional).
|
10852
|
-
* @param path - The derivation path (optional).
|
10853
|
-
* @param passphrase - The passphrase for the mnemonic (optional).
|
10854
|
-
* @returns An unlocked wallet instance.
|
10855
|
-
*/
|
10856
|
-
__publicField(Wallet, "fromMnemonic", WalletUnlocked.fromMnemonic);
|
10857
|
-
/**
|
10858
|
-
* Create a Wallet Unlocked from an extended key.
|
10859
|
-
*
|
10860
|
-
* @param extendedKey - The extended key.
|
10861
|
-
* @param provider - A Provider instance (optional).
|
10862
|
-
* @returns An unlocked wallet instance.
|
10863
|
-
*/
|
10864
|
-
__publicField(Wallet, "fromExtendedKey", WalletUnlocked.fromExtendedKey);
|
10865
|
-
/**
|
10866
|
-
* Create a Wallet Unlocked from an encrypted JSON.
|
10867
|
-
*
|
10868
|
-
* @param jsonWallet - The encrypted JSON keystore.
|
10869
|
-
* @param password - The password to decrypt the JSON.
|
10870
|
-
* @param provider - A Provider instance (optional).
|
10871
|
-
* @returns An unlocked wallet instance.
|
10872
|
-
*/
|
10873
|
-
__publicField(Wallet, "fromEncryptedJson", WalletUnlocked.fromEncryptedJson);
|
10874
11039
|
|
10875
11040
|
// src/wallet-manager/wallet-manager.ts
|
10876
11041
|
import { Address as Address9 } from "@fuel-ts/address";
|
10877
11042
|
import { encrypt, decrypt } from "@fuel-ts/crypto";
|
10878
|
-
import { ErrorCode as ErrorCode25, FuelError as
|
11043
|
+
import { ErrorCode as ErrorCode25, FuelError as FuelError28 } from "@fuel-ts/errors";
|
10879
11044
|
import { EventEmitter } from "events";
|
10880
11045
|
|
10881
11046
|
// src/wallet-manager/storages/memory-storage.ts
|
10882
11047
|
var MemoryStorage = class {
|
11048
|
+
static {
|
11049
|
+
__name(this, "MemoryStorage");
|
11050
|
+
}
|
10883
11051
|
storage = /* @__PURE__ */ new Map();
|
10884
11052
|
async getItem(key) {
|
10885
11053
|
const item = await this.storage.get(key);
|
@@ -10898,15 +11066,18 @@ var MemoryStorage = class {
|
|
10898
11066
|
|
10899
11067
|
// src/wallet-manager/vaults/mnemonic-vault.ts
|
10900
11068
|
import { Address as Address7 } from "@fuel-ts/address";
|
10901
|
-
import { ErrorCode as ErrorCode23, FuelError as
|
10902
|
-
var _secret;
|
11069
|
+
import { ErrorCode as ErrorCode23, FuelError as FuelError26 } from "@fuel-ts/errors";
|
10903
11070
|
var MnemonicVault = class {
|
11071
|
+
static {
|
11072
|
+
__name(this, "MnemonicVault");
|
11073
|
+
}
|
11074
|
+
static type = "mnemonic";
|
11075
|
+
#secret;
|
11076
|
+
pathKey = "{}";
|
11077
|
+
rootPath = `m/44'/1179993420'/${this.pathKey}'/0/0`;
|
11078
|
+
numberOfAccounts = 0;
|
10904
11079
|
constructor(options) {
|
10905
|
-
|
10906
|
-
__publicField(this, "pathKey", "{}");
|
10907
|
-
__publicField(this, "rootPath", `m/44'/1179993420'/${this.pathKey}'/0/0`);
|
10908
|
-
__publicField(this, "numberOfAccounts", 0);
|
10909
|
-
__privateSet(this, _secret, options.secret || mnemonic_default.generate());
|
11080
|
+
this.#secret = options.secret || mnemonic_default.generate();
|
10910
11081
|
this.rootPath = options.rootPath || this.rootPath;
|
10911
11082
|
this.numberOfAccounts = options.numberOfAccounts || 1;
|
10912
11083
|
}
|
@@ -10918,7 +11089,7 @@ var MnemonicVault = class {
|
|
10918
11089
|
}
|
10919
11090
|
serialize() {
|
10920
11091
|
return {
|
10921
|
-
secret:
|
11092
|
+
secret: this.#secret,
|
10922
11093
|
rootPath: this.rootPath,
|
10923
11094
|
numberOfAccounts: this.numberOfAccounts
|
10924
11095
|
};
|
@@ -10927,7 +11098,7 @@ var MnemonicVault = class {
|
|
10927
11098
|
const accounts = [];
|
10928
11099
|
let numberOfAccounts = 0;
|
10929
11100
|
do {
|
10930
|
-
const wallet = Wallet.fromMnemonic(
|
11101
|
+
const wallet = Wallet.fromMnemonic(this.#secret, this.getDerivePath(numberOfAccounts));
|
10931
11102
|
accounts.push({
|
10932
11103
|
publicKey: wallet.publicKey,
|
10933
11104
|
address: wallet.address
|
@@ -10938,7 +11109,7 @@ var MnemonicVault = class {
|
|
10938
11109
|
}
|
10939
11110
|
addAccount() {
|
10940
11111
|
this.numberOfAccounts += 1;
|
10941
|
-
const wallet = Wallet.fromMnemonic(
|
11112
|
+
const wallet = Wallet.fromMnemonic(this.#secret, this.getDerivePath(this.numberOfAccounts - 1));
|
10942
11113
|
return {
|
10943
11114
|
publicKey: wallet.publicKey,
|
10944
11115
|
address: wallet.address
|
@@ -10948,13 +11119,13 @@ var MnemonicVault = class {
|
|
10948
11119
|
let numberOfAccounts = 0;
|
10949
11120
|
const ownerAddress = new Address7(address);
|
10950
11121
|
do {
|
10951
|
-
const wallet = Wallet.fromMnemonic(
|
11122
|
+
const wallet = Wallet.fromMnemonic(this.#secret, this.getDerivePath(numberOfAccounts));
|
10952
11123
|
if (wallet.address.equals(ownerAddress)) {
|
10953
11124
|
return wallet.privateKey;
|
10954
11125
|
}
|
10955
11126
|
numberOfAccounts += 1;
|
10956
11127
|
} while (numberOfAccounts < this.numberOfAccounts);
|
10957
|
-
throw new
|
11128
|
+
throw new FuelError26(
|
10958
11129
|
ErrorCode23.WALLET_MANAGER_ERROR,
|
10959
11130
|
`Account with address '${address}' not found in derived wallets.`
|
10960
11131
|
);
|
@@ -10964,29 +11135,30 @@ var MnemonicVault = class {
|
|
10964
11135
|
return Wallet.fromPrivateKey(privateKey);
|
10965
11136
|
}
|
10966
11137
|
};
|
10967
|
-
_secret = new WeakMap();
|
10968
|
-
__publicField(MnemonicVault, "type", "mnemonic");
|
10969
11138
|
|
10970
11139
|
// src/wallet-manager/vaults/privatekey-vault.ts
|
10971
11140
|
import { Address as Address8 } from "@fuel-ts/address";
|
10972
|
-
import { ErrorCode as ErrorCode24, FuelError as
|
10973
|
-
var _privateKeys;
|
11141
|
+
import { ErrorCode as ErrorCode24, FuelError as FuelError27 } from "@fuel-ts/errors";
|
10974
11142
|
var PrivateKeyVault = class {
|
11143
|
+
static {
|
11144
|
+
__name(this, "PrivateKeyVault");
|
11145
|
+
}
|
11146
|
+
static type = "privateKey";
|
11147
|
+
#privateKeys = [];
|
10975
11148
|
/**
|
10976
11149
|
* If privateKey vault is initialized with a secretKey, it creates
|
10977
11150
|
* one account with the fallowing secret
|
10978
11151
|
*/
|
10979
11152
|
constructor(options = {}) {
|
10980
|
-
__privateAdd(this, _privateKeys, []);
|
10981
11153
|
if (options.secret) {
|
10982
|
-
|
11154
|
+
this.#privateKeys = [options.secret];
|
10983
11155
|
} else {
|
10984
|
-
|
11156
|
+
this.#privateKeys = options.accounts || [Wallet.generate().privateKey];
|
10985
11157
|
}
|
10986
11158
|
}
|
10987
11159
|
serialize() {
|
10988
11160
|
return {
|
10989
|
-
accounts:
|
11161
|
+
accounts: this.#privateKeys
|
10990
11162
|
};
|
10991
11163
|
}
|
10992
11164
|
getPublicAccount(privateKey) {
|
@@ -10997,20 +11169,20 @@ var PrivateKeyVault = class {
|
|
10997
11169
|
};
|
10998
11170
|
}
|
10999
11171
|
getAccounts() {
|
11000
|
-
return
|
11172
|
+
return this.#privateKeys.map((pk) => this.getPublicAccount(pk));
|
11001
11173
|
}
|
11002
11174
|
addAccount() {
|
11003
11175
|
const wallet = Wallet.generate();
|
11004
|
-
|
11176
|
+
this.#privateKeys.push(wallet.privateKey);
|
11005
11177
|
return this.getPublicAccount(wallet.privateKey);
|
11006
11178
|
}
|
11007
11179
|
exportAccount(address) {
|
11008
11180
|
const ownerAddress = new Address8(address);
|
11009
|
-
const privateKey =
|
11181
|
+
const privateKey = this.#privateKeys.find(
|
11010
11182
|
(pk) => Wallet.fromPrivateKey(pk).address.equals(ownerAddress)
|
11011
11183
|
);
|
11012
11184
|
if (!privateKey) {
|
11013
|
-
throw new
|
11185
|
+
throw new FuelError27(
|
11014
11186
|
ErrorCode24.WALLET_MANAGER_ERROR,
|
11015
11187
|
`No private key found for address '${address}'.`
|
11016
11188
|
);
|
@@ -11022,8 +11194,6 @@ var PrivateKeyVault = class {
|
|
11022
11194
|
return Wallet.fromPrivateKey(privateKey);
|
11023
11195
|
}
|
11024
11196
|
};
|
11025
|
-
_privateKeys = new WeakMap();
|
11026
|
-
__publicField(PrivateKeyVault, "type", "privateKey");
|
11027
11197
|
|
11028
11198
|
// src/wallet-manager/wallet-manager.ts
|
11029
11199
|
var ERROR_MESSAGES = {
|
@@ -11035,49 +11205,50 @@ var ERROR_MESSAGES = {
|
|
11035
11205
|
};
|
11036
11206
|
function assert(condition, message) {
|
11037
11207
|
if (!condition) {
|
11038
|
-
throw new
|
11208
|
+
throw new FuelError28(ErrorCode25.WALLET_MANAGER_ERROR, message);
|
11039
11209
|
}
|
11040
11210
|
}
|
11041
|
-
|
11042
|
-
var
|
11211
|
+
__name(assert, "assert");
|
11212
|
+
var WalletManager = class _WalletManager extends EventEmitter {
|
11213
|
+
static {
|
11214
|
+
__name(this, "WalletManager");
|
11215
|
+
}
|
11216
|
+
/**
|
11217
|
+
* Vaults
|
11218
|
+
*
|
11219
|
+
* Vaults are responsible to store secret keys and return an `Wallet` instance,
|
11220
|
+
* to interact with the network.
|
11221
|
+
*
|
11222
|
+
* Each vault has access to its own state
|
11223
|
+
*
|
11224
|
+
*/
|
11225
|
+
static Vaults = [MnemonicVault, PrivateKeyVault];
|
11226
|
+
/**
|
11227
|
+
* Storage
|
11228
|
+
*
|
11229
|
+
* Persistent encrypted data. `The default storage works only on memory`.
|
11230
|
+
*/
|
11231
|
+
storage = new MemoryStorage();
|
11232
|
+
/* Key name passed to the storage */
|
11233
|
+
STORAGE_KEY = "WalletManager";
|
11234
|
+
// `This variables are only accessible from inside the class`
|
11235
|
+
#vaults = [];
|
11236
|
+
#passphrase = "";
|
11237
|
+
#isLocked = true;
|
11043
11238
|
constructor(options) {
|
11044
11239
|
super();
|
11045
|
-
/**
|
11046
|
-
* Serialize all vaults to store
|
11047
|
-
*
|
11048
|
-
* `This is only accessible from inside the class`
|
11049
|
-
*/
|
11050
|
-
__privateAdd(this, _serializeVaults);
|
11051
|
-
/**
|
11052
|
-
* Deserialize all vaults to state
|
11053
|
-
*
|
11054
|
-
* `This is only accessible from inside the class`
|
11055
|
-
*/
|
11056
|
-
__privateAdd(this, _deserializeVaults);
|
11057
|
-
/**
|
11058
|
-
* Storage
|
11059
|
-
*
|
11060
|
-
* Persistent encrypted data. `The default storage works only on memory`.
|
11061
|
-
*/
|
11062
|
-
__publicField(this, "storage", new MemoryStorage());
|
11063
|
-
/* Key name passed to the storage */
|
11064
|
-
__publicField(this, "STORAGE_KEY", "WalletManager");
|
11065
|
-
// `This variables are only accessible from inside the class`
|
11066
|
-
__privateAdd(this, _vaults, []);
|
11067
|
-
__privateAdd(this, _passphrase, "");
|
11068
|
-
__privateAdd(this, _isLocked, true);
|
11069
11240
|
this.storage = options?.storage || this.storage;
|
11070
11241
|
}
|
11071
11242
|
get isLocked() {
|
11072
|
-
return
|
11243
|
+
return this.#isLocked;
|
11073
11244
|
}
|
11074
11245
|
/**
|
11075
11246
|
* Return the vault serialized object containing all the privateKeys,
|
11076
11247
|
* the format of the return depends on the Vault type.
|
11077
11248
|
*/
|
11078
11249
|
exportVault(vaultId) {
|
11079
|
-
assert(!
|
11080
|
-
const vaultState =
|
11250
|
+
assert(!this.#isLocked, ERROR_MESSAGES.wallet_not_unlocked);
|
11251
|
+
const vaultState = this.#vaults.find((_, idx) => idx === vaultId);
|
11081
11252
|
assert(vaultState, ERROR_MESSAGES.vault_not_found);
|
11082
11253
|
return vaultState.vault.serialize();
|
11083
11254
|
}
|
@@ -11085,7 +11256,7 @@ var _WalletManager = class extends EventEmitter {
|
|
11085
11256
|
* List all vaults on the Wallet Manager, this function not return secret's
|
11086
11257
|
*/
|
11087
11258
|
getVaults() {
|
11088
|
-
return
|
11259
|
+
return this.#vaults.map((v, idx) => ({
|
11089
11260
|
title: v.title,
|
11090
11261
|
type: v.type,
|
11091
11262
|
vaultId: idx
|
@@ -11095,7 +11266,7 @@ var _WalletManager = class extends EventEmitter {
|
|
11095
11266
|
* List all accounts on the Wallet Manager not vault information is revealed
|
11096
11267
|
*/
|
11097
11268
|
getAccounts() {
|
11098
|
-
return
|
11269
|
+
return this.#vaults.flatMap(
|
11099
11270
|
(vaultState, vaultId) => vaultState.vault.getAccounts().map((account) => ({ ...account, vaultId }))
|
11100
11271
|
);
|
11101
11272
|
}
|
@@ -11104,7 +11275,7 @@ var _WalletManager = class extends EventEmitter {
|
|
11104
11275
|
*/
|
11105
11276
|
getWallet(address) {
|
11106
11277
|
const ownerAddress = new Address9(address);
|
11107
|
-
const vaultState =
|
11278
|
+
const vaultState = this.#vaults.find(
|
11108
11279
|
(vs) => vs.vault.getAccounts().find((a) => a.address.equals(ownerAddress))
|
11109
11280
|
);
|
11110
11281
|
assert(vaultState, ERROR_MESSAGES.address_not_found);
|
@@ -11115,8 +11286,8 @@ var _WalletManager = class extends EventEmitter {
|
|
11115
11286
|
*/
|
11116
11287
|
exportPrivateKey(address) {
|
11117
11288
|
const ownerAddress = new Address9(address);
|
11118
|
-
assert(!
|
11119
|
-
const vaultState =
|
11289
|
+
assert(!this.#isLocked, ERROR_MESSAGES.wallet_not_unlocked);
|
11290
|
+
const vaultState = this.#vaults.find(
|
11120
11291
|
(vs) => vs.vault.getAccounts().find((a) => a.address.equals(ownerAddress))
|
11121
11292
|
);
|
11122
11293
|
assert(vaultState, ERROR_MESSAGES.address_not_found);
|
@@ -11128,7 +11299,7 @@ var _WalletManager = class extends EventEmitter {
|
|
11128
11299
|
*/
|
11129
11300
|
async addAccount(options) {
|
11130
11301
|
await this.loadState();
|
11131
|
-
const vaultState =
|
11302
|
+
const vaultState = this.#vaults[options?.vaultId || 0];
|
11132
11303
|
await assert(vaultState, ERROR_MESSAGES.vault_not_found);
|
11133
11304
|
const account = vaultState.vault.addAccount();
|
11134
11305
|
await this.saveState();
|
@@ -11139,7 +11310,7 @@ var _WalletManager = class extends EventEmitter {
|
|
11139
11310
|
* created by the vault.
|
11140
11311
|
*/
|
11141
11312
|
async removeVault(index) {
|
11142
|
-
|
11313
|
+
this.#vaults.splice(index, 1);
|
11143
11314
|
await this.saveState();
|
11144
11315
|
}
|
11145
11316
|
/**
|
@@ -11150,11 +11321,11 @@ var _WalletManager = class extends EventEmitter {
|
|
11150
11321
|
await this.loadState();
|
11151
11322
|
const Vault2 = this.getVaultClass(vaultConfig.type);
|
11152
11323
|
const vault = new Vault2(vaultConfig);
|
11153
|
-
|
11324
|
+
this.#vaults = this.#vaults.concat({
|
11154
11325
|
title: vaultConfig.title,
|
11155
11326
|
type: vaultConfig.type,
|
11156
11327
|
vault
|
11157
|
-
})
|
11328
|
+
});
|
11158
11329
|
await this.saveState();
|
11159
11330
|
}
|
11160
11331
|
/**
|
@@ -11162,9 +11333,9 @@ var _WalletManager = class extends EventEmitter {
|
|
11162
11333
|
* secrets.
|
11163
11334
|
*/
|
11164
11335
|
lock() {
|
11165
|
-
|
11166
|
-
|
11167
|
-
|
11336
|
+
this.#isLocked = true;
|
11337
|
+
this.#vaults = [];
|
11338
|
+
this.#passphrase = "";
|
11168
11339
|
this.emit("lock");
|
11169
11340
|
}
|
11170
11341
|
/**
|
@@ -11172,8 +11343,8 @@ var _WalletManager = class extends EventEmitter {
|
|
11172
11343
|
* Vaults with secrets are not unlocked or instantiated on this moment.
|
11173
11344
|
*/
|
11174
11345
|
async unlock(passphrase) {
|
11175
|
-
|
11176
|
-
|
11346
|
+
this.#passphrase = passphrase;
|
11347
|
+
this.#isLocked = false;
|
11177
11348
|
try {
|
11178
11349
|
await this.loadState();
|
11179
11350
|
this.emit("unlock");
|
@@ -11186,9 +11357,9 @@ var _WalletManager = class extends EventEmitter {
|
|
11186
11357
|
* Update WalletManager encryption passphrase
|
11187
11358
|
*/
|
11188
11359
|
async updatePassphrase(oldpass, newpass) {
|
11189
|
-
const isLocked =
|
11360
|
+
const isLocked = this.#isLocked;
|
11190
11361
|
await this.unlock(oldpass);
|
11191
|
-
|
11362
|
+
this.#passphrase = newpass;
|
11192
11363
|
await this.saveState();
|
11193
11364
|
await this.loadState();
|
11194
11365
|
if (isLocked) {
|
@@ -11199,24 +11370,51 @@ var _WalletManager = class extends EventEmitter {
|
|
11199
11370
|
* Retrieve and decrypt WalletManager state from storage
|
11200
11371
|
*/
|
11201
11372
|
async loadState() {
|
11202
|
-
await assert(!
|
11373
|
+
await assert(!this.#isLocked, ERROR_MESSAGES.wallet_not_unlocked);
|
11203
11374
|
const data = await this.storage.getItem(this.STORAGE_KEY);
|
11204
11375
|
if (data) {
|
11205
|
-
const state = await decrypt(
|
11206
|
-
|
11376
|
+
const state = await decrypt(this.#passphrase, JSON.parse(data));
|
11377
|
+
this.#vaults = this.#deserializeVaults(state.vaults);
|
11207
11378
|
}
|
11208
11379
|
}
|
11209
11380
|
/**
|
11210
11381
|
* Store encrypted WalletManager state on storage
|
11211
11382
|
*/
|
11212
11383
|
async saveState() {
|
11213
|
-
await assert(!
|
11214
|
-
const encryptedData = await encrypt(
|
11215
|
-
vaults:
|
11384
|
+
await assert(!this.#isLocked, ERROR_MESSAGES.wallet_not_unlocked);
|
11385
|
+
const encryptedData = await encrypt(this.#passphrase, {
|
11386
|
+
vaults: this.#serializeVaults(this.#vaults)
|
11216
11387
|
});
|
11217
11388
|
await this.storage.setItem(this.STORAGE_KEY, JSON.stringify(encryptedData));
|
11218
11389
|
this.emit("update");
|
11219
11390
|
}
|
11391
|
+
/**
|
11392
|
+
* Serialize all vaults to store
|
11393
|
+
*
|
11394
|
+
* `This is only accessible from inside the class`
|
11395
|
+
*/
|
11396
|
+
#serializeVaults(vaults) {
|
11397
|
+
return vaults.map(({ title, type, vault }) => ({
|
11398
|
+
title,
|
11399
|
+
type,
|
11400
|
+
data: vault.serialize()
|
11401
|
+
}));
|
11402
|
+
}
|
11403
|
+
/**
|
11404
|
+
* Deserialize all vaults to state
|
11405
|
+
*
|
11406
|
+
* `This is only accessible from inside the class`
|
11407
|
+
*/
|
11408
|
+
#deserializeVaults(vaults) {
|
11409
|
+
return vaults.map(({ title, type, data: vaultConfig }) => {
|
11410
|
+
const VaultClass = this.getVaultClass(type);
|
11411
|
+
return {
|
11412
|
+
title,
|
11413
|
+
type,
|
11414
|
+
vault: new VaultClass(vaultConfig)
|
11415
|
+
};
|
11416
|
+
});
|
11417
|
+
}
|
11220
11418
|
/**
|
11221
11419
|
* Return a instantiable Class reference from `WalletManager.Vaults` supported list.
|
11222
11420
|
*/
|
@@ -11226,74 +11424,47 @@ var _WalletManager = class extends EventEmitter {
|
|
11226
11424
|
return VaultClass;
|
11227
11425
|
}
|
11228
11426
|
};
|
11229
|
-
var WalletManager = _WalletManager;
|
11230
|
-
_vaults = new WeakMap();
|
11231
|
-
_passphrase = new WeakMap();
|
11232
|
-
_isLocked = new WeakMap();
|
11233
|
-
_serializeVaults = new WeakSet();
|
11234
|
-
serializeVaults_fn = function(vaults) {
|
11235
|
-
return vaults.map(({ title, type, vault }) => ({
|
11236
|
-
title,
|
11237
|
-
type,
|
11238
|
-
data: vault.serialize()
|
11239
|
-
}));
|
11240
|
-
};
|
11241
|
-
_deserializeVaults = new WeakSet();
|
11242
|
-
deserializeVaults_fn = function(vaults) {
|
11243
|
-
return vaults.map(({ title, type, data: vaultConfig }) => {
|
11244
|
-
const VaultClass = this.getVaultClass(type);
|
11245
|
-
return {
|
11246
|
-
title,
|
11247
|
-
type,
|
11248
|
-
vault: new VaultClass(vaultConfig)
|
11249
|
-
};
|
11250
|
-
});
|
11251
|
-
};
|
11252
|
-
/**
|
11253
|
-
* Vaults
|
11254
|
-
*
|
11255
|
-
* Vaults are responsible to store secret keys and return an `Wallet` instance,
|
11256
|
-
* to interact with the network.
|
11257
|
-
*
|
11258
|
-
* Each vault has access to its own state
|
11259
|
-
*
|
11260
|
-
*/
|
11261
|
-
__publicField(WalletManager, "Vaults", [MnemonicVault, PrivateKeyVault]);
|
11262
11427
|
|
11263
11428
|
// src/wallet-manager/types.ts
|
11264
|
-
import { ErrorCode as ErrorCode26, FuelError as
|
11429
|
+
import { ErrorCode as ErrorCode26, FuelError as FuelError29 } from "@fuel-ts/errors";
|
11265
11430
|
var Vault = class {
|
11431
|
+
static {
|
11432
|
+
__name(this, "Vault");
|
11433
|
+
}
|
11434
|
+
static type;
|
11266
11435
|
constructor(_options) {
|
11267
|
-
throw new
|
11436
|
+
throw new FuelError29(ErrorCode26.NOT_IMPLEMENTED, "Not implemented.");
|
11268
11437
|
}
|
11269
11438
|
serialize() {
|
11270
|
-
throw new
|
11439
|
+
throw new FuelError29(ErrorCode26.NOT_IMPLEMENTED, "Not implemented.");
|
11271
11440
|
}
|
11272
11441
|
getAccounts() {
|
11273
|
-
throw new
|
11442
|
+
throw new FuelError29(ErrorCode26.NOT_IMPLEMENTED, "Not implemented.");
|
11274
11443
|
}
|
11275
11444
|
addAccount() {
|
11276
|
-
throw new
|
11445
|
+
throw new FuelError29(ErrorCode26.NOT_IMPLEMENTED, "Not implemented.");
|
11277
11446
|
}
|
11278
11447
|
exportAccount(_address) {
|
11279
|
-
throw new
|
11448
|
+
throw new FuelError29(ErrorCode26.NOT_IMPLEMENTED, "Not implemented.");
|
11280
11449
|
}
|
11281
11450
|
getWallet(_address) {
|
11282
|
-
throw new
|
11451
|
+
throw new FuelError29(ErrorCode26.NOT_IMPLEMENTED, "Not implemented.");
|
11283
11452
|
}
|
11284
11453
|
};
|
11285
|
-
__publicField(Vault, "type");
|
11286
11454
|
var StorageAbstract = class {
|
11455
|
+
static {
|
11456
|
+
__name(this, "StorageAbstract");
|
11457
|
+
}
|
11287
11458
|
};
|
11288
11459
|
|
11289
11460
|
// src/predicate/predicate.ts
|
11290
11461
|
import { Interface as Interface3 } from "@fuel-ts/abi-coder";
|
11291
11462
|
import { Address as Address10 } from "@fuel-ts/address";
|
11292
|
-
import { ErrorCode as ErrorCode28, FuelError as
|
11463
|
+
import { ErrorCode as ErrorCode28, FuelError as FuelError31 } from "@fuel-ts/errors";
|
11293
11464
|
import { arrayify as arrayify23, hexlify as hexlify24 } from "@fuel-ts/utils";
|
11294
11465
|
|
11295
11466
|
// src/utils/deployScriptOrPredicate.ts
|
11296
|
-
import { FuelError as
|
11467
|
+
import { FuelError as FuelError30, ErrorCode as ErrorCode27 } from "@fuel-ts/errors";
|
11297
11468
|
import { bn as bn22 } from "@fuel-ts/math";
|
11298
11469
|
import { arrayify as arrayify21 } from "@fuel-ts/utils";
|
11299
11470
|
|
@@ -11313,26 +11484,30 @@ function getBytecodeDataOffset(bytecode) {
|
|
11313
11484
|
const [offset] = new BigNumberCoder3("u64").decode(bytecode, DATA_OFFSET_INDEX);
|
11314
11485
|
return offset.toNumber();
|
11315
11486
|
}
|
11487
|
+
__name(getBytecodeDataOffset, "getBytecodeDataOffset");
|
11316
11488
|
function getBytecodeConfigurableOffset(bytecode) {
|
11317
11489
|
const [offset] = new BigNumberCoder3("u64").decode(bytecode, CONFIGURABLE_OFFSET_INDEX);
|
11318
11490
|
return offset.toNumber();
|
11319
11491
|
}
|
11492
|
+
__name(getBytecodeConfigurableOffset, "getBytecodeConfigurableOffset");
|
11320
11493
|
function getBytecodeId(bytecode) {
|
11321
11494
|
const configurableOffset = getBytecodeConfigurableOffset(bytecode);
|
11322
11495
|
const byteCodeWithoutConfigurableSection = bytecode.slice(0, configurableOffset);
|
11323
11496
|
return sha2565(byteCodeWithoutConfigurableSection);
|
11324
11497
|
}
|
11498
|
+
__name(getBytecodeId, "getBytecodeId");
|
11325
11499
|
function getLegacyBlobId(bytecode) {
|
11326
11500
|
const dataOffset = getBytecodeDataOffset(bytecode);
|
11327
11501
|
const byteCodeWithoutDataSection = bytecode.slice(0, dataOffset);
|
11328
11502
|
return sha2565(byteCodeWithoutDataSection);
|
11329
11503
|
}
|
11504
|
+
__name(getLegacyBlobId, "getLegacyBlobId");
|
11330
11505
|
function getPredicateScriptLoaderInstructions(originalBinary, blobId) {
|
11331
11506
|
const { RegId, Instruction } = asm2;
|
11332
11507
|
const REG_PC = RegId.pc().to_u8();
|
11333
11508
|
const REG_SP = RegId.sp().to_u8();
|
11334
11509
|
const REG_IS = RegId.is().to_u8();
|
11335
|
-
const getInstructions = (numOfInstructions2) => [
|
11510
|
+
const getInstructions = /* @__PURE__ */ __name((numOfInstructions2) => [
|
11336
11511
|
// 1. Load the blob content into memory
|
11337
11512
|
// Find the start of the hardcoded blob ID, which is located after the loader code ends.
|
11338
11513
|
asm2.move_(REG_ADDRESS_OF_DATA_AFTER_CODE, REG_PC),
|
@@ -11366,8 +11541,8 @@ function getPredicateScriptLoaderInstructions(originalBinary, blobId) {
|
|
11366
11541
|
asm2.divi(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, 4),
|
11367
11542
|
// Jump to the start of the contract we loaded.
|
11368
11543
|
asm2.jmp(REG_START_OF_LOADED_CODE)
|
11369
|
-
];
|
11370
|
-
const getInstructionsNoDataSection = (numOfInstructions2) => [
|
11544
|
+
], "getInstructions");
|
11545
|
+
const getInstructionsNoDataSection = /* @__PURE__ */ __name((numOfInstructions2) => [
|
11371
11546
|
// 1. Load the blob content into memory
|
11372
11547
|
// Find the start of the hardcoded blob ID, which is located after the loader code ends.
|
11373
11548
|
// 1. Load the blob content into memory
|
@@ -11394,7 +11569,7 @@ function getPredicateScriptLoaderInstructions(originalBinary, blobId) {
|
|
11394
11569
|
asm2.divi(REG_START_OF_LOADED_CODE, REG_START_OF_LOADED_CODE, 4),
|
11395
11570
|
// Jump to the start of the contract we loaded.
|
11396
11571
|
asm2.jmp(REG_START_OF_LOADED_CODE)
|
11397
|
-
];
|
11572
|
+
], "getInstructionsNoDataSection");
|
11398
11573
|
const offset = getBytecodeConfigurableOffset(originalBinary);
|
11399
11574
|
if (originalBinary.length < offset) {
|
11400
11575
|
throw new Error(
|
@@ -11439,6 +11614,7 @@ function getPredicateScriptLoaderInstructions(originalBinary, blobId) {
|
|
11439
11614
|
const loaderBytecode = new Uint8Array([...instructionBytes, ...blobBytes]);
|
11440
11615
|
return { loaderBytecode };
|
11441
11616
|
}
|
11617
|
+
__name(getPredicateScriptLoaderInstructions, "getPredicateScriptLoaderInstructions");
|
11442
11618
|
|
11443
11619
|
// src/utils/deployScriptOrPredicate.ts
|
11444
11620
|
async function fundBlobTx(deployer, blobTxRequest) {
|
@@ -11455,12 +11631,13 @@ async function fundBlobTx(deployer, blobTxRequest) {
|
|
11455
11631
|
}).add(1);
|
11456
11632
|
totalCost = totalCost.add(minFee);
|
11457
11633
|
if (totalCost.gt(await deployer.getBalance())) {
|
11458
|
-
throw new
|
11634
|
+
throw new FuelError30(ErrorCode27.FUNDS_TOO_LOW, "Insufficient balance to deploy predicate.");
|
11459
11635
|
}
|
11460
11636
|
const txCost = await deployer.getTransactionCost(blobTxRequest);
|
11461
11637
|
blobTxRequest.maxFee = txCost.maxFee;
|
11462
11638
|
return deployer.fund(blobTxRequest, txCost);
|
11463
11639
|
}
|
11640
|
+
__name(fundBlobTx, "fundBlobTx");
|
11464
11641
|
function adjustConfigurableOffsets(jsonAbi, configurableOffsetDiff) {
|
11465
11642
|
const { configurables: readOnlyConfigurables } = jsonAbi;
|
11466
11643
|
const configurables = [];
|
@@ -11469,6 +11646,7 @@ function adjustConfigurableOffsets(jsonAbi, configurableOffsetDiff) {
|
|
11469
11646
|
});
|
11470
11647
|
return { ...jsonAbi, configurables };
|
11471
11648
|
}
|
11649
|
+
__name(adjustConfigurableOffsets, "adjustConfigurableOffsets");
|
11472
11650
|
async function deployScriptOrPredicate({
|
11473
11651
|
deployer,
|
11474
11652
|
bytecode,
|
@@ -11493,12 +11671,12 @@ async function deployScriptOrPredicate({
|
|
11493
11671
|
const loaderInstance = loaderInstanceCallback(loaderBytecode, newAbi);
|
11494
11672
|
if (blobExists) {
|
11495
11673
|
return {
|
11496
|
-
waitForResult: () => Promise.resolve(loaderInstance),
|
11674
|
+
waitForResult: /* @__PURE__ */ __name(() => Promise.resolve(loaderInstance), "waitForResult"),
|
11497
11675
|
blobId
|
11498
11676
|
};
|
11499
11677
|
}
|
11500
11678
|
const fundedBlobRequest = await fundBlobTx(deployer, blobTxRequest);
|
11501
|
-
const waitForResult = async () => {
|
11679
|
+
const waitForResult = /* @__PURE__ */ __name(async () => {
|
11502
11680
|
try {
|
11503
11681
|
const blobTx = await deployer.sendTransaction(fundedBlobRequest);
|
11504
11682
|
const result = await blobTx.waitForResult();
|
@@ -11506,31 +11684,35 @@ async function deployScriptOrPredicate({
|
|
11506
11684
|
throw new Error();
|
11507
11685
|
}
|
11508
11686
|
} catch (err) {
|
11509
|
-
throw new
|
11687
|
+
throw new FuelError30(ErrorCode27.TRANSACTION_FAILED, "Failed to deploy predicate chunk");
|
11510
11688
|
}
|
11511
11689
|
return loaderInstance;
|
11512
|
-
};
|
11690
|
+
}, "waitForResult");
|
11513
11691
|
return {
|
11514
11692
|
waitForResult,
|
11515
11693
|
blobId
|
11516
11694
|
};
|
11517
11695
|
}
|
11696
|
+
__name(deployScriptOrPredicate, "deployScriptOrPredicate");
|
11518
11697
|
|
11519
11698
|
// src/predicate/utils/getPredicateRoot.ts
|
11520
11699
|
import { hash as hash3 } from "@fuel-ts/hasher";
|
11521
11700
|
import { calcRoot } from "@fuel-ts/merkle";
|
11522
11701
|
import { chunkAndPadBytes, hexlify as hexlify23, concat as concat8, arrayify as arrayify22 } from "@fuel-ts/utils";
|
11523
|
-
var getPredicateRoot = (bytecode) => {
|
11702
|
+
var getPredicateRoot = /* @__PURE__ */ __name((bytecode) => {
|
11524
11703
|
const chunkSize = 16 * 1024;
|
11525
11704
|
const bytes = arrayify22(bytecode);
|
11526
11705
|
const chunks = chunkAndPadBytes(bytes, chunkSize);
|
11527
11706
|
const codeRoot = calcRoot(chunks.map((c) => hexlify23(c)));
|
11528
11707
|
const predicateRoot = hash3(concat8(["0x4655454C", codeRoot]));
|
11529
11708
|
return predicateRoot;
|
11530
|
-
};
|
11709
|
+
}, "getPredicateRoot");
|
11531
11710
|
|
11532
11711
|
// src/predicate/predicate.ts
|
11533
|
-
var Predicate = class extends Account {
|
11712
|
+
var Predicate = class _Predicate extends Account {
|
11713
|
+
static {
|
11714
|
+
__name(this, "Predicate");
|
11715
|
+
}
|
11534
11716
|
bytes;
|
11535
11717
|
predicateData = [];
|
11536
11718
|
interface;
|
@@ -11552,7 +11734,7 @@ var Predicate = class extends Account {
|
|
11552
11734
|
data,
|
11553
11735
|
configurableConstants
|
11554
11736
|
}) {
|
11555
|
-
const { predicateBytes, predicateInterface } =
|
11737
|
+
const { predicateBytes, predicateInterface } = _Predicate.processPredicateData(
|
11556
11738
|
bytecode,
|
11557
11739
|
abi,
|
11558
11740
|
configurableConstants
|
@@ -11621,7 +11803,7 @@ var Predicate = class extends Account {
|
|
11621
11803
|
* @returns A new Predicate instance with the same bytecode, ABI and provider but with the ability to set the data and configurable constants.
|
11622
11804
|
*/
|
11623
11805
|
toNewInstance(overrides = {}) {
|
11624
|
-
return new
|
11806
|
+
return new _Predicate({
|
11625
11807
|
bytecode: this.initialBytecode,
|
11626
11808
|
abi: this.interface.jsonAbi,
|
11627
11809
|
provider: this.provider,
|
@@ -11641,13 +11823,13 @@ var Predicate = class extends Account {
|
|
11641
11823
|
let predicateBytes = arrayify23(bytes);
|
11642
11824
|
const abiInterface = new Interface3(jsonAbi);
|
11643
11825
|
if (abiInterface.functions.main === void 0) {
|
11644
|
-
throw new
|
11826
|
+
throw new FuelError31(
|
11645
11827
|
ErrorCode28.ABI_MAIN_METHOD_MISSING,
|
11646
11828
|
'Cannot use ABI without "main" function.'
|
11647
11829
|
);
|
11648
11830
|
}
|
11649
11831
|
if (configurableConstants && Object.keys(configurableConstants).length) {
|
11650
|
-
predicateBytes =
|
11832
|
+
predicateBytes = _Predicate.setConfigurableConstants(
|
11651
11833
|
predicateBytes,
|
11652
11834
|
configurableConstants,
|
11653
11835
|
abiInterface
|
@@ -11702,14 +11884,14 @@ var Predicate = class extends Account {
|
|
11702
11884
|
const mutatedBytes = bytes;
|
11703
11885
|
try {
|
11704
11886
|
if (Object.keys(abiInterface.configurables).length === 0) {
|
11705
|
-
throw new
|
11887
|
+
throw new FuelError31(
|
11706
11888
|
ErrorCode28.INVALID_CONFIGURABLE_CONSTANTS,
|
11707
11889
|
"Predicate has no configurable constants to be set"
|
11708
11890
|
);
|
11709
11891
|
}
|
11710
11892
|
Object.entries(configurableConstants).forEach(([key, value]) => {
|
11711
11893
|
if (!abiInterface?.configurables[key]) {
|
11712
|
-
throw new
|
11894
|
+
throw new FuelError31(
|
11713
11895
|
ErrorCode28.CONFIGURABLE_NOT_FOUND,
|
11714
11896
|
`No configurable constant named '${key}' found in the Predicate`
|
11715
11897
|
);
|
@@ -11719,7 +11901,7 @@ var Predicate = class extends Account {
|
|
11719
11901
|
mutatedBytes.set(encoded, offset);
|
11720
11902
|
});
|
11721
11903
|
} catch (err) {
|
11722
|
-
throw new
|
11904
|
+
throw new FuelError31(
|
11723
11905
|
ErrorCode28.INVALID_CONFIGURABLE_CONSTANTS,
|
11724
11906
|
`Error setting configurable constants: ${err.message}.`
|
11725
11907
|
);
|
@@ -11762,12 +11944,12 @@ var Predicate = class extends Account {
|
|
11762
11944
|
deployer: account,
|
11763
11945
|
abi: this.interface.jsonAbi,
|
11764
11946
|
bytecode: this.bytes,
|
11765
|
-
loaderInstanceCallback: (loaderBytecode, newAbi) => new
|
11947
|
+
loaderInstanceCallback: /* @__PURE__ */ __name((loaderBytecode, newAbi) => new _Predicate({
|
11766
11948
|
bytecode: loaderBytecode,
|
11767
11949
|
abi: newAbi,
|
11768
11950
|
provider: this.provider,
|
11769
11951
|
data: this.predicateData
|
11770
|
-
})
|
11952
|
+
}), "loaderInstanceCallback")
|
11771
11953
|
});
|
11772
11954
|
}
|
11773
11955
|
};
|
@@ -11776,7 +11958,7 @@ var Predicate = class extends Account {
|
|
11776
11958
|
import { ErrorCode as ErrorCode29, FuelError as FuelError33 } from "@fuel-ts/errors";
|
11777
11959
|
|
11778
11960
|
// src/connectors/fuel-connector.ts
|
11779
|
-
import { FuelError as
|
11961
|
+
import { FuelError as FuelError32 } from "@fuel-ts/errors";
|
11780
11962
|
import { EventEmitter as EventEmitter2 } from "events";
|
11781
11963
|
|
11782
11964
|
// src/connectors/types/connector-types.ts
|
@@ -11818,6 +12000,9 @@ var FuelConnectorEventType = "FuelConnector";
|
|
11818
12000
|
|
11819
12001
|
// src/connectors/types/local-storage.ts
|
11820
12002
|
var LocalStorage = class {
|
12003
|
+
static {
|
12004
|
+
__name(this, "LocalStorage");
|
12005
|
+
}
|
11821
12006
|
storage;
|
11822
12007
|
constructor(localStorage) {
|
11823
12008
|
this.storage = localStorage;
|
@@ -11838,6 +12023,9 @@ var LocalStorage = class {
|
|
11838
12023
|
|
11839
12024
|
// src/connectors/fuel-connector.ts
|
11840
12025
|
var FuelConnector = class extends EventEmitter2 {
|
12026
|
+
static {
|
12027
|
+
__name(this, "FuelConnector");
|
12028
|
+
}
|
11841
12029
|
name = "";
|
11842
12030
|
metadata = {};
|
11843
12031
|
connected = false;
|
@@ -11851,7 +12039,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11851
12039
|
* @returns Always true.
|
11852
12040
|
*/
|
11853
12041
|
async ping() {
|
11854
|
-
throw new
|
12042
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11855
12043
|
}
|
11856
12044
|
/**
|
11857
12045
|
* Should return the current version of the connector
|
@@ -11860,7 +12048,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11860
12048
|
* @returns boolean - connection status.
|
11861
12049
|
*/
|
11862
12050
|
async version() {
|
11863
|
-
throw new
|
12051
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11864
12052
|
}
|
11865
12053
|
/**
|
11866
12054
|
* Should return true if the connector is connected
|
@@ -11869,7 +12057,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11869
12057
|
* @returns The connection status.
|
11870
12058
|
*/
|
11871
12059
|
async isConnected() {
|
11872
|
-
throw new
|
12060
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11873
12061
|
}
|
11874
12062
|
/**
|
11875
12063
|
* Should return all the accounts authorized for the
|
@@ -11878,7 +12066,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11878
12066
|
* @returns The accounts addresses strings
|
11879
12067
|
*/
|
11880
12068
|
async accounts() {
|
11881
|
-
throw new
|
12069
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11882
12070
|
}
|
11883
12071
|
/**
|
11884
12072
|
* Should start the connection process and return
|
@@ -11890,7 +12078,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11890
12078
|
* @returns boolean - connection status.
|
11891
12079
|
*/
|
11892
12080
|
async connect() {
|
11893
|
-
throw new
|
12081
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11894
12082
|
}
|
11895
12083
|
/**
|
11896
12084
|
* Should disconnect the current connection and
|
@@ -11900,7 +12088,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11900
12088
|
* @returns The connection status.
|
11901
12089
|
*/
|
11902
12090
|
async disconnect() {
|
11903
|
-
throw new
|
12091
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11904
12092
|
}
|
11905
12093
|
/**
|
11906
12094
|
* Should start the sign message process and return
|
@@ -11912,7 +12100,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11912
12100
|
* @returns Message signature
|
11913
12101
|
*/
|
11914
12102
|
async signMessage(_address, _message) {
|
11915
|
-
throw new
|
12103
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11916
12104
|
}
|
11917
12105
|
/**
|
11918
12106
|
* Should start the sign transaction process and return
|
@@ -11924,7 +12112,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11924
12112
|
* @returns Transaction signature
|
11925
12113
|
*/
|
11926
12114
|
async signTransaction(_address, _transaction) {
|
11927
|
-
throw new
|
12115
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11928
12116
|
}
|
11929
12117
|
/**
|
11930
12118
|
* Should start the send transaction process and return
|
@@ -11940,7 +12128,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11940
12128
|
* @returns The transaction id or transaction response
|
11941
12129
|
*/
|
11942
12130
|
async sendTransaction(_address, _transaction, _params) {
|
11943
|
-
throw new
|
12131
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11944
12132
|
}
|
11945
12133
|
/**
|
11946
12134
|
* Should return the current account selected inside the connector, if the account
|
@@ -11951,7 +12139,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11951
12139
|
* @returns The current account selected otherwise null.
|
11952
12140
|
*/
|
11953
12141
|
async currentAccount() {
|
11954
|
-
throw new
|
12142
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11955
12143
|
}
|
11956
12144
|
/**
|
11957
12145
|
* Should add the assets metadata to the connector and return true if the asset
|
@@ -11965,7 +12153,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11965
12153
|
* @returns True if the asset was added successfully
|
11966
12154
|
*/
|
11967
12155
|
async addAssets(_assets) {
|
11968
|
-
throw new
|
12156
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11969
12157
|
}
|
11970
12158
|
/**
|
11971
12159
|
* Should add the asset metadata to the connector and return true if the asset
|
@@ -11979,7 +12167,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11979
12167
|
* @returns True if the asset was added successfully
|
11980
12168
|
*/
|
11981
12169
|
async addAsset(_asset) {
|
11982
|
-
throw new
|
12170
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11983
12171
|
}
|
11984
12172
|
/**
|
11985
12173
|
* Should return all the assets added to the connector. If a connection is already established.
|
@@ -11987,7 +12175,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11987
12175
|
* @returns Array of assets metadata from the connector vinculated to the all accounts from a specific Wallet.
|
11988
12176
|
*/
|
11989
12177
|
async assets() {
|
11990
|
-
throw new
|
12178
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
11991
12179
|
}
|
11992
12180
|
/**
|
11993
12181
|
* Should start the add network process and return true if the network was added successfully.
|
@@ -11998,7 +12186,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
11998
12186
|
* @returns Return true if the network was added successfully
|
11999
12187
|
*/
|
12000
12188
|
async addNetwork(_networkUrl) {
|
12001
|
-
throw new
|
12189
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
12002
12190
|
}
|
12003
12191
|
/**
|
12004
12192
|
* Should start the select network process and return true if the network has change successfully.
|
@@ -12009,7 +12197,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
12009
12197
|
* @returns Return true if the network was added successfully
|
12010
12198
|
*/
|
12011
12199
|
async selectNetwork(_network) {
|
12012
|
-
throw new
|
12200
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
12013
12201
|
}
|
12014
12202
|
/**
|
12015
12203
|
* Should return all the networks available from the connector. If the connection is already established.
|
@@ -12017,7 +12205,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
12017
12205
|
* @returns Return all the networks added to the connector.
|
12018
12206
|
*/
|
12019
12207
|
async networks() {
|
12020
|
-
throw new
|
12208
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
12021
12209
|
}
|
12022
12210
|
/**
|
12023
12211
|
* Should return the current network selected inside the connector. Even if the connection is not established.
|
@@ -12025,7 +12213,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
12025
12213
|
* @returns Return the current network selected inside the connector.
|
12026
12214
|
*/
|
12027
12215
|
async currentNetwork() {
|
12028
|
-
throw new
|
12216
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
12029
12217
|
}
|
12030
12218
|
/**
|
12031
12219
|
* Should add the ABI to the connector and return true if the ABI was added successfully.
|
@@ -12035,7 +12223,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
12035
12223
|
* @returns Return true if the ABI was added successfully.
|
12036
12224
|
*/
|
12037
12225
|
async addABI(_contractId, _abi) {
|
12038
|
-
throw new
|
12226
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
12039
12227
|
}
|
12040
12228
|
/**
|
12041
12229
|
* Should return the ABI from the connector vinculated to the all accounts from a specific Wallet.
|
@@ -12044,7 +12232,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
12044
12232
|
* @returns The ABI if it exists, otherwise return null.
|
12045
12233
|
*/
|
12046
12234
|
async getABI(_id) {
|
12047
|
-
throw new
|
12235
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
12048
12236
|
}
|
12049
12237
|
/**
|
12050
12238
|
* Should return true if the abi exists in the connector vinculated to the all accounts from a specific Wallet.
|
@@ -12053,7 +12241,7 @@ var FuelConnector = class extends EventEmitter2 {
|
|
12053
12241
|
* @returns Returns true if the abi exists or false if not.
|
12054
12242
|
*/
|
12055
12243
|
async hasABI(_id) {
|
12056
|
-
throw new
|
12244
|
+
throw new FuelError32(FuelError32.CODES.NOT_IMPLEMENTED, "Method not implemented.");
|
12057
12245
|
}
|
12058
12246
|
/**
|
12059
12247
|
* Event listener for the connector.
|
@@ -12086,6 +12274,7 @@ function cacheFor(fn, { cache: cache2, cacheTime, key }) {
|
|
12086
12274
|
return result;
|
12087
12275
|
};
|
12088
12276
|
}
|
12277
|
+
__name(cacheFor, "cacheFor");
|
12089
12278
|
|
12090
12279
|
// src/connectors/utils/dispatch-fuel-connector-event.ts
|
12091
12280
|
function dispatchFuelConnectorEvent(connector) {
|
@@ -12095,37 +12284,24 @@ function dispatchFuelConnectorEvent(connector) {
|
|
12095
12284
|
})
|
12096
12285
|
);
|
12097
12286
|
}
|
12098
|
-
|
12099
|
-
// src/connectors/utils/promises.ts
|
12100
|
-
import { FuelError as FuelError32 } from "@fuel-ts/errors";
|
12101
|
-
function deferPromise() {
|
12102
|
-
const defer = {};
|
12103
|
-
defer.promise = new Promise((resolve, reject) => {
|
12104
|
-
defer.reject = reject;
|
12105
|
-
defer.resolve = resolve;
|
12106
|
-
});
|
12107
|
-
return defer;
|
12108
|
-
}
|
12109
|
-
async function withTimeout(promise, timeout = 1050) {
|
12110
|
-
const timeoutPromise = new Promise((resolve, reject) => {
|
12111
|
-
setTimeout(() => {
|
12112
|
-
reject(new FuelError32(FuelError32.CODES.TIMEOUT_EXCEEDED, "Promise timed out"));
|
12113
|
-
}, timeout);
|
12114
|
-
});
|
12115
|
-
return Promise.race([timeoutPromise, promise]);
|
12116
|
-
}
|
12287
|
+
__name(dispatchFuelConnectorEvent, "dispatchFuelConnectorEvent");
|
12117
12288
|
|
12118
12289
|
// src/connectors/fuel.ts
|
12119
12290
|
var HAS_CONNECTOR_TIMEOUT = 2e3;
|
12120
12291
|
var PING_CACHE_TIME = 5e3;
|
12121
12292
|
var { warn } = console;
|
12122
|
-
var
|
12293
|
+
var Fuel = class _Fuel extends FuelConnector {
|
12294
|
+
static {
|
12295
|
+
__name(this, "Fuel");
|
12296
|
+
}
|
12297
|
+
static STORAGE_KEY = "fuel-current-connector";
|
12298
|
+
static defaultConfig = {};
|
12123
12299
|
_storage = null;
|
12124
12300
|
_connectors = [];
|
12125
12301
|
_targetObject = null;
|
12126
12302
|
_unsubscribes = [];
|
12127
|
-
_targetUnsubscribe = () => {
|
12128
|
-
};
|
12303
|
+
_targetUnsubscribe = /* @__PURE__ */ __name(() => {
|
12304
|
+
}, "_targetUnsubscribe");
|
12129
12305
|
_pingCache = {};
|
12130
12306
|
_currentConnector;
|
12131
12307
|
_initializationPromise = null;
|
@@ -12198,7 +12374,7 @@ var _Fuel = class extends FuelConnector {
|
|
12198
12374
|
const currentConnector = this._currentConnector;
|
12199
12375
|
this._unsubscribes.map((unSub) => unSub());
|
12200
12376
|
this._unsubscribes = events.map((event) => {
|
12201
|
-
const handler = (...args) => this.emit(event, ...args);
|
12377
|
+
const handler = /* @__PURE__ */ __name((...args) => this.emit(event, ...args), "handler");
|
12202
12378
|
currentConnector.on(event, handler);
|
12203
12379
|
return () => currentConnector.off(event, handler);
|
12204
12380
|
});
|
@@ -12282,7 +12458,7 @@ var _Fuel = class extends FuelConnector {
|
|
12282
12458
|
* Setup a listener for the FuelConnector event and add the connector
|
12283
12459
|
* to the list of new connectors.
|
12284
12460
|
*/
|
12285
|
-
setupConnectorListener = () => {
|
12461
|
+
setupConnectorListener = /* @__PURE__ */ __name(() => {
|
12286
12462
|
const { _targetObject: targetObject } = this;
|
12287
12463
|
const eventName = FuelConnectorEventType;
|
12288
12464
|
if (targetObject?.on) {
|
@@ -12292,9 +12468,9 @@ var _Fuel = class extends FuelConnector {
|
|
12292
12468
|
};
|
12293
12469
|
}
|
12294
12470
|
if (targetObject?.addEventListener) {
|
12295
|
-
const handler = (e) => {
|
12471
|
+
const handler = /* @__PURE__ */ __name((e) => {
|
12296
12472
|
this.addConnector(e.detail);
|
12297
|
-
};
|
12473
|
+
}, "handler");
|
12298
12474
|
targetObject.addEventListener(eventName, handler);
|
12299
12475
|
return () => {
|
12300
12476
|
targetObject.removeEventListener?.(eventName, handler);
|
@@ -12302,11 +12478,11 @@ var _Fuel = class extends FuelConnector {
|
|
12302
12478
|
}
|
12303
12479
|
return () => {
|
12304
12480
|
};
|
12305
|
-
};
|
12481
|
+
}, "setupConnectorListener");
|
12306
12482
|
/**
|
12307
12483
|
* Add a new connector to the list of connectors.
|
12308
12484
|
*/
|
12309
|
-
addConnector = async (connector) => {
|
12485
|
+
addConnector = /* @__PURE__ */ __name(async (connector) => {
|
12310
12486
|
if (!this.getConnector(connector)) {
|
12311
12487
|
this._connectors.push(connector);
|
12312
12488
|
}
|
@@ -12317,8 +12493,8 @@ var _Fuel = class extends FuelConnector {
|
|
12317
12493
|
emitEvents: false
|
12318
12494
|
});
|
12319
12495
|
}
|
12320
|
-
};
|
12321
|
-
triggerConnectorEvents = async () => {
|
12496
|
+
}, "addConnector");
|
12497
|
+
triggerConnectorEvents = /* @__PURE__ */ __name(async () => {
|
12322
12498
|
const [isConnected, networks2, currentNetwork] = await Promise.all([
|
12323
12499
|
this.isConnected(),
|
12324
12500
|
this.networks(),
|
@@ -12335,14 +12511,14 @@ var _Fuel = class extends FuelConnector {
|
|
12335
12511
|
this.emit(this.events.accounts, accounts);
|
12336
12512
|
this.emit(this.events.currentAccount, currentAccount);
|
12337
12513
|
}
|
12338
|
-
};
|
12514
|
+
}, "triggerConnectorEvents");
|
12339
12515
|
/**
|
12340
12516
|
* Get a connector from the list of connectors.
|
12341
12517
|
*/
|
12342
|
-
getConnector = (connector) => this._connectors.find((c) => {
|
12518
|
+
getConnector = /* @__PURE__ */ __name((connector) => this._connectors.find((c) => {
|
12343
12519
|
const connectorName = typeof connector === "string" ? connector : connector.name;
|
12344
12520
|
return c.name === connectorName || c === connector;
|
12345
|
-
}) || null;
|
12521
|
+
}) || null, "getConnector");
|
12346
12522
|
/**
|
12347
12523
|
* Return the list of connectors with the status of installed and connected.
|
12348
12524
|
*/
|
@@ -12459,9 +12635,6 @@ var _Fuel = class extends FuelConnector {
|
|
12459
12635
|
await this.clean();
|
12460
12636
|
}
|
12461
12637
|
};
|
12462
|
-
var Fuel = _Fuel;
|
12463
|
-
__publicField(Fuel, "STORAGE_KEY", "fuel-current-connector");
|
12464
|
-
__publicField(Fuel, "defaultConfig", {});
|
12465
12638
|
export {
|
12466
12639
|
AbstractAccount,
|
12467
12640
|
AbstractScriptRequest,
|
@@ -12490,6 +12663,7 @@ export {
|
|
12490
12663
|
MemoryStorage,
|
12491
12664
|
mnemonic_default as Mnemonic,
|
12492
12665
|
MnemonicVault,
|
12666
|
+
NON_PAGINATED_BALANCES_SIZE,
|
12493
12667
|
NoWitnessAtIndexError,
|
12494
12668
|
NoWitnessByOwnerError,
|
12495
12669
|
OperationName,
|