@ledgerhq/live-countervalues 0.1.3 → 0.1.4-nightly.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/.unimportedrc.json +1 -1
- package/CHANGELOG.md +8 -0
- package/lib/logic.d.ts +6 -0
- package/lib/logic.d.ts.map +1 -1
- package/lib/logic.js +25 -4
- package/lib/logic.js.map +1 -1
- package/lib/portfolio.d.ts +66 -0
- package/lib/portfolio.d.ts.map +1 -0
- package/lib/portfolio.js +428 -0
- package/lib/portfolio.js.map +1 -0
- package/lib/portfolio.test.d.ts +2 -0
- package/lib/portfolio.test.d.ts.map +1 -0
- package/lib/portfolio.test.js +278 -0
- package/lib/portfolio.test.js.map +1 -0
- package/lib-es/logic.d.ts +6 -0
- package/lib-es/logic.d.ts.map +1 -1
- package/lib-es/logic.js +22 -3
- package/lib-es/logic.js.map +1 -1
- package/lib-es/portfolio.d.ts +66 -0
- package/lib-es/portfolio.d.ts.map +1 -0
- package/lib-es/portfolio.js +411 -0
- package/lib-es/portfolio.js.map +1 -0
- package/lib-es/portfolio.test.d.ts +2 -0
- package/lib-es/portfolio.test.d.ts.map +1 -0
- package/lib-es/portfolio.test.js +276 -0
- package/lib-es/portfolio.test.js.map +1 -0
- package/package.json +3 -3
- package/src/__snapshots__/portfolio.test.ts.snap +7461 -0
- package/src/logic.ts +39 -13
- package/src/portfolio.test.ts +323 -0
- package/src/portfolio.ts +539 -0
package/.unimportedrc.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @ledgerhq/live-countervalues
|
|
2
2
|
|
|
3
|
+
## 0.1.4-nightly.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`9ada63a`](https://github.com/LedgerHQ/ledger-live/commit/9ada63a05b2d2518af09a9c07937cf94b5b2ea67)]:
|
|
8
|
+
- @ledgerhq/types-live@6.46.0-nightly.0
|
|
9
|
+
- @ledgerhq/coin-framework@0.11.4-nightly.0
|
|
10
|
+
|
|
3
11
|
## 0.1.3
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
package/lib/logic.d.ts
CHANGED
|
@@ -3,6 +3,12 @@ import type { Account } from "@ledgerhq/types-live";
|
|
|
3
3
|
import type { Currency } from "@ledgerhq/types-cryptoassets";
|
|
4
4
|
export declare function exportCountervalues({ data, status }: CounterValuesState): CounterValuesStateRaw;
|
|
5
5
|
export declare function importCountervalues({ status, ...rest }: CounterValuesStateRaw, settings: CountervaluesSettings): CounterValuesState;
|
|
6
|
+
export declare function trackingPairForTopCoins(marketcapIds: string[], size: number, countervalue: Currency, startDate: Date): {
|
|
7
|
+
from: import("@ledgerhq/types-cryptoassets").CryptoCurrency;
|
|
8
|
+
to: Currency;
|
|
9
|
+
startDate: Date;
|
|
10
|
+
}[];
|
|
11
|
+
export declare function inferTrackingPairForAccountsUnresolved(accounts: Account[], countervalue: Currency): TrackingPair[];
|
|
6
12
|
export declare function inferTrackingPairForAccounts(accounts: Account[], countervalue: Currency): TrackingPair[];
|
|
7
13
|
/**
|
|
8
14
|
* yield the ids of the tracking pairs as stored in the database
|
package/lib/logic.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EAGZ,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAWjB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EAGZ,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAWjB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAK7D,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,qBAAqB,CAc/F;AAGD,wBAAgB,mBAAmB,CACjC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,qBAAqB,EAC1C,QAAQ,EAAE,qBAAqB,GAC9B,kBAAkB,CA0BpB;AAED,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,QAAQ,EACtB,SAAS,EAAE,IAAI;;;;IAehB;AAGD,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,QAAQ,GACrB,YAAY,EAAE,CAchB;AAED,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,QAAQ,GACrB,YAAY,EAAE,CAEhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAEvE;AAED,eAAO,MAAM,YAAY,EAAE,kBAI1B,CAAC;AAIF,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,qBAAqB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CA+M7B;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE;IACJ,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;CACd,GACA,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAGrC;AACD,wBAAgB,SAAS,CACvB,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,gBAAgB,EAC1C,KAAK,EAAE;IACL,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;CAChC,GACA,MAAM,GAAG,IAAI,GAAG,SAAS,CAM3B;AACD,wBAAgB,SAAS,CACvB,KAAK,EAAE,kBAAkB,EACzB,YAAY,EAAE;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,MAAM,GAAG,IAAI,GAAG,SAAS,CAuB3B;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,kBAAkB,EACzB,UAAU,EAAE,KAAK,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;CAC/B,CAAC,EACF,YAAY,EAAE;IACZ,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GACA,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CA0BlC;AA0ED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CA+B1E"}
|
package/lib/logic.js
CHANGED
|
@@ -23,12 +23,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
23
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.resolveTrackingPairs = exports.calculateMany = exports.calculate = exports.lenseRate = exports.lenseRateMap = exports.loadCountervalues = exports.initialState = exports.trackingPairIds = exports.inferTrackingPairForAccounts = exports.importCountervalues = exports.exportCountervalues = void 0;
|
|
26
|
+
exports.resolveTrackingPairs = exports.calculateMany = exports.calculate = exports.lenseRate = exports.lenseRateMap = exports.loadCountervalues = exports.initialState = exports.trackingPairIds = exports.inferTrackingPairForAccounts = exports.inferTrackingPairForAccountsUnresolved = exports.trackingPairForTopCoins = exports.importCountervalues = exports.exportCountervalues = void 0;
|
|
27
27
|
const logs_1 = require("@ledgerhq/logs");
|
|
28
28
|
const helpers_1 = require("@ledgerhq/coin-framework/account/helpers");
|
|
29
29
|
const live_promise_1 = require("@ledgerhq/live-promise");
|
|
30
30
|
const helpers_2 = require("./helpers");
|
|
31
31
|
const api_1 = __importDefault(require("./api"));
|
|
32
|
+
const currencies_1 = require("@ledgerhq/cryptoassets/currencies");
|
|
32
33
|
// yield raw version of the countervalues state to be saved in a db
|
|
33
34
|
function exportCountervalues({ data, status }) {
|
|
34
35
|
const out = { status };
|
|
@@ -63,12 +64,28 @@ function importCountervalues(_a, settings) {
|
|
|
63
64
|
};
|
|
64
65
|
}
|
|
65
66
|
exports.importCountervalues = importCountervalues;
|
|
67
|
+
function trackingPairForTopCoins(marketcapIds, size, countervalue, startDate) {
|
|
68
|
+
const pairs = [];
|
|
69
|
+
for (let i = 0; i < marketcapIds.length && pairs.length < size; i++) {
|
|
70
|
+
const id = marketcapIds[i];
|
|
71
|
+
const currency = (0, currencies_1.findCryptoCurrencyById)(id);
|
|
72
|
+
if (currency) {
|
|
73
|
+
pairs.push({
|
|
74
|
+
from: currency,
|
|
75
|
+
to: countervalue,
|
|
76
|
+
startDate,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return pairs;
|
|
81
|
+
}
|
|
82
|
+
exports.trackingPairForTopCoins = trackingPairForTopCoins;
|
|
66
83
|
// infer the tracking pair from user accounts to know which pairs are concerned
|
|
67
|
-
function
|
|
84
|
+
function inferTrackingPairForAccountsUnresolved(accounts, countervalue) {
|
|
68
85
|
const yearAgo = new Date();
|
|
69
86
|
yearAgo.setFullYear(yearAgo.getFullYear() - 1);
|
|
70
87
|
yearAgo.setHours(0, 0, 0, 0);
|
|
71
|
-
return
|
|
88
|
+
return (0, helpers_1.flattenAccounts)(accounts)
|
|
72
89
|
.filter(a => !(0, helpers_1.isAccountEmpty)(a))
|
|
73
90
|
.map(account => {
|
|
74
91
|
const currency = (0, helpers_1.getAccountCurrency)(account);
|
|
@@ -77,7 +94,11 @@ function inferTrackingPairForAccounts(accounts, countervalue) {
|
|
|
77
94
|
to: countervalue,
|
|
78
95
|
startDate: account.creationDate < yearAgo ? account.creationDate : yearAgo,
|
|
79
96
|
};
|
|
80
|
-
})
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
exports.inferTrackingPairForAccountsUnresolved = inferTrackingPairForAccountsUnresolved;
|
|
100
|
+
function inferTrackingPairForAccounts(accounts, countervalue) {
|
|
101
|
+
return resolveTrackingPairs(inferTrackingPairForAccountsUnresolved(accounts, countervalue));
|
|
81
102
|
}
|
|
82
103
|
exports.inferTrackingPairForAccounts = inferTrackingPairForAccounts;
|
|
83
104
|
/**
|
package/lib/logic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { CounterValuesState } from "./types";
|
|
2
|
+
import type { Account, AccountLike, BalanceHistory, PortfolioRange, PortfolioRangeConfig, AccountPortfolio, Portfolio, CurrencyPortfolio, AssetsDistribution } from "@ledgerhq/types-live";
|
|
3
|
+
import type { Currency } from "@ledgerhq/types-cryptoassets";
|
|
4
|
+
export declare const defaultAssetsDistribution: {
|
|
5
|
+
minShowFirst: number;
|
|
6
|
+
maxShowFirst: number;
|
|
7
|
+
showFirstThreshold: number;
|
|
8
|
+
showEmptyAccounts: boolean;
|
|
9
|
+
hideEmptyTokenAccount: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type AssetsDistributionOpts = typeof defaultAssetsDistribution;
|
|
12
|
+
export declare function startOfHour(t: Date): Date;
|
|
13
|
+
export declare function startOfDay(t: Date): Date;
|
|
14
|
+
export declare function startOfWeek(t: Date): Date;
|
|
15
|
+
export declare function getRanges(): string[];
|
|
16
|
+
export declare function getDates(r: PortfolioRange, count: number): Date[];
|
|
17
|
+
export declare function getPortfolioRangeConfig(r: PortfolioRange): PortfolioRangeConfig;
|
|
18
|
+
export declare function getPortfolioCount(accounts: AccountLike[], range: PortfolioRange): number;
|
|
19
|
+
export declare function getPortfolioCountByDate(start: Date, range: PortfolioRange): number;
|
|
20
|
+
export declare function getBalanceHistory(account: AccountLike, range: PortfolioRange, count: number): BalanceHistory;
|
|
21
|
+
export declare function getBalanceHistoryWithCountervalue(account: AccountLike, range: PortfolioRange, count: number, cvState: CounterValuesState, cvCurrency: Currency): AccountPortfolio;
|
|
22
|
+
export type GetPortfolioOptionsType = {
|
|
23
|
+
flattenSourceAccounts?: boolean;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* calculate the total balance history for all accounts in a reference fiat unit
|
|
27
|
+
* and using a CalculateCounterValue function (see countervalue helper)
|
|
28
|
+
* NB the last item of the array is actually the current total balance.
|
|
29
|
+
* @memberof account
|
|
30
|
+
*/
|
|
31
|
+
export declare function getPortfolio(topAccounts: AccountLike[], range: PortfolioRange, cvState: CounterValuesState, cvCurrency: Currency, options?: GetPortfolioOptionsType): Portfolio;
|
|
32
|
+
export declare function getCurrencyPortfolio(accounts: AccountLike[], range: PortfolioRange, cvState: CounterValuesState, cvCurrency: Currency): CurrencyPortfolio;
|
|
33
|
+
export declare function getAssetsDistribution(topAccounts: Account[], cvState: CounterValuesState, cvCurrency: Currency, opts?: AssetsDistributionOpts): AssetsDistribution;
|
|
34
|
+
/**
|
|
35
|
+
* data structure to represent a market datapoint
|
|
36
|
+
* NB: the UI don't actual need the "current value" in this data, because it can directly calculate it with the countervalue context. but it's set in order to internally sort the data and possibly debug it
|
|
37
|
+
*/
|
|
38
|
+
export type PerformanceMarketDatapoint = {
|
|
39
|
+
currency: Currency;
|
|
40
|
+
change: number;
|
|
41
|
+
currentValue: number;
|
|
42
|
+
referenceValue: number;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* retrieve the list of market datapoints to use for the Market Performance feature
|
|
46
|
+
* the data is sorted from best performer to worst performer.
|
|
47
|
+
* it possibly filters out any invalid data, therefore the list can be empty.
|
|
48
|
+
*/
|
|
49
|
+
export declare function makePerformanceMarketAssetsList(
|
|
50
|
+
/**
|
|
51
|
+
* the countervalue state to use to calculate the performance.
|
|
52
|
+
*/
|
|
53
|
+
cvState: CounterValuesState,
|
|
54
|
+
/**
|
|
55
|
+
* countervalue is the currency to use as reference to calculate the performance.
|
|
56
|
+
*/
|
|
57
|
+
countervalue: Currency,
|
|
58
|
+
/**
|
|
59
|
+
* assets is the list of assets to consider. it is expected for them to have data loaded in cvState.
|
|
60
|
+
*/
|
|
61
|
+
assets: Currency[],
|
|
62
|
+
/**
|
|
63
|
+
* referenceDate is the date to use as reference to calculate the performance.
|
|
64
|
+
*/
|
|
65
|
+
referenceDate: Date): PerformanceMarketDatapoint[];
|
|
66
|
+
//# sourceMappingURL=portfolio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portfolio.d.ts","sourceRoot":"","sources":["../src/portfolio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAQlD,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,cAAc,EACd,cAAc,EACd,oBAAoB,EAEpB,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAkB,QAAQ,EAAiB,MAAM,8BAA8B,CAAC;AAG5F,eAAO,MAAM,yBAAyB;;;;;;CAMrC,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,OAAO,yBAAyB,CAAC;AAMtE,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAEzC;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAExC;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAGzC;AAmCD,wBAAgB,SAAS,IAAI,MAAM,EAAE,CAEpC;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAYjE;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,cAAc,GAAG,oBAAoB,CAE/E;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAexF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAOlF;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,GACZ,cAAc,CAmBhB;AAED,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,kBAAkB,EAC3B,UAAU,EAAE,QAAQ,GACnB,gBAAgB,CAqDlB;AAoBD,MAAM,MAAM,uBAAuB,GAAG;IACpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,WAAW,EAAE,EAC1B,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,EAC3B,UAAU,EAAE,QAAQ,EACpB,OAAO,CAAC,EAAE,uBAAuB,GAChC,SAAS,CA6DX;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,WAAW,EAAE,EACvB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,kBAAkB,EAC3B,UAAU,EAAE,QAAQ,GACnB,iBAAiB,CAwCnB;AAED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,OAAO,EAAE,EACtB,OAAO,EAAE,kBAAkB,EAC3B,UAAU,EAAE,QAAQ,EACpB,IAAI,CAAC,EAAE,sBAAsB,GAC5B,kBAAkB,CAuGpB;AAQD;;;GAGG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,+BAA+B;AAC7C;;GAEG;AACH,OAAO,EAAE,kBAAkB;AAC3B;;GAEG;AACH,YAAY,EAAE,QAAQ;AACtB;;GAEG;AACH,MAAM,EAAE,QAAQ,EAAE;AAClB;;GAEG;AACH,aAAa,EAAE,IAAI,GAClB,0BAA0B,EAAE,CA+B9B"}
|
package/lib/portfolio.js
ADDED
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makePerformanceMarketAssetsList = exports.getAssetsDistribution = exports.getCurrencyPortfolio = exports.getPortfolio = exports.getBalanceHistoryWithCountervalue = exports.getBalanceHistory = exports.getPortfolioCountByDate = exports.getPortfolioCount = exports.getPortfolioRangeConfig = exports.getDates = exports.getRanges = exports.startOfWeek = exports.startOfDay = exports.startOfHour = exports.defaultAssetsDistribution = void 0;
|
|
4
|
+
const logic_1 = require("./logic");
|
|
5
|
+
const index_1 = require("@ledgerhq/coin-framework/account/index");
|
|
6
|
+
const live_env_1 = require("@ledgerhq/live-env");
|
|
7
|
+
const support_1 = require("@ledgerhq/coin-framework/currencies/support");
|
|
8
|
+
exports.defaultAssetsDistribution = {
|
|
9
|
+
minShowFirst: 1,
|
|
10
|
+
maxShowFirst: 6,
|
|
11
|
+
showFirstThreshold: 0.95,
|
|
12
|
+
showEmptyAccounts: false,
|
|
13
|
+
hideEmptyTokenAccount: false,
|
|
14
|
+
};
|
|
15
|
+
const hourIncrement = 60 * 60 * 1000;
|
|
16
|
+
const dayIncrement = 24 * hourIncrement;
|
|
17
|
+
const weekIncrement = 7 * dayIncrement;
|
|
18
|
+
function startOfHour(t) {
|
|
19
|
+
return new Date(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours());
|
|
20
|
+
}
|
|
21
|
+
exports.startOfHour = startOfHour;
|
|
22
|
+
function startOfDay(t) {
|
|
23
|
+
return new Date(t.getFullYear(), t.getMonth(), t.getDate());
|
|
24
|
+
}
|
|
25
|
+
exports.startOfDay = startOfDay;
|
|
26
|
+
function startOfWeek(t) {
|
|
27
|
+
const d = startOfDay(t);
|
|
28
|
+
return new Date(d.getTime() - d.getDay() * dayIncrement);
|
|
29
|
+
}
|
|
30
|
+
exports.startOfWeek = startOfWeek;
|
|
31
|
+
// TODO Portfolio: this would require to introduce Account#olderOperationDate
|
|
32
|
+
const ranges = {
|
|
33
|
+
all: {
|
|
34
|
+
increment: weekIncrement,
|
|
35
|
+
startOf: startOfWeek,
|
|
36
|
+
granularityId: "WEEK",
|
|
37
|
+
},
|
|
38
|
+
year: {
|
|
39
|
+
count: 52,
|
|
40
|
+
increment: weekIncrement,
|
|
41
|
+
startOf: startOfWeek,
|
|
42
|
+
granularityId: "WEEK",
|
|
43
|
+
},
|
|
44
|
+
month: {
|
|
45
|
+
count: 30,
|
|
46
|
+
increment: dayIncrement,
|
|
47
|
+
startOf: startOfDay,
|
|
48
|
+
granularityId: "DAY",
|
|
49
|
+
},
|
|
50
|
+
week: {
|
|
51
|
+
count: 7 * 24,
|
|
52
|
+
increment: hourIncrement,
|
|
53
|
+
startOf: startOfHour,
|
|
54
|
+
granularityId: "HOUR",
|
|
55
|
+
},
|
|
56
|
+
day: {
|
|
57
|
+
count: 24,
|
|
58
|
+
increment: hourIncrement,
|
|
59
|
+
startOf: startOfHour,
|
|
60
|
+
granularityId: "HOUR",
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
function getRanges() {
|
|
64
|
+
return Object.keys(ranges);
|
|
65
|
+
}
|
|
66
|
+
exports.getRanges = getRanges;
|
|
67
|
+
function getDates(r, count) {
|
|
68
|
+
const now = new Date(Date.now());
|
|
69
|
+
if (count === 1)
|
|
70
|
+
return [now];
|
|
71
|
+
const conf = getPortfolioRangeConfig(r);
|
|
72
|
+
const last = new Date(conf.startOf(now).getTime() - 1).getTime();
|
|
73
|
+
const dates = [now];
|
|
74
|
+
for (let i = 0; i < count - 1; i++) {
|
|
75
|
+
dates.unshift(new Date(last - conf.increment * i));
|
|
76
|
+
}
|
|
77
|
+
return dates;
|
|
78
|
+
}
|
|
79
|
+
exports.getDates = getDates;
|
|
80
|
+
function getPortfolioRangeConfig(r) {
|
|
81
|
+
return ranges[r];
|
|
82
|
+
}
|
|
83
|
+
exports.getPortfolioRangeConfig = getPortfolioRangeConfig;
|
|
84
|
+
function getPortfolioCount(accounts, range) {
|
|
85
|
+
const conf = getPortfolioRangeConfig(range);
|
|
86
|
+
if (typeof conf.count === "number")
|
|
87
|
+
return conf.count;
|
|
88
|
+
if (!accounts.length)
|
|
89
|
+
return 0;
|
|
90
|
+
let oldestDate = accounts[0].creationDate;
|
|
91
|
+
for (let i = 1; i < accounts.length; i++) {
|
|
92
|
+
const d = accounts[i].creationDate;
|
|
93
|
+
if (d < oldestDate) {
|
|
94
|
+
oldestDate = d;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return getPortfolioCountByDate(oldestDate, range);
|
|
98
|
+
}
|
|
99
|
+
exports.getPortfolioCount = getPortfolioCount;
|
|
100
|
+
function getPortfolioCountByDate(start, range) {
|
|
101
|
+
var _a;
|
|
102
|
+
const conf = getPortfolioRangeConfig(range);
|
|
103
|
+
const now = Date.now();
|
|
104
|
+
const count = Math.ceil((now - start.getTime()) / conf.increment) + 2;
|
|
105
|
+
const defaultYearCount = (_a = getPortfolioRangeConfig("year").count) !== null && _a !== void 0 ? _a : 0; // just for type casting
|
|
106
|
+
return count < defaultYearCount ? defaultYearCount : count;
|
|
107
|
+
}
|
|
108
|
+
exports.getPortfolioCountByDate = getPortfolioCountByDate;
|
|
109
|
+
function getBalanceHistory(account, range, count) {
|
|
110
|
+
var _a;
|
|
111
|
+
const conf = getPortfolioRangeConfig(range);
|
|
112
|
+
const balances = (0, index_1.getAccountHistoryBalances)(account, conf.granularityId);
|
|
113
|
+
const history = [];
|
|
114
|
+
const now = new Date();
|
|
115
|
+
history.unshift({
|
|
116
|
+
date: now,
|
|
117
|
+
value: account.balance.toNumber(),
|
|
118
|
+
});
|
|
119
|
+
const t = new Date(conf.startOf(now).getTime() - 1).getTime(); // end of yesterday
|
|
120
|
+
for (let i = 0; i < count - 1; i++) {
|
|
121
|
+
history.unshift({
|
|
122
|
+
date: new Date(t - conf.increment * i),
|
|
123
|
+
value: (_a = balances[balances.length - 1 - i]) !== null && _a !== void 0 ? _a : 0,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return history;
|
|
127
|
+
}
|
|
128
|
+
exports.getBalanceHistory = getBalanceHistory;
|
|
129
|
+
function getBalanceHistoryWithCountervalue(account, range, count, cvState, cvCurrency) {
|
|
130
|
+
const balanceHistory = getBalanceHistory(account, range, count);
|
|
131
|
+
const currency = (0, index_1.getAccountCurrency)(account);
|
|
132
|
+
const counterValues = (0, logic_1.calculateMany)(cvState, balanceHistory, {
|
|
133
|
+
from: currency,
|
|
134
|
+
to: cvCurrency,
|
|
135
|
+
});
|
|
136
|
+
let countervalueAvailable = false;
|
|
137
|
+
const history = [];
|
|
138
|
+
for (let i = 0; i < balanceHistory.length; i++) {
|
|
139
|
+
const { date, value } = balanceHistory[i];
|
|
140
|
+
const countervalue = counterValues[i];
|
|
141
|
+
if (countervalue !== undefined && countervalue !== null) {
|
|
142
|
+
countervalueAvailable = true;
|
|
143
|
+
}
|
|
144
|
+
history.push({
|
|
145
|
+
date,
|
|
146
|
+
value,
|
|
147
|
+
countervalue,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
function calcChanges(h) {
|
|
151
|
+
const from = h[0];
|
|
152
|
+
const to = h[h.length - 1];
|
|
153
|
+
return {
|
|
154
|
+
countervalueReceiveSum: 0,
|
|
155
|
+
// not available here
|
|
156
|
+
countervalueSendSum: 0,
|
|
157
|
+
cryptoChange: {
|
|
158
|
+
value: to.value - from.value,
|
|
159
|
+
percentage: null,
|
|
160
|
+
},
|
|
161
|
+
countervalueChange: {
|
|
162
|
+
value: (to.countervalue || 0) - (from.countervalue || 0),
|
|
163
|
+
percentage: meaningfulPercentage((to.countervalue || 0) - (from.countervalue || 0), from.countervalue),
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
return Object.assign({ history,
|
|
168
|
+
countervalueAvailable }, calcChanges(history));
|
|
169
|
+
}
|
|
170
|
+
exports.getBalanceHistoryWithCountervalue = getBalanceHistoryWithCountervalue;
|
|
171
|
+
function meaningfulPercentage(deltaChange, balanceDivider, percentageHighThreshold = 100000) {
|
|
172
|
+
if (deltaChange && balanceDivider && balanceDivider !== 0) {
|
|
173
|
+
const percent = deltaChange / balanceDivider;
|
|
174
|
+
if (percent < percentageHighThreshold) {
|
|
175
|
+
return percent;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
const defaultGetPortfolioOptions = {
|
|
180
|
+
flattenSourceAccounts: true,
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* calculate the total balance history for all accounts in a reference fiat unit
|
|
184
|
+
* and using a CalculateCounterValue function (see countervalue helper)
|
|
185
|
+
* NB the last item of the array is actually the current total balance.
|
|
186
|
+
* @memberof account
|
|
187
|
+
*/
|
|
188
|
+
function getPortfolio(topAccounts, range, cvState, cvCurrency, options) {
|
|
189
|
+
const { flattenSourceAccounts } = Object.assign(Object.assign({}, defaultGetPortfolioOptions), options);
|
|
190
|
+
const accounts = flattenSourceAccounts ? (0, index_1.flattenAccounts)(topAccounts) : topAccounts;
|
|
191
|
+
const count = getPortfolioCount(accounts, range);
|
|
192
|
+
const availables = [];
|
|
193
|
+
const unavailableAccounts = [];
|
|
194
|
+
for (const account of accounts) {
|
|
195
|
+
const p = getBalanceHistoryWithCountervalue(account, range, count, cvState, cvCurrency);
|
|
196
|
+
if (p.countervalueAvailable) {
|
|
197
|
+
availables.push({
|
|
198
|
+
account,
|
|
199
|
+
history: p.history,
|
|
200
|
+
change: p.countervalueChange,
|
|
201
|
+
countervalueReceiveSum: p.countervalueReceiveSum,
|
|
202
|
+
countervalueSendSum: p.countervalueSendSum,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
unavailableAccounts.push(account);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const histories = availables.map(a => a.history);
|
|
210
|
+
const balanceHistory = getDates(range, count).map((date, i) => ({
|
|
211
|
+
date,
|
|
212
|
+
value: histories.reduce((sum, h) => { var _a, _b; return sum + ((_b = (_a = h[i]) === null || _a === void 0 ? void 0 : _a.countervalue) !== null && _b !== void 0 ? _b : 0); }, 0),
|
|
213
|
+
}));
|
|
214
|
+
const [countervalueChangeValue, countervalueReceiveSum, countervalueSendSum] = availables.reduce((prev, a) => [
|
|
215
|
+
prev[0] + a.change.value,
|
|
216
|
+
prev[1] + a.countervalueReceiveSum,
|
|
217
|
+
prev[2] + a.countervalueSendSum,
|
|
218
|
+
], [0, 0, 0]);
|
|
219
|
+
// in case there were no receive, we just track the market change
|
|
220
|
+
// weighted by the current balances
|
|
221
|
+
const balanceDivider = (0, live_env_1.getEnv)("EXPERIMENTAL_ROI_CALCULATION")
|
|
222
|
+
? countervalueReceiveSum === 0
|
|
223
|
+
? balanceHistory[0].value + countervalueSendSum
|
|
224
|
+
: countervalueReceiveSum
|
|
225
|
+
: balanceHistory[0].value;
|
|
226
|
+
return {
|
|
227
|
+
balanceHistory,
|
|
228
|
+
balanceAvailable: accounts.length === 0 || availables.length > 0,
|
|
229
|
+
availableAccounts: availables.map(a => a.account),
|
|
230
|
+
unavailableCurrencies: [...new Set(unavailableAccounts.map(index_1.getAccountCurrency))],
|
|
231
|
+
accounts,
|
|
232
|
+
range,
|
|
233
|
+
histories,
|
|
234
|
+
countervalueReceiveSum,
|
|
235
|
+
countervalueSendSum,
|
|
236
|
+
countervalueChange: {
|
|
237
|
+
percentage: meaningfulPercentage(countervalueChangeValue, balanceDivider),
|
|
238
|
+
value: countervalueChangeValue,
|
|
239
|
+
},
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
exports.getPortfolio = getPortfolio;
|
|
243
|
+
function getCurrencyPortfolio(accounts, range, cvState, cvCurrency) {
|
|
244
|
+
const count = getPortfolioCount(accounts, range);
|
|
245
|
+
const portfolios = accounts.map(a => getBalanceHistoryWithCountervalue(a, range, count, cvState, cvCurrency));
|
|
246
|
+
let countervalueAvailable = false;
|
|
247
|
+
const histories = portfolios.map(p => {
|
|
248
|
+
if (p.countervalueAvailable) {
|
|
249
|
+
countervalueAvailable = true;
|
|
250
|
+
}
|
|
251
|
+
return p.history;
|
|
252
|
+
});
|
|
253
|
+
const history = getDates(range, count).map((date, i) => ({
|
|
254
|
+
date,
|
|
255
|
+
value: histories.reduce((sum, h) => { var _a; return sum + ((_a = h[i]) === null || _a === void 0 ? void 0 : _a.value); }, 0),
|
|
256
|
+
countervalue: histories.reduce((sum, h) => { var _a, _b; return sum + ((_b = (_a = h[i]) === null || _a === void 0 ? void 0 : _a.countervalue) !== null && _b !== void 0 ? _b : 0); }, 0),
|
|
257
|
+
}));
|
|
258
|
+
const from = history[0];
|
|
259
|
+
const to = history[history.length - 1];
|
|
260
|
+
const cryptoChange = {
|
|
261
|
+
value: to.value - from.value,
|
|
262
|
+
percentage: null,
|
|
263
|
+
};
|
|
264
|
+
const countervalueChange = {
|
|
265
|
+
value: (to.countervalue || 0) - (from.countervalue || 0),
|
|
266
|
+
percentage: meaningfulPercentage((to.countervalue || 0) - (from.countervalue || 0), from.countervalue),
|
|
267
|
+
};
|
|
268
|
+
return {
|
|
269
|
+
history,
|
|
270
|
+
countervalueAvailable,
|
|
271
|
+
accounts,
|
|
272
|
+
range,
|
|
273
|
+
histories,
|
|
274
|
+
cryptoChange,
|
|
275
|
+
countervalueChange,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
exports.getCurrencyPortfolio = getCurrencyPortfolio;
|
|
279
|
+
function getAssetsDistribution(topAccounts, cvState, cvCurrency, opts) {
|
|
280
|
+
var _a, _b;
|
|
281
|
+
const { minShowFirst, maxShowFirst, showFirstThreshold, showEmptyAccounts, hideEmptyTokenAccount, } = Object.assign(Object.assign({}, exports.defaultAssetsDistribution), opts);
|
|
282
|
+
const idBalances = {};
|
|
283
|
+
const idCurrencies = {};
|
|
284
|
+
const currenciesAccounts = {};
|
|
285
|
+
const accounts = (0, index_1.flattenAccounts)(topAccounts);
|
|
286
|
+
for (let i = 0; i < accounts.length; i++) {
|
|
287
|
+
const account = accounts[i];
|
|
288
|
+
const cur = (0, index_1.getAccountCurrency)(account);
|
|
289
|
+
const id = cur.id;
|
|
290
|
+
if (!currenciesAccounts[id]) {
|
|
291
|
+
currenciesAccounts[id] = [account];
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
currenciesAccounts[id].push(account);
|
|
295
|
+
}
|
|
296
|
+
if (account.type === "TokenAccount") {
|
|
297
|
+
if (!hideEmptyTokenAccount || account.balance.isGreaterThan(0)) {
|
|
298
|
+
idCurrencies[id] = cur;
|
|
299
|
+
idBalances[id] = ((_a = idBalances[id]) !== null && _a !== void 0 ? _a : 0) + account.balance.toNumber();
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
if (showEmptyAccounts || account.balance.isGreaterThan(0)) {
|
|
304
|
+
idCurrencies[id] = cur;
|
|
305
|
+
idBalances[id] = ((_b = idBalances[id]) !== null && _b !== void 0 ? _b : 0) + account.balance.toNumber();
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
const idCountervalues = {};
|
|
310
|
+
let sum = 0;
|
|
311
|
+
for (const [id, value] of Object.entries(idBalances)) {
|
|
312
|
+
const cv = (0, logic_1.calculate)(cvState, {
|
|
313
|
+
value: Number(value),
|
|
314
|
+
from: idCurrencies[id],
|
|
315
|
+
to: cvCurrency,
|
|
316
|
+
});
|
|
317
|
+
if (cv) {
|
|
318
|
+
sum += cv;
|
|
319
|
+
idCountervalues[id] = cv;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
const idCurrenciesKeys = Object.keys(idCurrencies);
|
|
323
|
+
if (idCurrenciesKeys.length === 0) {
|
|
324
|
+
return assetsDistributionNotAvailable;
|
|
325
|
+
}
|
|
326
|
+
const isAvailable = sum !== 0 || showEmptyAccounts;
|
|
327
|
+
const list = idCurrenciesKeys
|
|
328
|
+
.map(id => {
|
|
329
|
+
var _a;
|
|
330
|
+
const currency = idCurrencies[id];
|
|
331
|
+
const amount = idBalances[id];
|
|
332
|
+
const countervalue = (_a = idCountervalues[id]) !== null && _a !== void 0 ? _a : 0;
|
|
333
|
+
const currencyAccounts = currenciesAccounts[id];
|
|
334
|
+
return {
|
|
335
|
+
currency,
|
|
336
|
+
countervalue,
|
|
337
|
+
amount,
|
|
338
|
+
distribution: isAvailable
|
|
339
|
+
? sum !== 0
|
|
340
|
+
? countervalue / sum
|
|
341
|
+
: 1 / idCurrenciesKeys.length
|
|
342
|
+
: 0,
|
|
343
|
+
accounts: currencyAccounts,
|
|
344
|
+
};
|
|
345
|
+
})
|
|
346
|
+
.sort((a, b) => {
|
|
347
|
+
const diff = b.countervalue - a.countervalue;
|
|
348
|
+
return diff === 0 ? a.currency.name.localeCompare(b.currency.name) : diff;
|
|
349
|
+
});
|
|
350
|
+
let i;
|
|
351
|
+
let acc = 0;
|
|
352
|
+
for (i = 0; i < maxShowFirst && i < list.length; i++) {
|
|
353
|
+
if (acc > showFirstThreshold) {
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
acc += list[i].distribution;
|
|
357
|
+
}
|
|
358
|
+
const showFirst = Math.max(minShowFirst, i);
|
|
359
|
+
const data = {
|
|
360
|
+
isAvailable,
|
|
361
|
+
list,
|
|
362
|
+
showFirst,
|
|
363
|
+
sum,
|
|
364
|
+
};
|
|
365
|
+
return data;
|
|
366
|
+
}
|
|
367
|
+
exports.getAssetsDistribution = getAssetsDistribution;
|
|
368
|
+
const assetsDistributionNotAvailable = {
|
|
369
|
+
isAvailable: false,
|
|
370
|
+
list: [],
|
|
371
|
+
showFirst: 0,
|
|
372
|
+
sum: 0,
|
|
373
|
+
};
|
|
374
|
+
/**
|
|
375
|
+
* retrieve the list of market datapoints to use for the Market Performance feature
|
|
376
|
+
* the data is sorted from best performer to worst performer.
|
|
377
|
+
* it possibly filters out any invalid data, therefore the list can be empty.
|
|
378
|
+
*/
|
|
379
|
+
function makePerformanceMarketAssetsList(
|
|
380
|
+
/**
|
|
381
|
+
* the countervalue state to use to calculate the performance.
|
|
382
|
+
*/
|
|
383
|
+
cvState,
|
|
384
|
+
/**
|
|
385
|
+
* countervalue is the currency to use as reference to calculate the performance.
|
|
386
|
+
*/
|
|
387
|
+
countervalue,
|
|
388
|
+
/**
|
|
389
|
+
* assets is the list of assets to consider. it is expected for them to have data loaded in cvState.
|
|
390
|
+
*/
|
|
391
|
+
assets,
|
|
392
|
+
/**
|
|
393
|
+
* referenceDate is the date to use as reference to calculate the performance.
|
|
394
|
+
*/
|
|
395
|
+
referenceDate) {
|
|
396
|
+
const list = [];
|
|
397
|
+
const supported = new Set((0, support_1.listSupportedCurrencies)());
|
|
398
|
+
for (const asset of assets) {
|
|
399
|
+
if (asset.type === "CryptoCurrency") {
|
|
400
|
+
if (!supported.has(asset))
|
|
401
|
+
continue;
|
|
402
|
+
}
|
|
403
|
+
else if (asset.type === "TokenCurrency") {
|
|
404
|
+
if (!supported.has(asset.parentCurrency))
|
|
405
|
+
continue;
|
|
406
|
+
}
|
|
407
|
+
const from = asset;
|
|
408
|
+
const to = countervalue;
|
|
409
|
+
const value = Math.pow(10, from.units[0].magnitude);
|
|
410
|
+
const referenceValue = (0, logic_1.calculate)(cvState, { from, to, value, date: referenceDate });
|
|
411
|
+
const currentValue = (0, logic_1.calculate)(cvState, { from, to, value });
|
|
412
|
+
if (referenceValue && currentValue) {
|
|
413
|
+
const change = meaningfulPercentage(currentValue - referenceValue, referenceValue);
|
|
414
|
+
if (change) {
|
|
415
|
+
list.push({
|
|
416
|
+
currency: asset,
|
|
417
|
+
change,
|
|
418
|
+
currentValue,
|
|
419
|
+
referenceValue,
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
list.sort((a, b) => b.change - a.change);
|
|
425
|
+
return list;
|
|
426
|
+
}
|
|
427
|
+
exports.makePerformanceMarketAssetsList = makePerformanceMarketAssetsList;
|
|
428
|
+
//# sourceMappingURL=portfolio.js.map
|