@metamask-previews/assets-controller 0.0.0-preview-903db2da → 0.0.0-preview-3ec2a74

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.
Files changed (250) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/AssetsController.cjs +1028 -61
  3. package/dist/AssetsController.cjs.map +1 -1
  4. package/dist/AssetsController.d.cts +229 -83
  5. package/dist/AssetsController.d.cts.map +1 -1
  6. package/dist/AssetsController.d.mts +229 -83
  7. package/dist/AssetsController.d.mts.map +1 -1
  8. package/dist/AssetsController.mjs +1024 -59
  9. package/dist/AssetsController.mjs.map +1 -1
  10. package/dist/data-sources/AbstractDataSource.cjs +103 -0
  11. package/dist/data-sources/AbstractDataSource.cjs.map +1 -0
  12. package/dist/data-sources/AbstractDataSource.d.cts +92 -0
  13. package/dist/data-sources/AbstractDataSource.d.cts.map +1 -0
  14. package/dist/data-sources/AbstractDataSource.d.mts +92 -0
  15. package/dist/data-sources/AbstractDataSource.d.mts.map +1 -0
  16. package/dist/data-sources/AbstractDataSource.mjs +99 -0
  17. package/dist/data-sources/AbstractDataSource.mjs.map +1 -0
  18. package/dist/data-sources/AccountsApiDataSource.cjs +421 -0
  19. package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -0
  20. package/dist/data-sources/AccountsApiDataSource.d.cts +103 -0
  21. package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -0
  22. package/dist/data-sources/AccountsApiDataSource.d.mts +103 -0
  23. package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -0
  24. package/dist/data-sources/AccountsApiDataSource.mjs +416 -0
  25. package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -0
  26. package/dist/data-sources/BackendWebsocketDataSource.cjs +388 -0
  27. package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -0
  28. package/dist/data-sources/BackendWebsocketDataSource.d.cts +95 -0
  29. package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +1 -0
  30. package/dist/data-sources/BackendWebsocketDataSource.d.mts +95 -0
  31. package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +1 -0
  32. package/dist/data-sources/BackendWebsocketDataSource.mjs +383 -0
  33. package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -0
  34. package/dist/data-sources/PriceDataSource.cjs +350 -0
  35. package/dist/data-sources/PriceDataSource.cjs.map +1 -0
  36. package/dist/data-sources/PriceDataSource.d.cts +153 -0
  37. package/dist/data-sources/PriceDataSource.d.cts.map +1 -0
  38. package/dist/data-sources/PriceDataSource.d.mts +153 -0
  39. package/dist/data-sources/PriceDataSource.d.mts.map +1 -0
  40. package/dist/data-sources/PriceDataSource.mjs +346 -0
  41. package/dist/data-sources/PriceDataSource.mjs.map +1 -0
  42. package/dist/data-sources/RpcDataSource.cjs +410 -0
  43. package/dist/data-sources/RpcDataSource.cjs.map +1 -0
  44. package/dist/data-sources/RpcDataSource.d.cts +154 -0
  45. package/dist/data-sources/RpcDataSource.d.cts.map +1 -0
  46. package/dist/data-sources/RpcDataSource.d.mts +154 -0
  47. package/dist/data-sources/RpcDataSource.d.mts.map +1 -0
  48. package/dist/data-sources/RpcDataSource.mjs +405 -0
  49. package/dist/data-sources/RpcDataSource.mjs.map +1 -0
  50. package/dist/data-sources/SnapDataSource.cjs +734 -0
  51. package/dist/data-sources/SnapDataSource.cjs.map +1 -0
  52. package/dist/data-sources/SnapDataSource.d.cts +217 -0
  53. package/dist/data-sources/SnapDataSource.d.cts.map +1 -0
  54. package/dist/data-sources/SnapDataSource.d.mts +217 -0
  55. package/dist/data-sources/SnapDataSource.d.mts.map +1 -0
  56. package/dist/data-sources/SnapDataSource.mjs +723 -0
  57. package/dist/data-sources/SnapDataSource.mjs.map +1 -0
  58. package/dist/data-sources/TokenDataSource.cjs +179 -0
  59. package/dist/data-sources/TokenDataSource.cjs.map +1 -0
  60. package/dist/data-sources/TokenDataSource.d.cts +62 -0
  61. package/dist/data-sources/TokenDataSource.d.cts.map +1 -0
  62. package/dist/data-sources/TokenDataSource.d.mts +62 -0
  63. package/dist/data-sources/TokenDataSource.d.mts.map +1 -0
  64. package/dist/data-sources/TokenDataSource.mjs +175 -0
  65. package/dist/data-sources/TokenDataSource.mjs.map +1 -0
  66. package/dist/data-sources/index.cjs +62 -0
  67. package/dist/data-sources/index.cjs.map +1 -0
  68. package/dist/data-sources/index.d.cts +9 -0
  69. package/dist/data-sources/index.d.cts.map +1 -0
  70. package/dist/data-sources/index.d.mts +9 -0
  71. package/dist/data-sources/index.d.mts.map +1 -0
  72. package/dist/data-sources/index.mjs +23 -0
  73. package/dist/data-sources/index.mjs.map +1 -0
  74. package/dist/data-sources/initDataSources.cjs +199 -0
  75. package/dist/data-sources/initDataSources.cjs.map +1 -0
  76. package/dist/data-sources/initDataSources.d.cts +123 -0
  77. package/dist/data-sources/initDataSources.d.cts.map +1 -0
  78. package/dist/data-sources/initDataSources.d.mts +123 -0
  79. package/dist/data-sources/initDataSources.d.mts.map +1 -0
  80. package/dist/data-sources/initDataSources.mjs +194 -0
  81. package/dist/data-sources/initDataSources.mjs.map +1 -0
  82. package/dist/data-sources/rpc-datasource/clients/MulticallClient.cjs +638 -0
  83. package/dist/data-sources/rpc-datasource/clients/MulticallClient.cjs.map +1 -0
  84. package/dist/data-sources/rpc-datasource/clients/MulticallClient.d.cts +47 -0
  85. package/dist/data-sources/rpc-datasource/clients/MulticallClient.d.cts.map +1 -0
  86. package/dist/data-sources/rpc-datasource/clients/MulticallClient.d.mts +47 -0
  87. package/dist/data-sources/rpc-datasource/clients/MulticallClient.d.mts.map +1 -0
  88. package/dist/data-sources/rpc-datasource/clients/MulticallClient.mjs +632 -0
  89. package/dist/data-sources/rpc-datasource/clients/MulticallClient.mjs.map +1 -0
  90. package/dist/data-sources/rpc-datasource/clients/index.cjs +8 -0
  91. package/dist/data-sources/rpc-datasource/clients/index.cjs.map +1 -0
  92. package/dist/data-sources/rpc-datasource/clients/index.d.cts +3 -0
  93. package/dist/data-sources/rpc-datasource/clients/index.d.cts.map +1 -0
  94. package/dist/data-sources/rpc-datasource/clients/index.d.mts +3 -0
  95. package/dist/data-sources/rpc-datasource/clients/index.d.mts.map +1 -0
  96. package/dist/data-sources/rpc-datasource/clients/index.mjs +2 -0
  97. package/dist/data-sources/rpc-datasource/clients/index.mjs.map +1 -0
  98. package/dist/data-sources/rpc-datasource/index.cjs +9 -0
  99. package/dist/data-sources/rpc-datasource/index.cjs.map +1 -0
  100. package/dist/data-sources/rpc-datasource/index.d.cts +4 -0
  101. package/dist/data-sources/rpc-datasource/index.d.cts.map +1 -0
  102. package/dist/data-sources/rpc-datasource/index.d.mts +4 -0
  103. package/dist/data-sources/rpc-datasource/index.d.mts.map +1 -0
  104. package/dist/data-sources/rpc-datasource/index.mjs +3 -0
  105. package/dist/data-sources/rpc-datasource/index.mjs.map +1 -0
  106. package/dist/data-sources/rpc-datasource/services/BalanceFetcher.cjs +167 -0
  107. package/dist/data-sources/rpc-datasource/services/BalanceFetcher.cjs.map +1 -0
  108. package/dist/data-sources/rpc-datasource/services/BalanceFetcher.d.cts +16 -0
  109. package/dist/data-sources/rpc-datasource/services/BalanceFetcher.d.cts.map +1 -0
  110. package/dist/data-sources/rpc-datasource/services/BalanceFetcher.d.mts +16 -0
  111. package/dist/data-sources/rpc-datasource/services/BalanceFetcher.d.mts.map +1 -0
  112. package/dist/data-sources/rpc-datasource/services/BalanceFetcher.mjs +163 -0
  113. package/dist/data-sources/rpc-datasource/services/BalanceFetcher.mjs.map +1 -0
  114. package/dist/data-sources/rpc-datasource/services/TokenDetector.cjs +173 -0
  115. package/dist/data-sources/rpc-datasource/services/TokenDetector.cjs.map +1 -0
  116. package/dist/data-sources/rpc-datasource/services/TokenDetector.d.cts +14 -0
  117. package/dist/data-sources/rpc-datasource/services/TokenDetector.d.cts.map +1 -0
  118. package/dist/data-sources/rpc-datasource/services/TokenDetector.d.mts +14 -0
  119. package/dist/data-sources/rpc-datasource/services/TokenDetector.d.mts.map +1 -0
  120. package/dist/data-sources/rpc-datasource/services/TokenDetector.mjs +169 -0
  121. package/dist/data-sources/rpc-datasource/services/TokenDetector.mjs.map +1 -0
  122. package/dist/data-sources/rpc-datasource/services/index.cjs +8 -0
  123. package/dist/data-sources/rpc-datasource/services/index.cjs.map +1 -0
  124. package/dist/data-sources/rpc-datasource/services/index.d.cts +3 -0
  125. package/dist/data-sources/rpc-datasource/services/index.d.cts.map +1 -0
  126. package/dist/data-sources/rpc-datasource/services/index.d.mts +3 -0
  127. package/dist/data-sources/rpc-datasource/services/index.d.mts.map +1 -0
  128. package/dist/data-sources/rpc-datasource/services/index.mjs +3 -0
  129. package/dist/data-sources/rpc-datasource/services/index.mjs.map +1 -0
  130. package/dist/data-sources/rpc-datasource/types/assets.cjs +3 -0
  131. package/dist/data-sources/rpc-datasource/types/assets.cjs.map +1 -0
  132. package/dist/data-sources/rpc-datasource/types/assets.d.cts +53 -0
  133. package/dist/data-sources/rpc-datasource/types/assets.d.cts.map +1 -0
  134. package/dist/data-sources/rpc-datasource/types/assets.d.mts +53 -0
  135. package/dist/data-sources/rpc-datasource/types/assets.d.mts.map +1 -0
  136. package/dist/data-sources/rpc-datasource/types/assets.mjs +2 -0
  137. package/dist/data-sources/rpc-datasource/types/assets.mjs.map +1 -0
  138. package/dist/data-sources/rpc-datasource/types/config.cjs +3 -0
  139. package/dist/data-sources/rpc-datasource/types/config.cjs.map +1 -0
  140. package/dist/data-sources/rpc-datasource/types/config.d.cts +18 -0
  141. package/dist/data-sources/rpc-datasource/types/config.d.cts.map +1 -0
  142. package/dist/data-sources/rpc-datasource/types/config.d.mts +18 -0
  143. package/dist/data-sources/rpc-datasource/types/config.d.mts.map +1 -0
  144. package/dist/data-sources/rpc-datasource/types/config.mjs +2 -0
  145. package/dist/data-sources/rpc-datasource/types/config.mjs.map +1 -0
  146. package/dist/data-sources/rpc-datasource/types/core.cjs +3 -0
  147. package/dist/data-sources/rpc-datasource/types/core.cjs.map +1 -0
  148. package/dist/data-sources/rpc-datasource/types/core.d.cts +19 -0
  149. package/dist/data-sources/rpc-datasource/types/core.d.cts.map +1 -0
  150. package/dist/data-sources/rpc-datasource/types/core.d.mts +19 -0
  151. package/dist/data-sources/rpc-datasource/types/core.d.mts.map +1 -0
  152. package/dist/data-sources/rpc-datasource/types/core.mjs +2 -0
  153. package/dist/data-sources/rpc-datasource/types/core.mjs.map +1 -0
  154. package/dist/data-sources/rpc-datasource/types/index.cjs +3 -0
  155. package/dist/data-sources/rpc-datasource/types/index.cjs.map +1 -0
  156. package/dist/data-sources/rpc-datasource/types/index.d.cts +7 -0
  157. package/dist/data-sources/rpc-datasource/types/index.d.cts.map +1 -0
  158. package/dist/data-sources/rpc-datasource/types/index.d.mts +7 -0
  159. package/dist/data-sources/rpc-datasource/types/index.d.mts.map +1 -0
  160. package/dist/data-sources/rpc-datasource/types/index.mjs +2 -0
  161. package/dist/data-sources/rpc-datasource/types/index.mjs.map +1 -0
  162. package/dist/data-sources/rpc-datasource/types/multicall.cjs +3 -0
  163. package/dist/data-sources/rpc-datasource/types/multicall.cjs.map +1 -0
  164. package/dist/data-sources/rpc-datasource/types/multicall.d.cts +24 -0
  165. package/dist/data-sources/rpc-datasource/types/multicall.d.cts.map +1 -0
  166. package/dist/data-sources/rpc-datasource/types/multicall.d.mts +24 -0
  167. package/dist/data-sources/rpc-datasource/types/multicall.d.mts.map +1 -0
  168. package/dist/data-sources/rpc-datasource/types/multicall.mjs +2 -0
  169. package/dist/data-sources/rpc-datasource/types/multicall.mjs.map +1 -0
  170. package/dist/data-sources/rpc-datasource/types/services.cjs +3 -0
  171. package/dist/data-sources/rpc-datasource/types/services.cjs.map +1 -0
  172. package/dist/data-sources/rpc-datasource/types/services.d.cts +74 -0
  173. package/dist/data-sources/rpc-datasource/types/services.d.cts.map +1 -0
  174. package/dist/data-sources/rpc-datasource/types/services.d.mts +74 -0
  175. package/dist/data-sources/rpc-datasource/types/services.d.mts.map +1 -0
  176. package/dist/data-sources/rpc-datasource/types/services.mjs +2 -0
  177. package/dist/data-sources/rpc-datasource/types/services.mjs.map +1 -0
  178. package/dist/data-sources/rpc-datasource/types/state.cjs +3 -0
  179. package/dist/data-sources/rpc-datasource/types/state.cjs.map +1 -0
  180. package/dist/data-sources/rpc-datasource/types/state.d.cts +67 -0
  181. package/dist/data-sources/rpc-datasource/types/state.d.cts.map +1 -0
  182. package/dist/data-sources/rpc-datasource/types/state.d.mts +67 -0
  183. package/dist/data-sources/rpc-datasource/types/state.d.mts.map +1 -0
  184. package/dist/data-sources/rpc-datasource/types/state.mjs +2 -0
  185. package/dist/data-sources/rpc-datasource/types/state.mjs.map +1 -0
  186. package/dist/data-sources/rpc-datasource/utils/batch.cjs +45 -0
  187. package/dist/data-sources/rpc-datasource/utils/batch.cjs.map +1 -0
  188. package/dist/data-sources/rpc-datasource/utils/batch.d.cts +28 -0
  189. package/dist/data-sources/rpc-datasource/utils/batch.d.cts.map +1 -0
  190. package/dist/data-sources/rpc-datasource/utils/batch.d.mts +28 -0
  191. package/dist/data-sources/rpc-datasource/utils/batch.d.mts.map +1 -0
  192. package/dist/data-sources/rpc-datasource/utils/batch.mjs +40 -0
  193. package/dist/data-sources/rpc-datasource/utils/batch.mjs.map +1 -0
  194. package/dist/data-sources/rpc-datasource/utils/index.cjs +7 -0
  195. package/dist/data-sources/rpc-datasource/utils/index.cjs.map +1 -0
  196. package/dist/data-sources/rpc-datasource/utils/index.d.cts +2 -0
  197. package/dist/data-sources/rpc-datasource/utils/index.d.cts.map +1 -0
  198. package/dist/data-sources/rpc-datasource/utils/index.d.mts +2 -0
  199. package/dist/data-sources/rpc-datasource/utils/index.d.mts.map +1 -0
  200. package/dist/data-sources/rpc-datasource/utils/index.mjs +2 -0
  201. package/dist/data-sources/rpc-datasource/utils/index.mjs.map +1 -0
  202. package/dist/index.cjs +70 -1
  203. package/dist/index.cjs.map +1 -1
  204. package/dist/index.d.cts +19 -1
  205. package/dist/index.d.cts.map +1 -1
  206. package/dist/index.d.mts +19 -1
  207. package/dist/index.d.mts.map +1 -1
  208. package/dist/index.mjs +31 -0
  209. package/dist/index.mjs.map +1 -1
  210. package/dist/logger.cjs +7 -0
  211. package/dist/logger.cjs.map +1 -0
  212. package/dist/logger.d.cts +5 -0
  213. package/dist/logger.d.cts.map +1 -0
  214. package/dist/logger.d.mts +5 -0
  215. package/dist/logger.d.mts.map +1 -0
  216. package/dist/logger.mjs +4 -0
  217. package/dist/logger.mjs.map +1 -0
  218. package/dist/middlewares/DetectionMiddleware.cjs +101 -0
  219. package/dist/middlewares/DetectionMiddleware.cjs.map +1 -0
  220. package/dist/middlewares/DetectionMiddleware.d.cts +54 -0
  221. package/dist/middlewares/DetectionMiddleware.d.cts.map +1 -0
  222. package/dist/middlewares/DetectionMiddleware.d.mts +54 -0
  223. package/dist/middlewares/DetectionMiddleware.d.mts.map +1 -0
  224. package/dist/middlewares/DetectionMiddleware.mjs +97 -0
  225. package/dist/middlewares/DetectionMiddleware.mjs.map +1 -0
  226. package/dist/middlewares/index.cjs +6 -0
  227. package/dist/middlewares/index.cjs.map +1 -0
  228. package/dist/middlewares/index.d.cts +2 -0
  229. package/dist/middlewares/index.d.cts.map +1 -0
  230. package/dist/middlewares/index.d.mts +2 -0
  231. package/dist/middlewares/index.d.mts.map +1 -0
  232. package/dist/middlewares/index.mjs +2 -0
  233. package/dist/middlewares/index.mjs.map +1 -0
  234. package/dist/types.cjs +39 -0
  235. package/dist/types.cjs.map +1 -0
  236. package/dist/types.d.cts +360 -0
  237. package/dist/types.d.cts.map +1 -0
  238. package/dist/types.d.mts +360 -0
  239. package/dist/types.d.mts.map +1 -0
  240. package/dist/types.mjs +35 -0
  241. package/dist/types.mjs.map +1 -0
  242. package/dist/utils.cjs +28 -0
  243. package/dist/utils.cjs.map +1 -0
  244. package/dist/utils.d.cts +13 -0
  245. package/dist/utils.d.cts.map +1 -0
  246. package/dist/utils.d.mts +13 -0
  247. package/dist/utils.d.mts.map +1 -0
  248. package/dist/utils.mjs +24 -0
  249. package/dist/utils.mjs.map +1 -0
  250. package/package.json +15 -2
