@sonarwatch/portfolio-core 0.0.3

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 (126) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +11 -0
  3. package/package.json +17 -0
  4. package/src/Address.d.ts +7 -0
  5. package/src/Address.js +10 -0
  6. package/src/Address.js.map +1 -0
  7. package/src/Cache.d.ts +17 -0
  8. package/src/Cache.js +82 -0
  9. package/src/Cache.js.map +1 -0
  10. package/src/Client.d.ts +7 -0
  11. package/src/Client.js +3 -0
  12. package/src/Client.js.map +1 -0
  13. package/src/Context.d.ts +6 -0
  14. package/src/Context.js +3 -0
  15. package/src/Context.js.map +1 -0
  16. package/src/Fetcher.d.ts +10 -0
  17. package/src/Fetcher.js +10 -0
  18. package/src/Fetcher.js.map +1 -0
  19. package/src/Job.d.ts +6 -0
  20. package/src/Job.js +3 -0
  21. package/src/Job.js.map +1 -0
  22. package/src/Network.d.ts +37 -0
  23. package/src/Network.js +12 -0
  24. package/src/Network.js.map +1 -0
  25. package/src/Platform.d.ts +10 -0
  26. package/src/Platform.js +3 -0
  27. package/src/Platform.js.map +1 -0
  28. package/src/Portfolio.d.ts +116 -0
  29. package/src/Portfolio.js +15 -0
  30. package/src/Portfolio.js.map +1 -0
  31. package/src/Storage.d.ts +18 -0
  32. package/src/Storage.js +51 -0
  33. package/src/Storage.js.map +1 -0
  34. package/src/TokenList.d.ts +23 -0
  35. package/src/TokenList.js +4 -0
  36. package/src/TokenList.js.map +1 -0
  37. package/src/TokenPrice.d.ts +36 -0
  38. package/src/TokenPrice.js +70 -0
  39. package/src/TokenPrice.js.map +1 -0
  40. package/src/TokenPriceCache.d.ts +13 -0
  41. package/src/TokenPriceCache.js +125 -0
  42. package/src/TokenPriceCache.js.map +1 -0
  43. package/src/UsdValue.d.ts +1 -0
  44. package/src/UsdValue.js +3 -0
  45. package/src/UsdValue.js.map +1 -0
  46. package/src/Yield.d.ts +8 -0
  47. package/src/Yield.js +22 -0
  48. package/src/Yield.js.map +1 -0
  49. package/src/constants/addresses.d.ts +13 -0
  50. package/src/constants/addresses.js +17 -0
  51. package/src/constants/addresses.js.map +1 -0
  52. package/src/constants/index.d.ts +4 -0
  53. package/src/constants/index.js +10 -0
  54. package/src/constants/index.js.map +1 -0
  55. package/src/constants/networks.d.ts +8 -0
  56. package/src/constants/networks.js +119 -0
  57. package/src/constants/networks.js.map +1 -0
  58. package/src/constants/platforms.d.ts +5 -0
  59. package/src/constants/platforms.js +24 -0
  60. package/src/constants/platforms.js.map +1 -0
  61. package/src/errors/AdapterFetchError.d.ts +6 -0
  62. package/src/errors/AdapterFetchError.js +13 -0
  63. package/src/errors/AdapterFetchError.js.map +1 -0
  64. package/src/errors/AdapterFetchTimedOutError.d.ts +6 -0
  65. package/src/errors/AdapterFetchTimedOutError.js +13 -0
  66. package/src/errors/AdapterFetchTimedOutError.js.map +1 -0
  67. package/src/errors/AdapterRefreshError.d.ts +6 -0
  68. package/src/errors/AdapterRefreshError.js +13 -0
  69. package/src/errors/AdapterRefreshError.js.map +1 -0
  70. package/src/errors/AdapterRefreshTimedOutError.d.ts +6 -0
  71. package/src/errors/AdapterRefreshTimedOutError.js +13 -0
  72. package/src/errors/AdapterRefreshTimedOutError.js.map +1 -0
  73. package/src/errors/PortfolioError.d.ts +12 -0
  74. package/src/errors/PortfolioError.js +27 -0
  75. package/src/errors/PortfolioError.js.map +1 -0
  76. package/src/errors/index.d.ts +5 -0
  77. package/src/errors/index.js +9 -0
  78. package/src/errors/index.js.map +1 -0
  79. package/src/helpers.d.ts +1 -0
  80. package/src/helpers.js +8 -0
  81. package/src/helpers.js.map +1 -0
  82. package/src/index.d.ts +17 -0
  83. package/src/index.js +21 -0
  84. package/src/index.js.map +1 -0
  85. package/src/utils/addressValid.d.ts +11 -0
  86. package/src/utils/addressValid.js +76 -0
  87. package/src/utils/addressValid.js.map +1 -0
  88. package/src/utils/compareName.d.ts +1 -0
  89. package/src/utils/compareName.js +18 -0
  90. package/src/utils/compareName.js.map +1 -0
  91. package/src/utils/compareUsdValue.d.ts +2 -0
  92. package/src/utils/compareUsdValue.js +14 -0
  93. package/src/utils/compareUsdValue.js.map +1 -0
  94. package/src/utils/formatAddress.d.ts +6 -0
  95. package/src/utils/formatAddress.js +42 -0
  96. package/src/utils/formatAddress.js.map +1 -0
  97. package/src/utils/formatTokenAddress.d.ts +6 -0
  98. package/src/utils/formatTokenAddress.js +41 -0
  99. package/src/utils/formatTokenAddress.js.map +1 -0
  100. package/src/utils/formatTokenPrice.d.ts +2 -0
  101. package/src/utils/formatTokenPrice.js +13 -0
  102. package/src/utils/formatTokenPrice.js.map +1 -0
  103. package/src/utils/formatUniTokenInfo.d.ts +3 -0
  104. package/src/utils/formatUniTokenInfo.js +9 -0
  105. package/src/utils/formatUniTokenInfo.js.map +1 -0
  106. package/src/utils/getAssetsFromElement.d.ts +2 -0
  107. package/src/utils/getAssetsFromElement.js +23 -0
  108. package/src/utils/getAssetsFromElement.js.map +1 -0
  109. package/src/utils/getAssetsFromElements.d.ts +2 -0
  110. package/src/utils/getAssetsFromElements.js +9 -0
  111. package/src/utils/getAssetsFromElements.js.map +1 -0
  112. package/src/utils/getElementLendingValues.d.ts +8 -0
  113. package/src/utils/getElementLendingValues.js +33 -0
  114. package/src/utils/getElementLendingValues.js.map +1 -0
  115. package/src/utils/index.d.ts +13 -0
  116. package/src/utils/index.js +17 -0
  117. package/src/utils/index.js.map +1 -0
  118. package/src/utils/networkIdIncluded.d.ts +3 -0
  119. package/src/utils/networkIdIncluded.js +13 -0
  120. package/src/utils/networkIdIncluded.js.map +1 -0
  121. package/src/utils/sortPortfolioElement.d.ts +5 -0
  122. package/src/utils/sortPortfolioElement.js +46 -0
  123. package/src/utils/sortPortfolioElement.js.map +1 -0
  124. package/src/utils/sortPortfolioElements.d.ts +2 -0
  125. package/src/utils/sortPortfolioElements.js +12 -0
  126. package/src/utils/sortPortfolioElements.js.map +1 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,13 @@
