@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.
@@ -1,4 +1,4 @@
1
1
  {
2
- "entry": ["src/logic.ts", "src/api/index.ts", "src/types.ts"],
2
+ "entry": ["src/logic.ts", "src/api/index.ts", "src/types.ts", "src/portfolio.ts"],
3
3
  "ignoreUnused": ["@ledgerhq/cryptoassets"]
4
4
  }
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
@@ -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;AAI7D,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;AAGD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,QAAQ,GACrB,YAAY,EAAE,CAiBhB;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"}
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 inferTrackingPairForAccounts(accounts, countervalue) {
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 resolveTrackingPairs((0, helpers_1.flattenAccounts)(accounts)
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"}
@@ -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