@xyo-network/crypto-asset-plugin 2.85.0 → 2.85.2

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 (64) hide show
  1. package/dist/browser/Diviner.d.cts +2 -2
  2. package/dist/browser/Diviner.d.cts.map +1 -1
  3. package/dist/browser/Diviner.d.mts +2 -2
  4. package/dist/browser/Diviner.d.mts.map +1 -1
  5. package/dist/browser/Diviner.d.ts +2 -2
  6. package/dist/browser/Diviner.d.ts.map +1 -1
  7. package/dist/browser/Plugin.d.cts +0 -2
  8. package/dist/browser/Plugin.d.cts.map +1 -1
  9. package/dist/browser/Plugin.d.mts +0 -2
  10. package/dist/browser/Plugin.d.mts.map +1 -1
  11. package/dist/browser/Plugin.d.ts +0 -2
  12. package/dist/browser/Plugin.d.ts.map +1 -1
  13. package/dist/browser/index.cjs +20 -26
  14. package/dist/browser/index.cjs.map +1 -1
  15. package/dist/browser/index.d.cts +1 -3
  16. package/dist/browser/index.d.cts.map +1 -1
  17. package/dist/browser/index.d.mts +1 -3
  18. package/dist/browser/index.d.mts.map +1 -1
  19. package/dist/browser/index.d.ts +1 -3
  20. package/dist/browser/index.d.ts.map +1 -1
  21. package/dist/browser/index.js +19 -25
  22. package/dist/browser/index.js.map +1 -1
  23. package/dist/browser/lib/average.d.cts.map +1 -1
  24. package/dist/browser/lib/average.d.mts.map +1 -1
  25. package/dist/browser/lib/average.d.ts.map +1 -1
  26. package/dist/browser/lib/divineUniswapPrices.d.cts.map +1 -1
  27. package/dist/browser/lib/divineUniswapPrices.d.mts.map +1 -1
  28. package/dist/browser/lib/divineUniswapPrices.d.ts.map +1 -1
  29. package/dist/node/Diviner.d.cts +2 -2
  30. package/dist/node/Diviner.d.cts.map +1 -1
  31. package/dist/node/Diviner.d.mts +2 -2
  32. package/dist/node/Diviner.d.mts.map +1 -1
  33. package/dist/node/Diviner.d.ts +2 -2
  34. package/dist/node/Diviner.d.ts.map +1 -1
  35. package/dist/node/Plugin.d.cts +0 -2
  36. package/dist/node/Plugin.d.cts.map +1 -1
  37. package/dist/node/Plugin.d.mts +0 -2
  38. package/dist/node/Plugin.d.mts.map +1 -1
  39. package/dist/node/Plugin.d.ts +0 -2
  40. package/dist/node/Plugin.d.ts.map +1 -1
  41. package/dist/node/index.cjs +20 -27
  42. package/dist/node/index.cjs.map +1 -1
  43. package/dist/node/index.d.cts +1 -3
  44. package/dist/node/index.d.cts.map +1 -1
  45. package/dist/node/index.d.mts +1 -3
  46. package/dist/node/index.d.mts.map +1 -1
  47. package/dist/node/index.d.ts +1 -3
  48. package/dist/node/index.d.ts.map +1 -1
  49. package/dist/node/index.js +19 -26
  50. package/dist/node/index.js.map +1 -1
  51. package/dist/node/lib/average.d.cts.map +1 -1
  52. package/dist/node/lib/average.d.mts.map +1 -1
  53. package/dist/node/lib/average.d.ts.map +1 -1
  54. package/dist/node/lib/divineUniswapPrices.d.cts.map +1 -1
  55. package/dist/node/lib/divineUniswapPrices.d.mts.map +1 -1
  56. package/dist/node/lib/divineUniswapPrices.d.ts.map +1 -1
  57. package/package.json +13 -13
  58. package/src/Diviner.ts +2 -2
  59. package/src/index.ts +1 -7
  60. package/src/lib/average.ts +9 -16
  61. package/src/lib/divineCoinGeckoPrices.ts +1 -1
  62. package/src/lib/divineUniswapPrices.ts +6 -8
  63. package/src/test/sampleCoinGecko.ts +35 -35
  64. package/src/test/sampleUniswap.ts +21 -21
package/package.json CHANGED
@@ -10,22 +10,22 @@
10
10
  "url": "https://github.com/XYOracleNetwork/plugins/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/exists": "^2.13.20",