1
+ # Changelog
2
+
3
+ This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
+
5
+ ## [0.0.3](https://github.com/sonarwatch/portfolio/compare/core-0.0.2...core-0.0.3) (2023-07-04)
6
+
7
+
8
+
9
+ ## [0.0.2](https://github.com/sonarwatch/portfolio/compare/core-0.0.1...core-0.0.2) (2023-07-04)
10
+
11
+
12
+
13
+ ## 0.0.1 (2023-07-04)
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # core
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build core` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test core` to execute the unit tests via [Jest](https://jestjs.io).
package/package.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@sonarwatch/portfolio-core",
3
+ "version": "0.0.3",
4
+ "type": "commonjs",
5
+ "dependencies": {
6
+ "@ethersproject/address": "^5.7.0",
7
+ "@ethersproject/bytes": "^5.7.0",
8
+ "@solana/web3.js": "^1.77.3",
9
+ "bitcoin-address-validation": "^2.2.1",
10
+ "unstorage": "^1.7.0"
11
+ },
12
+ "peerDependencies": {
13
+ "tslib": "2.5.0"
14
+ },
15
+ "main": "./src/index.js",
16
+ "types": "./src/index.d.ts"
17
+ }
@@ -0,0 +1,7 @@
1
+ export declare const AddressSystem: {
2
+ readonly solana: "solana";
3
+ readonly bitcoin: "bitcoin";
4
+ readonly evm: "evm";
5
+ readonly move: "move";
6
+ };
7
+ export type AddressSystemType = (typeof AddressSystem)[keyof typeof AddressSystem];
package/src/Address.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddressSystem = void 0;
4
+ exports.AddressSystem = {
5
+ solana: 'solana',
6
+ bitcoin: 'bitcoin',
7
+ evm: 'evm',
8
+ move: 'move',
9
+ };
10
+ //# sourceMappingURL=Address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Address.js","sourceRoot":"","sources":["../../../../packages/core/src/Address.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IAC3B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;CACJ,CAAC"}
package/src/Cache.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ import { StorageValue, Driver } from 'unstorage';
2
+ import { NetworkIdType } from './Network';
3
+ export type TransactionOptions = {
4
+ prefix: string;
5
+ networkId?: NetworkIdType;
6
+ };
7
+ export declare class Cache {
8
+ private readonly storage;
9
+ constructor(driver: Driver);
10
+ has(key: string, opts: TransactionOptions): Promise<boolean>;
11
+ get<K extends StorageValue>(key: string, opts: TransactionOptions): Promise<K | undefined>;
12
+ set<K extends StorageValue>(key: string, value: K, opts: TransactionOptions): Promise<void>;
13
+ remove(key: string, opts: TransactionOptions): Promise<void>;
14
+ keys(opts: TransactionOptions): Promise<string[]>;
15
+ dispose(): Promise<void>;
16
+ }
17
+ export declare function getCache(): Cache;
package/src/Cache.js ADDED
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCache = exports.Cache = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const unstorage_1 = require("unstorage");
6
+ const fs_1 = tslib_1.__importDefault(require("unstorage/drivers/fs"));
7
+ const mongodb_1 = tslib_1.__importDefault(require("unstorage/drivers/mongodb"));
8
+ const redis_1 = tslib_1.__importDefault(require("unstorage/drivers/redis"));
9
+ class Cache {
10
+ constructor(driver) {
11
+ this.storage = (0, unstorage_1.createStorage)({
12
+ driver,
13
+ });
14
+ }
15
+ has(key, opts) {
16
+ const fullKey = getFullKey(key, opts);
17
+ return this.storage.hasItem(fullKey);
18
+ }
19
+ get(key, opts) {
20
+ const fullKey = getFullKey(key, opts);
21
+ return this.storage.getItem(fullKey);
22
+ }
23
+ set(key, value, opts) {
24
+ const fullKey = getFullKey(key, opts);
25
+ return this.storage.setItem(fullKey, value);
26
+ }
27
+ remove(key, opts) {
28
+ const fullKey = getFullKey(key, opts);
29
+ return this.storage.removeItem(fullKey);
30
+ }
31
+ keys(opts) {
32
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
33
+ const fullBase = getFullBase(opts);
34
+ return (yield this.storage.getKeys(fullBase)).map((s) => s.substring(fullBase.length));
35
+ });
36
+ }
37
+ dispose() {
38
+ return this.storage.dispose();
39
+ }
40
+ }
41
+ exports.Cache = Cache;
42
+ function getFullKey(key, opts) {
43
+ const { networkId, prefix } = opts;
44
+ const networkIdKeyPrefix = networkId ? `/${networkId.toString()}` : '';
45
+ return `/${prefix}${networkIdKeyPrefix}/${key}`;
46
+ }
47
+ function getFullBase(opts) {
48
+ const { networkId, prefix } = opts;
49
+ const networkIdBasePrefix = networkId ? `${networkId.toString()}:` : '';
50
+ const fullBase = `${prefix}:${networkIdBasePrefix}`;
51
+ return fullBase;
52
+ }
53
+ function getDriver() {
54
+ switch (process.env['CACHE_DRIVER']) {
55
+ case 'filesystem':
56
+ return (0, fs_1.default)({
57
+ base: process.env['CACHE_FILESYSTEM_BASE']
58
+ ? `${process.env['CACHE_FILESYSTEM_BASE']}/main`
59
+ : './cache/main',
60
+ });
61
+ case 'mongodb':
62
+ return (0, mongodb_1.default)({
63
+ connectionString: process.env['CACHE_MONGODB_CONNECTION'] ||
64
+ 'mongodb://localhost:27017/',
65
+ databaseName: process.env['CACHE_MONGODB_DATABASE'] || 'portfolio',
66
+ collectionName: 'main',
67
+ });
68
+ case 'redis':
69
+ return (0, redis_1.default)({
70
+ url: process.env['CACHE_REDIS_URL'] || '127.0.0.1:6379',
71
+ tls: process.env['CACHE_REDIS_TLS'] === 'true' ? {} : undefined,
72
+ base: 'main',
73
+ });
74
+ default:
75
+ return (0, fs_1.default)({ base: './cache/main' });
76
+ }
77
+ }
78
+ function getCache() {
79
+ return new Cache(getDriver());
80
+ }
81
+ exports.getCache = getCache;
82
+ //# sourceMappingURL=Cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../../packages/core/src/Cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type RpcEndpoint = {
2
+ url: string;
3
+ basicAuth?: {
4
+ username: string;
5
+ password: string;
6
+ };
7
+ };
package/src/Client.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../../../../packages/core/src/Client.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { Cache } from './Cache';
2
+ import { TokenPriceCache } from './TokenPriceCache';
3
+ export type Context = {
4
+ cache: Cache;
5
+ tokenPriceCache: TokenPriceCache;
6
+ };
package/src/Context.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../../../packages/core/src/Context.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { Context } from './Context';
2
+ import { NetworkIdType } from './Network';
3
+ import { PortfolioElement } from './Portfolio';
4
+ export type FetcherExecutor = (owner: string, context: Context) => Promise<PortfolioElement[]>;
5
+ export type Fetcher = {
6
+ id: string;
7
+ networkId: NetworkIdType;
8
+ executor: FetcherExecutor;
9
+ };
10
+ export declare function runFetcherExecutor(fetcher: Fetcher, owner: string, context: Context): Promise<PortfolioElement[]>;
package/src/Fetcher.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runFetcherExecutor = void 0;
4
+ const utils_1 = require("./utils");
5
+ function runFetcherExecutor(fetcher, owner, context) {
6
+ const fOwner = (0, utils_1.formatAddress)(owner, fetcher.networkId);
7
+ return fetcher.executor(fOwner, context);
8
+ }
9
+ exports.runFetcherExecutor = runFetcherExecutor;
10
+ //# sourceMappingURL=Fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fetcher.js","sourceRoot":"","sources":["../../../../packages/core/src/Fetcher.ts"],"names":[],"mappings":";;;AAGA,mCAAwC;AAYxC,SAAgB,kBAAkB,CAChC,OAAgB,EAChB,KAAa,EACb,OAAgB;IAEhB,MAAM,MAAM,GAAG,IAAA,qBAAa,EAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAPD,gDAOC"}
package/src/Job.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { Context } from './Context';
2
+ export type JobExecutor = (context: Context) => Promise<void>;
3
+ export type Job = {
4
+ id: string;
5
+ executor: JobExecutor;
6
+ };
package/src/Job.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Job.js.map
package/src/Job.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Job.js","sourceRoot":"","sources":["../../../../packages/core/src/Job.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ import { AddressSystemType } from './Address';
2
+ export declare const NetworkId: {
3
+ readonly bitcoin: "bitcoin";
4
+ readonly solana: "solana";
5
+ readonly ethereum: "ethereum";
6
+ readonly avalanche: "avalanche";
7
+ readonly aptos: "aptos";
8
+ readonly sui: "sui";
9
+ };
10
+ export type NetworkIdType = (typeof NetworkId)[keyof typeof NetworkId];
11
+ export type MoveNetworkIdType = typeof NetworkId.aptos | typeof NetworkId.sui;
12
+ export type EvmNetworkIdType = typeof NetworkId.ethereum | typeof NetworkId.avalanche;
13
+ export type Network = {
14
+ id: NetworkIdType;
15
+ name: string;
16
+ addressSystem: AddressSystemType;
17
+ chainId: number;
18
+ native: {
19
+ address: string;
20
+ decimals: number;
21
+ coingeckoId: string;
22
+ };
23
+ nativeWrapped: {
24
+ address: string;
25
+ decimals: number;
26
+ coingeckoId: string;
27
+ } | null;
28
+ isLive: boolean;
29
+ coingeckoPlatformId: string;
30
+ tokenListUrl: string;
31
+ description?: string;
32
+ website?: string;
33
+ image?: string;
34
+ discord?: string;
35
+ twitter?: string;
36
+ medium?: string;
37
+ };
package/src/Network.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NetworkId = void 0;
4
+ exports.NetworkId = {
5
+ bitcoin: 'bitcoin',
6
+ solana: 'solana',
7
+ ethereum: 'ethereum',
8
+ avalanche: 'avalanche',
9
+ aptos: 'aptos',
10
+ sui: 'sui',
11
+ };
12
+ //# sourceMappingURL=Network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Network.js","sourceRoot":"","sources":["../../../../packages/core/src/Network.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAAG;IACvB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type Platform = {
2
+ id: string;
3
+ name: string;
4
+ description?: string;
5
+ image?: string;
6
+ discord?: string;
7
+ twitter?: string;
8
+ website?: string;
9
+ medium?: string;
10
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Platform.js","sourceRoot":"","sources":["../../../../packages/core/src/Platform.ts"],"names":[],"mappings":""}
@@ -0,0 +1,116 @@
1
+ import { UsdValue } from './UsdValue';
2
+ import { NetworkIdType } from './Network';
3
+ import { Yield } from './Yield';
4
+ export declare const PortfolioAssetType: {
5
+ readonly generic: "generic";
6
+ readonly token: "token";
7
+ readonly collectible: "collectible";
8
+ };
9
+ export type PortfolioAssetTypeType = (typeof PortfolioAssetType)[keyof typeof PortfolioAssetType];
10
+ export type PortfolioElementLabel = 'Wallet' | 'Staked' | 'LiquidityPool' | 'Farming' | 'Lending' | 'Vesting' | 'Deposit' | 'Rewards';
11
+ export declare const PortfolioElementType: {
12
+ readonly single: "single";
13
+ readonly multiple: "multiple";
14
+ readonly liquidity: "liquidity";
15
+ readonly borrowlend: "borrowlend";
16
+ };
17
+ export type PortfolioElementTypeType = (typeof PortfolioElementType)[keyof typeof PortfolioElementType];
18
+ export type PortfolioAssetCommon = {
19
+ networkId: NetworkIdType;
20
+ type: PortfolioAssetTypeType;
21
+ value: UsdValue;
22
+ };
23
+ export type PortfolioAssetGenericData = {
24
+ name?: string;
25
+ amount: number;
26
+ };
27
+ export type PortfolioAssetGeneric = PortfolioAssetCommon & {
28
+ type: 'generic';
29
+ data: PortfolioAssetGenericData;
30
+ };
31
+ export type PortfolioAssetTokenData = {
32
+ address: string;
33
+ amount: number;
34
+ price: UsdValue;
35
+ };
36
+ export type PortfolioAssetToken = PortfolioAssetCommon & {
37
+ type: 'token';
38
+ data: PortfolioAssetTokenData;
39
+ };
40
+ export type PortfolioAssetCollectibleData = {
41
+ address: string;
42
+ amount: number;
43
+ price: UsdValue;
44
+ name?: string;
45
+ description?: string;
46
+ imageUri?: string;
47
+ dataUri?: string;
48
+ collection?: {
49
+ id: string;
50
+ name: string;
51
+ floorPrice: UsdValue;
52
+ };
53
+ };
54
+ export type PortfolioAssetCollectible = PortfolioAssetCommon & {
55
+ type: 'collectible';
56
+ data: PortfolioAssetCollectibleData;
57
+ };
58
+ export type PortfolioAsset = PortfolioAssetGeneric | PortfolioAssetToken | PortfolioAssetCollectible;
59
+ export type ProxyInfo = {
60
+ id: string;
61
+ address: string;
62
+ };
63
+ export type PortfolioElementCommon = {
64
+ networkId: NetworkIdType;
65
+ platformId: string;
66
+ value: UsdValue;
67
+ type: PortfolioElementTypeType;
68
+ label: PortfolioElementLabel;
69
+ tags?: string[];
70
+ proxyInfo?: ProxyInfo;
71
+ };
72
+ export type PortfolioElementSingleData = {
73
+ asset: PortfolioAsset;
74
+ };
75
+ export type PortfolioElementSingle = PortfolioElementCommon & {
76
+ type: 'single';
77
+ data: PortfolioElementSingleData;
78
+ };
79
+ export type PortfolioElementMultipleData = {
80
+ assets: PortfolioAsset[];
81
+ };
82
+ export type PortfolioElementMultiple = PortfolioElementCommon & {
83
+ type: 'multiple';
84
+ data: PortfolioElementMultipleData;
85
+ };
86
+ export type PortfolioLiquidity = {
87
+ assets: PortfolioAsset[];
88
+ assetsValue: UsdValue;
89
+ rewardAssets: PortfolioAsset[];
90
+ rewardAssetsValue: UsdValue;
91
+ value: UsdValue;
92
+ yields: Yield[];
93
+ };
94
+ export type PortfolioElementLiquidityData = {
95
+ liquidities: PortfolioLiquidity[];
96
+ };
97
+ export type PortfolioElementLiquidity = PortfolioElementCommon & {
98
+ type: 'liquidity';
99
+ data: PortfolioElementLiquidityData;
100
+ };
101
+ export type PortfolioElementBorrowLendData = {
102
+ value: UsdValue;
103
+ suppliedAssets: PortfolioAsset[];
104
+ borrowedAssets: PortfolioAsset[];
105
+ rewardAssets: PortfolioAsset[];
106
+ suppliedValue: UsdValue;
107
+ borrowedValue: UsdValue;
108
+ suppliedYields: Yield[][];
109
+ borrowedYields: Yield[][];
110
+ collateralRatio: number | null;
111
+ };
112
+ export type PortfolioElementBorrowLend = PortfolioElementCommon & {
113
+ type: 'borrowlend';
114
+ data: PortfolioElementBorrowLendData;
115
+ };
116
+ export type PortfolioElement = PortfolioElementSingle | PortfolioElementMultiple | PortfolioElementLiquidity | PortfolioElementBorrowLend;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PortfolioElementType = exports.PortfolioAssetType = void 0;
4
+ exports.PortfolioAssetType = {
5
+ generic: 'generic',
6
+ token: 'token',
7
+ collectible: 'collectible',
8
+ };
9
+ exports.PortfolioElementType = {
10
+ single: 'single',
11
+ multiple: 'multiple',
12
+ liquidity: 'liquidity',
13
+ borrowlend: 'borrowlend',
14
+ };
15
+ //# sourceMappingURL=Portfolio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Portfolio.js","sourceRoot":"","sources":["../../../../packages/core/src/Portfolio.ts"],"names":[],"mappings":";;;AAIa,QAAA,kBAAkB,GAAG;IAChC,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;CAClB,CAAC;AAcE,QAAA,oBAAoB,GAAG;IAClC,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;CAChB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { StorageValue, Driver } from 'unstorage';
2
+ import { NetworkIdType } from './Network';
3
+ export type TransactionOptions = Record<string, any> & {
4
+ networkId?: NetworkIdType;
5
+ prefix?: string;
6
+ };
7
+ export declare class Storage {
8
+ private readonly storage;
9
+ constructor(driver?: Driver);
10
+ hasItem(key: string, opts?: TransactionOptions): Promise<boolean>;
11
+ getItem(key: string, opts?: TransactionOptions): Promise<StorageValue>;
12
+ setItem(key: string, value: StorageValue, opts?: TransactionOptions): Promise<void>;
13
+ removeItem(key: string, opts?: TransactionOptions & {
14
+ removeMeta?: boolean;
15
+ }): Promise<void>;
16
+ getKeys(opts?: TransactionOptions): Promise<string[]>;
17
+ dispose(): Promise<void>;
18
+ }
package/src/Storage.js ADDED
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Storage = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const unstorage_1 = require("unstorage");
6
+ const memory_1 = tslib_1.__importDefault(require("unstorage/drivers/memory"));
7
+ class Storage {
8
+ constructor(driver = (0, memory_1.default)()) {
9
+ this.storage = (0, unstorage_1.createStorage)({
10
+ driver,
11
+ });
12
+ }
13
+ hasItem(key, opts) {
14
+ const trueKey = getTrueKey(key, opts === null || opts === void 0 ? void 0 : opts.prefix, opts === null || opts === void 0 ? void 0 : opts.networkId);
15
+ return this.storage.hasItem(trueKey, opts);
16
+ }
17
+ getItem(key, opts) {
18
+ const trueKey = getTrueKey(key, opts === null || opts === void 0 ? void 0 : opts.prefix, opts === null || opts === void 0 ? void 0 : opts.networkId);
19
+ return this.storage.getItem(trueKey, opts);
20
+ }
21
+ setItem(key, value, opts) {
22
+ const trueKey = getTrueKey(key, opts === null || opts === void 0 ? void 0 : opts.prefix, opts === null || opts === void 0 ? void 0 : opts.networkId);
23
+ return this.storage.setItem(trueKey, value, opts);
24
+ }
25
+ removeItem(key, opts) {
26
+ const trueKey = getTrueKey(key, opts === null || opts === void 0 ? void 0 : opts.prefix, opts === null || opts === void 0 ? void 0 : opts.networkId);
27
+ return this.storage.removeItem(trueKey, opts);
28
+ }
29
+ getKeys(opts) {
30
+ const trueBase = getTrueBase(opts === null || opts === void 0 ? void 0 : opts.prefix, opts === null || opts === void 0 ? void 0 : opts.networkId);
31
+ return this.storage.getKeys(trueBase);
32
+ }
33
+ dispose() {
34
+ return this.storage.dispose();
35
+ }
36
+ }
37
+ exports.Storage = Storage;
38
+ function getTrueKey(key, prefix, networkId) {
39
+ const networkIdKeyPrefix = networkId ? `/${networkId.toString()}` : '';
40
+ const keyPrefix = prefix !== undefined ? `/${prefix}` : '';
41
+ return `${networkIdKeyPrefix}${keyPrefix}/${key}`;
42
+ }
43
+ function getTrueBase(prefix, networkId) {
44
+ const networkIdBasePrefix = networkId ? `${networkId.toString()}:` : '';
45
+ const basePrefix = prefix ? `${prefix}:` : '';
46
+ const trueBase = `${networkIdBasePrefix}${basePrefix}`;
47
+ if (trueBase === '')
48
+ return undefined;
49
+ return trueBase;
50
+ }
51
+ //# sourceMappingURL=Storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Storage.js","sourceRoot":"","sources":["../../../../packages/core/src/Storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export type UniTokenInfoExtensionValue = string | number | boolean | null | undefined;
2
+ export interface UniTokenInfo {
3
+ readonly chainId: number;
4
+ readonly address: string;
5
+ readonly name: string;
6
+ readonly decimals: number;
7
+ readonly symbol: string;
8
+ readonly logoURI?: string;
9
+ readonly tags?: string[];
10
+ readonly extensions?: Record<string, UniTokenInfoExtensionValue>;
11
+ }
12
+ export type UniTokenList = {
13
+ name: string;
14
+ logoURI?: string;
15
+ keywords: string[];
16
+ timestamp: string;
17
+ tokens: UniTokenInfo[];
18
+ version: {
19
+ major: number;
20
+ minor: number;
21
+ patch: number;
22
+ };
23
+ };
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Based on https://github.com/Uniswap/token-lists
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=TokenList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenList.js","sourceRoot":"","sources":["../../../../packages/core/src/TokenList.ts"],"names":[],"mappings":";AAAA,kDAAkD"}
@@ -0,0 +1,36 @@
1
+ import { NetworkIdType } from './Network';
2
+ export type TokenPriceUnderlying = {
3
+ networkId: NetworkIdType;
4
+ address: string;
5
+ price: number;
6
+ decimals: number;
7
+ amountPerLp: number;
8
+ };
9
+ export type TokenPriceSource = {
10
+ id: string;
11
+ weight: number;
12
+ address: string;
13
+ networkId: NetworkIdType;
14
+ isBase: boolean;
15
+ decimals: number;
16
+ price: number;
17
+ underlyings?: TokenPriceUnderlying[];
18
+ timestamp: number;
19
+ };
20
+ export type TokenPrice = {
21
+ address: string;
22
+ networkId: NetworkIdType;
23
+ isBase: boolean;
24
+ decimals: number;
25
+ price: number;
26
+ underlyings?: TokenPriceUnderlying[];
27
+ sources: TokenPriceSource[];
28
+ timestamp: number;
29
+ };
30
+ export type TokenPriceCached = {
31
+ tokenPrice: TokenPrice;
32
+ sources: TokenPriceSource[];
33
+ };
34
+ export declare function tokenPriceFromSources(sources: TokenPriceSource[]): TokenPrice | undefined;
35
+ export declare function pushTokenPriceSource(sources: TokenPriceSource[], source: TokenPriceSource): TokenPriceSource[] | undefined;
36
+ export declare function updateTokenPriceSources(sources: TokenPriceSource[]): TokenPriceSource[] | undefined;