@@ -0,0 +1,360 @@
1
+ import type { InternalAccount } from "@metamask/keyring-internal-api";
2
+ import type { CaipAssetType, CaipChainId, Json } from "@metamask/utils";
3
+ /**
4
+ * CAIP-19 compliant asset identifier
5
+ * Format: "{chainId}/{assetNamespace}:{assetReference}[/tokenId]"
6
+ *
7
+ * Examples:
8
+ * - Native: "eip155:1/slip44:60" (ETH)
9
+ * - ERC20: "eip155:1/erc20:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" (USDC)
10
+ * - ERC721: "eip155:1/erc721:0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D/1234" (BAYC #1234)
11
+ * - SPL: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/spl:EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
12
+ */
13
+ export type Caip19AssetId = CaipAssetType;
14
+ /**
15
+ * InternalAccount UUID from AccountsController
16
+ * Not the blockchain address!
17
+ */
18
+ export type AccountId = string;
19
+ /**
20
+ * CAIP-2 chain identifier
21
+ */
22
+ export type ChainId = CaipChainId;
23
+ /**
24
+ * Asset types define the metadata structure, not blockchain implementation.
25
+ * - "fungible" includes: native, erc20, spl - all share balance, symbol, decimals
26
+ * - "nft" includes: erc721, erc1155 - include tokenId, image, attributes
27
+ */
28
+ export type AssetType = 'fungible' | 'nft' | 'collectible';
29
+ /**
30
+ * Token standards - blockchain implementation details
31
+ */
32
+ export type TokenStandard = 'native' | 'erc20' | 'erc721' | 'erc1155' | 'spl' | string;
33
+ /**
34
+ * Base metadata attributes shared by ALL asset types.
35
+ */
36
+ export type BaseAssetMetadata = {
37
+ /** Token standard - how it's implemented on the blockchain */
38
+ type: TokenStandard;
39
+ /** Display symbol (e.g., "ETH", "USDC") */
40
+ symbol: string;
41
+ /** Full name (e.g., "Ethereum", "USD Coin") */
42
+ name: string;
43
+ /** Token decimals (18 for ETH, 6 for USDC, etc.) */
44
+ decimals: number;
45
+ /** Logo URL or data URI */
46
+ image?: string;
47
+ };
48
+ /**
49
+ * Metadata for fungible tokens
50
+ * Asset Type: "fungible"
51
+ * Includes: native, ERC-20, SPL, and other fungible token standards
52
+ */
53
+ export type FungibleAssetMetadata = {
54
+ type: 'native' | 'erc20' | 'spl';
55
+ /** Spam detection flag */
56
+ isSpam?: boolean;
57
+ /** Verification status */
58
+ verified?: boolean;
59
+ /** Token list memberships */
60
+ collections?: string[];
61
+ } & BaseAssetMetadata;
62
+ /**
63
+ * Metadata for ERC721 NFTs
64
+ * Asset Type: "nft"
65
+ */
66
+ export type ERC721AssetMetadata = {
67
+ type: 'erc721';
68
+ decimals: 0;
69
+ /** Collection name */
70
+ collectionName?: string;
71
+ /** Collection size */
72
+ collectionSize?: number;
73
+ /** NFT traits/attributes - must be Json-serializable */
74
+ traits?: Record<string, Json>;
75
+ /** Rarity score */
76
+ rarity?: number;
77
+ /** Verification status */
78
+ verified?: boolean;
79
+ } & BaseAssetMetadata;
80
+ /**
81
+ * Metadata for ERC1155 multi-tokens
82
+ */
83
+ export type ERC1155AssetMetadata = {
84
+ type: 'erc1155';
85
+ /** Token URI */
86
+ tokenUri?: string;
87
+ /** Token category */
88
+ category?: string;
89
+ /** Spam detection flag */
90
+ isSpam?: boolean;
91
+ } & BaseAssetMetadata;
92
+ /**
93
+ * Union type representing all possible asset metadata types.
94
+ * All types must be JSON-serializable.
95
+ */
96
+ export type AssetMetadata = FungibleAssetMetadata | ERC721AssetMetadata | ERC1155AssetMetadata | (BaseAssetMetadata & {
97
+ [key: string]: Json;
98
+ });
99
+ /**
100
+ * Base price attributes.
101
+ */
102
+ export type BaseAssetPrice = {
103
+ /** Current price in USD */
104
+ price: number;
105
+ /** 24h price change percentage */
106
+ priceChange24h?: number;
107
+ /** Timestamp of last price update */
108
+ lastUpdated: number;
109
+ };
110
+ /**
111
+ * Price data for fungible tokens (native, ERC20, SPL)
112
+ */
113
+ export type FungibleAssetPrice = {
114
+ /** Market capitalization */
115
+ marketCap?: number;
116
+ /** 24h trading volume */
117
+ volume24h?: number;
118
+ /** Circulating supply */
119
+ circulatingSupply?: number;
120
+ /** Total supply */
121
+ totalSupply?: number;
122
+ } & BaseAssetPrice;
123
+ /**
124
+ * Price data for NFT collections
125
+ */
126
+ export type NFTAssetPrice = {
127
+ /** Floor price */
128
+ floorPrice?: number;
129
+ /** Last sale price */
130
+ lastSalePrice?: number;
131
+ /** Collection trading volume */
132
+ collectionVolume?: number;
133
+ /** Average price */
134
+ averagePrice?: number;
135
+ /** Number of sales in 24h */
136
+ sales24h?: number;
137
+ } & BaseAssetPrice;
138
+ /**
139
+ * Union type representing all possible asset price types.
140
+ * All types must be JSON-serializable.
141
+ */
142
+ export type AssetPrice = FungibleAssetPrice | NFTAssetPrice | (BaseAssetPrice & {
143
+ [key: string]: Json;
144
+ });
145
+ /**
146
+ * Balance data for fungible tokens (native, ERC20, SPL).
147
+ */
148
+ export type FungibleAssetBalance = {
149
+ /** Raw balance amount as string (e.g., "1000000000" for 1000 USDC) */
150
+ amount: string;
151
+ };
152
+ /**
153
+ * Balance data for ERC721 NFTs.
154
+ * Each tokenId has its own CAIP-19 asset ID, so always "1".
155
+ */
156
+ export type ERC721AssetBalance = {
157
+ /** Always "1" for ERC721 (non-fungible) */
158
+ amount: '1';
159
+ };
160
+ /**
161
+ * Balance data for ERC1155 multi-tokens.
162
+ */
163
+ export type ERC1155AssetBalance = {
164
+ /** Quantity owned of this specific tokenId */
165
+ amount: string;
166
+ };
167
+ /**
168
+ * Union type representing all possible asset balance types.
169
+ * All types must be JSON-serializable.
170
+ */
171
+ export type AssetBalance = FungibleAssetBalance | ERC721AssetBalance | ERC1155AssetBalance | {
172
+ amount: string;
173
+ [key: string]: Json;
174
+ };
175
+ /**
176
+ * Data type dimension - what kind of data
177
+ */
178
+ export type DataType = 'balance' | 'metadata' | 'price';
179
+ /**
180
+ * Request for data from data sources
181
+ */
182
+ export type DataRequest = {
183
+ /** Accounts to fetch data for */
184
+ accounts: InternalAccount[];
185
+ /** CAIP-2 chain IDs */
186
+ chainIds: ChainId[];
187
+ /** Filter by asset types */
188
+ assetTypes?: AssetType[];
189
+ /** Which data to fetch */
190
+ dataTypes: DataType[];
191
+ /** Specific CAIP-19 asset IDs */
192
+ customAssets?: Caip19AssetId[];
193
+ /** Force fresh fetch, bypass cache */
194
+ forceUpdate?: boolean;
195
+ /** Hint for polling interval (ms) - used by data sources that implement polling */
196
+ updateInterval?: number;
197
+ };
198
+ /**
199
+ * Response from data sources
200
+ */
201
+ export type DataResponse = {
202
+ /** Metadata for assets (shared across accounts) */
203
+ assetsMetadata?: Record<Caip19AssetId, AssetMetadata>;
204
+ /** Price data for assets (shared across accounts) */
205
+ assetsPrice?: Record<Caip19AssetId, AssetPrice>;
206
+ /** Balance data per account */
207
+ assetsBalance?: Record<AccountId, Record<Caip19AssetId, AssetBalance>>;
208
+ /** Errors encountered, keyed by chain ID */
209
+ errors?: Record<ChainId, string>;
210
+ /** Detected assets (assets that do not have metadata) */
211
+ detectedAssets?: Record<AccountId, Caip19AssetId[]>;
212
+ };
213
+ /**
214
+ * Internal state structure for AssetsController following normalized design.
215
+ *
216
+ * Keys use CAIP identifiers:
217
+ * - assetsMetadata keys: CAIP-19 asset IDs (e.g., "eip155:1/erc20:0x...")
218
+ * - assetsBalance outer keys: Account IDs (InternalAccount.id UUIDs)
219
+ * - assetsBalance inner keys: CAIP-19 asset IDs
220
+ * - customAssets outer keys: Account IDs (InternalAccount.id UUIDs)
221
+ * - customAssets inner values: CAIP-19 asset IDs array
222
+ */
223
+ export type AssetsControllerStateInternal = {
224
+ /** Shared metadata for all assets (stored once per asset) */
225
+ assetsMetadata: Record<Caip19AssetId, AssetMetadata>;
226
+ /** Per-account balance data */
227
+ assetsBalance: Record<AccountId, Record<Caip19AssetId, AssetBalance>>;
228
+ /** Custom assets added by users per account */
229
+ customAssets: Record<AccountId, Caip19AssetId[]>;
230
+ };
231
+ /**
232
+ * Base context for all middleware operations.
233
+ * Contains the common interface shared by fetch and subscribe.
234
+ */
235
+ export type Context = {
236
+ /** The data request */
237
+ request: DataRequest;
238
+ /** The response data (mutated by middlewares) */
239
+ response: DataResponse;
240
+ /** Get current assets state */
241
+ getAssetsState: () => AssetsControllerStateInternal;
242
+ };
243
+ /**
244
+ * Next function for middleware chain
245
+ */
246
+ export type NextFunction = (context: Context) => Promise<Context>;
247
+ /**
248
+ * Middleware function - works for both fetch and subscribe operations.
249
+ */
250
+ export type Middleware = (context: Context, next: NextFunction) => Promise<Context>;
251
+ /**
252
+ * Wraps a middleware to only execute if specific dataTypes are requested.
253
+ *
254
+ * @param dataTypes - DataTypes that must be in the request for middleware to run
255
+ * @param middleware - The middleware to conditionally execute
256
+ * @returns A middleware that skips execution if none of the dataTypes are requested
257
+ *
258
+ * @example
259
+ * ```typescript
260
+ * // Only runs for metadata requests
261
+ * const metadataMiddleware = forDataTypes(['metadata'], async (ctx, next) => {
262
+ * const result = await next(ctx);
263
+ * // Enrich metadata...
264
+ * return result;
265
+ * });
266
+ *
267
+ * // Runs for balance or price requests
268
+ * const balanceOrPriceMiddleware = forDataTypes(['balance', 'price'], async (ctx, next) => {
269
+ * const result = await next(ctx);
270
+ * // Process balances or prices...
271
+ * return result;
272
+ * });
273
+ * ```
274
+ */
275
+ export declare function forDataTypes(dataTypes: DataType[], middleware: Middleware): Middleware;
276
+ /**
277
+ * Context for fetch operations.
278
+ * Extends base Context - no additional fields needed for fetch.
279
+ */
280
+ export type FetchContext = Context;
281
+ export type FetchNextFunction = NextFunction;
282
+ export type FetchMiddleware = Middleware;
283
+ /**
284
+ * Data source ID.
285
+ *
286
+ * Data sources follow a standard messenger pattern:
287
+ * - `${id}:getActiveChains` - action to get active chains
288
+ * - `${id}:activeChainsUpdated` - event when chains change
289
+ *
290
+ * Registration order determines subscription order.
291
+ */
292
+ export type DataSourceDefinition = string;
293
+ /**
294
+ * Registered data source
295
+ */
296
+ export type RegisteredDataSource = DataSourceDefinition;
297
+ /**
298
+ * Subscription response
299
+ */
300
+ export type SubscriptionResponse = {
301
+ /** Chains actively subscribed */
302
+ chains: ChainId[];
303
+ /** Account ID being watched */
304
+ accountId: AccountId;
305
+ /** Asset types being watched */
306
+ assetTypes: AssetType[];
307
+ /** Data types being kept fresh */
308
+ dataTypes: DataType[];
309
+ /** Cleanup function */
310
+ unsubscribe: () => void;
311
+ };
312
+ /**
313
+ * Combined asset type matching state structure: balance, metadata, price
314
+ */
315
+ export type Asset = {
316
+ /** CAIP-19 asset ID */
317
+ id: Caip19AssetId;
318
+ /** CAIP-2 chain ID (extracted from id) */
319
+ chainId: ChainId;
320
+ /** Balance data */
321
+ balance: AssetBalance;
322
+ /** Metadata (symbol, name, decimals, etc.) */
323
+ metadata: AssetMetadata;
324
+ /** Price data */
325
+ price: AssetPrice;
326
+ /** Computed fiat value (balance × price) */
327
+ fiatValue: number;
328
+ };
329
+ /**
330
+ * Event emitted when balances change
331
+ */
332
+ export type BalanceChangeEvent = {
333
+ accountId: AccountId;
334
+ assetId: Caip19AssetId;
335
+ previousAmount: string;
336
+ newAmount: string;
337
+ timestamp: number;
338
+ };
339
+ /**
340
+ * Event emitted when prices change
341
+ */
342
+ export type PriceChangeEvent = {
343
+ assetIds: Caip19AssetId[];
344
+ timestamp: number;
345
+ };
346
+ /**
347
+ * Event emitted when metadata changes
348
+ */
349
+ export type MetadataChangeEvent = {
350
+ assetId: Caip19AssetId;
351
+ changes: Partial<AssetMetadata>;
352
+ };
353
+ /**
354
+ * Event emitted when assets without metadata are detected
355
+ */
356
+ export type AssetsDetectedEvent = {
357
+ accountId: AccountId;
358
+ assetIds: Caip19AssetId[];
359
+ };
360
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}