14
- "@xyo-network/abstract-diviner": "^2.85.0",
15
- "@xyo-network/coingecko-crypto-market-payload-plugin": "~2.85.0",
16
- "@xyo-network/crypto-asset-payload-plugin": "~2.85.0",
17
- "@xyo-network/diviner": "^2.85.0",
18
- "@xyo-network/module-model": "^2.85.0",
19
- "@xyo-network/payload-builder": "^2.85.0",
20
- "@xyo-network/payload-model": "^2.85.0",
21
- "@xyo-network/payloadset-plugin": "^2.85.0",
22
- "@xyo-network/uniswap-crypto-market-payload-plugin": "~2.85.0"
13
+ "@xylabs/exists": "^2.13.23",
14
+ "@xyo-network/coingecko-crypto-market-payload-plugin": "~2.85.2",
15
+ "@xyo-network/crypto-asset-payload-plugin": "~2.85.2",
16
+ "@xyo-network/diviner-abstract": "^2.85.8",
17
+ "@xyo-network/diviner-model": "^2.85.8",
18
+ "@xyo-network/module-model": "^2.85.8",
19
+ "@xyo-network/payload-builder": "^2.85.8",
20
+ "@xyo-network/payload-model": "^2.85.8",
21
+ "@xyo-network/payloadset-plugin": "^2.85.8",
22
+ "@xyo-network/uniswap-crypto-market-payload-plugin": "~2.85.2"
23
23
  },
24
24
  "devDependencies": {
25
- "@xylabs/assert": "^2.13.20",
25
+ "@xylabs/assert": "^2.13.23",
26
26
  "@xylabs/ts-scripts-yarn3": "^3.2.25",
27
27
  "@xylabs/tsconfig": "^3.2.25",
28
- "@xyo-network/account": "^2.85.0",
28
+ "@xyo-network/account": "^2.85.8",
29
29
  "typescript": "^5.3.3"
30
30
  },
31
31
  "description": "Typescript/Javascript Plugins for XYO Platform",
@@ -67,6 +67,6 @@
67
67
  "url": "https://github.com/XYOracleNetwork/plugins.git"
68
68
  },
69
69
  "sideEffects": false,
70
- "version": "2.85.0",
70
+ "version": "2.85.2",
71
71
  "type": "module"
72
72
  }
package/src/Diviner.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { AbstractDiviner } from '@xyo-network/abstract-diviner'
2
1
  import { CoingeckoCryptoMarketPayload, CoingeckoCryptoMarketSchema } from '@xyo-network/coingecko-crypto-market-payload-plugin'
