@metamask-previews/assets-controllers 45.1.1-preview-73fa7bfb → 45.1.1-preview-00ea290f
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/AccountTrackerController.d.cts +2 -2
- package/dist/AccountTrackerController.d.mts +2 -2
- package/dist/CurrencyRateController.d.cts +2 -2
- package/dist/CurrencyRateController.d.mts +2 -2
- package/dist/MultichainBalancesController/BalancesTracker.cjs +7 -1
- package/dist/MultichainBalancesController/BalancesTracker.cjs.map +1 -1
- package/dist/MultichainBalancesController/BalancesTracker.d.cts.map +1 -1
- package/dist/MultichainBalancesController/BalancesTracker.d.mts.map +1 -1
- package/dist/MultichainBalancesController/BalancesTracker.mjs +7 -1
- package/dist/MultichainBalancesController/BalancesTracker.mjs.map +1 -1
- package/dist/TokenBalancesController.d.cts +2 -2
- package/dist/TokenBalancesController.d.mts +2 -2
- package/dist/TokenDetectionController.d.cts +2 -2
- package/dist/TokenDetectionController.d.mts +2 -2
- package/dist/TokenListController.d.cts +2 -2
- package/dist/TokenListController.d.mts +2 -2
- package/dist/TokenRatesController.d.cts +2 -2
- package/dist/TokenRatesController.d.mts +2 -2
- package/package.json +1 -1
|
@@ -65,8 +65,8 @@ type AccountTrackerPollingInput = {
|
|
|
65
65
|
networkClientId: NetworkClientId;
|
|
66
66
|
};
|
|
67
67
|
declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
|
|
68
|
-
readonly "__#
|
|
69
|
-
"__#
|
|
68
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
69
|
+
"__#13@#intervalLength": number | undefined;
|
|
70
70
|
setIntervalLength(intervalLength: number): void;
|
|
71
71
|
getIntervalLength(): number | undefined;
|
|
72
72
|
_startPolling(input: AccountTrackerPollingInput): void;
|
|
@@ -65,8 +65,8 @@ type AccountTrackerPollingInput = {
|
|
|
65
65
|
networkClientId: NetworkClientId;
|
|
66
66
|
};
|
|
67
67
|
declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
|
|
68
|
-
readonly "__#
|
|
69
|
-
"__#
|
|
68
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
69
|
+
"__#13@#intervalLength": number | undefined;
|
|
70
70
|
setIntervalLength(intervalLength: number): void;
|
|
71
71
|
getIntervalLength(): number | undefined;
|
|
72
72
|
_startPolling(input: AccountTrackerPollingInput): void;
|
|
@@ -29,8 +29,8 @@ type CurrencyRatePollingInput = {
|
|
|
29
29
|
nativeCurrencies: string[];
|
|
30
30
|
};
|
|
31
31
|
declare const CurrencyRateController_base: (abstract new (...args: any[]) => {
|
|
32
|
-
readonly "__#
|
|
33
|
-
"__#
|
|
32
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
33
|
+
"__#13@#intervalLength": number | undefined;
|
|
34
34
|
setIntervalLength(intervalLength: number): void;
|
|
35
35
|
getIntervalLength(): number | undefined;
|
|
36
36
|
_startPolling(input: CurrencyRatePollingInput): void;
|
|
@@ -29,8 +29,8 @@ type CurrencyRatePollingInput = {
|
|
|
29
29
|
nativeCurrencies: string[];
|
|
30
30
|
};
|
|
31
31
|
declare const CurrencyRateController_base: (abstract new (...args: any[]) => {
|
|
32
|
-
readonly "__#
|
|
33
|
-
"__#
|
|
32
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
33
|
+
"__#13@#intervalLength": number | undefined;
|
|
34
34
|
setIntervalLength(intervalLength: number): void;
|
|
35
35
|
getIntervalLength(): number | undefined;
|
|
36
36
|
_startPolling(input: CurrencyRatePollingInput): void;
|
|
@@ -42,7 +42,12 @@ class BalancesTracker {
|
|
|
42
42
|
* @returns True if the account is being tracker, false otherwise.
|
|
43
43
|
*/
|
|
44
44
|
isTracked(accountId) {
|
|
45
|
-
|
|
45
|
+
console.log('MultichainBalancesController - BalancesTracker isTracked');
|
|
46
|
+
const result = Object.prototype.hasOwnProperty.call(__classPrivateFieldGet(this, _BalancesTracker_balances, "f"), accountId);
|
|
47
|
+
console.log('MultichainBalancesController - BalancesTracker isTracked', {
|
|
48
|
+
result,
|
|
49
|
+
});
|
|
50
|
+
return result;
|
|
46
51
|
}
|
|
47
52
|
/**
|
|
48
53
|
* Asserts that an account ID is being tracked.
|
|
@@ -51,6 +56,7 @@ class BalancesTracker {
|
|
|
51
56
|
* @throws If the account ID is not being tracked.
|
|
52
57
|
*/
|
|
53
58
|
assertBeingTracked(accountId) {
|
|
59
|
+
console.log('MultichainBalancesController - BalancesTracker assertBeingTracked', { accountId });
|
|
54
60
|
if (!this.isTracked(accountId)) {
|
|
55
61
|
throw new Error(`Account is not being tracked: ${accountId}`);
|
|
56
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BalancesTracker.cjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/BalancesTracker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAAkC;AAOlC,MAAM,0BAA0B,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAE3E,MAAa,eAAe;IAO1B,YAAY,qBAA2D;QANvE,0CAAgB;QAEhB,iDAAqD;QAErD,oCAAyC,EAAE,EAAC;QAG1C,uBAAA,IAAI,kCAAkB,qBAAqB,MAAA,CAAC;QAE5C,uBAAA,IAAI,2BAAW,IAAI,eAAM,CAAC,IAAI,CAAC,cAAc,EAAE,0BAA0B,CAAC,MAAA,CAAC;IAC7E,CAAC;IAED;;OAEG;IACH,KAAK;QACH,uBAAA,IAAI,+BAAQ,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,uBAAA,IAAI,+BAAQ,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,SAAiB;QACzB,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"BalancesTracker.cjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/BalancesTracker.ts"],"names":[],"mappings":"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","sourcesContent":["import { Poller } from './Poller';\n\ntype BalanceInfo = {\n lastUpdated: number;\n blockTime: number;\n};\n\nconst BALANCES_TRACKING_INTERVAL = 30 * 1000; // Every 30s in milliseconds.\n\nexport class BalancesTracker {\n #poller: Poller;\n\n #updateBalance: (accountId: string) => Promise<void>;\n\n #balances: Record<string, BalanceInfo> = {};\n\n constructor(updateBalanceCallback: (accountId: string) => Promise<void>) {\n this.#updateBalance = updateBalanceCallback;\n\n this.#poller = new Poller(this.updateBalances, BALANCES_TRACKING_INTERVAL);\n }\n\n /**\n * Starts the tracking process.\n */\n start(): void {\n this.#poller.start();\n }\n\n /**\n * Stops the tracking process.\n */\n stop(): void {\n this.#poller.stop();\n }\n\n /**\n * Checks if an account ID is being tracked.\n *\n * @param accountId - The account ID.\n * @returns True if the account is being tracker, false otherwise.\n */\n isTracked(accountId: string) {\n console.log('MultichainBalancesController - BalancesTracker isTracked');\n const result = Object.prototype.hasOwnProperty.call(\n this.#balances,\n accountId,\n );\n console.log('MultichainBalancesController - BalancesTracker isTracked', {\n result,\n });\n return result;\n }\n\n /**\n * Asserts that an account ID is being tracked.\n *\n * @param accountId - The account ID.\n * @throws If the account ID is not being tracked.\n */\n assertBeingTracked(accountId: string) {\n console.log(\n 'MultichainBalancesController - BalancesTracker assertBeingTracked',\n { accountId },\n );\n if (!this.isTracked(accountId)) {\n throw new Error(`Account is not being tracked: ${accountId}`);\n }\n }\n\n /**\n * Starts tracking a new account ID. This method has no effect on already tracked\n * accounts.\n *\n * @param accountId - The account ID.\n * @param blockTime - The block time (used when refreshing the account balances).\n */\n track(accountId: string, blockTime: number) {\n // Do not overwrite current info if already being tracked!\n if (!this.isTracked(accountId)) {\n this.#balances[accountId] = {\n lastUpdated: 0,\n blockTime,\n };\n }\n }\n\n /**\n * Stops tracking a tracked account ID.\n *\n * @param accountId - The account ID.\n * @throws If the account ID is not being tracked.\n */\n untrack(accountId: string) {\n this.assertBeingTracked(accountId);\n delete this.#balances[accountId];\n }\n\n /**\n * Update the balances for a tracked account ID.\n *\n * @param accountId - The account ID.\n * @throws If the account ID is not being tracked.\n */\n async updateBalance(accountId: string) {\n console.log(\n 'MultichainBalancesController - BalancesTracker updateBalance start',\n );\n this.assertBeingTracked(accountId);\n console.log(\n 'MultichainBalancesController - BalancesTracker updateBalance',\n { accountId },\n );\n\n // We check if the balance is outdated (by comparing to the block time associated\n // with this kind of account).\n //\n // This might not be super accurate, but we could probably compute this differently\n // and try to sync with the \"real block time\"!\n const info = this.#balances[accountId];\n console.log({ info });\n\n const isOutdated = Date.now() - info.lastUpdated >= info.blockTime;\n console.log({ isOutdated });\n const hasNoBalanceYet = info.lastUpdated === 0;\n console.log({ hasNoBalanceYet });\n if (hasNoBalanceYet || isOutdated) {\n await this.#updateBalance(accountId);\n this.#balances[accountId].lastUpdated = Date.now();\n }\n }\n\n /**\n * Update the balances of all tracked accounts (only if the balances\n * is considered outdated).\n */\n async updateBalances() {\n console.log(\n 'MultichainBalancesController - BalancesTracker updateBalances',\n { balances: this.#balances },\n );\n await Promise.allSettled(\n Object.keys(this.#balances).map(async (accountId) => {\n await this.updateBalance(accountId);\n }),\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BalancesTracker.d.cts","sourceRoot":"","sources":["../../src/MultichainBalancesController/BalancesTracker.ts"],"names":[],"mappings":"AASA,qBAAa,eAAe;;gBAOd,qBAAqB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;IAMvE;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"BalancesTracker.d.cts","sourceRoot":"","sources":["../../src/MultichainBalancesController/BalancesTracker.ts"],"names":[],"mappings":"AASA,qBAAa,eAAe;;gBAOd,qBAAqB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;IAMvE;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM;IAY3B;;;;;OAKG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAUpC;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAU1C;;;;;OAKG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM;IAKzB;;;;;OAKG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM;IA4BrC;;;OAGG;IACG,cAAc;CAWrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BalancesTracker.d.mts","sourceRoot":"","sources":["../../src/MultichainBalancesController/BalancesTracker.ts"],"names":[],"mappings":"AASA,qBAAa,eAAe;;gBAOd,qBAAqB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;IAMvE;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"BalancesTracker.d.mts","sourceRoot":"","sources":["../../src/MultichainBalancesController/BalancesTracker.ts"],"names":[],"mappings":"AASA,qBAAa,eAAe;;gBAOd,qBAAqB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC;IAMvE;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM;IAY3B;;;;;OAKG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAUpC;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAU1C;;;;;OAKG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM;IAKzB;;;;;OAKG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM;IA4BrC;;;OAGG;IACG,cAAc;CAWrB"}
|
|
@@ -39,7 +39,12 @@ export class BalancesTracker {
|
|
|
39
39
|
* @returns True if the account is being tracker, false otherwise.
|
|
40
40
|
*/
|
|
41
41
|
isTracked(accountId) {
|
|
42
|
-
|
|
42
|
+
console.log('MultichainBalancesController - BalancesTracker isTracked');
|
|
43
|
+
const result = Object.prototype.hasOwnProperty.call(__classPrivateFieldGet(this, _BalancesTracker_balances, "f"), accountId);
|
|
44
|
+
console.log('MultichainBalancesController - BalancesTracker isTracked', {
|
|
45
|
+
result,
|
|
46
|
+
});
|
|
47
|
+
return result;
|
|
43
48
|
}
|
|
44
49
|
/**
|
|
45
50
|
* Asserts that an account ID is being tracked.
|
|
@@ -48,6 +53,7 @@ export class BalancesTracker {
|
|
|
48
53
|
* @throws If the account ID is not being tracked.
|
|
49
54
|
*/
|
|
50
55
|
assertBeingTracked(accountId) {
|
|
56
|
+
console.log('MultichainBalancesController - BalancesTracker assertBeingTracked', { accountId });
|
|
51
57
|
if (!this.isTracked(accountId)) {
|
|
52
58
|
throw new Error(`Account is not being tracked: ${accountId}`);
|
|
53
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BalancesTracker.mjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/BalancesTracker.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,qBAAiB;AAOlC,MAAM,0BAA0B,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAE3E,MAAM,OAAO,eAAe;IAO1B,YAAY,qBAA2D;QANvE,0CAAgB;QAEhB,iDAAqD;QAErD,oCAAyC,EAAE,EAAC;QAG1C,uBAAA,IAAI,kCAAkB,qBAAqB,MAAA,CAAC;QAE5C,uBAAA,IAAI,2BAAW,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,0BAA0B,CAAC,MAAA,CAAC;IAC7E,CAAC;IAED;;OAEG;IACH,KAAK;QACH,uBAAA,IAAI,+BAAQ,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,uBAAA,IAAI,+BAAQ,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,SAAiB;QACzB,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"BalancesTracker.mjs","sourceRoot":"","sources":["../../src/MultichainBalancesController/BalancesTracker.ts"],"names":[],"mappings":"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","sourcesContent":["import { Poller } from './Poller';\n\ntype BalanceInfo = {\n lastUpdated: number;\n blockTime: number;\n};\n\nconst BALANCES_TRACKING_INTERVAL = 30 * 1000; // Every 30s in milliseconds.\n\nexport class BalancesTracker {\n #poller: Poller;\n\n #updateBalance: (accountId: string) => Promise<void>;\n\n #balances: Record<string, BalanceInfo> = {};\n\n constructor(updateBalanceCallback: (accountId: string) => Promise<void>) {\n this.#updateBalance = updateBalanceCallback;\n\n this.#poller = new Poller(this.updateBalances, BALANCES_TRACKING_INTERVAL);\n }\n\n /**\n * Starts the tracking process.\n */\n start(): void {\n this.#poller.start();\n }\n\n /**\n * Stops the tracking process.\n */\n stop(): void {\n this.#poller.stop();\n }\n\n /**\n * Checks if an account ID is being tracked.\n *\n * @param accountId - The account ID.\n * @returns True if the account is being tracker, false otherwise.\n */\n isTracked(accountId: string) {\n console.log('MultichainBalancesController - BalancesTracker isTracked');\n const result = Object.prototype.hasOwnProperty.call(\n this.#balances,\n accountId,\n );\n console.log('MultichainBalancesController - BalancesTracker isTracked', {\n result,\n });\n return result;\n }\n\n /**\n * Asserts that an account ID is being tracked.\n *\n * @param accountId - The account ID.\n * @throws If the account ID is not being tracked.\n */\n assertBeingTracked(accountId: string) {\n console.log(\n 'MultichainBalancesController - BalancesTracker assertBeingTracked',\n { accountId },\n );\n if (!this.isTracked(accountId)) {\n throw new Error(`Account is not being tracked: ${accountId}`);\n }\n }\n\n /**\n * Starts tracking a new account ID. This method has no effect on already tracked\n * accounts.\n *\n * @param accountId - The account ID.\n * @param blockTime - The block time (used when refreshing the account balances).\n */\n track(accountId: string, blockTime: number) {\n // Do not overwrite current info if already being tracked!\n if (!this.isTracked(accountId)) {\n this.#balances[accountId] = {\n lastUpdated: 0,\n blockTime,\n };\n }\n }\n\n /**\n * Stops tracking a tracked account ID.\n *\n * @param accountId - The account ID.\n * @throws If the account ID is not being tracked.\n */\n untrack(accountId: string) {\n this.assertBeingTracked(accountId);\n delete this.#balances[accountId];\n }\n\n /**\n * Update the balances for a tracked account ID.\n *\n * @param accountId - The account ID.\n * @throws If the account ID is not being tracked.\n */\n async updateBalance(accountId: string) {\n console.log(\n 'MultichainBalancesController - BalancesTracker updateBalance start',\n );\n this.assertBeingTracked(accountId);\n console.log(\n 'MultichainBalancesController - BalancesTracker updateBalance',\n { accountId },\n );\n\n // We check if the balance is outdated (by comparing to the block time associated\n // with this kind of account).\n //\n // This might not be super accurate, but we could probably compute this differently\n // and try to sync with the \"real block time\"!\n const info = this.#balances[accountId];\n console.log({ info });\n\n const isOutdated = Date.now() - info.lastUpdated >= info.blockTime;\n console.log({ isOutdated });\n const hasNoBalanceYet = info.lastUpdated === 0;\n console.log({ hasNoBalanceYet });\n if (hasNoBalanceYet || isOutdated) {\n await this.#updateBalance(accountId);\n this.#balances[accountId].lastUpdated = Date.now();\n }\n }\n\n /**\n * Update the balances of all tracked accounts (only if the balances\n * is considered outdated).\n */\n async updateBalances() {\n console.log(\n 'MultichainBalancesController - BalancesTracker updateBalances',\n { balances: this.#balances },\n );\n await Promise.allSettled(\n Object.keys(this.#balances).map(async (accountId) => {\n await this.updateBalance(accountId);\n }),\n );\n }\n}\n"]}
|
|
@@ -45,8 +45,8 @@ export type TokenBalancesPollingInput = {
|
|
|
45
45
|
chainId: Hex;
|
|
46
46
|
};
|
|
47
47
|
declare const TokenBalancesController_base: (abstract new (...args: any[]) => {
|
|
48
|
-
readonly "__#
|
|
49
|
-
"__#
|
|
48
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
49
|
+
"__#13@#intervalLength": number | undefined;
|
|
50
50
|
setIntervalLength(intervalLength: number): void;
|
|
51
51
|
getIntervalLength(): number | undefined;
|
|
52
52
|
_startPolling(input: TokenBalancesPollingInput): void;
|
|
@@ -45,8 +45,8 @@ export type TokenBalancesPollingInput = {
|
|
|
45
45
|
chainId: Hex;
|
|
46
46
|
};
|
|
47
47
|
declare const TokenBalancesController_base: (abstract new (...args: any[]) => {
|
|
48
|
-
readonly "__#
|
|
49
|
-
"__#
|
|
48
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
49
|
+
"__#13@#intervalLength": number | undefined;
|
|
50
50
|
setIntervalLength(intervalLength: number): void;
|
|
51
51
|
getIntervalLength(): number | undefined;
|
|
52
52
|
_startPolling(input: TokenBalancesPollingInput): void;
|
|
@@ -34,8 +34,8 @@ type TokenDetectionPollingInput = {
|
|
|
34
34
|
address: string;
|
|
35
35
|
};
|
|
36
36
|
declare const TokenDetectionController_base: (abstract new (...args: any[]) => {
|
|
37
|
-
readonly "__#
|
|
38
|
-
"__#
|
|
37
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
38
|
+
"__#13@#intervalLength": number | undefined;
|
|
39
39
|
setIntervalLength(intervalLength: number): void;
|
|
40
40
|
getIntervalLength(): number | undefined;
|
|
41
41
|
_startPolling(input: TokenDetectionPollingInput): void;
|
|
@@ -34,8 +34,8 @@ type TokenDetectionPollingInput = {
|
|
|
34
34
|
address: string;
|
|
35
35
|
};
|
|
36
36
|
declare const TokenDetectionController_base: (abstract new (...args: any[]) => {
|
|
37
|
-
readonly "__#
|
|
38
|
-
"__#
|
|
37
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
38
|
+
"__#13@#intervalLength": number | undefined;
|
|
39
39
|
setIntervalLength(intervalLength: number): void;
|
|
40
40
|
getIntervalLength(): number | undefined;
|
|
41
41
|
_startPolling(input: TokenDetectionPollingInput): void;
|
|
@@ -37,8 +37,8 @@ type TokenListPollingInput = {
|
|
|
37
37
|
chainId: Hex;
|
|
38
38
|
};
|
|
39
39
|
declare const TokenListController_base: (abstract new (...args: any[]) => {
|
|
40
|
-
readonly "__#
|
|
41
|
-
"__#
|
|
40
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
41
|
+
"__#13@#intervalLength": number | undefined;
|
|
42
42
|
setIntervalLength(intervalLength: number): void;
|
|
43
43
|
getIntervalLength(): number | undefined;
|
|
44
44
|
_startPolling(input: TokenListPollingInput): void;
|
|
@@ -37,8 +37,8 @@ type TokenListPollingInput = {
|
|
|
37
37
|
chainId: Hex;
|
|
38
38
|
};
|
|
39
39
|
declare const TokenListController_base: (abstract new (...args: any[]) => {
|
|
40
|
-
readonly "__#
|
|
41
|
-
"__#
|
|
40
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
41
|
+
"__#13@#intervalLength": number | undefined;
|
|
42
42
|
setIntervalLength(intervalLength: number): void;
|
|
43
43
|
getIntervalLength(): number | undefined;
|
|
44
44
|
_startPolling(input: TokenListPollingInput): void;
|
|
@@ -108,8 +108,8 @@ export type TokenRatesPollingInput = {
|
|
|
108
108
|
chainId: Hex;
|
|
109
109
|
};
|
|
110
110
|
declare const TokenRatesController_base: (abstract new (...args: any[]) => {
|
|
111
|
-
readonly "__#
|
|
112
|
-
"__#
|
|
111
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
112
|
+
"__#13@#intervalLength": number | undefined;
|
|
113
113
|
setIntervalLength(intervalLength: number): void;
|
|
114
114
|
getIntervalLength(): number | undefined;
|
|
115
115
|
_startPolling(input: TokenRatesPollingInput): void;
|
|
@@ -108,8 +108,8 @@ export type TokenRatesPollingInput = {
|
|
|
108
108
|
chainId: Hex;
|
|
109
109
|
};
|
|
110
110
|
declare const TokenRatesController_base: (abstract new (...args: any[]) => {
|
|
111
|
-
readonly "__#
|
|
112
|
-
"__#
|
|
111
|
+
readonly "__#13@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
112
|
+
"__#13@#intervalLength": number | undefined;
|
|
113
113
|
setIntervalLength(intervalLength: number): void;
|
|
114
114
|
getIntervalLength(): number | undefined;
|
|
115
115
|
_startPolling(input: TokenRatesPollingInput): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/assets-controllers",
|
|
3
|
-
"version": "45.1.1-preview-
|
|
3
|
+
"version": "45.1.1-preview-00ea290f",
|
|
4
4
|
"description": "Controllers which manage interactions involving ERC-20, ERC-721, and ERC-1155 tokens (including NFTs)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|