@xyo-network/crypto-asset-plugin 3.4.0 → 3.4.1

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,73 @@
1
- export * from './Diviner.ts';
2
- export { CryptoMarketAssetPlugin, CryptoMarketAssetPlugin as default } from './Plugin.ts';
3
- export * from './Schema.ts';
4
- //# sourceMappingURL=index.d.ts.map
1
+ import { AbstractDiviner } from '@xyo-network/diviner-abstract';
2
+ import { DivinerParams, DivinerConfig, DivinerModule } from '@xyo-network/diviner-model';
3
+ import * as _xyo_network_module_model from '@xyo-network/module-model';
4
+ import { AnyConfigSchema, Module } from '@xyo-network/module-model';
5
+ import * as _xyo_network_payload_model from '@xyo-network/payload-model';
6
+ import { Schema, Payload } from '@xyo-network/payload-model';
7
+ import * as _xyo_network_payloadset_plugin from '@xyo-network/payloadset-plugin';
8
+ import * as _store__xylabs_logger_npm_4_5_1_a411051254_package from '.store/@xylabs-logger-npm-4.5.1-a411051254/package';
9
+ import * as _store__xyo_network_account_model_virtual_3a3814c98f_package from '.store/@xyo-network-account-model-virtual-3a3814c98f/package';
10
+ import * as _store__xylabs_object_npm_4_5_1_e31c389195_package from '.store/@xylabs-object-npm-4.5.1-e31c389195/package';
11
+
12
+ type CryptoMarketAssetDivinerQuerySchema = 'network.xyo.crypto.asset.diviner.query';
13
+ declare const CryptoMarketAssetDivinerQuerySchema: CryptoMarketAssetDivinerQuerySchema;
14
+ type CryptoMarketAssetDivinerConfigSchema = 'network.xyo.crypto.asset.diviner.config';
15
+ declare const CryptoMarketAssetDivinerConfigSchema: CryptoMarketAssetDivinerConfigSchema;
16
+
17
+ type CryptoMarketAssetDivinerConfig = DivinerConfig<{
18
+ schema: CryptoMarketAssetDivinerConfigSchema;
19
+ }>;
20
+ type CryptoMarketAssetDivinerParams = DivinerParams<AnyConfigSchema<CryptoMarketAssetDivinerConfig>>;
21
+ declare class CryptoMarketAssetDiviner<TParams extends CryptoMarketAssetDivinerParams = CryptoMarketAssetDivinerParams> extends AbstractDiviner<TParams> implements DivinerModule, Module {
22
+ static readonly configSchemas: Schema[];
23
+ static readonly defaultConfigSchema: Schema;
24
+ static readonly targetSchema: "network.xyo.crypto.asset";
25
+ protected divineHandler(payloads?: Payload[]): Payload[];
26
+ }
27
+
28
+ declare const CryptoMarketAssetPlugin: () => _xyo_network_payloadset_plugin.PayloadSetDivinerPlugin<CryptoMarketAssetDiviner<_store__xylabs_object_npm_4_5_1_e31c389195_package.BaseParamsFields & {
29
+ account?: _store__xyo_network_account_model_virtual_3a3814c98f_package.AccountInstance | "random";
30
+ addToResolvers?: boolean;
31
+ additionalSigners?: _store__xyo_network_account_model_virtual_3a3814c98f_package.AccountInstance[];
32
+ allowNameResolution?: boolean;
33
+ config: _store__xylabs_object_npm_4_5_1_e31c389195_package.DeepRestrictToStringKeys<{
34
+ schema: _xyo_network_payload_model.Schema;
35
+ readonly timestamp?: boolean | undefined;
36
+ readonly archiving?: {
37
+ readonly archivists?: string[] | undefined;
38
+ readonly queries?: string[] | undefined;
39
+ } | undefined;
40
+ readonly allowedQueries?: string[] | undefined;
41
+ readonly archivist?: _xyo_network_module_model.ModuleIdentifier | undefined;
42
+ readonly consoleLogger?: _store__xylabs_logger_npm_4_5_1_a411051254_package.LogLevel | undefined;
43
+ readonly labels?: {
44
+ [x: string]: string | undefined;
45
+ } | undefined;
46
+ readonly name?: _xyo_network_module_model.ModuleName | undefined;
47
+ readonly paging?: {
48
+ [x: string]: {
49
+ size?: number | undefined;
50
+ };
51
+ } | undefined;
52
+ readonly retry?: {
53
+ backoff?: number | undefined;
54
+ interval?: number | undefined;
55
+ retries?: number | undefined;
56
+ } | undefined;
57
+ readonly security?: {
58
+ readonly allowAnonymous?: boolean | undefined;
59
+ readonly allowed?: {
60
+ [x: string]: (Lowercase<string> | Lowercase<string>[])[];
61
+ } | undefined;
62
+ readonly disallowed?: {
63
+ [x: string]: Lowercase<string>[];
64
+ } | undefined;
65
+ } | undefined;
66
+ readonly sign?: boolean | undefined;
67
+ readonly storeQueries?: boolean | undefined;
68
+ }>;
69
+ ephemeralQueryAccountEnabled?: boolean;
70
+ moduleIdentifierTransformers?: _xyo_network_module_model.ModuleIdentifierTransformer[];
71
+ }>>;
72
+
73
+ export { CryptoMarketAssetDiviner, type CryptoMarketAssetDivinerConfig, CryptoMarketAssetDivinerConfigSchema, type CryptoMarketAssetDivinerParams, CryptoMarketAssetDivinerQuerySchema, CryptoMarketAssetPlugin, CryptoMarketAssetPlugin as default };
@@ -60,7 +60,7 @@ var otherValueExists = (value) => {
60
60
  const possiblyNumber = value[1];
61
61
  return typeof possiblyNumber === "number" && !Number.isNaN(possiblyNumber);
62
62
  };
