@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
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateTokenPriceSources = exports.pushTokenPriceSource = exports.tokenPriceFromSources = void 0;
4
+ const helpers_1 = require("./helpers");
5
+ const SOURCE_TTL = 60 * 60 * 1000;
6
+ const MAX_N_SOURCES = 10;
7
+ const coingeckoSourceId = 'coingecko';
8
+ function tokenPriceFromSources(sources) {
9
+ const updatedSources = updateTokenPriceSources(sources);
10
+ if (!updatedSources || updatedSources.length === 0)
11
+ return undefined;
12
+ const latestSource = updatedSources.reduce((prev, current) => prev.timestamp > current.timestamp ? prev : current);
13
+ let price;
14
+ const coingeckoSource = updatedSources.find((source) => source.id === coingeckoSourceId);
15
+ if (coingeckoSource)
16
+ price = coingeckoSource.price;
17
+ else {
18
+ const [priceSum, weightSum] = updatedSources.reduce(([cPriceSum, cWeightSum], source) => [
19
+ cPriceSum + source.price * source.weight,
20
+ cWeightSum + source.weight,
21
+ ], [0, 0]);
22
+ price = weightSum === 0 ? 0 : priceSum / weightSum;
23
+ }
24
+ return {
25
+ address: latestSource.address,
26
+ networkId: latestSource.networkId,
27
+ isBase: latestSource.isBase,
28
+ decimals: latestSource.decimals,
29
+ price,
30
+ underlyings: latestSource.underlyings,
31
+ timestamp: Date.now(),
32
+ sources: updatedSources,
33
+ };
34
+ }
35
+ exports.tokenPriceFromSources = tokenPriceFromSources;
36
+ function pushTokenPriceSource(sources, source) {
37
+ // Clone sources
38
+ const newSources = (0, helpers_1.deepClone)(sources);
39
+ // Push source
40
+ const index = newSources.findIndex((s) => s.id === source.id);
41
+ if (index === -1)
42
+ newSources.push(source);
43
+ else
44
+ newSources[index] = source;
45
+ return updateTokenPriceSources(newSources);
46
+ }
47
+ exports.pushTokenPriceSource = pushTokenPriceSource;
48
+ function updateTokenPriceSources(sources) {
49
+ if (sources.length === 0)
50
+ return undefined;
51
+ // Clone sources
52
+ let newSources = (0, helpers_1.deepClone)(sources);
53
+ // Remove too old sources
54
+ const tsThreshold = Date.now() - SOURCE_TTL;
55
+ newSources = newSources.filter((source) => source.timestamp > tsThreshold);
56
+ if (newSources.length === 0)
57
+ return undefined;
58
+ // Keep only MAX_N_SOURCES
59
+ newSources.sort((sourceA, sourceB) => {
60
+ if (sourceA.id === coingeckoSourceId)
61
+ return -1;
62
+ if (sourceB.id === coingeckoSourceId)
63
+ return 1;
64
+ return sourceB.weight - sourceA.weight;
65
+ });
66
+ newSources = newSources.slice(0, MAX_N_SOURCES);
67
+ return newSources;
68
+ }
69
+ exports.updateTokenPriceSources = updateTokenPriceSources;
70
+ //# sourceMappingURL=TokenPrice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenPrice.js","sourceRoot":"","sources":["../../../../packages/core/src/TokenPrice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Driver } from 'unstorage';
2
+ import { NetworkIdType } from './Network';
3
+ import { TokenPrice, TokenPriceSource } from './TokenPrice';
4
+ export declare class TokenPriceCache {
5
+ private readonly cache;
6
+ constructor(driver: Driver);
7
+ has(address: string, networkId: NetworkIdType): Promise<boolean>;
8
+ get(address: string, networkId: NetworkIdType): Promise<TokenPrice | undefined>;
9
+ refresh(address: string, networkId: NetworkIdType): Promise<void>;
10
+ refreshAll(networkId: NetworkIdType): Promise<void>;
11
+ set(source: TokenPriceSource): Promise<void>;
12
+ }
13
+ export declare function getTokenPriceCache(): TokenPriceCache;
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTokenPriceCache = exports.TokenPriceCache = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const fs_1 = tslib_1.__importDefault(require("unstorage/drivers/fs"));
6
+ const mongodb_1 = tslib_1.__importDefault(require("unstorage/drivers/mongodb"));
7
+ const redis_1 = tslib_1.__importDefault(require("unstorage/drivers/redis"));
8
+ const Cache_1 = require("./Cache");
9
+ const TokenPrice_1 = require("./TokenPrice");
10
+ const TOKEN_PRICE_TIMEOUT = 60 * 1000;
11
+ const TOKEN_PRICE_PREFIX = 'tokenprice';
12
+ class TokenPriceCache {
13
+ constructor(driver) {
14
+ this.cache = new Cache_1.Cache(driver);
15
+ }
16
+ has(address, networkId) {
17
+ return this.cache.has(address, { prefix: TOKEN_PRICE_PREFIX, networkId });
18
+ }
19
+ get(address, networkId) {
20
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
+ const tokenPrice = yield this.cache.get(address, {
22
+ prefix: TOKEN_PRICE_PREFIX,
23
+ networkId,
24
+ });
25
+ // Refresh tokenPrice is old
26
+ if (tokenPrice && Date.now() - TOKEN_PRICE_TIMEOUT > tokenPrice.timestamp)
27
+ this.refresh(address, networkId);
28
+ return tokenPrice;
29
+ });
30
+ }
31
+ refresh(address, networkId) {
32
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
33
+ const cachedTokenPrice = yield this.cache.get(address, {
34
+ prefix: TOKEN_PRICE_PREFIX,
35
+ networkId,
36
+ });
37
+ if (!cachedTokenPrice)
38
+ return;
39
+ const newTokenPrice = (0, TokenPrice_1.tokenPriceFromSources)(cachedTokenPrice.sources);
40
+ if (!newTokenPrice) {
41
+ yield this.cache.remove(address, {
42
+ prefix: TOKEN_PRICE_PREFIX,
43
+ networkId,
44
+ });
45
+ return;
46
+ }
47
+ yield this.cache.set(newTokenPrice.address, newTokenPrice, {
48
+ prefix: TOKEN_PRICE_PREFIX,
49
+ networkId: newTokenPrice.networkId,
50
+ });
51
+ });
52
+ }
53
+ refreshAll(networkId) {
54
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
55
+ const addresses = yield this.cache.keys({
56
+ prefix: TOKEN_PRICE_PREFIX,
57
+ networkId,
58
+ });
59
+ for (let i = 0; i < addresses.length; i += 1) {
60
+ const address = addresses[i];
61
+ yield this.refresh(address, networkId);
62
+ }
63
+ });
64
+ }
65
+ set(source) {
66
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
67
+ const cachedTokenPrice = yield this.cache.get(source.address, {
68
+ prefix: TOKEN_PRICE_PREFIX,
69
+ networkId: source.networkId,
70
+ });
71
+ const cachedSources = (cachedTokenPrice === null || cachedTokenPrice === void 0 ? void 0 : cachedTokenPrice.sources) || [];
72
+ const newSources = (0, TokenPrice_1.pushTokenPriceSource)(cachedSources, source);
73
+ if (!newSources) {
74
+ yield this.cache.remove(source.address, {
75
+ prefix: TOKEN_PRICE_PREFIX,
76
+ networkId: source.networkId,
77
+ });
78
+ return;
79
+ }
80
+ const newTokenPrice = (0, TokenPrice_1.tokenPriceFromSources)(newSources);
81
+ if (!newTokenPrice) {
82
+ yield this.cache.remove(source.address, {
83
+ prefix: TOKEN_PRICE_PREFIX,
84
+ networkId: source.networkId,
85
+ });
86
+ return;
87
+ }
88
+ yield this.cache.set(newTokenPrice.address, newTokenPrice, {
89
+ prefix: TOKEN_PRICE_PREFIX,
90
+ networkId: newTokenPrice.networkId,
91
+ });
92
+ });
93
+ }
94
+ }
95
+ exports.TokenPriceCache = TokenPriceCache;
96
+ function getDriver() {
97
+ switch (process.env['CACHE_DRIVER']) {
98
+ case 'filesystem':
99
+ return (0, fs_1.default)({
100
+ base: process.env['CACHE_FILESYSTEM_BASE']
101
+ ? `${process.env['CACHE_FILESYSTEM_BASE']}/tokencache`
102
+ : './cache/tokencache',
103
+ });
104
+ case 'mongodb':
105
+ return (0, mongodb_1.default)({
106
+ connectionString: process.env['CACHE_MONGODB_CONNECTION'] ||
107
+ 'mongodb://localhost:27017/',
108
+ databaseName: process.env['CACHE_MONGODB_DATABASE'] || 'portfolio',
109
+ collectionName: 'tokencache',
110
+ });
111
+ case 'redis':
112
+ return (0, redis_1.default)({
113
+ url: process.env['CACHE_REDIS_URL'] || '127.0.0.1:6379',
114
+ tls: process.env['CACHE_REDIS_TLS'] === 'true' ? {} : undefined,
115
+ base: 'tokencache',
116
+ });
117
+ default:
118
+ return (0, fs_1.default)({ base: './cache/tokencache' });
119
+ }
120
+ }
121
+ function getTokenPriceCache() {
122
+ return new TokenPriceCache(getDriver());
123
+ }
124
+ exports.getTokenPriceCache = getTokenPriceCache;
125
+ //# sourceMappingURL=TokenPriceCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenPriceCache.js","sourceRoot":"","sources":["../../../../packages/core/src/TokenPriceCache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export type UsdValue = number | null;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=UsdValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UsdValue.js","sourceRoot":"","sources":["../../../../packages/core/src/UsdValue.ts"],"names":[],"mappings":""}
package/src/Yield.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ export declare function aprToApy(apr: number, compoundFrequency?: number): number;
2
+ export declare function apyToApr(apy: number, compoundFrequency?: number): number;
3
+ export type Yield = {
4
+ apr: number;
5
+ apy: number;
6
+ };
7
+ export declare const createYieldFromApr: (apr: number) => Yield;
8
+ export declare const createYieldFromApy: (apy: number) => Yield;
package/src/Yield.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createYieldFromApy = exports.createYieldFromApr = exports.apyToApr = exports.aprToApy = void 0;
4
+ function aprToApy(apr, compoundFrequency = 365) {
5
+ return Math.pow((1 + apr / compoundFrequency), compoundFrequency) - 1;
6
+ }
7
+ exports.aprToApy = aprToApy;
8
+ function apyToApr(apy, compoundFrequency = 365) {
9
+ return (Math.pow((1 + apy), (1 / compoundFrequency)) - 1) * compoundFrequency;
10
+ }
11
+ exports.apyToApr = apyToApr;
12
+ const createYieldFromApr = (apr) => ({
13
+ apr,
14
+ apy: aprToApy(apr),
15
+ });
16
+ exports.createYieldFromApr = createYieldFromApr;
17
+ const createYieldFromApy = (apy) => ({
18
+ apr: apyToApr(apy),
19
+ apy,
20
+ });
21
+ exports.createYieldFromApy = createYieldFromApy;
22
+ //# sourceMappingURL=Yield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Yield.js","sourceRoot":"","sources":["../../../../packages/core/src/Yield.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,GAAW,EAAE,iBAAiB,GAAG,GAAG;IAC3D,OAAO,SAAA,CAAC,CAAC,GAAG,GAAG,GAAG,iBAAiB,CAAC,EAAI,iBAAiB,CAAA,GAAG,CAAC,CAAC;AAChE,CAAC;AAFD,4BAEC;AAED,SAAgB,QAAQ,CAAC,GAAW,EAAE,iBAAiB,GAAG,GAAG;IAC3D,OAAO,CAAC,SAAA,CAAC,CAAC,GAAG,GAAG,CAAC,EAAI,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAA,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC;AACxE,CAAC;AAFD,4BAEC;AASM,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAS,EAAE,CAAC,CAAC;IACzD,GAAG;IACH,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC;CACnB,CAAC,CAAC;AAHU,QAAA,kBAAkB,sBAG5B;AAEI,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAS,EAAE,CAAC,CAAC;IACzD,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC;IAClB,GAAG;CACJ,CAAC,CAAC;AAHU,QAAA,kBAAkB,sBAG5B"}
@@ -0,0 +1,13 @@
1
+ export declare const bitcoinNativeAddress = "bitcoin";
2
+ export declare const solanaNativeAddress = "11111111111111111111111111111111";
3
+ export declare const aptosNativeAddress = "0x1::aptos_coin::AptosCoin";
4
+ export declare const suiNativeAddress = "0x2::sui::SUI";
5
+ export declare const ethereumNativeAddress = "0x0000000000000000000000000000000000000000";
6
+ export declare const polygonNativeAddress = "0x0000000000000000000000000000000000001010";
7
+ export declare const avalancheNativeAddress = "0x0000000000000000000000000000000000000000";
8
+ export declare const optimismNativeAddress = "0x0000000000000000000000000000000000000000";
9
+ export declare const solanaNativeWrappedAddress = "So11111111111111111111111111111111111111112";
10
+ export declare const ethereumNativeWrappedAddress = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";
11
+ export declare const polygonNativeWrappedAddress = "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270";
12
+ export declare const avalancheNativeWrappedAddress = "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7";
13
+ export declare const optimismNativeWrappedAddress = "0x4200000000000000000000000000000000000006";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.optimismNativeWrappedAddress = exports.avalancheNativeWrappedAddress = exports.polygonNativeWrappedAddress = exports.ethereumNativeWrappedAddress = exports.solanaNativeWrappedAddress = exports.optimismNativeAddress = exports.avalancheNativeAddress = exports.polygonNativeAddress = exports.ethereumNativeAddress = exports.suiNativeAddress = exports.aptosNativeAddress = exports.solanaNativeAddress = exports.bitcoinNativeAddress = void 0;
4
+ exports.bitcoinNativeAddress = 'bitcoin';
5
+ exports.solanaNativeAddress = '11111111111111111111111111111111';
6
+ exports.aptosNativeAddress = '0x1::aptos_coin::AptosCoin';
7
+ exports.suiNativeAddress = '0x2::sui::SUI';
8
+ exports.ethereumNativeAddress = '0x0000000000000000000000000000000000000000';
9
+ exports.polygonNativeAddress = '0x0000000000000000000000000000000000001010';
10
+ exports.avalancheNativeAddress = exports.ethereumNativeAddress;
11
+ exports.optimismNativeAddress = exports.ethereumNativeAddress;
12
+ exports.solanaNativeWrappedAddress = 'So11111111111111111111111111111111111111112';
13
+ exports.ethereumNativeWrappedAddress = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';
14
+ exports.polygonNativeWrappedAddress = '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270';
15
+ exports.avalancheNativeWrappedAddress = '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7';
16
+ exports.optimismNativeWrappedAddress = '0x4200000000000000000000000000000000000006';
17
+ //# sourceMappingURL=addresses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../../../packages/core/src/constants/addresses.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,mBAAmB,GAAG,kCAAkC,CAAC;AACzD,QAAA,kBAAkB,GAAG,4BAA4B,CAAC;AAClD,QAAA,gBAAgB,GAAG,eAAe,CAAC;AACnC,QAAA,qBAAqB,GAAG,4CAA4C,CAAC;AACrE,QAAA,oBAAoB,GAAG,4CAA4C,CAAC;AACpE,QAAA,sBAAsB,GAAG,6BAAqB,CAAC;AAC/C,QAAA,qBAAqB,GAAG,6BAAqB,CAAC;AAE9C,QAAA,0BAA0B,GAAG,6CAA6C,CAAC;AAC3E,QAAA,4BAA4B,GAAG,4CAA4C,CAAC;AAC5E,QAAA,2BAA2B,GAAG,4CAA4C,CAAC;AAC3E,QAAA,6BAA6B,GAAG,4CAA4C,CAAC;AAC7E,QAAA,4BAA4B,GAAG,4CAA4C,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './addresses';
2
+ export * from './networks';
3
+ export * from './platforms';
4
+ export declare const platforms: import("..").Platform[];
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.platforms = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const _platforms = tslib_1.__importStar(require("./platforms"));
6
+ tslib_1.__exportStar(require("./addresses"), exports);
7
+ tslib_1.__exportStar(require("./networks"), exports);
8
+ tslib_1.__exportStar(require("./platforms"), exports);
9
+ exports.platforms = Object.values(_platforms);
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/src/constants/index.ts"],"names":[],"mappings":";;;;AAAA,gEAA0C;AAE1C,sDAA4B;AAC5B,qDAA2B;AAC3B,sDAA4B;AAEf,QAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Network, NetworkIdType } from '../Network';
2
+ export declare const bitcoinNetwork: Network;
3
+ export declare const ethereumNetwork: Network;
4
+ export declare const avalancheNetwork: Network;
5
+ export declare const solanaNetwork: Network;
6
+ export declare const aptosNetwork: Network;
7
+ export declare const suiNetwork: Network;
8
+ export declare const networks: Record<NetworkIdType, Network>;
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.networks = exports.suiNetwork = exports.aptosNetwork = exports.solanaNetwork = exports.avalancheNetwork = exports.ethereumNetwork = exports.bitcoinNetwork = void 0;
4
+ const Address_1 = require("../Address");
5
+ const Network_1 = require("../Network");
6
+ const addresses_1 = require("./addresses");
7
+ exports.bitcoinNetwork = {
8
+ id: Network_1.NetworkId.bitcoin,
9
+ name: 'Bitcoin',
10
+ image: 'https://beta.sonar.watch/img/networks/bitcoin.png',
11
+ addressSystem: Address_1.AddressSystem.bitcoin,
12
+ chainId: 1,
13
+ native: {
14
+ address: addresses_1.bitcoinNativeAddress,
15
+ decimals: 8,
16
+ coingeckoId: 'bitcoin',
17
+ },
18
+ nativeWrapped: null,
19
+ isLive: true,
20
+ coingeckoPlatformId: 'bitcoin',
21
+ tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.bitcoin.tokenlist.json',
22
+ };
23
+ exports.ethereumNetwork = {
24
+ id: Network_1.NetworkId.ethereum,
25
+ name: 'Ethereum',
26
+ image: 'https://beta.sonar.watch/img/networks/ethereum.png',
27
+ addressSystem: Address_1.AddressSystem.evm,
28
+ chainId: 1,
29
+ native: {
30
+ address: addresses_1.ethereumNativeAddress,
31
+ decimals: 18,
32
+ coingeckoId: 'ethereum',
33
+ },
34
+ nativeWrapped: {
35
+ address: addresses_1.ethereumNativeWrappedAddress,
36
+ decimals: 18,
37
+ coingeckoId: 'weth',
38
+ },
39
+ isLive: true,
40
+ coingeckoPlatformId: 'ethereum',
41
+ tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.ethereum.tokenlist.json',
42
+ };
43
+ exports.avalancheNetwork = {
44
+ id: Network_1.NetworkId.avalanche,
45
+ name: 'Avalanche',
46
+ image: 'https://beta.sonar.watch/img/networks/avalanche.png',
47
+ addressSystem: Address_1.AddressSystem.evm,
48
+ chainId: 43114,
49
+ native: {
50
+ address: addresses_1.avalancheNativeAddress,
51
+ decimals: 18,
52
+ coingeckoId: 'avalanche-2',
53
+ },
54
+ nativeWrapped: {
55
+ address: addresses_1.avalancheNativeWrappedAddress,
56
+ decimals: 18,
57
+ coingeckoId: 'wrapped-avax',
58
+ },
59
+ isLive: true,
60
+ coingeckoPlatformId: 'avalanche',
61
+ tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.avalanche.tokenlist.json',
62
+ };
63
+ exports.solanaNetwork = {
64
+ id: Network_1.NetworkId.solana,
65
+ name: 'Solana',
66
+ image: 'https://beta.sonar.watch/img/networks/solana.png',
67
+ addressSystem: Address_1.AddressSystem.solana,
68
+ chainId: 101,
69
+ native: {
70
+ address: addresses_1.solanaNativeAddress,
71
+ decimals: 9,
72
+ coingeckoId: 'solana',
73
+ },
74
+ nativeWrapped: null,
75
+ isLive: true,
76
+ coingeckoPlatformId: 'solana',
77
+ tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.solana.tokenlist.json',
78
+ };
79
+ exports.aptosNetwork = {
80
+ id: Network_1.NetworkId.aptos,
81
+ name: 'Aptos',
82
+ image: 'https://beta.sonar.watch/img/networks/aptos.png',
83
+ addressSystem: Address_1.AddressSystem.move,
84
+ chainId: 1,
85
+ native: {
86
+ address: addresses_1.aptosNativeAddress,
87
+ decimals: 8,
88
+ coingeckoId: 'aptos',
89
+ },
90
+ nativeWrapped: null,
91
+ isLive: true,
92
+ coingeckoPlatformId: 'aptos',
93
+ tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.aptos.tokenlist.json',
94
+ };
95
+ exports.suiNetwork = {
96
+ id: Network_1.NetworkId.sui,
97
+ name: 'Sui',
98
+ image: 'https://beta.sonar.watch/img/networks/sui.png',
99
+ addressSystem: Address_1.AddressSystem.move,
100
+ chainId: 1,
101
+ native: {
102
+ address: addresses_1.suiNativeAddress,
103
+ decimals: 9,
104
+ coingeckoId: 'sui',
105
+ },
106
+ nativeWrapped: null,
107
+ isLive: true,
108
+ coingeckoPlatformId: 'sui',
109
+ tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.sui.tokenlist.json',
110
+ };
111
+ exports.networks = {
112
+ [Network_1.NetworkId.aptos]: exports.aptosNetwork,
113
+ [Network_1.NetworkId.avalanche]: exports.avalancheNetwork,
114
+ [Network_1.NetworkId.bitcoin]: exports.bitcoinNetwork,
115
+ [Network_1.NetworkId.ethereum]: exports.ethereumNetwork,
116
+ [Network_1.NetworkId.solana]: exports.solanaNetwork,
117
+ [Network_1.NetworkId.sui]: exports.suiNetwork,
118
+ };
119
+ //# sourceMappingURL=networks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networks.js","sourceRoot":"","sources":["../../../../../packages/core/src/constants/networks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Platform } from '../Platform';
2
+ export declare const marinadePlatform: Platform;
3
+ export declare const aavePlatform: Platform;
4
+ export declare const walletnftsPlatform: Platform;
5
+ export declare const wallettokensPlatform: Platform;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wallettokensPlatform = exports.walletnftsPlatform = exports.aavePlatform = exports.marinadePlatform = void 0;
4
+ exports.marinadePlatform = {
5
+ id: 'marinade',
6
+ name: 'Marinade',
7
+ image: 'https://beta.sonar.watch/img/platforms/marinade.png',
8
+ };
9
+ exports.aavePlatform = {
10
+ id: 'aave',
11
+ name: 'AAVE',
12
+ image: 'https://beta.sonar.watch/img/platforms/aave.png',
13
+ };
14
+ exports.walletnftsPlatform = {
15
+ id: 'walletnfts',
16
+ name: 'NFTs',
17
+ image: 'https://beta.sonar.watch/img/platforms/walletnfts.png',
18
+ };
19
+ exports.wallettokensPlatform = {
20
+ id: 'wallettokens',
21
+ name: 'Tokens',
22
+ image: 'https://beta.sonar.watch/img/platforms/wallettokens.png',
23
+ };
24
+ //# sourceMappingURL=platforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platforms.js","sourceRoot":"","sources":["../../../../../packages/core/src/constants/platforms.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAa;IACxC,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,qDAAqD;CAC7D,CAAC;AACW,QAAA,YAAY,GAAa;IACpC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,iDAAiD;CACzD,CAAC;AACW,QAAA,kBAAkB,GAAa;IAC1C,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,uDAAuD;CAC/D,CAAC;AACW,QAAA,oBAAoB,GAAa;IAC5C,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,yDAAyD;CACjE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { PortfolioError } from './PortfolioError';
2
+ export declare class AdapterFetchError extends PortfolioError {
3
+ readonly name: string;
4
+ readonly adapterId: string;
5
+ constructor(adapterId: string, cause?: Error);
6
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdapterFetchError = void 0;
4
+ const PortfolioError_1 = require("./PortfolioError");
5
+ class AdapterFetchError extends PortfolioError_1.PortfolioError {
6
+ constructor(adapterId, cause) {
7
+ super('Fetch error', 'adapter', adapterId, cause);
8
+ this.name = 'AdapterError';
9
+ this.adapterId = adapterId;
10
+ }
11
+ }
12
+ exports.AdapterFetchError = AdapterFetchError;
13
+ //# sourceMappingURL=AdapterFetchError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdapterFetchError.js","sourceRoot":"","sources":["../../../../../packages/core/src/errors/AdapterFetchError.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,iBAAkB,SAAQ,+BAAc;IAInD,YAAY,SAAiB,EAAE,KAAa;QAC1C,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAJlC,SAAI,GAAW,cAAc,CAAC;QAK9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,8CAQC"}
@@ -0,0 +1,6 @@
1
+ import { PortfolioError } from './PortfolioError';
2
+ export declare class AdapterFetchTimedOutError extends PortfolioError {
3
+ readonly name: string;
4
+ readonly adapterId: string;
5
+ constructor(adapterId: string, cause?: Error);
6
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdapterFetchTimedOutError = void 0;
4
+ const PortfolioError_1 = require("./PortfolioError");
5
+ class AdapterFetchTimedOutError extends PortfolioError_1.PortfolioError {
6
+ constructor(adapterId, cause) {
7
+ super('Fetch timed out error', 'adapter', adapterId, cause);
8
+ this.name = 'AdapterError';
9
+ this.adapterId = adapterId;
10
+ }
11
+ }
12
+ exports.AdapterFetchTimedOutError = AdapterFetchTimedOutError;
13
+ //# sourceMappingURL=AdapterFetchTimedOutError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdapterFetchTimedOutError.js","sourceRoot":"","sources":["../../../../../packages/core/src/errors/AdapterFetchTimedOutError.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,yBAA0B,SAAQ,+BAAc;IAI3D,YAAY,SAAiB,EAAE,KAAa;QAC1C,KAAK,CAAC,uBAAuB,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAJ5C,SAAI,GAAW,cAAc,CAAC;QAK9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,8DAQC"}
@@ -0,0 +1,6 @@
1
+ import { PortfolioError } from './PortfolioError';
2
+ export declare class AdapterRefreshError extends PortfolioError {
3
+ readonly name: string;
4
+ readonly adapterId: string;
5
+ constructor(adapterId: string, cause?: Error);
6
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdapterRefreshError = void 0;
4
+ const PortfolioError_1 = require("./PortfolioError");
5
+ class AdapterRefreshError extends PortfolioError_1.PortfolioError {
6
+ constructor(adapterId, cause) {
7
+ super('Refresh error', 'adapter', adapterId, cause);
8
+ this.name = 'AdapterError';
9
+ this.adapterId = adapterId;
10
+ }
11
+ }
12
+ exports.AdapterRefreshError = AdapterRefreshError;
13
+ //# sourceMappingURL=AdapterRefreshError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdapterRefreshError.js","sourceRoot":"","sources":["../../../../../packages/core/src/errors/AdapterRefreshError.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,mBAAoB,SAAQ,+BAAc;IAIrD,YAAY,SAAiB,EAAE,KAAa;QAC1C,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAJpC,SAAI,GAAW,cAAc,CAAC;QAK9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,kDAQC"}
@@ -0,0 +1,6 @@
1
+ import { PortfolioError } from './PortfolioError';
2
+ export declare class AdapterRefreshTimedOutError extends PortfolioError {
3
+ readonly name: string;
4
+ readonly adapterId: string;
5
+ constructor(adapterId: string, cause?: Error);
6
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdapterRefreshTimedOutError = void 0;
4
+ const PortfolioError_1 = require("./PortfolioError");
5
+ class AdapterRefreshTimedOutError extends PortfolioError_1.PortfolioError {
6
+ constructor(adapterId, cause) {
7
+ super('Refresh timed out error', 'adapter', adapterId, cause);
8
+ this.name = 'AdapterError';
9
+ this.adapterId = adapterId;
10
+ }
11
+ }
12
+ exports.AdapterRefreshTimedOutError = AdapterRefreshTimedOutError;
13
+ //# sourceMappingURL=AdapterRefreshTimedOutError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdapterRefreshTimedOutError.js","sourceRoot":"","sources":["../../../../../packages/core/src/errors/AdapterRefreshTimedOutError.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,2BAA4B,SAAQ,+BAAc;IAI7D,YAAY,SAAiB,EAAE,KAAa;QAC1C,KAAK,CAAC,yBAAyB,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAJ9C,SAAI,GAAW,cAAc,CAAC;QAK9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,kEAQC"}
@@ -0,0 +1,12 @@
1
+ export declare class PortfolioError extends Error {
2
+ readonly name: string;
3
+ readonly isPorfolioError = true;
4
+ readonly source: PorfolioErrorSource;
5
+ readonly sourceDetails?: string;
6
+ readonly cause?: Error;
7
+ constructor(message: string, source: PorfolioErrorSource, sourceDetails?: string, cause?: Error);
8
+ getCapitalizedSource(): string;
9
+ getFullSource(): string;
10
+ toString(): string;
11
+ }
12
+ export type PorfolioErrorSource = 'adapter' | 'manager';