@metamask/assets-controllers 29.0.0 → 31.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +105 -1
- package/README.md +29 -0
- package/dist/AccountTrackerController.js +2 -2
- package/dist/AccountTrackerController.mjs +1 -1
- package/dist/AssetsContractController.js +6 -6
- package/dist/AssetsContractController.mjs +5 -5
- package/dist/CurrencyRateController.js +4 -3
- package/dist/CurrencyRateController.mjs +3 -2
- package/dist/NftController.js +3 -3
- package/dist/NftController.mjs +4 -4
- package/dist/NftDetectionController.js +2 -2
- package/dist/NftDetectionController.mjs +1 -1
- package/dist/RatesController/RatesController.js +14 -0
- package/dist/RatesController/RatesController.mjs +14 -0
- package/dist/RatesController/index.js +13 -0
- package/dist/RatesController/index.js.map +1 -0
- package/dist/RatesController/index.mjs +13 -0
- package/dist/RatesController/index.mjs.map +1 -0
- package/dist/RatesController/types.js +1 -0
- package/dist/RatesController/types.js.map +1 -0
- package/dist/RatesController/types.mjs +1 -0
- package/dist/RatesController/types.mjs.map +1 -0
- package/dist/Standards/ERC20Standard.js +3 -3
- package/dist/Standards/ERC20Standard.mjs +2 -2
- package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.js +3 -3
- package/dist/Standards/NftStandards/ERC1155/ERC1155Standard.mjs +2 -2
- package/dist/Standards/NftStandards/ERC721/ERC721Standard.js +3 -3
- package/dist/Standards/NftStandards/ERC721/ERC721Standard.mjs +2 -2
- package/dist/TokenBalancesController.js +2 -2
- package/dist/TokenBalancesController.mjs +1 -1
- package/dist/TokenDetectionController.js +3 -3
- package/dist/TokenDetectionController.mjs +2 -2
- package/dist/TokenListController.js +4 -4
- package/dist/TokenListController.mjs +3 -3
- package/dist/TokenRatesController.js +6 -4
- package/dist/TokenRatesController.mjs +5 -3
- package/dist/TokensController.js +6 -6
- package/dist/TokensController.mjs +5 -5
- package/dist/assetsUtil.js +2 -2
- package/dist/assetsUtil.mjs +1 -1
- package/dist/chunk-4AC3X2U5.js +771 -0
- package/dist/chunk-4AC3X2U5.js.map +1 -0
- package/dist/chunk-543CC74T.mjs +253 -0
- package/dist/chunk-543CC74T.mjs.map +1 -0
- package/dist/{chunk-NXGX7LZJ.mjs → chunk-5W5OO2Q5.mjs} +17 -6
- package/dist/chunk-5W5OO2Q5.mjs.map +1 -0
- package/dist/chunk-62T7RKU3.mjs +1265 -0
- package/dist/chunk-62T7RKU3.mjs.map +1 -0
- package/dist/{chunk-PAJTKWEC.mjs → chunk-65PB33TE.mjs} +1 -1
- package/dist/chunk-65PB33TE.mjs.map +1 -0
- package/dist/{chunk-6XOM7KOQ.mjs → chunk-73F3SN5O.mjs} +337 -270
- package/dist/chunk-73F3SN5O.mjs.map +1 -0
- package/dist/chunk-7K6PSEAA.js +1 -0
- package/dist/chunk-7K6PSEAA.js.map +1 -0
- package/dist/{chunk-RUE635TV.mjs → chunk-A2DDWXMS.mjs} +3 -3
- package/dist/{chunk-V46CHMOU.mjs → chunk-ASA5RLBY.mjs} +2 -2
- package/dist/chunk-B5YVX5IO.mjs +202 -0
- package/dist/chunk-B5YVX5IO.mjs.map +1 -0
- package/dist/{chunk-BO2WZDUM.js → chunk-B5YY22QQ.js} +3 -3
- package/dist/{chunk-QWACHXRH.mjs → chunk-B6W4CQOR.mjs} +2 -2
- package/dist/chunk-B6W4CQOR.mjs.map +1 -0
- package/dist/{chunk-3ZHN4GFT.js → chunk-BOTVAG4A.js} +5 -5
- package/dist/chunk-CGLUTXI7.js +1265 -0
- package/dist/chunk-CGLUTXI7.js.map +1 -0
- package/dist/chunk-CNKVITJO.mjs +66 -0
- package/dist/chunk-CNKVITJO.mjs.map +1 -0
- package/dist/{chunk-LLYYJY7H.mjs → chunk-D3K5MPMW.mjs} +2 -2
- package/dist/{chunk-OWTCG2N3.mjs → chunk-E4ECCGJV.mjs} +53 -39
- package/dist/chunk-E4ECCGJV.mjs.map +1 -0
- package/dist/{chunk-LRKDZWS6.js → chunk-ELSMS5S7.js} +3 -3
- package/dist/chunk-ELSMS5S7.js.map +1 -0
- package/dist/{chunk-V4ZO3F2S.js → chunk-GU53EI7A.js} +1 -1
- package/dist/chunk-GU53EI7A.js.map +1 -0
- package/dist/{chunk-I53XGBU3.js → chunk-HDI4L2DD.js} +5 -5
- package/dist/{chunk-5MRF7YPD.mjs → chunk-HLCGZGPA.mjs} +6 -6
- package/dist/chunk-HLCGZGPA.mjs.map +1 -0
- package/dist/{chunk-LD4GC7OR.js → chunk-IBK6AXPP.js} +8 -9
- package/dist/chunk-IBK6AXPP.js.map +1 -0
- package/dist/{chunk-DEQZ35QE.js → chunk-JUI3XNEF.js} +7 -7
- package/dist/chunk-JYHAAA6W.mjs +1 -0
- package/dist/chunk-JYHAAA6W.mjs.map +1 -0
- package/dist/{chunk-S7UA2DU7.mjs → chunk-LZ5ZGQEX.mjs} +2 -2
- package/dist/{chunk-D3PCUDTX.mjs → chunk-MR6EF4B7.mjs} +2 -2
- package/dist/{chunk-LS6R3HQL.js → chunk-NEXY7SE2.js} +2 -2
- package/dist/chunk-NEXY7SE2.js.map +1 -0
- package/dist/{chunk-OHSQRYVL.js → chunk-PYMUBJQX.js} +17 -6
- package/dist/chunk-PYMUBJQX.js.map +1 -0
- package/dist/{chunk-X5PLVMOQ.mjs → chunk-Q5JRBGWO.mjs} +2 -2
- package/dist/chunk-Q5JRBGWO.mjs.map +1 -0
- package/dist/chunk-QFDTOEYR.js +253 -0
- package/dist/chunk-QFDTOEYR.js.map +1 -0
- package/dist/{chunk-QHU4H6HP.js → chunk-QHWKLZUC.js} +7 -7
- package/dist/chunk-QHWKLZUC.js.map +1 -0
- package/dist/chunk-TTH3ES66.mjs +1 -0
- package/dist/chunk-TTH3ES66.mjs.map +1 -0
- package/dist/{chunk-OBOWNEJU.js → chunk-U3DJJN4X.js} +4 -4
- package/dist/{chunk-IOQX3VTD.js → chunk-UEDNQBJN.js} +56 -42
- package/dist/chunk-UEDNQBJN.js.map +1 -0
- package/dist/chunk-WB6KJX4N.js +66 -0
- package/dist/chunk-WB6KJX4N.js.map +1 -0
- package/dist/{chunk-4LY47RPI.mjs → chunk-WCCLSUOI.mjs} +8 -9
- package/dist/{chunk-4LY47RPI.mjs.map → chunk-WCCLSUOI.mjs.map} +1 -1
- package/dist/chunk-XC3SOOGC.js +1 -0
- package/dist/chunk-XC3SOOGC.js.map +1 -0
- package/dist/{chunk-OSEZFHQ3.mjs → chunk-Y35SM7TO.mjs} +19 -14
- package/dist/chunk-Y35SM7TO.mjs.map +1 -0
- package/dist/chunk-YIFA2HXH.js +202 -0
- package/dist/chunk-YIFA2HXH.js.map +1 -0
- package/dist/{chunk-4FMVFW2T.js → chunk-Z6TBQQE5.js} +20 -15
- package/dist/chunk-Z6TBQQE5.js.map +1 -0
- package/dist/crypto-compare-service/crypto-compare.js +10 -0
- package/dist/crypto-compare-service/crypto-compare.js.map +1 -0
- package/dist/crypto-compare-service/crypto-compare.mjs +10 -0
- package/dist/crypto-compare-service/crypto-compare.mjs.map +1 -0
- package/dist/crypto-compare-service/index.js +11 -0
- package/dist/crypto-compare-service/index.js.map +1 -0
- package/dist/crypto-compare-service/index.mjs +11 -0
- package/dist/crypto-compare-service/index.mjs.map +1 -0
- package/dist/index.js +24 -18
- package/dist/index.mjs +29 -23
- package/dist/token-prices-service/codefi-v2.js +4 -2
- package/dist/token-prices-service/codefi-v2.mjs +5 -3
- package/dist/token-prices-service/index.js +2 -2
- package/dist/token-prices-service/index.mjs +1 -1
- package/dist/token-service.js +3 -3
- package/dist/token-service.mjs +2 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/AccountTrackerController.d.ts +1 -1
- package/dist/types/AccountTrackerController.d.ts.map +1 -1
- package/dist/types/AssetsContractController.d.ts +1 -1
- package/dist/types/AssetsContractController.d.ts.map +1 -1
- package/dist/types/CurrencyRateController.d.ts +1 -1
- package/dist/types/CurrencyRateController.d.ts.map +1 -1
- package/dist/types/NftController.d.ts +65 -184
- package/dist/types/NftController.d.ts.map +1 -1
- package/dist/types/NftDetectionController.d.ts +34 -75
- package/dist/types/NftDetectionController.d.ts.map +1 -1
- package/dist/types/RatesController/RatesController.d.ts +44 -0
- package/dist/types/RatesController/RatesController.d.ts.map +1 -0
- package/dist/types/RatesController/index.d.ts +3 -0
- package/dist/types/RatesController/index.d.ts.map +1 -0
- package/dist/types/RatesController/types.d.ts +100 -0
- package/dist/types/RatesController/types.d.ts.map +1 -0
- package/dist/types/TokenRatesController.d.ts +32 -10
- package/dist/types/TokenRatesController.d.ts.map +1 -1
- package/dist/types/TokensController.d.ts +27 -131
- package/dist/types/TokensController.d.ts.map +1 -1
- package/dist/types/crypto-compare-service/crypto-compare.d.ts +22 -0
- package/dist/types/crypto-compare-service/crypto-compare.d.ts.map +1 -0
- package/dist/types/crypto-compare-service/index.d.ts +2 -0
- package/dist/types/crypto-compare-service/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +7 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/token-prices-service/abstract-token-prices-service.d.ts +18 -0
- package/dist/types/token-prices-service/abstract-token-prices-service.d.ts.map +1 -1
- package/dist/types/token-prices-service/codefi-v2.d.ts +7 -0
- package/dist/types/token-prices-service/codefi-v2.d.ts.map +1 -1
- package/dist/types/token-service.d.ts +1 -1
- package/dist/types/token-service.d.ts.map +1 -1
- package/package.json +14 -14
- package/dist/chunk-4FMVFW2T.js.map +0 -1
- package/dist/chunk-5MRF7YPD.mjs.map +0 -1
- package/dist/chunk-6XOM7KOQ.mjs.map +0 -1
- package/dist/chunk-ASFD56OL.mjs +0 -235
- package/dist/chunk-ASFD56OL.mjs.map +0 -1
- package/dist/chunk-DYH5P3VY.js +0 -35
- package/dist/chunk-DYH5P3VY.js.map +0 -1
- package/dist/chunk-IOQX3VTD.js.map +0 -1
- package/dist/chunk-KM3J4DO6.js +0 -1182
- package/dist/chunk-KM3J4DO6.js.map +0 -1
- package/dist/chunk-LD4GC7OR.js.map +0 -1
- package/dist/chunk-LRKDZWS6.js.map +0 -1
- package/dist/chunk-LS6R3HQL.js.map +0 -1
- package/dist/chunk-NXGX7LZJ.mjs.map +0 -1
- package/dist/chunk-OHSQRYVL.js.map +0 -1
- package/dist/chunk-OSEZFHQ3.mjs.map +0 -1
- package/dist/chunk-OWTCG2N3.mjs.map +0 -1
- package/dist/chunk-PAJTKWEC.mjs.map +0 -1
- package/dist/chunk-PWZE6KJV.mjs +0 -35
- package/dist/chunk-PWZE6KJV.mjs.map +0 -1
- package/dist/chunk-QHU4H6HP.js.map +0 -1
- package/dist/chunk-QWACHXRH.mjs.map +0 -1
- package/dist/chunk-S6CZP74C.mjs +0 -1182
- package/dist/chunk-S6CZP74C.mjs.map +0 -1
- package/dist/chunk-SOK5YX7I.js +0 -704
- package/dist/chunk-SOK5YX7I.js.map +0 -1
- package/dist/chunk-V4ZO3F2S.js.map +0 -1
- package/dist/chunk-X2MMIBYW.js +0 -235
- package/dist/chunk-X2MMIBYW.js.map +0 -1
- package/dist/chunk-X5PLVMOQ.mjs.map +0 -1
- package/dist/crypto-compare.js +0 -8
- package/dist/crypto-compare.mjs +0 -8
- package/dist/types/crypto-compare.d.ts +0 -13
- package/dist/types/crypto-compare.d.ts.map +0 -1
- /package/dist/{crypto-compare.js.map → RatesController/RatesController.js.map} +0 -0
- /package/dist/{crypto-compare.mjs.map → RatesController/RatesController.mjs.map} +0 -0
- /package/dist/{chunk-RUE635TV.mjs.map → chunk-A2DDWXMS.mjs.map} +0 -0
- /package/dist/{chunk-V46CHMOU.mjs.map → chunk-ASA5RLBY.mjs.map} +0 -0
- /package/dist/{chunk-BO2WZDUM.js.map → chunk-B5YY22QQ.js.map} +0 -0
- /package/dist/{chunk-3ZHN4GFT.js.map → chunk-BOTVAG4A.js.map} +0 -0
- /package/dist/{chunk-LLYYJY7H.mjs.map → chunk-D3K5MPMW.mjs.map} +0 -0
- /package/dist/{chunk-I53XGBU3.js.map → chunk-HDI4L2DD.js.map} +0 -0
- /package/dist/{chunk-DEQZ35QE.js.map → chunk-JUI3XNEF.js.map} +0 -0
- /package/dist/{chunk-S7UA2DU7.mjs.map → chunk-LZ5ZGQEX.mjs.map} +0 -0
- /package/dist/{chunk-D3PCUDTX.mjs.map → chunk-MR6EF4B7.mjs.map} +0 -0
- /package/dist/{chunk-OBOWNEJU.js.map → chunk-U3DJJN4X.js.map} +0 -0
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import type {
|
|
1
|
+
import type { AddApprovalRequest } from '@metamask/approval-controller';
|
|
2
|
+
import type { RestrictedControllerMessenger } from '@metamask/base-controller';
|
|
3
|
+
import type { NetworkClientId, NetworkClient, NetworkControllerGetNetworkClientByIdAction, NetworkControllerStateChangeEvent, NetworkControllerGetStateAction } from '@metamask/network-controller';
|
|
4
|
+
import { StaticIntervalPollingController } from '@metamask/polling-controller';
|
|
5
|
+
import type { PreferencesControllerGetStateAction, PreferencesControllerStateChangeEvent } from '@metamask/preferences-controller';
|
|
6
6
|
import { Source } from './constants';
|
|
7
|
-
import { type NftController, type
|
|
7
|
+
import { type NftController, type NftControllerState } from './NftController';
|
|
8
|
+
declare const controllerName = "NftDetectionController";
|
|
9
|
+
export type AllowedActions = AddApprovalRequest | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | PreferencesControllerGetStateAction;
|
|
10
|
+
export type AllowedEvents = PreferencesControllerStateChangeEvent | NetworkControllerStateChangeEvent;
|
|
11
|
+
export type NftDetectionControllerMessenger = RestrictedControllerMessenger<typeof controllerName, AllowedActions, AllowedEvents, AllowedActions['type'], AllowedEvents['type']>;
|
|
8
12
|
/**
|
|
9
13
|
* @type ApiNft
|
|
10
14
|
*
|
|
@@ -25,7 +29,7 @@ import { type NftController, type NftState } from './NftController';
|
|
|
25
29
|
* @property creator - The NFT owner information object
|
|
26
30
|
* @property lastSale - When this item was last sold
|
|
27
31
|
*/
|
|
28
|
-
export
|
|
32
|
+
export type ApiNft = {
|
|
29
33
|
token_id: string;
|
|
30
34
|
num_sales: number | null;
|
|
31
35
|
background_color: string | null;
|
|
@@ -41,7 +45,7 @@ export interface ApiNft {
|
|
|
41
45
|
asset_contract: ApiNftContract;
|
|
42
46
|
creator: ApiNftCreator;
|
|
43
47
|
last_sale: ApiNftLastSale | null;
|
|
44
|
-
}
|
|
48
|
+
};
|
|
45
49
|
/**
|
|
46
50
|
* @type ApiNftContract
|
|
47
51
|
*
|
|
@@ -56,7 +60,7 @@ export interface ApiNft {
|
|
|
56
60
|
* @property description - The NFT contract description
|
|
57
61
|
* @property external_link - External link containing additional information
|
|
58
62
|
*/
|
|
59
|
-
export
|
|
63
|
+
export type ApiNftContract = {
|
|
60
64
|
address: string;
|
|
61
65
|
asset_contract_type: string | null;
|
|
62
66
|
created_date: string | null;
|
|
@@ -70,7 +74,7 @@ export interface ApiNftContract {
|
|
|
70
74
|
image_url?: string | null;
|
|
71
75
|
tokenCount?: string | null;
|
|
72
76
|
};
|
|
73
|
-
}
|
|
77
|
+
};
|
|
74
78
|
/**
|
|
75
79
|
* @type ApiNftLastSale
|
|
76
80
|
*
|
|
@@ -79,14 +83,14 @@ export interface ApiNftContract {
|
|
|
79
83
|
* @property total_price - URI of NFT image associated with this owner
|
|
80
84
|
* @property transaction - Object containing transaction_hash and block_hash
|
|
81
85
|
*/
|
|
82
|
-
export
|
|
86
|
+
export type ApiNftLastSale = {
|
|
83
87
|
event_timestamp: string;
|
|
84
88
|
total_price: string;
|
|
85
89
|
transaction: {
|
|
86
90
|
transaction_hash: string;
|
|
87
91
|
block_hash: string;
|
|
88
92
|
};
|
|
89
|
-
}
|
|
93
|
+
};
|
|
90
94
|
/**
|
|
91
95
|
* @type ApiNftCreator
|
|
92
96
|
*
|
|
@@ -95,26 +99,13 @@ export interface ApiNftLastSale {
|
|
|
95
99
|
* @property profile_img_url - URI of NFT image associated with this owner
|
|
96
100
|
* @property address - The owner address
|
|
97
101
|
*/
|
|
98
|
-
export
|
|
102
|
+
export type ApiNftCreator = {
|
|
99
103
|
user: {
|
|
100
104
|
username: string;
|
|
101
105
|
};
|
|
102
106
|
profile_img_url: string;
|
|
103
107
|
address: string;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* @type NftDetectionConfig
|
|
107
|
-
*
|
|
108
|
-
* NftDetection configuration
|
|
109
|
-
* @property interval - Polling interval used to fetch new token rates
|
|
110
|
-
* @property chainId - Current chain ID
|
|
111
|
-
* @property selectedAddress - Vault selected address
|
|
112
|
-
*/
|
|
113
|
-
export interface NftDetectionConfig extends BaseConfig {
|
|
114
|
-
interval: number;
|
|
115
|
-
chainId: Hex;
|
|
116
|
-
selectedAddress: string;
|
|
117
|
-
}
|
|
108
|
+
};
|
|
118
109
|
export type ReservoirResponse = {
|
|
119
110
|
tokens: TokensResponse[];
|
|
120
111
|
continuation?: string;
|
|
@@ -300,50 +291,25 @@ export type Metadata = {
|
|
|
300
291
|
/**
|
|
301
292
|
* Controller that passively polls on a set interval for NFT auto detection
|
|
302
293
|
*/
|
|
303
|
-
export declare class NftDetectionController extends
|
|
304
|
-
private
|
|
305
|
-
private getOwnerNftApi;
|
|
306
|
-
private getOwnerNfts;
|
|
307
|
-
/**
|
|
308
|
-
* Name of this controller used during composition
|
|
309
|
-
*/
|
|
310
|
-
name: string;
|
|
311
|
-
private readonly getOpenSeaApiKey;
|
|
312
|
-
private readonly addNft;
|
|
313
|
-
private readonly getNftApi;
|
|
314
|
-
private readonly getNftState;
|
|
315
|
-
private readonly getNetworkClientById;
|
|
294
|
+
export declare class NftDetectionController extends StaticIntervalPollingController<typeof controllerName, Record<never, never>, NftDetectionControllerMessenger> {
|
|
295
|
+
#private;
|
|
316
296
|
/**
|
|
317
|
-
*
|
|
297
|
+
* The controller options
|
|
318
298
|
*
|
|
319
299
|
* @param options - The controller options.
|
|
320
|
-
* @param options.
|
|
321
|
-
* @param options.
|
|
322
|
-
* @param options.
|
|
323
|
-
* @param options.onNetworkStateChange - Allows subscribing to network controller state changes.
|
|
324
|
-
* @param options.getOpenSeaApiKey - Gets the OpenSea API key, if one is set.
|
|
300
|
+
* @param options.interval - The pooling interval.
|
|
301
|
+
* @param options.messenger - A reference to the messaging system.
|
|
302
|
+
* @param options.disabled - Represents previous value of useNftDetection. Used to detect changes of useNftDetection. Default value is true.
|
|
325
303
|
* @param options.addNft - Add an NFT.
|
|
326
|
-
* @param options.getNftApi - Gets the URL to fetch an NFT from OpenSea.
|
|
327
304
|
* @param options.getNftState - Gets the current state of the Assets controller.
|
|
328
|
-
* @param options.disabled - Represents previous value of useNftDetection. Used to detect changes of useNftDetection. Default value is true.
|
|
329
|
-
* @param options.selectedAddress - Represents current selected address.
|
|
330
|
-
* @param options.getNetworkClientById - Gets the network client by ID, from the NetworkController.
|
|
331
|
-
* @param config - Initial options used to configure this controller.
|
|
332
|
-
* @param state - Initial state to set on this controller.
|
|
333
305
|
*/
|
|
334
|
-
constructor({
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
onNftsStateChange: (listener: (nftsState: NftState) => void) => void;
|
|
338
|
-
onPreferencesStateChange: (listener: (preferencesState: PreferencesState) => void) => void;
|
|
339
|
-
onNetworkStateChange: (listener: (networkState: NetworkState) => void) => void;
|
|
340
|
-
getOpenSeaApiKey: () => string | undefined;
|
|
341
|
-
addNft: NftController['addNft'];
|
|
342
|
-
getNftApi: NftController['getNftApi'];
|
|
343
|
-
getNftState: () => NftState;
|
|
306
|
+
constructor({ interval, messenger, disabled, addNft, getNftState, }: {
|
|
307
|
+
interval?: number;
|
|
308
|
+
messenger: NftDetectionControllerMessenger;
|
|
344
309
|
disabled: boolean;
|
|
345
|
-
|
|
346
|
-
|
|
310
|
+
addNft: NftController['addNft'];
|
|
311
|
+
getNftState: () => NftControllerState;
|
|
312
|
+
});
|
|
347
313
|
_executePoll(networkClientId: string, options: {
|
|
348
314
|
address: string;
|
|
349
315
|
}): Promise<void>;
|
|
@@ -355,20 +321,13 @@ export declare class NftDetectionController extends StaticIntervalPollingControl
|
|
|
355
321
|
* Stop polling for the currency rate.
|
|
356
322
|
*/
|
|
357
323
|
stop(): void;
|
|
358
|
-
private stopPolling;
|
|
359
|
-
/**
|
|
360
|
-
* Starts a new polling interval.
|
|
361
|
-
*
|
|
362
|
-
* @param interval - An interval on which to poll.
|
|
363
|
-
*/
|
|
364
|
-
private startPolling;
|
|
365
324
|
/**
|
|
366
325
|
* Checks whether network is mainnet or not.
|
|
367
326
|
*
|
|
368
327
|
* @returns Whether current network is mainnet.
|
|
369
328
|
*/
|
|
370
|
-
isMainnet
|
|
371
|
-
isMainnetByNetworkClientId
|
|
329
|
+
isMainnet(): boolean;
|
|
330
|
+
isMainnetByNetworkClientId(networkClient: NetworkClient): boolean;
|
|
372
331
|
/**
|
|
373
332
|
* Triggers asset ERC721 token auto detection on mainnet. Any newly detected NFTs are
|
|
374
333
|
* added.
|
|
@@ -377,9 +336,9 @@ export declare class NftDetectionController extends StaticIntervalPollingControl
|
|
|
377
336
|
* @param options.networkClientId - The network client ID to detect NFTs on.
|
|
378
337
|
* @param options.userAddress - The address to detect NFTs for.
|
|
379
338
|
*/
|
|
380
|
-
detectNfts(
|
|
339
|
+
detectNfts(options?: {
|
|
381
340
|
networkClientId?: NetworkClientId;
|
|
382
|
-
userAddress
|
|
341
|
+
userAddress?: string;
|
|
383
342
|
}): Promise<void>;
|
|
384
343
|
}
|
|
385
344
|
export default NftDetectionController;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NftDetectionController.d.ts","sourceRoot":"","sources":["../../src/NftDetectionController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"NftDetectionController.d.ts","sourceRoot":"","sources":["../../src/NftDetectionController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { BaseController } from '@metamask/base-controller';
|
|
2
|
+
import type { RatesControllerState, RatesControllerOptions, RatesControllerMessenger } from './types';
|
|
3
|
+
export declare const name = "RatesController";
|
|
4
|
+
export declare enum Cryptocurrency {
|
|
5
|
+
Btc = "btc"
|
|
6
|
+
}
|
|
7
|
+
export declare class RatesController extends BaseController<typeof name, RatesControllerState, RatesControllerMessenger> {
|
|
8
|
+
#private;
|
|
9
|
+
/**
|
|
10
|
+
* Creates a RatesController instance.
|
|
11
|
+
*
|
|
12
|
+
* @param options - Constructor options.
|
|
13
|
+
* @param options.includeUsdRate - Keep track of the USD rate in addition to the current currency rate.
|
|
14
|
+
* @param options.interval - The polling interval, in milliseconds.
|
|
15
|
+
* @param options.messenger - A reference to the messaging system.
|
|
16
|
+
* @param options.state - Initial state to set on this controller.
|
|
17
|
+
* @param options.fetchMultiExchangeRate - Fetches the exchange rate from an external API. This option is primarily meant for use in unit tests.
|
|
18
|
+
*/
|
|
19
|
+
constructor({ interval, messenger, state, includeUsdRate, fetchMultiExchangeRate, }: RatesControllerOptions);
|
|
20
|
+
/**
|
|
21
|
+
* Starts the polling process.
|
|
22
|
+
*/
|
|
23
|
+
start(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Stops the polling process.
|
|
26
|
+
*/
|
|
27
|
+
stop(): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Returns the current list of cryptocurrency.
|
|
30
|
+
* @returns The cryptocurrency list.
|
|
31
|
+
*/
|
|
32
|
+
getCryptocurrencyList(): Cryptocurrency[];
|
|
33
|
+
/**
|
|
34
|
+
* Sets the list of supported cryptocurrencies.
|
|
35
|
+
* @param list - The list of supported cryptocurrencies.
|
|
36
|
+
*/
|
|
37
|
+
setCryptocurrencyList(list: Cryptocurrency[]): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Sets the internal fiat currency and update rates accordingly.
|
|
40
|
+
* @param fiatCurrency - The fiat currency.
|
|
41
|
+
*/
|
|
42
|
+
setFiatCurrency(fiatCurrency: string): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=RatesController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RatesController.d.ts","sourceRoot":"","sources":["../../../src/RatesController/RatesController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAI3D,OAAO,KAAK,EAEV,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,IAAI,oBAAoB,CAAC;AAEtC,oBAAY,cAAc;IACxB,GAAG,QAAQ;CACZ;AAqBD,qBAAa,eAAgB,SAAQ,cAAc,CACjD,OAAO,IAAI,EACX,oBAAoB,EACpB,wBAAwB,CACzB;;IAWC;;;;;;;;;OASG;gBACS,EACV,QAA2B,EAC3B,SAAS,EACT,KAAK,EACL,cAAc,EACd,sBAAiD,GAClD,EAAE,sBAAsB;IA4EzB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B;;;OAGG;IACH,qBAAqB,IAAI,cAAc,EAAE;IAKzC;;;OAGG;IACG,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE;;;OAGG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAe3D"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { RatesController, Cryptocurrency } from './RatesController';
|
|
2
|
+
export type { RatesControllerState, RatesControllerEvents, RatesControllerActions, RatesControllerMessenger, RatesControllerGetStateAction, RatesControllerStateChangeEvent, RatesControllerPollingStartedEvent, RatesControllerPollingStoppedEvent, } from './types';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/RatesController/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,+BAA+B,EAC/B,kCAAkC,EAClC,kCAAkC,GACnC,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { RestrictedControllerMessenger, ControllerGetStateAction, ControllerStateChangeEvent } from '@metamask/base-controller';
|
|
2
|
+
import type { fetchMultiExchangeRate as defaultFetchExchangeRate } from '../crypto-compare-service';
|
|
3
|
+
import type { name as ratesControllerName, Cryptocurrency } from './RatesController';
|
|
4
|
+
/**
|
|
5
|
+
* Represents the conversion rates from one currency to others, including the conversion date.
|
|
6
|
+
* The `conversionRate` field is a string that maps a cryptocurrency code (e.g., "BTC") to its
|
|
7
|
+
* conversion rate. For this field we use string as the data type to avoid potential rounding
|
|
8
|
+
* errors and precision loss.
|
|
9
|
+
* The `usdConversionRate` provides the conversion rate to USD as a string, or `null` if the
|
|
10
|
+
* conversion rate to USD is not available. We also use string for the same reason as stated before.
|
|
11
|
+
* The `conversionDate` is a Unix timestamp (number) indicating when the conversion rate was last updated.
|
|
12
|
+
*/
|
|
13
|
+
export type Rate = {
|
|
14
|
+
conversionRate: string;
|
|
15
|
+
conversionDate: number;
|
|
16
|
+
usdConversionRate?: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Represents the conversion rates for multiple cryptocurrencies.
|
|
20
|
+
* Each key is a string representing the cryptocurrency symbol (e.g., "BTC", "SOL"),
|
|
21
|
+
* and its value is a `Rate` object containing conversion rates from that cryptocurrency
|
|
22
|
+
* to a fiat currencies and an optional USD rate.
|
|
23
|
+
*/
|
|
24
|
+
export type ConversionRates = Record<string, Rate>;
|
|
25
|
+
/**
|
|
26
|
+
* Represents the state structure for the RatesController.
|
|
27
|
+
*/
|
|
28
|
+
export type RatesControllerState = {
|
|
29
|
+
/**
|
|
30
|
+
* The fiat currency in which conversion rates are expressed
|
|
31
|
+
* (i.e., the "to" currency).
|
|
32
|
+
*/
|
|
33
|
+
fiatCurrency: string;
|
|
34
|
+
/**
|
|
35
|
+
* The conversion rates for multiple cryptocurrencies.
|
|
36
|
+
*/
|
|
37
|
+
rates: ConversionRates;
|
|
38
|
+
/**
|
|
39
|
+
* A list of supported cryptocurrency symbols.
|
|
40
|
+
* (i.e., the "from" currencies).
|
|
41
|
+
*/
|
|
42
|
+
cryptocurrencies: Cryptocurrency[];
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Type definition for RatesController state change events.
|
|
46
|
+
*/
|
|
47
|
+
export type RatesControllerStateChangeEvent = ControllerStateChangeEvent<typeof ratesControllerName, RatesControllerState>;
|
|
48
|
+
/**
|
|
49
|
+
* Type definition for the RatesController polling started event.
|
|
50
|
+
*/
|
|
51
|
+
export type RatesControllerPollingStartedEvent = {
|
|
52
|
+
type: `${typeof ratesControllerName}:pollingStarted`;
|
|
53
|
+
payload: [];
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Type definition for the RatesController polling stopped event.
|
|
57
|
+
*/
|
|
58
|
+
export type RatesControllerPollingStoppedEvent = {
|
|
59
|
+
type: `${typeof ratesControllerName}:pollingStopped`;
|
|
60
|
+
payload: [];
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Defines the events that the RatesController can emit.
|
|
64
|
+
*/
|
|
65
|
+
export type RatesControllerEvents = RatesControllerStateChangeEvent | RatesControllerPollingStartedEvent | RatesControllerPollingStoppedEvent;
|
|
66
|
+
export type RatesControllerGetStateAction = ControllerGetStateAction<typeof ratesControllerName, RatesControllerState>;
|
|
67
|
+
/**
|
|
68
|
+
* Defines the actions that can be performed to get the state of the RatesController.
|
|
69
|
+
*/
|
|
70
|
+
export type RatesControllerActions = RatesControllerGetStateAction;
|
|
71
|
+
/**
|
|
72
|
+
* Defines the actions that the RatesController can perform.
|
|
73
|
+
*/
|
|
74
|
+
export type RatesControllerMessenger = RestrictedControllerMessenger<typeof ratesControllerName, RatesControllerActions, RatesControllerEvents, never, never>;
|
|
75
|
+
/**
|
|
76
|
+
* The options required to initialize a RatesController.
|
|
77
|
+
*/
|
|
78
|
+
export type RatesControllerOptions = {
|
|
79
|
+
/**
|
|
80
|
+
* Whether to include USD rates in the conversion rates.
|
|
81
|
+
*/
|
|
82
|
+
includeUsdRate: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* The polling interval in milliseconds.
|
|
85
|
+
*/
|
|
86
|
+
interval?: number;
|
|
87
|
+
/**
|
|
88
|
+
* The messenger instance for communication.
|
|
89
|
+
*/
|
|
90
|
+
messenger: RatesControllerMessenger;
|
|
91
|
+
/**
|
|
92
|
+
* The initial state of the controller.
|
|
93
|
+
*/
|
|
94
|
+
state?: Partial<RatesControllerState>;
|
|
95
|
+
/**
|
|
96
|
+
* The function to fetch exchange rates.
|
|
97
|
+
*/
|
|
98
|
+
fetchMultiExchangeRate?: typeof defaultFetchExchangeRate;
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/RatesController/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,sBAAsB,IAAI,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,KAAK,EACV,IAAI,IAAI,mBAAmB,EAC3B,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B;;;;;;;;GAQG;AACH,MAAM,MAAM,IAAI,GAAG;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,eAAe,CAAC;IACvB;;;OAGG;IACH,gBAAgB,EAAE,cAAc,EAAE,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG,0BAA0B,CACtE,OAAO,mBAAmB,EAC1B,oBAAoB,CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kCAAkC,GAAG;IAC/C,IAAI,EAAE,GAAG,OAAO,mBAAmB,iBAAiB,CAAC;IACrD,OAAO,EAAE,EAAE,CAAC;CACb,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kCAAkC,GAAG;IAC/C,IAAI,EAAE,GAAG,OAAO,mBAAmB,iBAAiB,CAAC;IACrD,OAAO,EAAE,EAAE,CAAC;CACb,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,+BAA+B,GAC/B,kCAAkC,GAClC,kCAAkC,CAAC;AAEvC,MAAM,MAAM,6BAA6B,GAAG,wBAAwB,CAClE,OAAO,mBAAmB,EAC1B,oBAAoB,CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,6BAA6B,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,6BAA6B,CAClE,OAAO,mBAAmB,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,EACL,KAAK,CACN,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,SAAS,EAAE,wBAAwB,CAAC;IACpC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtC;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,wBAAwB,CAAC;CAC1D,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { StaticIntervalPollingControllerV1 } from '@metamask/polling-controller'
|
|
|
4
4
|
import type { PreferencesState } from '@metamask/preferences-controller';
|
|
5
5
|
import { type Hex } from '@metamask/utils';
|
|
6
6
|
import type { AbstractTokenPricesService } from './token-prices-service/abstract-token-prices-service';
|
|
7
|
-
import type {
|
|
7
|
+
import type { TokensControllerState } from './TokensController';
|
|
8
8
|
/**
|
|
9
9
|
* @type Token
|
|
10
10
|
*
|
|
@@ -14,16 +14,16 @@ import type { TokensState } from './TokensController';
|
|
|
14
14
|
* @property symbol - Symbol of the token
|
|
15
15
|
* @property image - Image of the token, url or bit32 image
|
|
16
16
|
*/
|
|
17
|
-
export
|
|
17
|
+
export type Token = {
|
|
18
18
|
address: string;
|
|
19
19
|
decimals: number;
|
|
20
20
|
symbol: string;
|
|
21
21
|
aggregators?: string[];
|
|
22
22
|
image?: string;
|
|
23
|
-
|
|
23
|
+
hasBalanceError?: boolean;
|
|
24
24
|
isERC721?: boolean;
|
|
25
25
|
name?: string;
|
|
26
|
-
}
|
|
26
|
+
};
|
|
27
27
|
/**
|
|
28
28
|
* @type TokenRatesConfig
|
|
29
29
|
*
|
|
@@ -54,16 +54,38 @@ export interface TokenRatesConfig extends BaseConfig {
|
|
|
54
54
|
export interface ContractExchangeRates {
|
|
55
55
|
[address: string]: number | undefined;
|
|
56
56
|
}
|
|
57
|
+
type MarketDataDetails = {
|
|
58
|
+
tokenAddress: `0x${string}`;
|
|
59
|
+
value: number;
|
|
60
|
+
currency: string;
|
|
61
|
+
allTimeHigh: number;
|
|
62
|
+
allTimeLow: number;
|
|
63
|
+
circulatingSupply: number;
|
|
64
|
+
dilutedMarketCap: number;
|
|
65
|
+
high1d: number;
|
|
66
|
+
low1d: number;
|
|
67
|
+
marketCap: number;
|
|
68
|
+
marketCapPercentChange1d: number;
|
|
69
|
+
price: number;
|
|
70
|
+
priceChange1d: number;
|
|
71
|
+
pricePercentChange1d: number;
|
|
72
|
+
pricePercentChange1h: number;
|
|
73
|
+
pricePercentChange1y: number;
|
|
74
|
+
pricePercentChange7d: number;
|
|
75
|
+
pricePercentChange14d: number;
|
|
76
|
+
pricePercentChange30d: number;
|
|
77
|
+
pricePercentChange200d: number;
|
|
78
|
+
totalVolume: number;
|
|
79
|
+
};
|
|
80
|
+
export type ContractMarketData = Record<Hex, MarketDataDetails>;
|
|
57
81
|
/**
|
|
58
82
|
* @type TokenRatesState
|
|
59
83
|
*
|
|
60
84
|
* Token rates controller state
|
|
61
|
-
* @property
|
|
62
|
-
* @property contractExchangeRatesByChainId - Hash of token contract addresses to exchange rates keyed by chain ID and native currency (ticker)
|
|
85
|
+
* @property marketData - Market data for tokens, keyed by chain ID and then token contract address.
|
|
63
86
|
*/
|
|
64
87
|
export interface TokenRatesState extends BaseState {
|
|
65
|
-
|
|
66
|
-
contractExchangeRatesByChainId: Record<Hex, Record<string, ContractExchangeRates>>;
|
|
88
|
+
marketData: Record<Hex, Record<Hex, MarketDataDetails>>;
|
|
67
89
|
}
|
|
68
90
|
/**
|
|
69
91
|
* Controller that passively polls on a set interval for token-to-fiat exchange rates
|
|
@@ -75,7 +97,7 @@ export declare class TokenRatesController extends StaticIntervalPollingControlle
|
|
|
75
97
|
/**
|
|
76
98
|
* Name of this controller used during composition
|
|
77
99
|
*/
|
|
78
|
-
name:
|
|
100
|
+
name: "TokenRatesController";
|
|
79
101
|
private readonly getNetworkClientById;
|
|
80
102
|
/**
|
|
81
103
|
* Creates a TokenRatesController instance.
|
|
@@ -102,7 +124,7 @@ export declare class TokenRatesController extends StaticIntervalPollingControlle
|
|
|
102
124
|
ticker: string;
|
|
103
125
|
selectedAddress: string;
|
|
104
126
|
onPreferencesStateChange: (listener: (preferencesState: PreferencesState) => void) => void;
|
|
105
|
-
onTokensStateChange: (listener: (tokensState:
|
|
127
|
+
onTokensStateChange: (listener: (tokensState: TokensControllerState) => void) => void;
|
|
106
128
|
onNetworkStateChange: (listener: (networkState: NetworkState) => void) => void;
|
|
107
129
|
tokenPricesService: AbstractTokenPricesService;
|
|
108
130
|
}, config?: Partial<TokenRatesConfig>, state?: Partial<TokenRatesState>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenRatesController.d.ts","sourceRoot":"","sources":["../../src/TokenRatesController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAOvE,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,YAAY,EACb,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iCAAiC,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAyB,KAAK,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAKlE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sDAAsD,CAAC;
|
|
1
|
+
{"version":3,"file":"TokenRatesController.d.ts","sourceRoot":"","sources":["../../src/TokenRatesController.ts"],"names":[],"mappings":"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"}
|