@metamask-previews/assets-controllers 56.0.0-preview-eeefabb3 → 56.0.0-preview-fa52096c

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 (59) hide show
  1. package/CHANGELOG.md +0 -25
  2. package/README.md +0 -1
  3. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.cjs +4 -55
  4. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.cjs.map +1 -1
  5. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts +3 -16
  6. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts.map +1 -1
  7. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts +3 -16
  8. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts.map +1 -1
  9. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.mjs +4 -55
  10. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.mjs.map +1 -1
  11. package/dist/assetsUtil.cjs +3 -0
  12. package/dist/assetsUtil.cjs.map +1 -1
  13. package/dist/assetsUtil.d.cts +2 -1
  14. package/dist/assetsUtil.d.cts.map +1 -1
  15. package/dist/assetsUtil.d.mts +2 -1
  16. package/dist/assetsUtil.d.mts.map +1 -1
  17. package/dist/assetsUtil.mjs +3 -0
  18. package/dist/assetsUtil.mjs.map +1 -1
  19. package/dist/index.cjs +1 -3
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +0 -3
  22. package/dist/index.d.cts.map +1 -1
  23. package/dist/index.d.mts +0 -3
  24. package/dist/index.d.mts.map +1 -1
  25. package/dist/index.mjs +0 -1
  26. package/dist/index.mjs.map +1 -1
  27. package/dist/token-prices-service/codefi-v2.cjs +4 -0
  28. package/dist/token-prices-service/codefi-v2.cjs.map +1 -1
  29. package/dist/token-prices-service/codefi-v2.d.cts +2 -2
  30. package/dist/token-prices-service/codefi-v2.d.cts.map +1 -1
  31. package/dist/token-prices-service/codefi-v2.d.mts +2 -2
  32. package/dist/token-prices-service/codefi-v2.d.mts.map +1 -1
  33. package/dist/token-prices-service/codefi-v2.mjs +4 -0
  34. package/dist/token-prices-service/codefi-v2.mjs.map +1 -1
  35. package/package.json +8 -10
  36. package/dist/DeFiPositionsController/DeFiPositionsController.cjs +0 -126
  37. package/dist/DeFiPositionsController/DeFiPositionsController.cjs.map +0 -1
  38. package/dist/DeFiPositionsController/DeFiPositionsController.d.cts +0 -72
  39. package/dist/DeFiPositionsController/DeFiPositionsController.d.cts.map +0 -1
  40. package/dist/DeFiPositionsController/DeFiPositionsController.d.mts +0 -72
  41. package/dist/DeFiPositionsController/DeFiPositionsController.d.mts.map +0 -1
  42. package/dist/DeFiPositionsController/DeFiPositionsController.mjs +0 -121
  43. package/dist/DeFiPositionsController/DeFiPositionsController.mjs.map +0 -1
  44. package/dist/DeFiPositionsController/fetch-positions.cjs +0 -21
  45. package/dist/DeFiPositionsController/fetch-positions.cjs.map +0 -1
  46. package/dist/DeFiPositionsController/fetch-positions.d.cts +0 -58
  47. package/dist/DeFiPositionsController/fetch-positions.d.cts.map +0 -1
  48. package/dist/DeFiPositionsController/fetch-positions.d.mts +0 -58
  49. package/dist/DeFiPositionsController/fetch-positions.d.mts.map +0 -1
  50. package/dist/DeFiPositionsController/fetch-positions.mjs +0 -17
  51. package/dist/DeFiPositionsController/fetch-positions.mjs.map +0 -1
  52. package/dist/DeFiPositionsController/group-defi-positions.cjs +0 -97
  53. package/dist/DeFiPositionsController/group-defi-positions.cjs.map +0 -1
  54. package/dist/DeFiPositionsController/group-defi-positions.d.cts +0 -36
  55. package/dist/DeFiPositionsController/group-defi-positions.d.cts.map +0 -1
  56. package/dist/DeFiPositionsController/group-defi-positions.d.mts +0 -36
  57. package/dist/DeFiPositionsController/group-defi-positions.d.mts.map +0 -1
  58. package/dist/DeFiPositionsController/group-defi-positions.mjs +0 -94
  59. package/dist/DeFiPositionsController/group-defi-positions.mjs.map +0 -1