3
2
  import { CryptoMarketAssetPayload, CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'
4
- import { DivinerConfig, DivinerModule, DivinerParams } from '@xyo-network/diviner'
3
+ import { AbstractDiviner } from '@xyo-network/diviner-abstract'
4
+ import { DivinerConfig, DivinerModule, DivinerParams } from '@xyo-network/diviner-model'
5
5
  import { AnyConfigSchema, Module } from '@xyo-network/module-model'
6
6
  import { Payload } from '@xyo-network/payload-model'
7
7
  import { UniswapCryptoMarketPayload, UniswapCryptoMarketSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin'
package/src/index.ts CHANGED
@@ -1,9 +1,3 @@
1
- import { CryptoMarketAssetPlugin } from './Plugin'
2
-
3
1
  export * from './Diviner'
2
+ export { CryptoMarketAssetPlugin, CryptoMarketAssetPlugin as default } from './Plugin'
4
3
  export * from './Schema'
5
-
6
- export { CryptoMarketAssetPlugin }
7
-
8
- // eslint-disable-next-line import/no-default-export
9
- export default CryptoMarketAssetPlugin
@@ -7,33 +7,26 @@ const isNumber = (val: number | undefined): val is number => {
7
7
 
8
8
  const parseStringifiedNumber = (value: string | undefined): number | undefined => {
9
9
  if (!value) return undefined
10
- const parsed = parseFloat(value)
11
- return isNaN(parsed) ? undefined : parsed
10
+ const parsed = Number.parseFloat(value)
11
+ return Number.isNaN(parsed) ? undefined : parsed
12
12
  }
13
13
 
14
14
  const averageStringifiedNumbers = (...prices: (string | undefined)[]): number | undefined => {
15
15
  const numbers = prices.map(parseStringifiedNumber).filter(isNumber)
16
- return numbers.length ? numbers.reduce((sum, n) => sum + n, 0) / numbers.length : undefined
16
+ return numbers.length > 0 ? numbers.reduce((sum, n) => sum + n, 0) / numbers.length : undefined
17
17
  }
18
18
 
19
19
  export const average = (...input: (CryptoMarketAssetPayload | undefined)[]): Record<string, AssetInfo> => {
20
20
  // Get all the assets represented
21
21
  const payloads = input.filter(exists)
22
- const tokens = new Set<Token>(payloads.map((payload) => Object.keys(payload.assets).map<Token>((t) => t as Token)).flatMap((t) => t))
22
+ const tokens = new Set<Token>(payloads.flatMap((payload) => Object.keys(payload.assets).map<Token>((t) => t as Token)))
23
23
  // Get all the valuations used
24
24
  const valuations = new Set<Token | Currency>(
25
- [...tokens]
26
- .map((asset) => {
27
- const assetInfo = payloads.map((p) => p.assets?.[asset]).filter(exists)
28
- const valueBasis = new Set<Currency | Token>(
29
- assetInfo
30
- .map((v) => Object.keys(v.value) as unknown as Currency | Token)
31
- .flatMap((v) => v)
32
- .filter(exists),
33
- )
34
- return [...valueBasis]
35
- })
36
- .flatMap((v) => v),
25
+ [...tokens].flatMap((asset) => {
26
+ const assetInfo = payloads.map((p) => p.assets?.[asset]).filter(exists)
27
+ const valueBasis = new Set<Currency | Token>(assetInfo.flatMap((v) => Object.keys(v.value) as unknown as Currency | Token).filter(exists))
28
+ return [...valueBasis]
29
+ }),
37
30
  )
38
31
  // For each of the tokens, calculate the average valuation for each of valuation bases
39
32
  const assets: Record<string, AssetInfo> = Object.fromEntries(
@@ -10,7 +10,7 @@ const valuationExists = (value: [string, Partial<Record<string, number>> | undef
10
10
 
11
11
  const otherValueExists = (value: [string, number | undefined]): value is [string, number] => {
12
12
  const possiblyNumber = value[1]
13
- return typeof possiblyNumber === 'number' && !isNaN(possiblyNumber)
13
+ return typeof possiblyNumber === 'number' && !Number.isNaN(possiblyNumber)
14
14
  }
15
15
 
16
16
  export const divineCoinGeckoPrices = async (payload: CoingeckoCryptoMarketPayload | undefined): Promise<CryptoMarketAssetPayload> => {
@@ -1,3 +1,4 @@
1
+ import { assertEx } from '@xylabs/assert'
1
2
  import { exists } from '@xylabs/exists'
2
3
  import { AssetInfo, CryptoMarketAssetPayload, CryptoMarketAssetSchema, Currency, Token, ValueBasis } from '@xyo-network/crypto-asset-payload-plugin'
3
4
  import { PayloadBuilder } from '@xyo-network/payload-builder'
@@ -22,21 +23,18 @@ const pairsContainingToken = (uniswapPayload: UniswapCryptoMarketPayload, token:
22
23
  }
23
24
 
24
25
  const tokensFromPairs = (pairs: UniswapCryptoPair[]) => {
25
- return pairs
26
- .map((p) => p.tokens)
27
- .flat()
28
- .map((t) => t.symbol.toLowerCase() as Token)
26
+ return pairs.flatMap((p) => p.tokens).map((t) => t.symbol.toLowerCase() as Token)
29
27
  }
30
28
 
31
29
  const valuesFromTokenPairs = (tokensPairs: UniswapCryptoToken[][], token: Token): ValueBasis => {
32
30
  return Object.fromEntries(
33
31
  tokensPairs
34
32
  .map((pair) => {
35
- const current = pair.filter((p) => p.symbol.toLowerCase() === token)?.[0]
36
- const other = pair.filter((p) => p.symbol.toLowerCase() !== token)?.[0]
37
- return [other.symbol.toLowerCase(), current.value.toString()]
33
+ const current = pair.find((p) => p.symbol.toLowerCase() === token)
34
+ const other = pair.find((p) => p.symbol.toLowerCase() !== token)
35
+ return [other?.symbol.toLowerCase(), current?.value.toString()]
38
36
  })
39
- .map((x) => [mapUniswapToken(x[0]), x[1]]),
37
+ .map((x) => [mapUniswapToken(assertEx(x[0], 'Undefined Token')), x[1]]),
40
38
  )
41
39
  }
42
40
 
@@ -3,72 +3,72 @@ import { CoingeckoCryptoMarketPayload, CoingeckoCryptoMarketSchema } from '@xyo-
3
3
  export const sampleCoinGeckoPayload: CoingeckoCryptoMarketPayload = {
4
4
  assets: {
5
5
  ada: {
6
- btc: 0.00002163,
7
- eth: 0.00030472,
8
- eur: 0.488106,
9
- usd: 0.495442,
6
+ btc: 0.000_021_63,
7
+ eth: 0.000_304_72,
8
+ eur: 0.488_106,
9
+ usd: 0.495_442,
10
10
  },
11
11
  btc: {
12
12
  btc: 1,
13
- eth: 14.068021,
14
- eur: 22545,
15
- usd: 22884,
13
+ eth: 14.068_021,
14
+ eur: 22_545,
15
+ usd: 22_884,
16
16
  },
17
17
  busd: {
18
- btc: 0.00004342,
19
- eth: 0.00061145,
20
- eur: 0.979882,
21
- usd: 0.994609,
18
+ btc: 0.000_043_42,
19
+ eth: 0.000_611_45,
20
+ eur: 0.979_882,
21
+ usd: 0.994_609,
22
22
  },
23
23
  doge: {
24
- btc: 0.00000288,
25
- eth: 0.00004062,
26
- eur: 0.065066,
27
- usd: 0.066044,
24
+ btc: 0.000_002_88,
25
+ eth: 0.000_040_62,
26
+ eur: 0.065_066,
27
+ usd: 0.066_044,
28
28
  },
29
29
  dot: {
30
- btc: 0.00033067,
31
- eth: 0.00465702,
30
+ btc: 0.000_330_67,
31
+ eth: 0.004_657_02,
32
32
  eur: 7.46,
33
33
  usd: 7.58,
34
34
  },
35
35
  eth: {
36
- btc: 0.07099216,
36
+ btc: 0.070_992_16,
37
37
  eth: 1,
38
38
  eur: 1602.25,
39
39
  usd: 1626.33,
40
40
  },
41
41
  sol: {
42
- btc: 0.00173417,
43
- eth: 0.02442315,
42
+ btc: 0.001_734_17,
43
+ eth: 0.024_423_15,
44
44
  eur: 39.14,
45
45
  usd: 39.73,
46
46
  },
47
47
  usdc: {
48
- btc: 0.00004371,
49
- eth: 0.00061556,
50
- eur: 0.986471,
48
+ btc: 0.000_043_71,
49
+ eth: 0.000_615_56,
50
+ eur: 0.986_471,
51
51
  usd: 1.001,
52
52
  },
53
53
  usdt: {
54
- btc: 0.0000437,
55
- eth: 0.00061548,
56
- eur: 0.986332,
54
+ btc: 0.000_043_7,
55
+ eth: 0.000_615_48,
56
+ eur: 0.986_332,
57
57
  usd: 1.001,
58
58
  },
59
59
  wbtc: {
60
- btc: 1.000635,
61
- eth: 14.092397,
62
- eur: 22584,
63
- usd: 22923,
60
+ btc: 1.000_635,
61
+ eth: 14.092_397,
62
+ eur: 22_584,
63
+ usd: 22_923,
64
64
  },
65
65
  xyo: {
66
- btc: 6.28282e-7,
67
- eth: 0.00000885,
68
- eur: 0.01417995,
69
- usd: 0.01439307,
66
+ btc: 6.282_82e-7,
67
+ eth: 0.000_008_85,
68
+ eur: 0.014_179_95,
69
+ usd: 0.014_393_07,
70
70
  },
71
71
  },
72
72
  schema: CoingeckoCryptoMarketSchema,
73
- timestamp: 1659012060785,
73
+ timestamp: 1_659_012_060_785,
74
74
  }
@@ -7,12 +7,12 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
7
7
  {
8
8
  address: '0x55296f69f40Ea6d20E478533C15A6B08B654E758',
9
9
  symbol: 'xyo',
10
- value: 0.00000896773,
10
+ value: 0.000_008_967_73,
11
11
  },
12
12
  {
13
13
  address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
14
14
  symbol: 'weth',
15
- value: 111511,
15
+ value: 111_511,
16
16
  },
17
17
  ],
18
18
  },
@@ -21,7 +21,7 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
21
21
  {
22
22
  address: '0x55296f69f40Ea6d20E478533C15A6B08B654E758',
23
23
  symbol: 'xyo',
24
- value: 0.0148782,
24
+ value: 0.014_878_2,
25
25
  },
26
26
  {
27
27
  address: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
@@ -35,7 +35,7 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
35
35
  {
36
36
  address: '0x55296f69f40Ea6d20E478533C15A6B08B654E758',
37
37
  symbol: 'xyo',
38
- value: 0.014039,
38
+ value: 0.014_039,
39
39
  },
40
40
  {
41
41
  address: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
@@ -49,12 +49,12 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
49
49
  {
50
50
  address: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
51
51
  symbol: 'wbtc',
52
- value: 1527240,
52
+ value: 1_527_240,
53
53
  },
54
54
  {
55
55
  address: '0x55296f69f40Ea6d20E478533C15A6B08B654E758',
56
56
  symbol: 'xyo',
57
- value: 6.54777e-7,
57
+ value: 6.547_77e-7,
58
58
  },
59
59
  ],
60
60
  },
@@ -68,7 +68,7 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
68
68
  {
69
69
  address: '0x55296f69f40Ea6d20E478533C15A6B08B654E758',
70
70
  symbol: 'xyo',
71
- value: 0.00220354,
71
+ value: 0.002_203_54,
72
72
  },
73
73
  ],
74
74
  },
@@ -82,7 +82,7 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
82
82
  {
83
83
  address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
84
84
  symbol: 'weth',
85
- value: 0.0710048,
85
+ value: 0.071_004_8,
86
86
  },
87
87
  ],
88
88
  },
@@ -91,12 +91,12 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
91
91
  {
92
92
  address: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
93
93
  symbol: 'dai',
94
- value: 1.00004,
94
+ value: 1.000_04,
95
95
  },
96
96
  {
97
97
  address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
98
98
  symbol: 'usdc',
99
- value: 0.999959,
99
+ value: 0.999_959,
100
100
  },
101
101
  ],
102
102
  },