63
- var divineCoinGeckoPrices = async (payload) => {
63
+ var divineCoinGeckoPrices = (payload) => {
64
64
  const assets = payload && payload?.assets ? Object.fromEntries(
65
65
  Object.entries(payload.assets).filter(valuationExists).map(([asset, valuation]) => {
66
66
  const value = Object.fromEntries(
@@ -70,7 +70,7 @@ var divineCoinGeckoPrices = async (payload) => {
70
70
  })
71
71
  ) : {};
72
72
  const timestamp = Date.now();
73
- return await new PayloadBuilder({ schema }).fields({ assets, timestamp }).build();
73
+ return new PayloadBuilder({ schema }).fields({ assets, timestamp }).build();
74
74
  };
75
75
 
76
76
  // src/lib/divineUniswapPrices.ts
@@ -100,7 +100,7 @@ var valuesFromTokenPairs = (tokensPairs, token) => {
100
100
  }).map((x) => [mapUniswapToken(assertEx(x[0], () => "Undefined Token")), x[1]])
101
101
  );
102
102
  };
103
- var divineUniswapPrices = async (uniswapPayload) => {
103
+ var divineUniswapPrices = (uniswapPayload) => {
104
104
  let assets = {};
105
105
  if (uniswapPayload) {
106
106
  const tokens = new Set(tokensFromPairs(uniswapPayload.pairs));
@@ -114,18 +114,18 @@ var divineUniswapPrices = async (uniswapPayload) => {
114
114
  );
115
115
  }
116
116
  const timestamp = Date.now();
117
- return await new PayloadBuilder2({ schema: schema2 }).fields({ assets, timestamp }).build();
117
+ return new PayloadBuilder2({ schema: schema2 }).fields({ assets, timestamp }).build();
118
118
  };
119
119
 
120
120
  // src/lib/divinePrices.ts
121
121
  var schema3 = CryptoMarketAssetSchema3;
122
- var divinePrices = async (coinGeckoPayload, uniswapPayload) => {
123
- const coinGeckoPrices = await divineCoinGeckoPrices(coinGeckoPayload);
124
- const uniswapPrices = await divineUniswapPrices(uniswapPayload);
122
+ var divinePrices = (coinGeckoPayload, uniswapPayload) => {
123
+ const coinGeckoPrices = divineCoinGeckoPrices(coinGeckoPayload);
124
+ const uniswapPrices = divineUniswapPrices(uniswapPayload);
125
125
  const prices = [uniswapPayload, coinGeckoPayload].some(exists3);
126
126
  const assets = prices ? average(coinGeckoPrices, uniswapPrices) : {};
127
127
  const timestamp = Date.now();
128
- return await new PayloadBuilder3({ schema: schema3 }).fields({ assets, timestamp }).build();
128
+ return new PayloadBuilder3({ schema: schema3 }).fields({ assets, timestamp }).build();
129
129
  };
130
130
 
131
131
  // src/Schema.ts
@@ -137,10 +137,10 @@ var CryptoMarketAssetDiviner = class extends AbstractDiviner {
137
137
  static configSchemas = [...super.configSchemas, CryptoMarketAssetDivinerConfigSchema];
138
138
  static defaultConfigSchema = CryptoMarketAssetDivinerConfigSchema;
139
139
  static targetSchema = CryptoMarketAssetSchema4;
140
- async divineHandler(payloads) {
140
+ divineHandler(payloads) {
141
141
  const coinGeckoPayload = payloads?.find((payload) => payload?.schema === CoingeckoCryptoMarketSchema);
142
142
  const uniswapPayload = payloads?.find((payload) => payload?.schema === UniswapCryptoMarketSchema);
143
- const result = await divinePrices(coinGeckoPayload, uniswapPayload);
143
+ const result = divinePrices(coinGeckoPayload, uniswapPayload);
144
144
  return [result];
145
145
  }
146
146
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Diviner.ts","../../src/lib/divinePrices.ts","../../src/lib/average.ts","../../src/lib/divineCoinGeckoPrices.ts","../../src/lib/divineUniswapPrices.ts","../../src/Schema.ts","../../src/Plugin.ts"],"sourcesContent":["import type { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport { CoingeckoCryptoMarketSchema } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport type { CryptoMarketAssetPayload } from '@xyo-network/crypto-asset-payload-plugin'\nimport { CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport type {\n DivinerConfig, DivinerModule, DivinerParams,\n} from '@xyo-network/diviner-model'\nimport type { AnyConfigSchema, Module } from '@xyo-network/module-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport type { UniswapCryptoMarketPayload } from '@xyo-network/uniswap-crypto-market-payload-plugin'\nimport { UniswapCryptoMarketSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { divinePrices } from './lib/index.ts'\nimport { CryptoMarketAssetDivinerConfigSchema } from './Schema.ts'\n\nexport type CryptoMarketAssetDivinerConfig = DivinerConfig<{ schema: CryptoMarketAssetDivinerConfigSchema }>\nexport type CryptoMarketAssetDivinerParams = DivinerParams<AnyConfigSchema<CryptoMarketAssetDivinerConfig>>\n\nexport class CryptoMarketAssetDiviner<TParams extends CryptoMarketAssetDivinerParams = CryptoMarketAssetDivinerParams>\n extends AbstractDiviner<TParams>\n implements DivinerModule, Module {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoMarketAssetDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = CryptoMarketAssetDivinerConfigSchema\n static override targetSchema = CryptoMarketAssetSchema\n\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload[]> {\n const coinGeckoPayload = payloads?.find(payload => payload?.schema === CoingeckoCryptoMarketSchema) as CoingeckoCryptoMarketPayload\n const uniswapPayload = payloads?.find(payload => payload?.schema === UniswapCryptoMarketSchema) as UniswapCryptoMarketPayload\n const result: CryptoMarketAssetPayload = await divinePrices(coinGeckoPayload, uniswapPayload)\n return [result]\n }\n}\n","import { exists } from '@xylabs/exists'\nimport type { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport type { CryptoMarketAssetPayload } from '@xyo-network/crypto-asset-payload-plugin'\nimport { CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { UniswapCryptoMarketPayload } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { average } from './average.ts'\nimport { divineCoinGeckoPrices } from './divineCoinGeckoPrices.ts'\nimport { divineUniswapPrices } from './divineUniswapPrices.ts'\n\nconst schema = CryptoMarketAssetSchema\n\nexport const divinePrices = async (\n coinGeckoPayload: CoingeckoCryptoMarketPayload | undefined,\n uniswapPayload: UniswapCryptoMarketPayload | undefined,\n): Promise<CryptoMarketAssetPayload> => {\n const coinGeckoPrices = await divineCoinGeckoPrices(coinGeckoPayload)\n const uniswapPrices = await divineUniswapPrices(uniswapPayload)\n const prices = [uniswapPayload, coinGeckoPayload].some(exists)\n const assets = prices ? average(coinGeckoPrices, uniswapPrices) : {}\n const timestamp = Date.now()\n return await new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()\n}\n","import { exists } from '@xylabs/exists'\nimport type {\n AssetInfo, CryptoMarketAssetPayload, Currency, Token,\n} from '@xyo-network/crypto-asset-payload-plugin'\n\nconst isNumber = (val: number | undefined): val is number => {\n return val !== undefined\n}\n\nconst parseStringifiedNumber = (value: string | undefined): number | undefined => {\n if (!value) return undefined\n const parsed = Number.parseFloat(value)\n return Number.isNaN(parsed) ? undefined : parsed\n}\n\nconst averageStringifiedNumbers = (...prices: (string | undefined)[]): number | undefined => {\n const numbers = prices.map(parseStringifiedNumber).filter(isNumber)\n return numbers.length > 0 ? numbers.reduce((sum, n) => sum + n, 0) / numbers.length : undefined\n}\n\nexport const average = (...input: (CryptoMarketAssetPayload | undefined)[]): Record<string, AssetInfo> => {\n // Get all the assets represented\n const payloads = input.filter(exists)\n const tokens = new Set<Token>(payloads.flatMap(payload => Object.keys(payload.assets).map<Token>(t => t as Token)))\n // Get all the valuations used\n const valuations = new Set<Token | Currency>(\n [...tokens].flatMap((asset) => {\n const assetInfo = payloads.map(p => p.assets?.[asset]).filter(exists)\n const valueBasis = new Set<Currency | Token>(assetInfo.flatMap(v => Object.keys(v.value) as unknown as Currency | Token).filter(exists))\n return [...valueBasis]\n }),\n )\n // For each of the tokens, calculate the average valuation for each of valuation bases\n const assets: Record<string, AssetInfo> = Object.fromEntries(\n [...tokens].map((token) => {\n const assetInfo = payloads.map(p => p.assets?.[token]).filter(exists)\n const value = Object.fromEntries(\n [...valuations].map((valuation) => {\n const assetValuations = assetInfo.map(info => info.value?.[valuation])\n const averageAssetValuation = averageStringifiedNumbers(...assetValuations)\n return [valuation, averageAssetValuation?.toString()]\n }),\n )\n return [token, { value }]\n }),\n )\n return assets\n}\n","import type { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport type { AssetInfo, CryptoMarketAssetPayload } from '@xyo-network/crypto-asset-payload-plugin'\nimport { CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\n\nconst schema = CryptoMarketAssetSchema\n\nconst valuationExists = (value: [string, Partial<Record<string, number>> | undefined]): value is [string, Partial<Record<string, number>>] => {\n return !!value[1]\n}\n\nconst otherValueExists = (value: [string, number | undefined]): value is [string, number] => {\n const possiblyNumber = value[1]\n return typeof possiblyNumber === 'number' && !Number.isNaN(possiblyNumber)\n}\n\nexport const divineCoinGeckoPrices = async (payload: CoingeckoCryptoMarketPayload | undefined): Promise<CryptoMarketAssetPayload> => {\n const assets: Record<string, AssetInfo>\n = payload && payload?.assets\n ? Object.fromEntries(\n Object.entries(payload.assets)\n .filter(valuationExists)\n .map(([asset, valuation]) => {\n const value = Object.fromEntries(\n Object.entries(valuation)\n .filter(otherValueExists)\n .map(([symbol, price]) => [symbol.toLowerCase(), price?.toString()]),\n )\n return [asset, { value }]\n }),\n )\n : {}\n const timestamp = Date.now()\n return await new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport type {\n AssetInfo, CryptoMarketAssetPayload, Currency, Token, ValueBasis,\n} from '@xyo-network/crypto-asset-payload-plugin'\nimport { CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n UniswapCryptoMarketPayload, UniswapCryptoPair, UniswapCryptoToken,\n} from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nconst schema = CryptoMarketAssetSchema\n\nconst mapUniswapToken = (symbol: string): Token | Currency => {\n // TODO: Actually calculate the value of the token/stablecoin based on others\n // to weed out individual fluctuations in price\n if (symbol.toLowerCase() === 'wbtc') return 'btc'\n if (symbol.toLowerCase() === 'weth') return 'eth'\n if (symbol.toLowerCase() === 'usdt') return 'usd'\n return symbol.toLowerCase() as Token\n}\n\nconst pairsContainingToken = (uniswapPayload: UniswapCryptoMarketPayload, token: Token) => {\n return uniswapPayload?.pairs\n .map(p => p.tokens)\n .filter(p => p.some(x => x.symbol.toLowerCase() === token))\n .filter(exists)\n}\n\nconst tokensFromPairs = (pairs: UniswapCryptoPair[]) => {\n return pairs.flatMap(p => p.tokens).map(t => t.symbol.toLowerCase() as Token)\n}\n\nconst valuesFromTokenPairs = (tokensPairs: UniswapCryptoToken[][], token: Token): ValueBasis => {\n return Object.fromEntries(\n tokensPairs\n .map((pair) => {\n const current = pair.find(p => p.symbol.toLowerCase() === token)\n const other = pair.find(p => p.symbol.toLowerCase() !== token)\n return [other?.symbol.toLowerCase(), current?.value.toString()]\n })\n .map(x => [mapUniswapToken(assertEx(x[0], () => 'Undefined Token')), x[1]]),\n )\n}\n\nexport const divineUniswapPrices = async (uniswapPayload: UniswapCryptoMarketPayload | undefined): Promise<CryptoMarketAssetPayload> => {\n let assets: Partial<Record<Token, AssetInfo | undefined>> = {}\n if (uniswapPayload) {\n const tokens: Set<Token> = new Set(tokensFromPairs(uniswapPayload.pairs))\n assets = Object.fromEntries(\n [...tokens].map((token) => {\n const pairs = pairsContainingToken(uniswapPayload, token)\n const value: ValueBasis = valuesFromTokenPairs(pairs, token)\n const assetInfo: AssetInfo = { value }\n return [token, assetInfo]\n }),\n )\n }\n const timestamp = Date.now()\n return await new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()\n}\n","export type CryptoMarketAssetDivinerQuerySchema = 'network.xyo.crypto.asset.diviner.query'\nexport const CryptoMarketAssetDivinerQuerySchema: CryptoMarketAssetDivinerQuerySchema = 'network.xyo.crypto.asset.diviner.query'\n\nexport type CryptoMarketAssetDivinerConfigSchema = 'network.xyo.crypto.asset.diviner.config'\nexport const CryptoMarketAssetDivinerConfigSchema: CryptoMarketAssetDivinerConfigSchema = 'network.xyo.crypto.asset.diviner.config'\n","import { CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoMarketAssetDiviner } from './Diviner.ts'\n\nexport const CryptoMarketAssetPlugin = () =>\n createPayloadSetDivinerPlugin<CryptoMarketAssetDiviner>(\n { required: { [CryptoMarketAssetSchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await CryptoMarketAssetDiviner.create(params)) as CryptoMarketAssetDiviner\n },\n },\n )\n"],"mappings":"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","names":["CryptoMarketAssetSchema","exists","CryptoMarketAssetSchema","PayloadBuilder","exists","CryptoMarketAssetSchema","PayloadBuilder","schema","schema","CryptoMarketAssetSchema","exists","PayloadBuilder","CryptoMarketAssetSchema","CryptoMarketAssetSchema","CryptoMarketAssetSchema"]}
1
+ {"version":3,"sources":["../../src/Diviner.ts","../../src/lib/divinePrices.ts","../../src/lib/average.ts","../../src/lib/divineCoinGeckoPrices.ts","../../src/lib/divineUniswapPrices.ts","../../src/Schema.ts","../../src/Plugin.ts"],"sourcesContent":["import type { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport { CoingeckoCryptoMarketSchema } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport type { CryptoMarketAssetPayload } from '@xyo-network/crypto-asset-payload-plugin'\nimport { CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport type {\n DivinerConfig, DivinerModule, DivinerParams,\n} from '@xyo-network/diviner-model'\nimport type { AnyConfigSchema, Module } from '@xyo-network/module-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport type { UniswapCryptoMarketPayload } from '@xyo-network/uniswap-crypto-market-payload-plugin'\nimport { UniswapCryptoMarketSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { divinePrices } from './lib/index.ts'\nimport { CryptoMarketAssetDivinerConfigSchema } from './Schema.ts'\n\nexport type CryptoMarketAssetDivinerConfig = DivinerConfig<{ schema: CryptoMarketAssetDivinerConfigSchema }>\nexport type CryptoMarketAssetDivinerParams = DivinerParams<AnyConfigSchema<CryptoMarketAssetDivinerConfig>>\n\nexport class CryptoMarketAssetDiviner<TParams extends CryptoMarketAssetDivinerParams = CryptoMarketAssetDivinerParams>\n extends AbstractDiviner<TParams>\n implements DivinerModule, Module {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoMarketAssetDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = CryptoMarketAssetDivinerConfigSchema\n static override readonly targetSchema = CryptoMarketAssetSchema\n\n protected override divineHandler(payloads?: Payload[]): Payload[] {\n const coinGeckoPayload = payloads?.find(payload => payload?.schema === CoingeckoCryptoMarketSchema) as CoingeckoCryptoMarketPayload\n const uniswapPayload = payloads?.find(payload => payload?.schema === UniswapCryptoMarketSchema) as UniswapCryptoMarketPayload\n const result: CryptoMarketAssetPayload = divinePrices(coinGeckoPayload, uniswapPayload)\n return [result]\n }\n}\n","import { exists } from '@xylabs/exists'\nimport type { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport type { CryptoMarketAssetPayload } from '@xyo-network/crypto-asset-payload-plugin'\nimport { CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { UniswapCryptoMarketPayload } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { average } from './average.ts'\nimport { divineCoinGeckoPrices } from './divineCoinGeckoPrices.ts'\nimport { divineUniswapPrices } from './divineUniswapPrices.ts'\n\nconst schema = CryptoMarketAssetSchema\n\nexport const divinePrices = (\n coinGeckoPayload: CoingeckoCryptoMarketPayload | undefined,\n uniswapPayload: UniswapCryptoMarketPayload | undefined,\n): CryptoMarketAssetPayload => {\n const coinGeckoPrices = divineCoinGeckoPrices(coinGeckoPayload)\n const uniswapPrices = divineUniswapPrices(uniswapPayload)\n const prices = [uniswapPayload, coinGeckoPayload].some(exists)\n const assets = prices ? average(coinGeckoPrices, uniswapPrices) : {}\n const timestamp = Date.now()\n return new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()\n}\n","import { exists } from '@xylabs/exists'\nimport type {\n AssetInfo, CryptoMarketAssetPayload, Currency, Token,\n} from '@xyo-network/crypto-asset-payload-plugin'\n\nconst isNumber = (val: number | undefined): val is number => {\n return val !== undefined\n}\n\nconst parseStringifiedNumber = (value: string | undefined): number | undefined => {\n if (!value) return undefined\n const parsed = Number.parseFloat(value)\n return Number.isNaN(parsed) ? undefined : parsed\n}\n\nconst averageStringifiedNumbers = (...prices: (string | undefined)[]): number | undefined => {\n const numbers = prices.map(parseStringifiedNumber).filter(isNumber)\n return numbers.length > 0 ? numbers.reduce((sum, n) => sum + n, 0) / numbers.length : undefined\n}\n\nexport const average = (...input: (CryptoMarketAssetPayload | undefined)[]): Record<string, AssetInfo> => {\n // Get all the assets represented\n const payloads = input.filter(exists)\n const tokens = new Set<Token>(payloads.flatMap(payload => Object.keys(payload.assets).map<Token>(t => t as Token)))\n // Get all the valuations used\n const valuations = new Set<Token | Currency>(\n [...tokens].flatMap((asset) => {\n const assetInfo = payloads.map(p => p.assets?.[asset]).filter(exists)\n const valueBasis = new Set<Currency | Token>(assetInfo.flatMap(v => Object.keys(v.value) as unknown as Currency | Token).filter(exists))\n return [...valueBasis]\n }),\n )\n // For each of the tokens, calculate the average valuation for each of valuation bases\n const assets: Record<string, AssetInfo> = Object.fromEntries(\n [...tokens].map((token) => {\n const assetInfo = payloads.map(p => p.assets?.[token]).filter(exists)\n const value = Object.fromEntries(\n [...valuations].map((valuation) => {\n const assetValuations = assetInfo.map(info => info.value?.[valuation])\n const averageAssetValuation = averageStringifiedNumbers(...assetValuations)\n return [valuation, averageAssetValuation?.toString()]\n }),\n )\n return [token, { value }]\n }),\n )\n return assets\n}\n","import type { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport type { AssetInfo, CryptoMarketAssetPayload } from '@xyo-network/crypto-asset-payload-plugin'\nimport { CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\n\nconst schema = CryptoMarketAssetSchema\n\nconst valuationExists = (value: [string, Partial<Record<string, number>> | undefined]): value is [string, Partial<Record<string, number>>] => {\n return !!value[1]\n}\n\nconst otherValueExists = (value: [string, number | undefined]): value is [string, number] => {\n const possiblyNumber = value[1]\n return typeof possiblyNumber === 'number' && !Number.isNaN(possiblyNumber)\n}\n\nexport const divineCoinGeckoPrices = (payload: CoingeckoCryptoMarketPayload | undefined): CryptoMarketAssetPayload => {\n const assets: Record<string, AssetInfo>\n = payload && payload?.assets\n ? Object.fromEntries(\n Object.entries(payload.assets)\n .filter(valuationExists)\n .map(([asset, valuation]) => {\n const value = Object.fromEntries(\n Object.entries(valuation)\n .filter(otherValueExists)\n .map(([symbol, price]) => [symbol.toLowerCase(), price?.toString()]),\n )\n return [asset, { value }]\n }),\n )\n : {}\n const timestamp = Date.now()\n return new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport type {\n AssetInfo, CryptoMarketAssetPayload, Currency, Token, ValueBasis,\n} from '@xyo-network/crypto-asset-payload-plugin'\nimport { CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n UniswapCryptoMarketPayload, UniswapCryptoPair, UniswapCryptoToken,\n} from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nconst schema = CryptoMarketAssetSchema\n\nconst mapUniswapToken = (symbol: string): Token | Currency => {\n // TODO: Actually calculate the value of the token/stablecoin based on others\n // to weed out individual fluctuations in price\n if (symbol.toLowerCase() === 'wbtc') return 'btc'\n if (symbol.toLowerCase() === 'weth') return 'eth'\n if (symbol.toLowerCase() === 'usdt') return 'usd'\n return symbol.toLowerCase() as Token\n}\n\nconst pairsContainingToken = (uniswapPayload: UniswapCryptoMarketPayload, token: Token) => {\n return uniswapPayload?.pairs\n .map(p => p.tokens)\n .filter(p => p.some(x => x.symbol.toLowerCase() === token))\n .filter(exists)\n}\n\nconst tokensFromPairs = (pairs: UniswapCryptoPair[]) => {\n return pairs.flatMap(p => p.tokens).map(t => t.symbol.toLowerCase() as Token)\n}\n\nconst valuesFromTokenPairs = (tokensPairs: UniswapCryptoToken[][], token: Token): ValueBasis => {\n return Object.fromEntries(\n tokensPairs\n .map((pair) => {\n const current = pair.find(p => p.symbol.toLowerCase() === token)\n const other = pair.find(p => p.symbol.toLowerCase() !== token)\n return [other?.symbol.toLowerCase(), current?.value.toString()]\n })\n .map(x => [mapUniswapToken(assertEx(x[0], () => 'Undefined Token')), x[1]]),\n )\n}\n\nexport const divineUniswapPrices = (uniswapPayload: UniswapCryptoMarketPayload | undefined): CryptoMarketAssetPayload => {\n let assets: Partial<Record<Token, AssetInfo | undefined>> = {}\n if (uniswapPayload) {\n const tokens: Set<Token> = new Set(tokensFromPairs(uniswapPayload.pairs))\n assets = Object.fromEntries(\n [...tokens].map((token) => {\n const pairs = pairsContainingToken(uniswapPayload, token)\n const value: ValueBasis = valuesFromTokenPairs(pairs, token)\n const assetInfo: AssetInfo = { value }\n return [token, assetInfo]\n }),\n )\n }\n const timestamp = Date.now()\n return new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()\n}\n","export type CryptoMarketAssetDivinerQuerySchema = 'network.xyo.crypto.asset.diviner.query'\nexport const CryptoMarketAssetDivinerQuerySchema: CryptoMarketAssetDivinerQuerySchema = 'network.xyo.crypto.asset.diviner.query'\n\nexport type CryptoMarketAssetDivinerConfigSchema = 'network.xyo.crypto.asset.diviner.config'\nexport const CryptoMarketAssetDivinerConfigSchema: CryptoMarketAssetDivinerConfigSchema = 'network.xyo.crypto.asset.diviner.config'\n","import { CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { CryptoMarketAssetDiviner } from './Diviner.ts'\n\nexport const CryptoMarketAssetPlugin = () =>\n createPayloadSetDivinerPlugin<CryptoMarketAssetDiviner>(\n { required: { [CryptoMarketAssetSchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await CryptoMarketAssetDiviner.create(params)) as CryptoMarketAssetDiviner\n },\n },\n )\n"],"mappings":"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","names":["CryptoMarketAssetSchema","exists","CryptoMarketAssetSchema","PayloadBuilder","exists","CryptoMarketAssetSchema","PayloadBuilder","schema","schema","CryptoMarketAssetSchema","exists","PayloadBuilder","CryptoMarketAssetSchema","CryptoMarketAssetSchema","CryptoMarketAssetSchema"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/crypto-asset-plugin",
3
- "version": "3.4.0",
3
+ "version": "3.4.1",
4
4
  "description": "Typescript/Javascript Plugins for XYO Platform",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -31,22 +31,22 @@
31
31
  "dependencies": {
32
32
  "@xylabs/assert": "^4.5.1",
33
33
  "@xylabs/exists": "^4.5.1",
34
- "@xyo-network/coingecko-crypto-market-payload-plugin": "^3.4.0",
35
- "@xyo-network/crypto-asset-payload-plugin": "^3.4.0",
36
- "@xyo-network/diviner-abstract": "^3.8.0",
37
- "@xyo-network/diviner-model": "^3.8.0",
38
- "@xyo-network/module-model": "^3.8.0",
39
- "@xyo-network/payload-builder": "^3.8.0",
40
- "@xyo-network/payload-model": "^3.8.0",
41
- "@xyo-network/payloadset-plugin": "^3.8.0",
42
- "@xyo-network/uniswap-crypto-market-payload-plugin": "^3.4.0"
34
+ "@xyo-network/coingecko-crypto-market-payload-plugin": "^3.4.1",
35
+ "@xyo-network/crypto-asset-payload-plugin": "^3.4.1",
36
+ "@xyo-network/diviner-abstract": "^3.8.5",
37
+ "@xyo-network/diviner-model": "^3.8.5",
38
+ "@xyo-network/module-model": "^3.8.5",
39
+ "@xyo-network/payload-builder": "^3.8.5",
40
+ "@xyo-network/payload-model": "^3.8.5",
41
+ "@xyo-network/payloadset-plugin": "^3.8.5",
42
+ "@xyo-network/uniswap-crypto-market-payload-plugin": "^3.4.1"
43
43
  },
44
44
  "devDependencies": {
45
- "@xylabs/ts-scripts-yarn3": "^4.2.6",
46
- "@xylabs/tsconfig": "^4.2.6",
45
+ "@xylabs/ts-scripts-yarn3": "^5.0.22",
46
+ "@xylabs/tsconfig": "^5.0.22",
47
47
  "@xylabs/vitest-extended": "^4.5.1",
48
48
  "typescript": "^5.7.3",
49
- "vitest": "^3.0.4"
49
+ "vitest": "^3.0.5"
50
50
  },
51
51
  "publishConfig": {
52
52
  "access": "public"
package/src/Diviner.ts CHANGED
@@ -22,12 +22,12 @@ export class CryptoMarketAssetDiviner<TParams extends CryptoMarketAssetDivinerPa
22
22
  implements DivinerModule, Module {
23
23
  static override readonly configSchemas: Schema[] = [...super.configSchemas, CryptoMarketAssetDivinerConfigSchema]
24
24
  static override readonly defaultConfigSchema: Schema = CryptoMarketAssetDivinerConfigSchema
25
- static override targetSchema = CryptoMarketAssetSchema
25
+ static override readonly targetSchema = CryptoMarketAssetSchema
26
26
 
27
- protected override async divineHandler(payloads?: Payload[]): Promise<Payload[]> {
27
+ protected override divineHandler(payloads?: Payload[]): Payload[] {
28
28
  const coinGeckoPayload = payloads?.find(payload => payload?.schema === CoingeckoCryptoMarketSchema) as CoingeckoCryptoMarketPayload
29
29
  const uniswapPayload = payloads?.find(payload => payload?.schema === UniswapCryptoMarketSchema) as UniswapCryptoMarketPayload
30
- const result: CryptoMarketAssetPayload = await divinePrices(coinGeckoPayload, uniswapPayload)
30
+ const result: CryptoMarketAssetPayload = divinePrices(coinGeckoPayload, uniswapPayload)
31
31
  return [result]
32
32
  }
33
33
  }
@@ -14,7 +14,7 @@ const otherValueExists = (value: [string, number | undefined]): value is [string
14
14
  return typeof possiblyNumber === 'number' && !Number.isNaN(possiblyNumber)
15
15
  }
16
16
 
17
- export const divineCoinGeckoPrices = async (payload: CoingeckoCryptoMarketPayload | undefined): Promise<CryptoMarketAssetPayload> => {
17
+ export const divineCoinGeckoPrices = (payload: CoingeckoCryptoMarketPayload | undefined): CryptoMarketAssetPayload => {
18
18
  const assets: Record<string, AssetInfo>
19
19
  = payload && payload?.assets
20
20
  ? Object.fromEntries(
@@ -31,5 +31,5 @@ export const divineCoinGeckoPrices = async (payload: CoingeckoCryptoMarketPayloa
31
31
  )
32
32
  : {}
33
33
  const timestamp = Date.now()
34
- return await new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()
34
+ return new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()
35
35
  }
@@ -11,14 +11,14 @@ import { divineUniswapPrices } from './divineUniswapPrices.ts'
11
11
 
12
12
  const schema = CryptoMarketAssetSchema
13
13
 
14
- export const divinePrices = async (
14
+ export const divinePrices = (
15
15
  coinGeckoPayload: CoingeckoCryptoMarketPayload | undefined,
16
16
  uniswapPayload: UniswapCryptoMarketPayload | undefined,
17
- ): Promise<CryptoMarketAssetPayload> => {
18
- const coinGeckoPrices = await divineCoinGeckoPrices(coinGeckoPayload)
19
- const uniswapPrices = await divineUniswapPrices(uniswapPayload)
17
+ ): CryptoMarketAssetPayload => {
18
+ const coinGeckoPrices = divineCoinGeckoPrices(coinGeckoPayload)
19
+ const uniswapPrices = divineUniswapPrices(uniswapPayload)
20
20
  const prices = [uniswapPayload, coinGeckoPayload].some(exists)
21
21
  const assets = prices ? average(coinGeckoPrices, uniswapPrices) : {}
22
22
  const timestamp = Date.now()
23
- return await new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()
23
+ return new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()
24
24
  }
@@ -43,7 +43,7 @@ const valuesFromTokenPairs = (tokensPairs: UniswapCryptoToken[][], token: Token)
43
43
  )
44
44
  }
45
45
 
46
- export const divineUniswapPrices = async (uniswapPayload: UniswapCryptoMarketPayload | undefined): Promise<CryptoMarketAssetPayload> => {
46
+ export const divineUniswapPrices = (uniswapPayload: UniswapCryptoMarketPayload | undefined): CryptoMarketAssetPayload => {
47
47
  let assets: Partial<Record<Token, AssetInfo | undefined>> = {}
48
48
  if (uniswapPayload) {
49
49
  const tokens: Set<Token> = new Set(tokensFromPairs(uniswapPayload.pairs))
@@ -57,5 +57,5 @@ export const divineUniswapPrices = async (uniswapPayload: UniswapCryptoMarketPay
57
57
  )
58
58
  }
59
59
  const timestamp = Date.now()
60
- return await new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()
60
+ return new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()
61
61
  }
@@ -1,16 +0,0 @@
1
- import { AbstractDiviner } from '@xyo-network/diviner-abstract';
2
- import type { DivinerConfig, DivinerModule, DivinerParams } from '@xyo-network/diviner-model';
3
- import type { AnyConfigSchema, Module } from '@xyo-network/module-model';
4
- import type { Payload, Schema } from '@xyo-network/payload-model';
5
- import { CryptoMarketAssetDivinerConfigSchema } from './Schema.ts';
6
- export type CryptoMarketAssetDivinerConfig = DivinerConfig<{
7
- schema: CryptoMarketAssetDivinerConfigSchema;
8
- }>;
9
- export type CryptoMarketAssetDivinerParams = DivinerParams<AnyConfigSchema<CryptoMarketAssetDivinerConfig>>;
10
- export declare class CryptoMarketAssetDiviner<TParams extends CryptoMarketAssetDivinerParams = CryptoMarketAssetDivinerParams> extends AbstractDiviner<TParams> implements DivinerModule, Module {
11
- static readonly configSchemas: Schema[];
12
- static readonly defaultConfigSchema: Schema;
13
- static targetSchema: "network.xyo.crypto.asset";
14
- protected divineHandler(payloads?: Payload[]): Promise<Payload[]>;
15
- }
16
- //# sourceMappingURL=Diviner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EACV,aAAa,EAAE,aAAa,EAAE,aAAa,EAC5C,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAKjE,OAAO,EAAE,oCAAoC,EAAE,MAAM,aAAa,CAAA;AAElE,MAAM,MAAM,8BAA8B,GAAG,aAAa,CAAC;IAAE,MAAM,EAAE,oCAAoC,CAAA;CAAE,CAAC,CAAA;AAC5G,MAAM,MAAM,8BAA8B,GAAG,aAAa,CAAC,eAAe,CAAC,8BAA8B,CAAC,CAAC,CAAA;AAE3G,qBAAa,wBAAwB,CAAC,OAAO,SAAS,8BAA8B,GAAG,8BAA8B,CACnH,SAAQ,eAAe,CAAC,OAAO,CAC/B,YAAW,aAAa,EAAE,MAAM;IAChC,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAiE;IACjH,gBAAyB,mBAAmB,EAAE,MAAM,CAAuC;IAC3F,OAAgB,YAAY,6BAA0B;cAE7B,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAMjF"}
@@ -1,46 +0,0 @@
1
- import { CryptoMarketAssetDiviner } from './Diviner.ts';
2
- export declare const CryptoMarketAssetPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<CryptoMarketAssetDiviner<import(".store/@xylabs-object-npm-4.5.1-e31c389195/package").BaseParamsFields & {
3
- account?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance | "random";
4
- addToResolvers?: boolean;
5
- additionalSigners?: import(".store/@xyo-network-account-model-virtual-2eddd29fdf/package").AccountInstance[];
6
- allowNameResolution?: boolean;
7
- config: import(".store/@xylabs-object-npm-4.5.1-e31c389195/package").DeepRestrictToStringKeys<{
8
- schema: import("@xyo-network/payload-model").Schema;
9
- readonly timestamp?: boolean | undefined;
10
- readonly archiving?: {
11
- readonly archivists?: string[] | undefined;
12
- readonly queries?: string[] | undefined;
13
- } | undefined;
14
- readonly allowedQueries?: string[] | undefined;
15
- readonly archivist?: import("@xyo-network/module-model").ModuleIdentifier | undefined;
16
- readonly consoleLogger?: import(".store/@xylabs-logger-npm-4.5.1-a411051254/package").LogLevel | undefined;
17
- readonly labels?: {
18
- [x: string]: string | undefined;
19
- } | undefined;
20
- readonly name?: import("@xyo-network/module-model").ModuleName | undefined;
21
- readonly paging?: {
22
- [x: string]: {
23
- size?: number | undefined;
24
- };
25
- } | undefined;
26
- readonly retry?: {
27
- backoff?: number | undefined;
28
- interval?: number | undefined;
29
- retries?: number | undefined;
30
- } | undefined;
31
- readonly security?: {
32
- readonly allowAnonymous?: boolean | undefined;
33
- readonly allowed?: {
34
- [x: string]: (Lowercase<string> | Lowercase<string>[])[];
35
- } | undefined;
36
- readonly disallowed?: {
37
- [x: string]: Lowercase<string>[];
38
- } | undefined;
39
- } | undefined;
40
- readonly sign?: boolean | undefined;
41
- readonly storeQueries?: boolean | undefined;
42
- }>;
43
- ephemeralQueryAccountEnabled?: boolean;
44
- moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
45
- }>>;
46
- //# sourceMappingURL=Plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAEvD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQjC,CAAA"}
@@ -1,5 +0,0 @@
1
- export type CryptoMarketAssetDivinerQuerySchema = 'network.xyo.crypto.asset.diviner.query';
2
- export declare const CryptoMarketAssetDivinerQuerySchema: CryptoMarketAssetDivinerQuerySchema;
3
- export type CryptoMarketAssetDivinerConfigSchema = 'network.xyo.crypto.asset.diviner.config';
4
- export declare const CryptoMarketAssetDivinerConfigSchema: CryptoMarketAssetDivinerConfigSchema;
5
- //# sourceMappingURL=Schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mCAAmC,GAAG,wCAAwC,CAAA;AAC1F,eAAO,MAAM,mCAAmC,EAAE,mCAA8E,CAAA;AAEhI,MAAM,MAAM,oCAAoC,GAAG,yCAAyC,CAAA;AAC5F,eAAO,MAAM,oCAAoC,EAAE,oCAAgF,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AACzF,cAAc,aAAa,CAAA"}
@@ -1,3 +0,0 @@
1
- import type { AssetInfo, CryptoMarketAssetPayload } from '@xyo-network/crypto-asset-payload-plugin';
2
- export declare const average: (...input: (CryptoMarketAssetPayload | undefined)[]) => Record<string, AssetInfo>;
3
- //# sourceMappingURL=average.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"average.d.ts","sourceRoot":"","sources":["../../../src/lib/average.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EAAE,wBAAwB,EACpC,MAAM,0CAA0C,CAAA;AAiBjD,eAAO,MAAM,OAAO,aAAc,CAAC,wBAAwB,GAAG,SAAS,CAAC,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CA2BpG,CAAA"}
@@ -1,4 +0,0 @@
1
- import type { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin';
2
- import type { CryptoMarketAssetPayload } from '@xyo-network/crypto-asset-payload-plugin';
3
- export declare const divineCoinGeckoPrices: (payload: CoingeckoCryptoMarketPayload | undefined) => Promise<CryptoMarketAssetPayload>;
4
- //# sourceMappingURL=divineCoinGeckoPrices.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"divineCoinGeckoPrices.d.ts","sourceRoot":"","sources":["../../../src/lib/divineCoinGeckoPrices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAA;AACvG,OAAO,KAAK,EAAa,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AAenG,eAAO,MAAM,qBAAqB,YAAmB,4BAA4B,GAAG,SAAS,KAAG,OAAO,CAAC,wBAAwB,CAkB/H,CAAA"}
@@ -1,5 +0,0 @@
1
- import type { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin';
2
- import type { CryptoMarketAssetPayload } from '@xyo-network/crypto-asset-payload-plugin';
3
- import type { UniswapCryptoMarketPayload } from '@xyo-network/uniswap-crypto-market-payload-plugin';
4
- export declare const divinePrices: (coinGeckoPayload: CoingeckoCryptoMarketPayload | undefined, uniswapPayload: UniswapCryptoMarketPayload | undefined) => Promise<CryptoMarketAssetPayload>;
5
- //# sourceMappingURL=divinePrices.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"divinePrices.d.ts","sourceRoot":"","sources":["../../../src/lib/divinePrices.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAA;AACvG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AAGxF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAA;AAQnG,eAAO,MAAM,YAAY,qBACL,4BAA4B,GAAG,SAAS,kBAC1C,0BAA0B,GAAG,SAAS,KACrD,OAAO,CAAC,wBAAwB,CAOlC,CAAA"}
@@ -1,4 +0,0 @@
1
- import type { CryptoMarketAssetPayload } from '@xyo-network/crypto-asset-payload-plugin';
2
- import type { UniswapCryptoMarketPayload } from '@xyo-network/uniswap-crypto-market-payload-plugin';
3
- export declare const divineUniswapPrices: (uniswapPayload: UniswapCryptoMarketPayload | undefined) => Promise<CryptoMarketAssetPayload>;
4
- //# sourceMappingURL=divineUniswapPrices.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"divineUniswapPrices.d.ts","sourceRoot":"","sources":["../../../src/lib/divineUniswapPrices.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACC,wBAAwB,EACpC,MAAM,0CAA0C,CAAA;AAGjD,OAAO,KAAK,EACV,0BAA0B,EAC3B,MAAM,mDAAmD,CAAA;AAoC1D,eAAO,MAAM,mBAAmB,mBAA0B,0BAA0B,GAAG,SAAS,KAAG,OAAO,CAAC,wBAAwB,CAelI,CAAA"}
@@ -1,2 +0,0 @@
1
- export * from './divinePrices.ts';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -1,3 +0,0 @@
1
- export * from './sampleCoinGecko.ts';
2
- export * from './sampleUniswap.ts';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/test/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA"}
@@ -1,3 +0,0 @@
1
- import type { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin';
2
- export declare const sampleCoinGeckoPayload: CoingeckoCryptoMarketPayload;
3
- //# sourceMappingURL=sampleCoinGecko.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sampleCoinGecko.d.ts","sourceRoot":"","sources":["../../../src/test/sampleCoinGecko.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAA;AAGvG,eAAO,MAAM,sBAAsB,EAAE,4BAuEpC,CAAA"}
@@ -1,3 +0,0 @@
1
- import type { UniswapCryptoMarketPayload } from '@xyo-network/uniswap-crypto-market-payload-plugin';
2
- export declare const sampleUniswapPayload: UniswapCryptoMarketPayload;
3
- //# sourceMappingURL=sampleUniswap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sampleUniswap.d.ts","sourceRoot":"","sources":["../../../src/test/sampleUniswap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAA;AAGnG,eAAO,MAAM,oBAAoB,EAAE,0BA2LlC,CAAA"}