@xyo-network/crypto-asset-plugin 3.3.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.
- package/dist/neutral/index.d.ts +73 -4
- package/dist/neutral/index.mjs +10 -10
- package/dist/neutral/index.mjs.map +1 -1
- package/package.json +13 -13
- package/src/Diviner.ts +3 -3
- package/src/lib/divineCoinGeckoPrices.ts +2 -2
- package/src/lib/divinePrices.ts +5 -5
- package/src/lib/divineUniswapPrices.ts +2 -2
- package/dist/neutral/Diviner.d.ts +0 -16
- package/dist/neutral/Diviner.d.ts.map +0 -1
- package/dist/neutral/Plugin.d.ts +0 -46
- package/dist/neutral/Plugin.d.ts.map +0 -1
- package/dist/neutral/Schema.d.ts +0 -5
- package/dist/neutral/Schema.d.ts.map +0 -1
- package/dist/neutral/index.d.ts.map +0 -1
- package/dist/neutral/lib/average.d.ts +0 -3
- package/dist/neutral/lib/average.d.ts.map +0 -1
- package/dist/neutral/lib/divineCoinGeckoPrices.d.ts +0 -4
- package/dist/neutral/lib/divineCoinGeckoPrices.d.ts.map +0 -1
- package/dist/neutral/lib/divinePrices.d.ts +0 -5
- package/dist/neutral/lib/divinePrices.d.ts.map +0 -1
- package/dist/neutral/lib/divineUniswapPrices.d.ts +0 -4
- package/dist/neutral/lib/divineUniswapPrices.d.ts.map +0 -1
- package/dist/neutral/lib/index.d.ts +0 -2
- package/dist/neutral/lib/index.d.ts.map +0 -1
- package/dist/neutral/test/index.d.ts +0 -3
- package/dist/neutral/test/index.d.ts.map +0 -1
- package/dist/neutral/test/sampleCoinGecko.d.ts +0 -3
- package/dist/neutral/test/sampleCoinGecko.d.ts.map +0 -1
- package/dist/neutral/test/sampleUniswap.d.ts +0 -3
- package/dist/neutral/test/sampleUniswap.d.ts.map +0 -1
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,4 +1,73 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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 };
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
123
|
-
const coinGeckoPrices =
|
|
124
|
-
const uniswapPrices =
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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.
|
|
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.
|
|
35
|
-
"@xyo-network/crypto-asset-payload-plugin": "^3.
|
|
36
|
-
"@xyo-network/diviner-abstract": "^3.
|
|
37
|
-
"@xyo-network/diviner-model": "^3.
|
|
38
|
-
"@xyo-network/module-model": "^3.
|
|
39
|
-
"@xyo-network/payload-builder": "^3.
|
|
40
|
-
"@xyo-network/payload-model": "^3.
|
|
41
|
-
"@xyo-network/payloadset-plugin": "^3.
|
|
42
|
-
"@xyo-network/uniswap-crypto-market-payload-plugin": "^3.
|
|
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": "^
|
|
46
|
-
"@xylabs/tsconfig": "^
|
|
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.
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
34
|
+
return new PayloadBuilder<CryptoMarketAssetPayload>({ schema }).fields({ assets, timestamp }).build()
|
|
35
35
|
}
|
package/src/lib/divinePrices.ts
CHANGED
|
@@ -11,14 +11,14 @@ import { divineUniswapPrices } from './divineUniswapPrices.ts'
|
|
|
11
11
|
|
|
12
12
|
const schema = CryptoMarketAssetSchema
|
|
13
13
|
|
|
14
|
-
export const divinePrices =
|
|
14
|
+
export const divinePrices = (
|
|
15
15
|
coinGeckoPayload: CoingeckoCryptoMarketPayload | undefined,
|
|
16
16
|
uniswapPayload: UniswapCryptoMarketPayload | undefined,
|
|
17
|
-
):
|
|
18
|
-
const coinGeckoPrices =
|
|
19
|
-
const uniswapPrices =
|
|
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
|
|
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 =
|
|
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
|
|
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"}
|
package/dist/neutral/Plugin.d.ts
DELETED
|
@@ -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-281bb6acc0/package").AccountInstance | "random";
|
|
4
|
-
addToResolvers?: boolean;
|
|
5
|
-
additionalSigners?: import(".store/@xyo-network-account-model-virtual-281bb6acc0/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"}
|
package/dist/neutral/Schema.d.ts
DELETED
|
@@ -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 +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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
|
|
@@ -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 +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 +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"}
|