@@ -105,7 +105,7 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
105
105
  {
106
106
  address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
107
107
  symbol: 'usdc',
108
- value: 0.000616944,
108
+ value: 0.000_616_944,
109
109
  },
110
110
  {
111
111
  address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
@@ -119,7 +119,7 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
119
119
  {
120
120
  address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
121
121
  symbol: 'usdc',
122
- value: 0.000617196,
122
+ value: 0.000_617_196,
123
123
  },
124
124
  {
125
125
  address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
@@ -133,12 +133,12 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
133
133
  {
134
134
  address: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
135
135
  symbol: 'dai',
136
- value: 1.00002,
136
+ value: 1.000_02,
137
137
  },
138
138
  {
139
139
  address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
140
140
  symbol: 'usdc',
141
- value: 0.999983,
141
+ value: 0.999_983,
142
142
  },
143
143
  ],
144
144
  },
@@ -147,12 +147,12 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
147
147
  {
148
148
  address: '0x853d955aCEf822Db058eb8505911ED77F175b99e',
149
149
  symbol: 'frax',
150
- value: 0.999762,
150
+ value: 0.999_762,
151
151
  },
152
152
  {
153
153
  address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
154
154
  symbol: 'usdc',
155
- value: 1.00024,
155
+ value: 1.000_24,
156
156
  },
157
157
  ],
158
158
  },
@@ -161,12 +161,12 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
161
161
  {
162
162
  address: '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
163
163
  symbol: 'wbtc',
164
- value: 22826.3,
164
+ value: 22_826.3,
165
165
  },
166
166
  {
167
167
  address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
168
168
  symbol: 'usdc',
169
- value: 0.000043809,
169
+ value: 0.000_043_809,
170
170
  },
171
171
  ],
172
172
  },
@@ -175,16 +175,16 @@ export const sampleUniswapPayload: UniswapCryptoMarketPayload = {
175
175
  {
176
176
  address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
177
177
  symbol: 'usdc',
178
- value: 0.999853,
178
+ value: 0.999_853,
179
179
  },
180
180
  {
181
181
  address: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
182
182
  symbol: 'usdt',
183
- value: 1.00015,
183
+ value: 1.000_15,
184
184
  },
185
185
  ],
186
186
  },
187
187
  ],
188
188
  schema: UniswapCryptoMarketSchema,
189
- timestamp: 1659012011418,
189
+ timestamp: 1_659_012_011_418,
190
190
  }