@metamask-previews/assets-controller 1.0.0-preview-1ad6631 → 1.0.0-preview-e7b1aa6

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 (94) hide show
  1. package/CHANGELOG.md +0 -1
  2. package/dist/AssetsController-method-action-types.cjs.map +1 -1
  3. package/dist/AssetsController-method-action-types.d.cts +1 -26
  4. package/dist/AssetsController-method-action-types.d.cts.map +1 -1
  5. package/dist/AssetsController-method-action-types.d.mts +1 -26
  6. package/dist/AssetsController-method-action-types.d.mts.map +1 -1
  7. package/dist/AssetsController-method-action-types.mjs.map +1 -1
  8. package/dist/AssetsController.cjs +9 -84
  9. package/dist/AssetsController.cjs.map +1 -1
  10. package/dist/AssetsController.d.cts +2 -47
  11. package/dist/AssetsController.d.cts.map +1 -1
  12. package/dist/AssetsController.d.mts +2 -47
  13. package/dist/AssetsController.d.mts.map +1 -1
  14. package/dist/AssetsController.mjs +9 -84
  15. package/dist/AssetsController.mjs.map +1 -1
  16. package/dist/data-sources/RpcDataSource.cjs +4 -117
  17. package/dist/data-sources/RpcDataSource.cjs.map +1 -1
  18. package/dist/data-sources/RpcDataSource.d.cts +0 -14
  19. package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
  20. package/dist/data-sources/RpcDataSource.d.mts +0 -14
  21. package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
  22. package/dist/data-sources/RpcDataSource.mjs +4 -117
  23. package/dist/data-sources/RpcDataSource.mjs.map +1 -1
  24. package/dist/data-sources/TokenDataSource.cjs +0 -5
  25. package/dist/data-sources/TokenDataSource.cjs.map +1 -1
  26. package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
  27. package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
  28. package/dist/data-sources/TokenDataSource.mjs +0 -5
  29. package/dist/data-sources/TokenDataSource.mjs.map +1 -1
  30. package/dist/data-sources/evm-rpc-services/index.cjs +1 -5
  31. package/dist/data-sources/evm-rpc-services/index.cjs.map +1 -1
  32. package/dist/data-sources/evm-rpc-services/index.d.cts +1 -1
  33. package/dist/data-sources/evm-rpc-services/index.d.cts.map +1 -1
  34. package/dist/data-sources/evm-rpc-services/index.d.mts +1 -1
  35. package/dist/data-sources/evm-rpc-services/index.d.mts.map +1 -1
  36. package/dist/data-sources/evm-rpc-services/index.mjs +1 -1
  37. package/dist/data-sources/evm-rpc-services/index.mjs.map +1 -1
  38. package/dist/data-sources/evm-rpc-services/services/index.cjs +1 -6
  39. package/dist/data-sources/evm-rpc-services/services/index.cjs.map +1 -1
  40. package/dist/data-sources/evm-rpc-services/services/index.d.cts +0 -1
  41. package/dist/data-sources/evm-rpc-services/services/index.d.cts.map +1 -1
  42. package/dist/data-sources/evm-rpc-services/services/index.d.mts +0 -1
  43. package/dist/data-sources/evm-rpc-services/services/index.d.mts.map +1 -1
  44. package/dist/data-sources/evm-rpc-services/services/index.mjs +0 -1
  45. package/dist/data-sources/evm-rpc-services/services/index.mjs.map +1 -1
  46. package/dist/data-sources/evm-rpc-services/utils/index.cjs +1 -9
  47. package/dist/data-sources/evm-rpc-services/utils/index.cjs.map +1 -1
  48. package/dist/data-sources/evm-rpc-services/utils/index.d.cts +0 -2
  49. package/dist/data-sources/evm-rpc-services/utils/index.d.cts.map +1 -1
  50. package/dist/data-sources/evm-rpc-services/utils/index.d.mts +0 -2
  51. package/dist/data-sources/evm-rpc-services/utils/index.d.mts.map +1 -1
  52. package/dist/data-sources/evm-rpc-services/utils/index.mjs +0 -2
  53. package/dist/data-sources/evm-rpc-services/utils/index.mjs.map +1 -1
  54. package/dist/data-sources/index.cjs +1 -3
  55. package/dist/data-sources/index.cjs.map +1 -1
  56. package/dist/data-sources/index.d.cts +0 -1
  57. package/dist/data-sources/index.d.cts.map +1 -1
  58. package/dist/data-sources/index.d.mts +0 -1
  59. package/dist/data-sources/index.d.mts.map +1 -1
  60. package/dist/data-sources/index.mjs +0 -1
  61. package/dist/data-sources/index.mjs.map +1 -1
  62. package/package.json +1 -1
  63. package/dist/data-sources/StakedBalanceDataSource.cjs +0 -536
  64. package/dist/data-sources/StakedBalanceDataSource.cjs.map +0 -1
  65. package/dist/data-sources/StakedBalanceDataSource.d.cts +0 -72
  66. package/dist/data-sources/StakedBalanceDataSource.d.cts.map +0 -1
  67. package/dist/data-sources/StakedBalanceDataSource.d.mts +0 -72
  68. package/dist/data-sources/StakedBalanceDataSource.d.mts.map +0 -1
  69. package/dist/data-sources/StakedBalanceDataSource.mjs +0 -532
  70. package/dist/data-sources/StakedBalanceDataSource.mjs.map +0 -1
  71. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs +0 -133
  72. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs.map +0 -1
  73. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.cts +0 -78
  74. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.cts.map +0 -1
  75. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts +0 -78
  76. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts.map +0 -1
  77. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.mjs +0 -127
  78. package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.mjs.map +0 -1
  79. package/dist/data-sources/evm-rpc-services/utils/parsing.cjs +0 -34
  80. package/dist/data-sources/evm-rpc-services/utils/parsing.cjs.map +0 -1
  81. package/dist/data-sources/evm-rpc-services/utils/parsing.d.cts +0 -18
  82. package/dist/data-sources/evm-rpc-services/utils/parsing.d.cts.map +0 -1
  83. package/dist/data-sources/evm-rpc-services/utils/parsing.d.mts +0 -18
  84. package/dist/data-sources/evm-rpc-services/utils/parsing.d.mts.map +0 -1
  85. package/dist/data-sources/evm-rpc-services/utils/parsing.mjs +0 -29
  86. package/dist/data-sources/evm-rpc-services/utils/parsing.mjs.map +0 -1
  87. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs +0 -50
  88. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs.map +0 -1
  89. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.cts +0 -24
  90. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.cts.map +0 -1
  91. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts +0 -24
  92. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts.map +0 -1
  93. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.mjs +0 -44
  94. package/dist/data-sources/evm-rpc-services/utils/staking-contracts.mjs.map +0 -1
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isStakingContractAssetId = exports.getStakingContractAddress = exports.getSupportedStakingChainIds = exports.STAKING_CONTRACT_ADDRESS_BY_CHAINID = void 0;
4
- const parsing_1 = require("./parsing.cjs");
5
- /** Staking contract addresses by chain ID (hex). Same as AccountTrackerController / assets-controllers. */
6
- exports.STAKING_CONTRACT_ADDRESS_BY_CHAINID = {
7
- '0x1': '0x4fef9d741011476750a243ac70b9789a63dd47df', // Mainnet
8
- '0x88bb0': '0xe96ac18cfe5a7af8fe1fe7bc37ff110d88bc67ff', // Hoodi
9
- };
10
- /**
11
- * Returns the set of hex chain IDs that have a known staking contract.
12
- *
13
- * @returns Array of hex chain IDs.
14
- */
15
- function getSupportedStakingChainIds() {
16
- return Object.keys(exports.STAKING_CONTRACT_ADDRESS_BY_CHAINID);
17
- }
18
- exports.getSupportedStakingChainIds = getSupportedStakingChainIds;
19
- /**
20
- * Returns the staking contract address for a chain, or undefined if not supported.
21
- *
22
- * @param hexChainId - Hex chain ID (e.g. "0x1").
23
- * @returns Contract address (checksummed as stored) or undefined.
24
- */
25
- function getStakingContractAddress(hexChainId) {
26
- return exports.STAKING_CONTRACT_ADDRESS_BY_CHAINID[hexChainId];
27
- }
28
- exports.getStakingContractAddress = getStakingContractAddress;
29
- /**
30
- * Returns true if the CAIP-19 asset ID is for a known staking contract.
31
- * Used to skip fetching metadata for staking contracts from the tokens API.
32
- *
33
- * @param assetId - CAIP-19 asset ID (e.g. "eip155:1/erc20:0x4fef9d741011476750a243ac70b9789a63dd47df").
34
- * @returns True if the asset is a staking contract.
35
- */
36
- function isStakingContractAssetId(assetId) {
37
- const parts = assetId.split('/');
38
- if (parts.length !== 2 ||
39
- !parts[0].startsWith('eip155:') ||
40
- !parts[1].startsWith('erc20:')) {
41
- return false;
42
- }
43
- const chainPart = parts[0];
44
- const address = parts[1].slice(6).toLowerCase();
45
- const hexChainId = (0, parsing_1.chainIdToHex)(chainPart);
46
- const stakingAddress = getStakingContractAddress(hexChainId)?.toLowerCase();
47
- return stakingAddress !== undefined && address === stakingAddress;
48
- }
49
- exports.isStakingContractAssetId = isStakingContractAssetId;
50
- //# sourceMappingURL=staking-contracts.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"staking-contracts.cjs","sourceRoot":"","sources":["../../../../src/data-sources/evm-rpc-services/utils/staking-contracts.ts"],"names":[],"mappings":";;;AAAA,2CAAyC;AAGzC,2GAA2G;AAC9F,QAAA,mCAAmC,GAA2B;IACzE,KAAK,EAAE,4CAA4C,EAAE,UAAU;IAC/D,SAAS,EAAE,4CAA4C,EAAE,QAAQ;CAClE,CAAC;AAEF;;;;GAIG;AACH,SAAgB,2BAA2B;IACzC,OAAO,MAAM,CAAC,IAAI,CAAC,2CAAmC,CAAC,CAAC;AAC1D,CAAC;AAFD,kEAEC;AAED;;;;;GAKG;AACH,SAAgB,yBAAyB,CACvC,UAAkB;IAElB,OAAO,2CAAmC,CAAC,UAAU,CAAC,CAAC;AACzD,CAAC;AAJD,8DAIC;AAED;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,OAAe;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;QAC/B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC9B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAY,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG,IAAA,sBAAY,EAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,yBAAyB,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IAC5E,OAAO,cAAc,KAAK,SAAS,IAAI,OAAO,KAAK,cAAc,CAAC;AACpE,CAAC;AAdD,4DAcC","sourcesContent":["import { chainIdToHex } from './parsing';\nimport type { ChainId } from '../types';\n\n/** Staking contract addresses by chain ID (hex). Same as AccountTrackerController / assets-controllers. */\nexport const STAKING_CONTRACT_ADDRESS_BY_CHAINID: Record<string, string> = {\n '0x1': '0x4fef9d741011476750a243ac70b9789a63dd47df', // Mainnet\n '0x88bb0': '0xe96ac18cfe5a7af8fe1fe7bc37ff110d88bc67ff', // Hoodi\n};\n\n/**\n * Returns the set of hex chain IDs that have a known staking contract.\n *\n * @returns Array of hex chain IDs.\n */\nexport function getSupportedStakingChainIds(): string[] {\n return Object.keys(STAKING_CONTRACT_ADDRESS_BY_CHAINID);\n}\n\n/**\n * Returns the staking contract address for a chain, or undefined if not supported.\n *\n * @param hexChainId - Hex chain ID (e.g. \"0x1\").\n * @returns Contract address (checksummed as stored) or undefined.\n */\nexport function getStakingContractAddress(\n hexChainId: string,\n): string | undefined {\n return STAKING_CONTRACT_ADDRESS_BY_CHAINID[hexChainId];\n}\n\n/**\n * Returns true if the CAIP-19 asset ID is for a known staking contract.\n * Used to skip fetching metadata for staking contracts from the tokens API.\n *\n * @param assetId - CAIP-19 asset ID (e.g. \"eip155:1/erc20:0x4fef9d741011476750a243ac70b9789a63dd47df\").\n * @returns True if the asset is a staking contract.\n */\nexport function isStakingContractAssetId(assetId: string): boolean {\n const parts = assetId.split('/');\n if (\n parts.length !== 2 ||\n !parts[0].startsWith('eip155:') ||\n !parts[1].startsWith('erc20:')\n ) {\n return false;\n }\n const chainPart = parts[0] as ChainId;\n const address = parts[1].slice(6).toLowerCase();\n const hexChainId = chainIdToHex(chainPart);\n const stakingAddress = getStakingContractAddress(hexChainId)?.toLowerCase();\n return stakingAddress !== undefined && address === stakingAddress;\n}\n"]}
@@ -1,24 +0,0 @@
1
- /** Staking contract addresses by chain ID (hex). Same as AccountTrackerController / assets-controllers. */
2
- export declare const STAKING_CONTRACT_ADDRESS_BY_CHAINID: Record<string, string>;
3
- /**
4
- * Returns the set of hex chain IDs that have a known staking contract.
5
- *
6
- * @returns Array of hex chain IDs.
7
- */
8
- export declare function getSupportedStakingChainIds(): string[];
9
- /**
10
- * Returns the staking contract address for a chain, or undefined if not supported.
11
- *
12
- * @param hexChainId - Hex chain ID (e.g. "0x1").
13
- * @returns Contract address (checksummed as stored) or undefined.
14
- */
15
- export declare function getStakingContractAddress(hexChainId: string): string | undefined;
16
- /**
17
- * Returns true if the CAIP-19 asset ID is for a known staking contract.
18
- * Used to skip fetching metadata for staking contracts from the tokens API.
19
- *
20
- * @param assetId - CAIP-19 asset ID (e.g. "eip155:1/erc20:0x4fef9d741011476750a243ac70b9789a63dd47df").
21
- * @returns True if the asset is a staking contract.
22
- */
23
- export declare function isStakingContractAssetId(assetId: string): boolean;
24
- //# sourceMappingURL=staking-contracts.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"staking-contracts.d.cts","sourceRoot":"","sources":["../../../../src/data-sources/evm-rpc-services/utils/staking-contracts.ts"],"names":[],"mappings":"AAGA,2GAA2G;AAC3G,eAAO,MAAM,mCAAmC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGtE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CAEpB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAcjE"}
@@ -1,24 +0,0 @@
1
- /** Staking contract addresses by chain ID (hex). Same as AccountTrackerController / assets-controllers. */
2
- export declare const STAKING_CONTRACT_ADDRESS_BY_CHAINID: Record<string, string>;
3
- /**
4
- * Returns the set of hex chain IDs that have a known staking contract.
5
- *
6
- * @returns Array of hex chain IDs.
7
- */
8
- export declare function getSupportedStakingChainIds(): string[];
9
- /**
10
- * Returns the staking contract address for a chain, or undefined if not supported.
11
- *
12
- * @param hexChainId - Hex chain ID (e.g. "0x1").
13
- * @returns Contract address (checksummed as stored) or undefined.
14
- */
15
- export declare function getStakingContractAddress(hexChainId: string): string | undefined;
16
- /**
17
- * Returns true if the CAIP-19 asset ID is for a known staking contract.
18
- * Used to skip fetching metadata for staking contracts from the tokens API.
19
- *
20
- * @param assetId - CAIP-19 asset ID (e.g. "eip155:1/erc20:0x4fef9d741011476750a243ac70b9789a63dd47df").
21
- * @returns True if the asset is a staking contract.
22
- */
23
- export declare function isStakingContractAssetId(assetId: string): boolean;
24
- //# sourceMappingURL=staking-contracts.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"staking-contracts.d.mts","sourceRoot":"","sources":["../../../../src/data-sources/evm-rpc-services/utils/staking-contracts.ts"],"names":[],"mappings":"AAGA,2GAA2G;AAC3G,eAAO,MAAM,mCAAmC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGtE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CAEpB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAcjE"}
@@ -1,44 +0,0 @@
1
- import { chainIdToHex } from "./parsing.mjs";
2
- /** Staking contract addresses by chain ID (hex). Same as AccountTrackerController / assets-controllers. */
3
- export const STAKING_CONTRACT_ADDRESS_BY_CHAINID = {
4
- '0x1': '0x4fef9d741011476750a243ac70b9789a63dd47df', // Mainnet
5
- '0x88bb0': '0xe96ac18cfe5a7af8fe1fe7bc37ff110d88bc67ff', // Hoodi
6
- };
7
- /**
8
- * Returns the set of hex chain IDs that have a known staking contract.
9
- *
10
- * @returns Array of hex chain IDs.
11
- */
12
- export function getSupportedStakingChainIds() {
13
- return Object.keys(STAKING_CONTRACT_ADDRESS_BY_CHAINID);
14
- }
15
- /**
16
- * Returns the staking contract address for a chain, or undefined if not supported.
17
- *
18
- * @param hexChainId - Hex chain ID (e.g. "0x1").
19
- * @returns Contract address (checksummed as stored) or undefined.
20
- */
21
- export function getStakingContractAddress(hexChainId) {
22
- return STAKING_CONTRACT_ADDRESS_BY_CHAINID[hexChainId];
23
- }
24
- /**
25
- * Returns true if the CAIP-19 asset ID is for a known staking contract.
26
- * Used to skip fetching metadata for staking contracts from the tokens API.
27
- *
28
- * @param assetId - CAIP-19 asset ID (e.g. "eip155:1/erc20:0x4fef9d741011476750a243ac70b9789a63dd47df").
29
- * @returns True if the asset is a staking contract.
30
- */
31
- export function isStakingContractAssetId(assetId) {
32
- const parts = assetId.split('/');
33
- if (parts.length !== 2 ||
34
- !parts[0].startsWith('eip155:') ||
35
- !parts[1].startsWith('erc20:')) {
36
- return false;
37
- }
38
- const chainPart = parts[0];
39
- const address = parts[1].slice(6).toLowerCase();
40
- const hexChainId = chainIdToHex(chainPart);
41
- const stakingAddress = getStakingContractAddress(hexChainId)?.toLowerCase();
42
- return stakingAddress !== undefined && address === stakingAddress;
43
- }
44
- //# sourceMappingURL=staking-contracts.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"staking-contracts.mjs","sourceRoot":"","sources":["../../../../src/data-sources/evm-rpc-services/utils/staking-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,sBAAkB;AAGzC,2GAA2G;AAC3G,MAAM,CAAC,MAAM,mCAAmC,GAA2B;IACzE,KAAK,EAAE,4CAA4C,EAAE,UAAU;IAC/D,SAAS,EAAE,4CAA4C,EAAE,QAAQ;CAClE,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAkB;IAElB,OAAO,mCAAmC,CAAC,UAAU,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;QAC/B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC9B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAY,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,yBAAyB,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IAC5E,OAAO,cAAc,KAAK,SAAS,IAAI,OAAO,KAAK,cAAc,CAAC;AACpE,CAAC","sourcesContent":["import { chainIdToHex } from './parsing';\nimport type { ChainId } from '../types';\n\n/** Staking contract addresses by chain ID (hex). Same as AccountTrackerController / assets-controllers. */\nexport const STAKING_CONTRACT_ADDRESS_BY_CHAINID: Record<string, string> = {\n '0x1': '0x4fef9d741011476750a243ac70b9789a63dd47df', // Mainnet\n '0x88bb0': '0xe96ac18cfe5a7af8fe1fe7bc37ff110d88bc67ff', // Hoodi\n};\n\n/**\n * Returns the set of hex chain IDs that have a known staking contract.\n *\n * @returns Array of hex chain IDs.\n */\nexport function getSupportedStakingChainIds(): string[] {\n return Object.keys(STAKING_CONTRACT_ADDRESS_BY_CHAINID);\n}\n\n/**\n * Returns the staking contract address for a chain, or undefined if not supported.\n *\n * @param hexChainId - Hex chain ID (e.g. \"0x1\").\n * @returns Contract address (checksummed as stored) or undefined.\n */\nexport function getStakingContractAddress(\n hexChainId: string,\n): string | undefined {\n return STAKING_CONTRACT_ADDRESS_BY_CHAINID[hexChainId];\n}\n\n/**\n * Returns true if the CAIP-19 asset ID is for a known staking contract.\n * Used to skip fetching metadata for staking contracts from the tokens API.\n *\n * @param assetId - CAIP-19 asset ID (e.g. \"eip155:1/erc20:0x4fef9d741011476750a243ac70b9789a63dd47df\").\n * @returns True if the asset is a staking contract.\n */\nexport function isStakingContractAssetId(assetId: string): boolean {\n const parts = assetId.split('/');\n if (\n parts.length !== 2 ||\n !parts[0].startsWith('eip155:') ||\n !parts[1].startsWith('erc20:')\n ) {\n return false;\n }\n const chainPart = parts[0] as ChainId;\n const address = parts[1].slice(6).toLowerCase();\n const hexChainId = chainIdToHex(chainPart);\n const stakingAddress = getStakingContractAddress(hexChainId)?.toLowerCase();\n return stakingAddress !== undefined && address === stakingAddress;\n}\n"]}