@@ -1,94 +0,0 @@
1
- import { toHex } from "@metamask/controller-utils";
2
- import $lodash from "lodash";
3
- const { upperFirst, camelCase } = $lodash;
4
- /**
5
- *
6
- * @param defiPositionsResponse - The response from the defi positions API
7
- * @returns The grouped positions that get assigned to the state
8
- */
9
- export function groupDeFiPositions(defiPositionsResponse) {
10
- const groupedDeFiPositions = {};
11
- for (const position of defiPositionsResponse) {
12
- if (!position.success) {
13
- continue;
14
- }
15
- const { chainId, protocolId, iconUrl, positionType } = position;
16
- const chain = toHex(chainId);
17
- if (!groupedDeFiPositions[chain]) {
18
- groupedDeFiPositions[chain] = {
19
- aggregatedMarketValue: 0,
20
- protocols: {},
21
- };
22
- }
23
- const chainData = groupedDeFiPositions[chain];
24
- if (!chainData.protocols[protocolId]) {
25
- chainData.protocols[protocolId] = {
26
- protocolDetails: {
27
- name: upperFirst(camelCase(protocolId)),
28
- iconUrl,
29
- },
30
- aggregatedMarketValue: 0,
31
- positionTypes: {},
32
- };
33
- }
34
- const protocolData = chainData.protocols[protocolId];
35
- let positionTypeData = protocolData.positionTypes[positionType];
36
- if (!positionTypeData) {
37
- positionTypeData = {
38
- aggregatedMarketValue: 0,
39
- positions: [],
40
- };
41
- protocolData.positionTypes[positionType] = positionTypeData;
42
- }
43
- for (const protocolToken of position.tokens) {
44
- const token = processToken(protocolToken);
45
- // If groupPositions is true, we group all positions of the same type
46
- if (position.metadata?.groupPositions) {
47
- if (positionTypeData.positions.length === 0) {
48
- positionTypeData.positions.push([token]);
49
- }
50
- else {
51
- positionTypeData.positions[0].push(token);
52
- }
53
- }
54
- else {
55
- positionTypeData.positions.push([token]);
56
- }
57
- if (token.marketValue) {
58
- const multiplier = position.positionType === 'borrow' ? -1 : 1;
59
- positionTypeData.aggregatedMarketValue += token.marketValue;
60
- protocolData.aggregatedMarketValue += token.marketValue * multiplier;
61
- chainData.aggregatedMarketValue += token.marketValue * multiplier;
62
- }
63
- }
64
- }
65
- return groupedDeFiPositions;
66
- }
67
- /**
68
- *
69
- * @param tokenBalance - The token balance that is going to be processed
70
- * @returns The processed token balance
71
- */
72
- function processToken(tokenBalance) {
73
- if (!tokenBalance.tokens) {
74
- return {
75
- ...tokenBalance,
76
- marketValue: tokenBalance.price
77
- ? tokenBalance.balance * tokenBalance.price
78
- : undefined,
79
- };
80
- }
81
- const processedTokens = tokenBalance.tokens.map((t) => {
82
- const { tokens, ...tokenWithoutUnderlyings } = processToken(t);
83
- return tokenWithoutUnderlyings;
84
- });
85
- const marketValue = processedTokens.reduce((acc, t) => acc === undefined || t.marketValue === undefined
86
- ? undefined
87
- : acc + t.marketValue, 0);
88
- return {
89
- ...tokenBalance,
90
- marketValue,
91
- tokens: processedTokens,
92
- };
93
- }
94
- //# sourceMappingURL=group-defi-positions.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"group-defi-positions.mjs","sourceRoot":"","sources":["../../src/DeFiPositionsController/group-defi-positions.ts"],"names":[],"mappings":"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","sourcesContent":["import { toHex } from '@metamask/controller-utils';\nimport type { Hex } from '@metamask/utils';\nimport { upperFirst, camelCase } from 'lodash';\n\nimport type {\n DefiPositionResponse,\n PositionType,\n ProtocolToken,\n Underlying,\n Balance,\n} from './fetch-positions';\n\nexport type GroupedDeFiPositions = {\n aggregatedMarketValue: number;\n protocols: {\n [protocolId: string]: {\n protocolDetails: { name: string; iconUrl: string };\n aggregatedMarketValue: number;\n positionTypes: {\n [key in PositionType]?: {\n aggregatedMarketValue: number;\n positions: ProtocolTokenWithMarketValue[][];\n };\n };\n };\n };\n};\n\nexport type ProtocolTokenWithMarketValue = Omit<ProtocolToken, 'tokens'> & {\n marketValue?: number;\n tokens: UnderlyingWithMarketValue[];\n};\n\nexport type UnderlyingWithMarketValue = Omit<Underlying, 'tokens'> & {\n marketValue?: number;\n};\n\n/**\n *\n * @param defiPositionsResponse - The response from the defi positions API\n * @returns The grouped positions that get assigned to the state\n */\nexport function groupDeFiPositions(\n defiPositionsResponse: DefiPositionResponse[],\n): {\n [key: Hex]: GroupedDeFiPositions;\n} {\n const groupedDeFiPositions: { [key: Hex]: GroupedDeFiPositions } = {};\n\n for (const position of defiPositionsResponse) {\n if (!position.success) {\n continue;\n }\n\n const { chainId, protocolId, iconUrl, positionType } = position;\n\n const chain = toHex(chainId);\n\n if (!groupedDeFiPositions[chain]) {\n groupedDeFiPositions[chain] = {\n aggregatedMarketValue: 0,\n protocols: {},\n };\n }\n\n const chainData = groupedDeFiPositions[chain];\n\n if (!chainData.protocols[protocolId]) {\n chainData.protocols[protocolId] = {\n protocolDetails: {\n name: upperFirst(camelCase(protocolId)),\n iconUrl,\n },\n aggregatedMarketValue: 0,\n positionTypes: {},\n };\n }\n\n const protocolData = chainData.protocols[protocolId];\n\n let positionTypeData = protocolData.positionTypes[positionType];\n if (!positionTypeData) {\n positionTypeData = {\n aggregatedMarketValue: 0,\n positions: [],\n };\n protocolData.positionTypes[positionType] = positionTypeData;\n }\n\n for (const protocolToken of position.tokens) {\n const token = processToken(protocolToken) as ProtocolTokenWithMarketValue;\n\n // If groupPositions is true, we group all positions of the same type\n if (position.metadata?.groupPositions) {\n if (positionTypeData.positions.length === 0) {\n positionTypeData.positions.push([token]);\n } else {\n positionTypeData.positions[0].push(token);\n }\n } else {\n positionTypeData.positions.push([token]);\n }\n\n if (token.marketValue) {\n const multiplier = position.positionType === 'borrow' ? -1 : 1;\n\n positionTypeData.aggregatedMarketValue += token.marketValue;\n protocolData.aggregatedMarketValue += token.marketValue * multiplier;\n chainData.aggregatedMarketValue += token.marketValue * multiplier;\n }\n }\n }\n\n return groupedDeFiPositions;\n}\n\n/**\n *\n * @param tokenBalance - The token balance that is going to be processed\n * @returns The processed token balance\n */\nfunction processToken<T extends Balance>(\n tokenBalance: T,\n): T & {\n marketValue?: number;\n tokens?: UnderlyingWithMarketValue[];\n} {\n if (!tokenBalance.tokens) {\n return {\n ...tokenBalance,\n marketValue: tokenBalance.price\n ? tokenBalance.balance * tokenBalance.price\n : undefined,\n };\n }\n\n const processedTokens = tokenBalance.tokens.map((t) => {\n const { tokens, ...tokenWithoutUnderlyings } = processToken(t);\n\n return tokenWithoutUnderlyings;\n });\n\n const marketValue = processedTokens.reduce(\n (acc, t) =>\n acc === undefined || t.marketValue === undefined\n ? undefined\n : acc + t.marketValue,\n 0 as number | undefined,\n );\n\n return {\n ...tokenBalance,\n marketValue,\n tokens: processedTokens,\n };\n}\n"]}