@xyo-network/crypto-asset-plugin 2.83.0 → 2.84.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/browser/Diviner.d.cts +1 -2
- package/dist/browser/Diviner.d.cts.map +1 -1
- package/dist/browser/Diviner.d.mts +1 -2
- package/dist/browser/Diviner.d.mts.map +1 -1
- package/dist/browser/Diviner.d.ts +1 -2
- package/dist/browser/Diviner.d.ts.map +1 -1
- package/dist/browser/Plugin.d.cts +393 -3
- package/dist/browser/Plugin.d.cts.map +1 -1
- package/dist/browser/Plugin.d.mts +393 -3
- package/dist/browser/Plugin.d.mts.map +1 -1
- package/dist/browser/Plugin.d.ts +393 -3
- package/dist/browser/Plugin.d.ts.map +1 -1
- package/dist/browser/index.cjs +10 -10
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +10 -10
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/lib/divineCoinGeckoPrices.d.cts +1 -1
- package/dist/browser/lib/divineCoinGeckoPrices.d.cts.map +1 -1
- package/dist/browser/lib/divineCoinGeckoPrices.d.mts +1 -1
- package/dist/browser/lib/divineCoinGeckoPrices.d.mts.map +1 -1
- package/dist/browser/lib/divineCoinGeckoPrices.d.ts +1 -1
- package/dist/browser/lib/divineCoinGeckoPrices.d.ts.map +1 -1
- package/dist/browser/lib/divinePrices.d.cts +1 -1
- package/dist/browser/lib/divinePrices.d.cts.map +1 -1
- package/dist/browser/lib/divinePrices.d.mts +1 -1
- package/dist/browser/lib/divinePrices.d.mts.map +1 -1
- package/dist/browser/lib/divinePrices.d.ts +1 -1
- package/dist/browser/lib/divinePrices.d.ts.map +1 -1
- package/dist/browser/lib/divineUniswapPrices.d.cts +1 -1
- package/dist/browser/lib/divineUniswapPrices.d.cts.map +1 -1
- package/dist/browser/lib/divineUniswapPrices.d.mts +1 -1
- package/dist/browser/lib/divineUniswapPrices.d.mts.map +1 -1
- package/dist/browser/lib/divineUniswapPrices.d.ts +1 -1
- package/dist/browser/lib/divineUniswapPrices.d.ts.map +1 -1
- package/dist/node/Diviner.d.cts +1 -2
- package/dist/node/Diviner.d.cts.map +1 -1
- package/dist/node/Diviner.d.mts +1 -2
- package/dist/node/Diviner.d.mts.map +1 -1
- package/dist/node/Diviner.d.ts +1 -2
- package/dist/node/Diviner.d.ts.map +1 -1
- package/dist/node/Plugin.d.cts +393 -3
- package/dist/node/Plugin.d.cts.map +1 -1
- package/dist/node/Plugin.d.mts +393 -3
- package/dist/node/Plugin.d.mts.map +1 -1
- package/dist/node/Plugin.d.ts +393 -3
- package/dist/node/Plugin.d.ts.map +1 -1
- package/dist/node/{index.mjs → index.cjs} +76 -46
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.js +45 -75
- package/dist/node/index.js.map +1 -1
- package/dist/node/lib/divineCoinGeckoPrices.d.cts +1 -1
- package/dist/node/lib/divineCoinGeckoPrices.d.cts.map +1 -1
- package/dist/node/lib/divineCoinGeckoPrices.d.mts +1 -1
- package/dist/node/lib/divineCoinGeckoPrices.d.mts.map +1 -1
- package/dist/node/lib/divineCoinGeckoPrices.d.ts +1 -1
- package/dist/node/lib/divineCoinGeckoPrices.d.ts.map +1 -1
- package/dist/node/lib/divinePrices.d.cts +1 -1
- package/dist/node/lib/divinePrices.d.cts.map +1 -1
- package/dist/node/lib/divinePrices.d.mts +1 -1
- package/dist/node/lib/divinePrices.d.mts.map +1 -1
- package/dist/node/lib/divinePrices.d.ts +1 -1
- package/dist/node/lib/divinePrices.d.ts.map +1 -1
- package/dist/node/lib/divineUniswapPrices.d.cts +1 -1
- package/dist/node/lib/divineUniswapPrices.d.cts.map +1 -1
- package/dist/node/lib/divineUniswapPrices.d.mts +1 -1
- package/dist/node/lib/divineUniswapPrices.d.mts.map +1 -1
- package/dist/node/lib/divineUniswapPrices.d.ts +1 -1
- package/dist/node/lib/divineUniswapPrices.d.ts.map +1 -1
- package/package.json +19 -20
- package/src/Diviner.ts +2 -3
- package/src/lib/divineCoinGeckoPrices.ts +2 -2
- package/src/lib/divinePrices.ts +5 -5
- package/src/lib/divineUniswapPrices.ts +2 -2
- package/dist/node/index.mjs.map +0 -1
package/dist/browser/Plugin.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CryptoMarketAssetDiviner } from './Diviner';
|
|
2
2
|
export declare const CryptoMarketAssetPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<CryptoMarketAssetDiviner<import("@xyo-network/object").BaseParamsFields & {
|
|
3
3
|
account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
|
|
4
|
-
config: import("@xyo-network/payload-model").SchemaFields &
|
|
4
|
+
config: (import("@xyo-network/payload-model").SchemaFields & object & Omit<{
|
|
5
5
|
accountDerivationPath?: string | undefined;
|
|
6
6
|
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
7
7
|
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
@@ -19,7 +19,7 @@ export declare const CryptoMarketAssetPlugin: () => import("@xyo-network/payload
|
|
|
19
19
|
readonly timestamp?: boolean | undefined;
|
|
20
20
|
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
21
21
|
schema: string;
|
|
22
|
-
} & Omit<import("@xyo-network/payload-model").SchemaFields &
|
|
22
|
+
} & Omit<(import("@xyo-network/payload-model").SchemaFields & object & Omit<{
|
|
23
23
|
accountDerivationPath?: string | undefined;
|
|
24
24
|
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
25
25
|
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
@@ -41,9 +41,399 @@ export declare const CryptoMarketAssetPlugin: () => import("@xyo-network/payload
|
|
|
41
41
|
schema: "network.xyo.crypto.asset.diviner.config";
|
|
42
42
|
}, "schema">, "schema"> & {
|
|
43
43
|
schema: "network.xyo.crypto.asset.diviner.config";
|
|
44
|
+
}) | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadMetaFields & Omit<{
|
|
45
|
+
accountDerivationPath?: string | undefined;
|
|
46
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
47
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
48
|
+
readonly name?: string | undefined;
|
|
49
|
+
readonly paging?: Record<string, {
|
|
50
|
+
size?: number | undefined;
|
|
51
|
+
}> | undefined;
|
|
52
|
+
readonly security?: {
|
|
53
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
54
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
55
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
56
|
+
} | undefined;
|
|
57
|
+
readonly sign?: boolean | undefined;
|
|
58
|
+
readonly storeQueries?: boolean | undefined;
|
|
59
|
+
readonly timestamp?: boolean | undefined;
|
|
60
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
61
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
62
|
+
} & Omit<{
|
|
63
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
64
|
+
}, "schema">, "schema"> & {
|
|
65
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
66
|
+
} & object) | (import("@xyo-network/payload-model").SchemaFields & object & Omit<{
|
|
67
|
+
accountDerivationPath?: string | undefined;
|
|
68
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
69
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
70
|
+
readonly name?: string | undefined;
|
|
71
|
+
readonly paging?: Record<string, {
|
|
72
|
+
size?: number | undefined;
|
|
73
|
+
}> | undefined;
|
|
74
|
+
readonly security?: {
|
|
75
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
76
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
77
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
78
|
+
} | undefined;
|
|
79
|
+
readonly sign?: boolean | undefined;
|
|
80
|
+
readonly storeQueries?: boolean | undefined;
|
|
81
|
+
readonly timestamp?: boolean | undefined;
|
|
82
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
83
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
84
|
+
} & Omit<{
|
|
85
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
86
|
+
}, "schema">, "schema"> & {
|
|
87
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
88
|
+
} & import("@xyo-network/payload-model").PayloadMetaFields) | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadMetaFields & Omit<{
|
|
89
|
+
accountDerivationPath?: string | undefined;
|
|
90
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
91
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
92
|
+
readonly name?: string | undefined;
|
|
93
|
+
readonly paging?: Record<string, {
|
|
94
|
+
size?: number | undefined;
|
|
95
|
+
}> | undefined;
|
|
96
|
+
readonly security?: {
|
|
97
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
98
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
99
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
100
|
+
} | undefined;
|
|
101
|
+
readonly sign?: boolean | undefined;
|
|
102
|
+
readonly storeQueries?: boolean | undefined;
|
|
103
|
+
readonly timestamp?: boolean | undefined;
|
|
104
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
105
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
106
|
+
} & Omit<{
|
|
107
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
108
|
+
}, "schema">, "schema"> & {
|
|
109
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
110
|
+
}), "schema">, "schema"> & {
|
|
111
|
+
schema: string;
|
|
112
|
+
}) | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadMetaFields & Omit<{
|
|
113
|
+
accountDerivationPath?: string | undefined;
|
|
114
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
115
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
116
|
+
readonly name?: string | undefined;
|
|
117
|
+
readonly paging?: Record<string, {
|
|
118
|
+
size?: number | undefined;
|
|
119
|
+
}> | undefined;
|
|
120
|
+
readonly security?: {
|
|
121
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
122
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
123
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
124
|
+
} | undefined;
|
|
125
|
+
readonly sign?: boolean | undefined;
|
|
126
|
+
readonly storeQueries?: boolean | undefined;
|
|
127
|
+
readonly timestamp?: boolean | undefined;
|
|
128
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
129
|
+
schema: string;
|
|
130
|
+
} & Omit<(import("@xyo-network/payload-model").SchemaFields & object & Omit<{
|
|
131
|
+
accountDerivationPath?: string | undefined;
|
|
132
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
133
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
134
|
+
readonly name?: string | undefined;
|
|
135
|
+
readonly paging?: Record<string, {
|
|
136
|
+
size?: number | undefined;
|
|
137
|
+
}> | undefined;
|
|
138
|
+
readonly security?: {
|
|
139
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
140
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
141
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
142
|
+
} | undefined;
|
|
143
|
+
readonly sign?: boolean | undefined;
|
|
144
|
+
readonly storeQueries?: boolean | undefined;
|
|
145
|
+
readonly timestamp?: boolean | undefined;
|
|
146
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
147
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
148
|
+
} & Omit<{
|
|
149
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
150
|
+
}, "schema">, "schema"> & {
|
|
151
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
152
|
+
}) | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadMetaFields & Omit<{
|
|
153
|
+
accountDerivationPath?: string | undefined;
|
|
154
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
155
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
156
|
+
readonly name?: string | undefined;
|
|
157
|
+
readonly paging?: Record<string, {
|
|
158
|
+
size?: number | undefined;
|
|
159
|
+
}> | undefined;
|
|
160
|
+
readonly security?: {
|
|
161
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
162
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
163
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
164
|
+
} | undefined;
|
|
165
|
+
readonly sign?: boolean | undefined;
|
|
166
|
+
readonly storeQueries?: boolean | undefined;
|
|
167
|
+
readonly timestamp?: boolean | undefined;
|
|
168
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
169
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
170
|
+
} & Omit<{
|
|
171
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
172
|
+
}, "schema">, "schema"> & {
|
|
173
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
174
|
+
} & object) | (import("@xyo-network/payload-model").SchemaFields & object & Omit<{
|
|
175
|
+
accountDerivationPath?: string | undefined;
|
|
176
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
177
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
178
|
+
readonly name?: string | undefined;
|
|
179
|
+
readonly paging?: Record<string, {
|
|
180
|
+
size?: number | undefined;
|
|
181
|
+
}> | undefined;
|
|
182
|
+
readonly security?: {
|
|
183
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
184
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
185
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
186
|
+
} | undefined;
|
|
187
|
+
readonly sign?: boolean | undefined;
|
|
188
|
+
readonly storeQueries?: boolean | undefined;
|
|
189
|
+
readonly timestamp?: boolean | undefined;
|
|
190
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
191
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
192
|
+
} & Omit<{
|
|
193
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
194
|
+
}, "schema">, "schema"> & {
|
|
195
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
196
|
+
} & import("@xyo-network/payload-model").PayloadMetaFields) | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadMetaFields & Omit<{
|
|
197
|
+
accountDerivationPath?: string | undefined;
|
|
198
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
199
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
200
|
+
readonly name?: string | undefined;
|
|
201
|
+
readonly paging?: Record<string, {
|
|
202
|
+
size?: number | undefined;
|
|
203
|
+
}> | undefined;
|
|
204
|
+
readonly security?: {
|
|
205
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
206
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
207
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
208
|
+
} | undefined;
|
|
209
|
+
readonly sign?: boolean | undefined;
|
|
210
|
+
readonly storeQueries?: boolean | undefined;
|
|
211
|
+
readonly timestamp?: boolean | undefined;
|
|
212
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
213
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
214
|
+
} & Omit<{
|
|
215
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
216
|
+
}, "schema">, "schema"> & {
|
|
217
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
218
|
+
}), "schema">, "schema"> & {
|
|
219
|
+
schema: string;
|
|
220
|
+
} & object) | (import("@xyo-network/payload-model").SchemaFields & object & Omit<{
|
|
221
|
+
accountDerivationPath?: string | undefined;
|
|
222
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
223
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
224
|
+
readonly name?: string | undefined;
|
|
225
|
+
readonly paging?: Record<string, {
|
|
226
|
+
size?: number | undefined;
|
|
227
|
+
}> | undefined;
|
|
228
|
+
readonly security?: {
|
|
229
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
230
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
231
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
232
|
+
} | undefined;
|
|
233
|
+
readonly sign?: boolean | undefined;
|
|
234
|
+
readonly storeQueries?: boolean | undefined;
|
|
235
|
+
readonly timestamp?: boolean | undefined;
|
|
236
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
237
|
+
schema: string;
|
|
238
|
+
} & Omit<(import("@xyo-network/payload-model").SchemaFields & object & Omit<{
|
|
239
|
+
accountDerivationPath?: string | undefined;
|
|
240
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
241
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
242
|
+
readonly name?: string | undefined;
|
|
243
|
+
readonly paging?: Record<string, {
|
|
244
|
+
size?: number | undefined;
|
|
245
|
+
}> | undefined;
|
|
246
|
+
readonly security?: {
|
|
247
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
248
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
249
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
250
|
+
} | undefined;
|
|
251
|
+
readonly sign?: boolean | undefined;
|
|
252
|
+
readonly storeQueries?: boolean | undefined;
|
|
253
|
+
readonly timestamp?: boolean | undefined;
|
|
254
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
255
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
256
|
+
} & Omit<{
|
|
257
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
258
|
+
}, "schema">, "schema"> & {
|
|
259
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
260
|
+
}) | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadMetaFields & Omit<{
|
|
261
|
+
accountDerivationPath?: string | undefined;
|
|
262
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
263
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
264
|
+
readonly name?: string | undefined;
|
|
265
|
+
readonly paging?: Record<string, {
|
|
266
|
+
size?: number | undefined;
|
|
267
|
+
}> | undefined;
|
|
268
|
+
readonly security?: {
|
|
269
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
270
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
271
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
272
|
+
} | undefined;
|
|
273
|
+
readonly sign?: boolean | undefined;
|
|
274
|
+
readonly storeQueries?: boolean | undefined;
|
|
275
|
+
readonly timestamp?: boolean | undefined;
|
|
276
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
277
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
278
|
+
} & Omit<{
|
|
279
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
280
|
+
}, "schema">, "schema"> & {
|
|
281
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
282
|
+
} & object) | (import("@xyo-network/payload-model").SchemaFields & object & Omit<{
|
|
283
|
+
accountDerivationPath?: string | undefined;
|
|
284
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
285
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
286
|
+
readonly name?: string | undefined;
|
|
287
|
+
readonly paging?: Record<string, {
|
|
288
|
+
size?: number | undefined;
|
|
289
|
+
}> | undefined;
|
|
290
|
+
readonly security?: {
|
|
291
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
292
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
293
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
294
|
+
} | undefined;
|
|
295
|
+
readonly sign?: boolean | undefined;
|
|
296
|
+
readonly storeQueries?: boolean | undefined;
|
|
297
|
+
readonly timestamp?: boolean | undefined;
|
|
298
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
299
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
300
|
+
} & Omit<{
|
|
301
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
302
|
+
}, "schema">, "schema"> & {
|
|
303
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
304
|
+
} & import("@xyo-network/payload-model").PayloadMetaFields) | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadMetaFields & Omit<{
|
|
305
|
+
accountDerivationPath?: string | undefined;
|
|
306
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
307
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
308
|
+
readonly name?: string | undefined;
|
|
309
|
+
readonly paging?: Record<string, {
|
|
310
|
+
size?: number | undefined;
|
|
311
|
+
}> | undefined;
|
|
312
|
+
readonly security?: {
|
|
313
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
314
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
315
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
316
|
+
} | undefined;
|
|
317
|
+
readonly sign?: boolean | undefined;
|
|
318
|
+
readonly storeQueries?: boolean | undefined;
|
|
319
|
+
readonly timestamp?: boolean | undefined;
|
|
320
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
321
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
322
|
+
} & Omit<{
|
|
323
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
324
|
+
}, "schema">, "schema"> & {
|
|
325
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
326
|
+
}), "schema">, "schema"> & {
|
|
327
|
+
schema: string;
|
|
328
|
+
} & import("@xyo-network/payload-model").PayloadMetaFields) | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadMetaFields & Omit<{
|
|
329
|
+
accountDerivationPath?: string | undefined;
|
|
330
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
331
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
332
|
+
readonly name?: string | undefined;
|
|
333
|
+
readonly paging?: Record<string, {
|
|
334
|
+
size?: number | undefined;
|
|
335
|
+
}> | undefined;
|
|
336
|
+
readonly security?: {
|
|
337
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
338
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
339
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
340
|
+
} | undefined;
|
|
341
|
+
readonly sign?: boolean | undefined;
|
|
342
|
+
readonly storeQueries?: boolean | undefined;
|
|
343
|
+
readonly timestamp?: boolean | undefined;
|
|
344
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
345
|
+
schema: string;
|
|
346
|
+
} & Omit<(import("@xyo-network/payload-model").SchemaFields & object & Omit<{
|
|
347
|
+
accountDerivationPath?: string | undefined;
|
|
348
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
349
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
350
|
+
readonly name?: string | undefined;
|
|
351
|
+
readonly paging?: Record<string, {
|
|
352
|
+
size?: number | undefined;
|
|
353
|
+
}> | undefined;
|
|
354
|
+
readonly security?: {
|
|
355
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
356
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
357
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
358
|
+
} | undefined;
|
|
359
|
+
readonly sign?: boolean | undefined;
|
|
360
|
+
readonly storeQueries?: boolean | undefined;
|
|
361
|
+
readonly timestamp?: boolean | undefined;
|
|
362
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
363
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
364
|
+
} & Omit<{
|
|
365
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
366
|
+
}, "schema">, "schema"> & {
|
|
367
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
368
|
+
}) | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadMetaFields & Omit<{
|
|
369
|
+
accountDerivationPath?: string | undefined;
|
|
370
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
371
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
372
|
+
readonly name?: string | undefined;
|
|
373
|
+
readonly paging?: Record<string, {
|
|
374
|
+
size?: number | undefined;
|
|
375
|
+
}> | undefined;
|
|
376
|
+
readonly security?: {
|
|
377
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
378
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
379
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
380
|
+
} | undefined;
|
|
381
|
+
readonly sign?: boolean | undefined;
|
|
382
|
+
readonly storeQueries?: boolean | undefined;
|
|
383
|
+
readonly timestamp?: boolean | undefined;
|
|
384
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
385
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
386
|
+
} & Omit<{
|
|
387
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
388
|
+
}, "schema">, "schema"> & {
|
|
389
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
390
|
+
} & object) | (import("@xyo-network/payload-model").SchemaFields & object & Omit<{
|
|
391
|
+
accountDerivationPath?: string | undefined;
|
|
392
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
393
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
394
|
+
readonly name?: string | undefined;
|
|
395
|
+
readonly paging?: Record<string, {
|
|
396
|
+
size?: number | undefined;
|
|
397
|
+
}> | undefined;
|
|
398
|
+
readonly security?: {
|
|
399
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
400
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
401
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
402
|
+
} | undefined;
|
|
403
|
+
readonly sign?: boolean | undefined;
|
|
404
|
+
readonly storeQueries?: boolean | undefined;
|
|
405
|
+
readonly timestamp?: boolean | undefined;
|
|
406
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
407
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
408
|
+
} & Omit<{
|
|
409
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
44
410
|
}, "schema">, "schema"> & {
|
|
411
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
412
|
+
} & import("@xyo-network/payload-model").PayloadMetaFields) | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadMetaFields & Omit<{
|
|
413
|
+
accountDerivationPath?: string | undefined;
|
|
414
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
415
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
416
|
+
readonly name?: string | undefined;
|
|
417
|
+
readonly paging?: Record<string, {
|
|
418
|
+
size?: number | undefined;
|
|
419
|
+
}> | undefined;
|
|
420
|
+
readonly security?: {
|
|
421
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
422
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
423
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
424
|
+
} | undefined;
|
|
425
|
+
readonly sign?: boolean | undefined;
|
|
426
|
+
readonly storeQueries?: boolean | undefined;
|
|
427
|
+
readonly timestamp?: boolean | undefined;
|
|
428
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
429
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
430
|
+
} & Omit<{
|
|
431
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
432
|
+
}, "schema">, "schema"> & {
|
|
433
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
434
|
+
}), "schema">, "schema"> & {
|
|
45
435
|
schema: string;
|
|
46
|
-
};
|
|
436
|
+
});
|
|
47
437
|
ephemeralQueryAccountEnabled?: boolean | undefined;
|
|
48
438
|
wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
|
|
49
439
|
}>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAEpD,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAEpD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQjC,CAAA"}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -98,7 +98,7 @@ var otherValueExists = (value) => {
|
|
|
98
98
|
const possiblyNumber = value[1];
|
|
99
99
|
return typeof possiblyNumber === "number" && !isNaN(possiblyNumber);
|
|
100
100
|
};
|
|
101
|
-
var divineCoinGeckoPrices = (payload) => {
|
|
101
|
+
var divineCoinGeckoPrices = async (payload) => {
|
|
102
102
|
const assets = payload && payload?.assets ? Object.fromEntries(
|
|
103
103
|
Object.entries(payload.assets).filter(valuationExists).map(([asset, valuation]) => {
|
|
104
104
|
const value = Object.fromEntries(
|
|
@@ -108,7 +108,7 @@ var divineCoinGeckoPrices = (payload) => {
|
|
|
108
108
|
})
|
|
109
109
|
) : {};
|
|
110
110
|
const timestamp = Date.now();
|
|
111
|
-
return new import_payload_builder.PayloadBuilder({ schema }).fields({ assets, timestamp }).build();
|
|
111
|
+
return await new import_payload_builder.PayloadBuilder({ schema }).fields({ assets, timestamp }).build();
|
|
112
112
|
};
|
|
113
113
|
|
|
114
114
|
// src/lib/divineUniswapPrices.ts
|
|
@@ -140,7 +140,7 @@ var valuesFromTokenPairs = (tokensPairs, token) => {
|
|
|
140
140
|
}).map((x) => [mapUniswapToken(x[0]), x[1]])
|
|
141
141
|
);
|
|
142
142
|
};
|
|
143
|
-
var divineUniswapPrices = (uniswapPayload) => {
|
|
143
|
+
var divineUniswapPrices = async (uniswapPayload) => {
|
|
144
144
|
let assets = {};
|
|
145
145
|
if (uniswapPayload) {
|
|
146
146
|
const tokens = new Set(tokensFromPairs(uniswapPayload.pairs));
|
|
@@ -154,18 +154,18 @@ var divineUniswapPrices = (uniswapPayload) => {
|
|
|
154
154
|
);
|
|
155
155
|
}
|
|
156
156
|
const timestamp = Date.now();
|
|
157
|
-
return new import_payload_builder2.PayloadBuilder({ schema: schema2 }).fields({ assets, timestamp }).build();
|
|
157
|
+
return await new import_payload_builder2.PayloadBuilder({ schema: schema2 }).fields({ assets, timestamp }).build();
|
|
158
158
|
};
|
|
159
159
|
|
|
160
160
|
// src/lib/divinePrices.ts
|
|
161
161
|
var schema3 = import_crypto_asset_payload_plugin3.CryptoMarketAssetSchema;
|
|
162
|
-
var divinePrices = (coinGeckoPayload, uniswapPayload) => {
|
|
163
|
-
const coinGeckoPrices = divineCoinGeckoPrices(coinGeckoPayload);
|
|
164
|
-
const uniswapPrices = divineUniswapPrices(uniswapPayload);
|
|
162
|
+
var divinePrices = async (coinGeckoPayload, uniswapPayload) => {
|
|
163
|
+
const coinGeckoPrices = await divineCoinGeckoPrices(coinGeckoPayload);
|
|
164
|
+
const uniswapPrices = await divineUniswapPrices(uniswapPayload);
|
|
165
165
|
const prices = [uniswapPayload, coinGeckoPayload].some(import_exists3.exists);
|
|
166
166
|
const assets = prices ? average(coinGeckoPrices, uniswapPrices) : {};
|
|
167
167
|
const timestamp = Date.now();
|
|
168
|
-
return new import_payload_builder3.PayloadBuilder({ schema: schema3 }).fields({ assets, timestamp }).build();
|
|
168
|
+
return await new import_payload_builder3.PayloadBuilder({ schema: schema3 }).fields({ assets, timestamp }).build();
|
|
169
169
|
};
|
|
170
170
|
|
|
171
171
|
// src/Schema.ts
|
|
@@ -176,10 +176,10 @@ var CryptoMarketAssetDivinerConfigSchema = "network.xyo.crypto.asset.diviner.con
|
|
|
176
176
|
var CryptoMarketAssetDiviner = class extends import_abstract_diviner.AbstractDiviner {
|
|
177
177
|
static configSchemas = [CryptoMarketAssetDivinerConfigSchema];
|
|
178
178
|
static targetSchema = import_crypto_asset_payload_plugin4.CryptoMarketAssetSchema;
|
|
179
|
-
divineHandler(payloads) {
|
|
179
|
+
async divineHandler(payloads) {
|
|
180
180
|
const coinGeckoPayload = payloads?.find((payload) => payload?.schema === import_coingecko_crypto_market_payload_plugin.CoingeckoCryptoMarketSchema);
|
|
181
181
|
const uniswapPayload = payloads?.find((payload) => payload?.schema === import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketSchema);
|
|
182
|
-
const result = divinePrices(coinGeckoPayload, uniswapPayload);
|
|
182
|
+
const result = await divinePrices(coinGeckoPayload, uniswapPayload);
|
|
183
183
|
return [result];
|
|
184
184
|
}
|
|
185
185
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Plugin.ts","../../src/Diviner.ts","../../src/lib/divinePrices.ts","../../src/lib/average.ts","../../src/lib/divineCoinGeckoPrices.ts","../../src/lib/divineUniswapPrices.ts","../../src/Schema.ts"],"sourcesContent":["import { CryptoMarketAssetPlugin } from './Plugin'\n\nexport * from './Diviner'\nexport * from './Schema'\n\nexport { CryptoMarketAssetPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoMarketAssetPlugin\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'\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","import { Promisable } from '@xylabs/promise'\nimport { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { CoingeckoCryptoMarketPayload, CoingeckoCryptoMarketSchema } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport { CryptoMarketAssetPayload, CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { DivinerConfig, DivinerModule, DivinerParams } from '@xyo-network/diviner'\nimport { AnyConfigSchema, Module } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { UniswapCryptoMarketPayload, UniswapCryptoMarketSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { divinePrices } from './lib'\nimport { CryptoMarketAssetDivinerConfigSchema } from './Schema'\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{\n static override configSchemas = [CryptoMarketAssetDivinerConfigSchema]\n static override targetSchema = CryptoMarketAssetSchema\n\n protected override divineHandler(payloads?: Payload[]): Promisable<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 { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport { CryptoMarketAssetPayload, CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { UniswapCryptoMarketPayload } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { average } from './average'\nimport { divineCoinGeckoPrices } from './divineCoinGeckoPrices'\nimport { divineUniswapPrices } from './divineUniswapPrices'\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 { AssetInfo, CryptoMarketAssetPayload, Currency, Token } 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 = parseFloat(value)\n return 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 ? 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.map((payload) => Object.keys(payload.assets).map<Token>((t) => t as Token)).flatMap((t) => t))\n // Get all the valuations used\n const valuations = new Set<Token | Currency>(\n [...tokens]\n .map((asset) => {\n const assetInfo = payloads.map((p) => p.assets?.[asset]).filter(exists)\n const valueBasis = new Set<Currency | Token>(\n assetInfo\n .map((v) => Object.keys(v.value) as unknown as Currency | Token)\n .flatMap((v) => v)\n .filter(exists),\n )\n return [...valueBasis]\n })\n .flatMap((v) => v),\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 { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport { AssetInfo, CryptoMarketAssetPayload, 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' && !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 { exists } from '@xylabs/exists'\nimport { AssetInfo, CryptoMarketAssetPayload, CryptoMarketAssetSchema, Currency, Token, ValueBasis } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { UniswapCryptoMarketPayload, UniswapCryptoPair, UniswapCryptoToken } 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\n .map((p) => p.tokens)\n .flat()\n .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.filter((p) => p.symbol.toLowerCase() === token)?.[0]\n const other = pair.filter((p) => p.symbol.toLowerCase() !== token)?.[0]\n return [other.symbol.toLowerCase(), current.value.toString()]\n })\n .map((x) => [mapUniswapToken(x[0]), 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"],"mappings":"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","names":["import_crypto_asset_payload_plugin","import_crypto_asset_payload_plugin","import_exists","import_crypto_asset_payload_plugin","import_payload_builder","import_exists","import_crypto_asset_payload_plugin","import_payload_builder","schema","schema"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/Plugin.ts","../../src/Diviner.ts","../../src/lib/divinePrices.ts","../../src/lib/average.ts","../../src/lib/divineCoinGeckoPrices.ts","../../src/lib/divineUniswapPrices.ts","../../src/Schema.ts"],"sourcesContent":["import { CryptoMarketAssetPlugin } from './Plugin'\n\nexport * from './Diviner'\nexport * from './Schema'\n\nexport { CryptoMarketAssetPlugin }\n\n// eslint-disable-next-line import/no-default-export\nexport default CryptoMarketAssetPlugin\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'\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","import { AbstractDiviner } from '@xyo-network/abstract-diviner'\nimport { CoingeckoCryptoMarketPayload, CoingeckoCryptoMarketSchema } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport { CryptoMarketAssetPayload, CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { DivinerConfig, DivinerModule, DivinerParams } from '@xyo-network/diviner'\nimport { AnyConfigSchema, Module } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { UniswapCryptoMarketPayload, UniswapCryptoMarketSchema } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { divinePrices } from './lib'\nimport { CryptoMarketAssetDivinerConfigSchema } from './Schema'\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{\n static override configSchemas = [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 { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport { CryptoMarketAssetPayload, CryptoMarketAssetSchema } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { UniswapCryptoMarketPayload } from '@xyo-network/uniswap-crypto-market-payload-plugin'\n\nimport { average } from './average'\nimport { divineCoinGeckoPrices } from './divineCoinGeckoPrices'\nimport { divineUniswapPrices } from './divineUniswapPrices'\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 { AssetInfo, CryptoMarketAssetPayload, Currency, Token } 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 = parseFloat(value)\n return 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 ? 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.map((payload) => Object.keys(payload.assets).map<Token>((t) => t as Token)).flatMap((t) => t))\n // Get all the valuations used\n const valuations = new Set<Token | Currency>(\n [...tokens]\n .map((asset) => {\n const assetInfo = payloads.map((p) => p.assets?.[asset]).filter(exists)\n const valueBasis = new Set<Currency | Token>(\n assetInfo\n .map((v) => Object.keys(v.value) as unknown as Currency | Token)\n .flatMap((v) => v)\n .filter(exists),\n )\n return [...valueBasis]\n })\n .flatMap((v) => v),\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 { CoingeckoCryptoMarketPayload } from '@xyo-network/coingecko-crypto-market-payload-plugin'\nimport { AssetInfo, CryptoMarketAssetPayload, 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' && !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 { exists } from '@xylabs/exists'\nimport { AssetInfo, CryptoMarketAssetPayload, CryptoMarketAssetSchema, Currency, Token, ValueBasis } from '@xyo-network/crypto-asset-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { UniswapCryptoMarketPayload, UniswapCryptoPair, UniswapCryptoToken } 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\n .map((p) => p.tokens)\n .flat()\n .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.filter((p) => p.symbol.toLowerCase() === token)?.[0]\n const other = pair.filter((p) => p.symbol.toLowerCase() !== token)?.[0]\n return [other.symbol.toLowerCase(), current.value.toString()]\n })\n .map((x) => [mapUniswapToken(x[0]), 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"],"mappings":"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","names":["import_crypto_asset_payload_plugin","import_crypto_asset_payload_plugin","import_exists","import_crypto_asset_payload_plugin","import_payload_builder","import_exists","import_crypto_asset_payload_plugin","import_payload_builder","schema","schema"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -68,7 +68,7 @@ var otherValueExists = (value) => {
|
|
|
68
68
|
const possiblyNumber = value[1];
|
|
69
69
|
return typeof possiblyNumber === "number" && !isNaN(possiblyNumber);
|
|
70
70
|
};
|
|
71
|
-
var divineCoinGeckoPrices = (payload) => {
|
|
71
|
+
var divineCoinGeckoPrices = async (payload) => {
|
|
72
72
|
const assets = payload && payload?.assets ? Object.fromEntries(
|
|
73
73
|
Object.entries(payload.assets).filter(valuationExists).map(([asset, valuation]) => {
|
|
74
74
|
const value = Object.fromEntries(
|
|
@@ -78,7 +78,7 @@ var divineCoinGeckoPrices = (payload) => {
|
|
|
78
78
|
})
|
|
79
79
|
) : {};
|
|
80
80
|
const timestamp = Date.now();
|
|
81
|
-
return new PayloadBuilder({ schema }).fields({ assets, timestamp }).build();
|
|
81
|
+
return await new PayloadBuilder({ schema }).fields({ assets, timestamp }).build();
|
|
82
82
|
};
|
|
83
83
|
|
|
84
84
|
// src/lib/divineUniswapPrices.ts
|
|
@@ -110,7 +110,7 @@ var valuesFromTokenPairs = (tokensPairs, token) => {
|
|
|
110
110
|
}).map((x) => [mapUniswapToken(x[0]), x[1]])
|
|
111
111
|
);
|
|
112
112
|
};
|
|
113
|
-
var divineUniswapPrices = (uniswapPayload) => {
|
|
113
|
+
var divineUniswapPrices = async (uniswapPayload) => {
|
|
114
114
|
let assets = {};
|
|
115
115
|
if (uniswapPayload) {
|
|
116
116
|
const tokens = new Set(tokensFromPairs(uniswapPayload.pairs));
|
|
@@ -124,18 +124,18 @@ var divineUniswapPrices = (uniswapPayload) => {
|
|
|
124
124
|
);
|
|
125
125
|
}
|
|
126
126
|
const timestamp = Date.now();
|
|
127
|
-
return new PayloadBuilder2({ schema: schema2 }).fields({ assets, timestamp }).build();
|
|
127
|
+
return await new PayloadBuilder2({ schema: schema2 }).fields({ assets, timestamp }).build();
|
|
128
128
|
};
|
|
129
129
|
|
|
130
130
|
// src/lib/divinePrices.ts
|
|
131
131
|
var schema3 = CryptoMarketAssetSchema3;
|
|
132
|
-
var divinePrices = (coinGeckoPayload, uniswapPayload) => {
|
|
133
|
-
const coinGeckoPrices = divineCoinGeckoPrices(coinGeckoPayload);
|
|
134
|
-
const uniswapPrices = divineUniswapPrices(uniswapPayload);
|
|
132
|
+
var divinePrices = async (coinGeckoPayload, uniswapPayload) => {
|
|
133
|
+
const coinGeckoPrices = await divineCoinGeckoPrices(coinGeckoPayload);
|
|
134
|
+
const uniswapPrices = await divineUniswapPrices(uniswapPayload);
|
|
135
135
|
const prices = [uniswapPayload, coinGeckoPayload].some(exists3);
|
|
136
136
|
const assets = prices ? average(coinGeckoPrices, uniswapPrices) : {};
|
|
137
137
|
const timestamp = Date.now();
|
|
138
|
-
return new PayloadBuilder3({ schema: schema3 }).fields({ assets, timestamp }).build();
|
|
138
|
+
return await new PayloadBuilder3({ schema: schema3 }).fields({ assets, timestamp }).build();
|
|
139
139
|
};
|
|
140
140
|
|
|
141
141
|
// src/Schema.ts
|
|
@@ -146,10 +146,10 @@ var CryptoMarketAssetDivinerConfigSchema = "network.xyo.crypto.asset.diviner.con
|
|
|
146
146
|
var CryptoMarketAssetDiviner = class extends AbstractDiviner {
|
|
147
147
|
static configSchemas = [CryptoMarketAssetDivinerConfigSchema];
|
|
148
148
|
static targetSchema = CryptoMarketAssetSchema4;
|
|
149
|
-
divineHandler(payloads) {
|
|
149
|
+
async divineHandler(payloads) {
|
|
150
150
|
const coinGeckoPayload = payloads?.find((payload) => payload?.schema === CoingeckoCryptoMarketSchema);
|
|
151
151
|
const uniswapPayload = payloads?.find((payload) => payload?.schema === UniswapCryptoMarketSchema);
|
|
152
|
-
const result = divinePrices(coinGeckoPayload, uniswapPayload);
|
|
152
|
+
const result = await divinePrices(coinGeckoPayload, uniswapPayload);
|
|
153
153
|
return [result];
|
|
154
154
|
}
|
|
155
155
|
};
|