@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.
- package/CHANGELOG.md +0 -25
- package/README.md +0 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.cjs +4 -55
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.cjs.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts +3 -16
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts +3 -16
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.mjs +4 -55
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.mjs.map +1 -1
- package/dist/assetsUtil.cjs +3 -0
- package/dist/assetsUtil.cjs.map +1 -1
- package/dist/assetsUtil.d.cts +2 -1
- package/dist/assetsUtil.d.cts.map +1 -1
- package/dist/assetsUtil.d.mts +2 -1
- package/dist/assetsUtil.d.mts.map +1 -1
- package/dist/assetsUtil.mjs +3 -0
- package/dist/assetsUtil.mjs.map +1 -1
- package/dist/index.cjs +1 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +0 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +0 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -1
- package/dist/index.mjs.map +1 -1
- package/dist/token-prices-service/codefi-v2.cjs +4 -0
- package/dist/token-prices-service/codefi-v2.cjs.map +1 -1
- package/dist/token-prices-service/codefi-v2.d.cts +2 -2
- package/dist/token-prices-service/codefi-v2.d.cts.map +1 -1
- package/dist/token-prices-service/codefi-v2.d.mts +2 -2
- package/dist/token-prices-service/codefi-v2.d.mts.map +1 -1
- package/dist/token-prices-service/codefi-v2.mjs +4 -0
- package/dist/token-prices-service/codefi-v2.mjs.map +1 -1
- package/package.json +8 -10
- package/dist/DeFiPositionsController/DeFiPositionsController.cjs +0 -126
- package/dist/DeFiPositionsController/DeFiPositionsController.cjs.map +0 -1
- package/dist/DeFiPositionsController/DeFiPositionsController.d.cts +0 -72
- package/dist/DeFiPositionsController/DeFiPositionsController.d.cts.map +0 -1
- package/dist/DeFiPositionsController/DeFiPositionsController.d.mts +0 -72
- package/dist/DeFiPositionsController/DeFiPositionsController.d.mts.map +0 -1
- package/dist/DeFiPositionsController/DeFiPositionsController.mjs +0 -121
- package/dist/DeFiPositionsController/DeFiPositionsController.mjs.map +0 -1
- package/dist/DeFiPositionsController/fetch-positions.cjs +0 -21
- package/dist/DeFiPositionsController/fetch-positions.cjs.map +0 -1
- package/dist/DeFiPositionsController/fetch-positions.d.cts +0 -58
- package/dist/DeFiPositionsController/fetch-positions.d.cts.map +0 -1
- package/dist/DeFiPositionsController/fetch-positions.d.mts +0 -58
- package/dist/DeFiPositionsController/fetch-positions.d.mts.map +0 -1
- package/dist/DeFiPositionsController/fetch-positions.mjs +0 -17
- package/dist/DeFiPositionsController/fetch-positions.mjs.map +0 -1
- package/dist/DeFiPositionsController/group-defi-positions.cjs +0 -97
- package/dist/DeFiPositionsController/group-defi-positions.cjs.map +0 -1
- package/dist/DeFiPositionsController/group-defi-positions.d.cts +0 -36
- package/dist/DeFiPositionsController/group-defi-positions.d.cts.map +0 -1
- package/dist/DeFiPositionsController/group-defi-positions.d.mts +0 -36
- package/dist/DeFiPositionsController/group-defi-positions.d.mts.map +0 -1
- package/dist/DeFiPositionsController/group-defi-positions.mjs +0 -94
- 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"]}
|