@xyo-network/crypto-asset-plugin 2.82.2 → 2.84.0
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 +396 -6
- package/dist/browser/Plugin.d.cts.map +1 -1
- package/dist/browser/Plugin.d.mts +396 -6
- package/dist/browser/Plugin.d.mts.map +1 -1
- package/dist/browser/Plugin.d.ts +396 -6
- 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 +396 -6
- package/dist/node/Plugin.d.cts.map +1 -1
- package/dist/node/Plugin.d.mts +396 -6
- package/dist/node/Plugin.d.mts.map +1 -1
- package/dist/node/Plugin.d.ts +396 -6
- package/dist/node/Plugin.d.ts.map +1 -1
- package/dist/node/index.js +10 -10
- package/dist/node/index.js.map +1 -1
- package/dist/node/index.mjs +10 -10
- package/dist/node/index.mjs.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 +12 -12
- 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/Plugin.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CryptoMarketAssetDiviner } from './Diviner';
|
|
2
|
-
export declare const CryptoMarketAssetPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<CryptoMarketAssetDiviner<import("@xyo-network/
|
|
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 & Omit<{
|
|
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;
|
|
@@ -17,7 +17,225 @@ export declare const CryptoMarketAssetPlugin: () => import("@xyo-network/payload
|
|
|
17
17
|
readonly sign?: boolean | undefined;
|
|
18
18
|
readonly storeQueries?: boolean | undefined;
|
|
19
19
|
readonly timestamp?: boolean | undefined;
|
|
20
|
-
} & import("@xyo-network/module-model").ArchivingModuleConfig &
|
|
20
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
21
|
+
schema: string;
|
|
22
|
+
} & Omit<(import("@xyo-network/payload-model").SchemaFields & object & Omit<{
|
|
23
|
+
accountDerivationPath?: string | undefined;
|
|
24
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
25
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
26
|
+
readonly name?: string | undefined;
|
|
27
|
+
readonly paging?: Record<string, {
|
|
28
|
+
size?: number | undefined;
|
|
29
|
+
}> | undefined;
|
|
30
|
+
readonly security?: {
|
|
31
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
32
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
33
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
34
|
+
} | undefined;
|
|
35
|
+
readonly sign?: boolean | undefined;
|
|
36
|
+
readonly storeQueries?: boolean | undefined;
|
|
37
|
+
readonly timestamp?: boolean | undefined;
|
|
38
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
39
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
40
|
+
} & Omit<{
|
|
41
|
+
schema: "network.xyo.crypto.asset.diviner.config";
|
|
42
|
+
}, "schema">, "schema"> & {
|
|
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<{
|
|
21
239
|
accountDerivationPath?: string | undefined;
|
|
22
240
|
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
23
241
|
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
@@ -39,11 +257,183 @@ export declare const CryptoMarketAssetPlugin: () => import("@xyo-network/payload
|
|
|
39
257
|
schema: "network.xyo.crypto.asset.diviner.config";
|
|
40
258
|
}, "schema">, "schema"> & {
|
|
41
259
|
schema: "network.xyo.crypto.asset.diviner.config";
|
|
42
|
-
}
|
|
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"> & {
|
|
43
327
|
schema: string;
|
|
44
|
-
}
|
|
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";
|
|
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/node/index.js
CHANGED
|
@@ -107,7 +107,7 @@ var otherValueExists = (value) => {
|
|
|
107
107
|
const possiblyNumber = value[1];
|
|
108
108
|
return typeof possiblyNumber === "number" && !isNaN(possiblyNumber);
|
|
109
109
|
};
|
|
110
|
-
var divineCoinGeckoPrices = (payload) => {
|
|
110
|
+
var divineCoinGeckoPrices = async (payload) => {
|
|
111
111
|
const assets = payload && (payload == null ? void 0 : payload.assets) ? Object.fromEntries(
|
|
112
112
|
Object.entries(payload.assets).filter(valuationExists).map(([asset, valuation]) => {
|
|
113
113
|
const value = Object.fromEntries(
|
|
@@ -117,7 +117,7 @@ var divineCoinGeckoPrices = (payload) => {
|
|
|
117
117
|
})
|
|
118
118
|
) : {};
|
|
119
119
|
const timestamp = Date.now();
|
|
120
|
-
return new import_payload_builder.PayloadBuilder({ schema }).fields({ assets, timestamp }).build();
|
|
120
|
+
return await new import_payload_builder.PayloadBuilder({ schema }).fields({ assets, timestamp }).build();
|
|
121
121
|
};
|
|
122
122
|
|
|
123
123
|
// src/lib/divineUniswapPrices.ts
|
|
@@ -150,7 +150,7 @@ var valuesFromTokenPairs = (tokensPairs, token) => {
|
|
|
150
150
|
}).map((x) => [mapUniswapToken(x[0]), x[1]])
|
|
151
151
|
);
|
|
152
152
|
};
|
|
153
|
-
var divineUniswapPrices = (uniswapPayload) => {
|
|
153
|
+
var divineUniswapPrices = async (uniswapPayload) => {
|
|
154
154
|
let assets = {};
|
|
155
155
|
if (uniswapPayload) {
|
|
156
156
|
const tokens = new Set(tokensFromPairs(uniswapPayload.pairs));
|
|
@@ -164,18 +164,18 @@ var divineUniswapPrices = (uniswapPayload) => {
|
|
|
164
164
|
);
|
|
165
165
|
}
|
|
166
166
|
const timestamp = Date.now();
|
|
167
|
-
return new import_payload_builder2.PayloadBuilder({ schema: schema2 }).fields({ assets, timestamp }).build();
|
|
167
|
+
return await new import_payload_builder2.PayloadBuilder({ schema: schema2 }).fields({ assets, timestamp }).build();
|
|
168
168
|
};
|
|
169
169
|
|
|
170
170
|
// src/lib/divinePrices.ts
|
|
171
171
|
var schema3 = import_crypto_asset_payload_plugin3.CryptoMarketAssetSchema;
|
|
172
|
-
var divinePrices = (coinGeckoPayload, uniswapPayload) => {
|
|
173
|
-
const coinGeckoPrices = divineCoinGeckoPrices(coinGeckoPayload);
|
|
174
|
-
const uniswapPrices = divineUniswapPrices(uniswapPayload);
|
|
172
|
+
var divinePrices = async (coinGeckoPayload, uniswapPayload) => {
|
|
173
|
+
const coinGeckoPrices = await divineCoinGeckoPrices(coinGeckoPayload);
|
|
174
|
+
const uniswapPrices = await divineUniswapPrices(uniswapPayload);
|
|
175
175
|
const prices = [uniswapPayload, coinGeckoPayload].some(import_exists3.exists);
|
|
176
176
|
const assets = prices ? average(coinGeckoPrices, uniswapPrices) : {};
|
|
177
177
|
const timestamp = Date.now();
|
|
178
|
-
return new import_payload_builder3.PayloadBuilder({ schema: schema3 }).fields({ assets, timestamp }).build();
|
|
178
|
+
return await new import_payload_builder3.PayloadBuilder({ schema: schema3 }).fields({ assets, timestamp }).build();
|
|
179
179
|
};
|
|
180
180
|
|
|
181
181
|
// src/Schema.ts
|
|
@@ -186,10 +186,10 @@ var CryptoMarketAssetDivinerConfigSchema = "network.xyo.crypto.asset.diviner.con
|
|
|
186
186
|
var CryptoMarketAssetDiviner = class extends import_abstract_diviner.AbstractDiviner {
|
|
187
187
|
static configSchemas = [CryptoMarketAssetDivinerConfigSchema];
|
|
188
188
|
static targetSchema = import_crypto_asset_payload_plugin4.CryptoMarketAssetSchema;
|
|
189
|
-
divineHandler(payloads) {
|
|
189
|
+
async divineHandler(payloads) {
|
|
190
190
|
const coinGeckoPayload = payloads == null ? void 0 : payloads.find((payload) => (payload == null ? void 0 : payload.schema) === import_coingecko_crypto_market_payload_plugin.CoingeckoCryptoMarketSchema);
|
|
191
191
|
const uniswapPayload = payloads == null ? void 0 : payloads.find((payload) => (payload == null ? void 0 : payload.schema) === import_uniswap_crypto_market_payload_plugin.UniswapCryptoMarketSchema);
|
|
192
|
-
const result = divinePrices(coinGeckoPayload, uniswapPayload);
|
|
192
|
+
const result = await divinePrices(coinGeckoPayload, uniswapPayload);
|
|
193
193
|
return [result];
|
|
194
194
|
}
|
|
195
195
|
};
|
package/dist/node/index.js.map
CHANGED
|
@@ -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/node/index.mjs
CHANGED
|
@@ -77,7 +77,7 @@ var otherValueExists = (value) => {
|
|
|
77
77
|
const possiblyNumber = value[1];
|
|
78
78
|
return typeof possiblyNumber === "number" && !isNaN(possiblyNumber);
|
|
79
79
|
};
|
|
80
|
-
var divineCoinGeckoPrices = (payload) => {
|
|
80
|
+
var divineCoinGeckoPrices = async (payload) => {
|
|
81
81
|
const assets = payload && (payload == null ? void 0 : payload.assets) ? Object.fromEntries(
|
|
82
82
|
Object.entries(payload.assets).filter(valuationExists).map(([asset, valuation]) => {
|
|
83
83
|
const value = Object.fromEntries(
|
|
@@ -87,7 +87,7 @@ var divineCoinGeckoPrices = (payload) => {
|
|
|
87
87
|
})
|
|
88
88
|
) : {};
|
|
89
89
|
const timestamp = Date.now();
|
|
90
|
-
return new PayloadBuilder({ schema }).fields({ assets, timestamp }).build();
|
|
90
|
+
return await new PayloadBuilder({ schema }).fields({ assets, timestamp }).build();
|
|
91
91
|
};
|
|
92
92
|
|
|
93
93
|
// src/lib/divineUniswapPrices.ts
|
|
@@ -120,7 +120,7 @@ var valuesFromTokenPairs = (tokensPairs, token) => {
|
|
|
120
120
|
}).map((x) => [mapUniswapToken(x[0]), x[1]])
|
|
121
121
|
);
|
|
122
122
|
};
|
|
123
|
-
var divineUniswapPrices = (uniswapPayload) => {
|
|
123
|
+
var divineUniswapPrices = async (uniswapPayload) => {
|
|
124
124
|
let assets = {};
|
|
125
125
|
if (uniswapPayload) {
|
|
126
126
|
const tokens = new Set(tokensFromPairs(uniswapPayload.pairs));
|
|
@@ -134,18 +134,18 @@ var divineUniswapPrices = (uniswapPayload) => {
|
|
|
134
134
|
);
|
|
135
135
|
}
|
|
136
136
|
const timestamp = Date.now();
|
|
137
|
-
return new PayloadBuilder2({ schema: schema2 }).fields({ assets, timestamp }).build();
|
|
137
|
+
return await new PayloadBuilder2({ schema: schema2 }).fields({ assets, timestamp }).build();
|
|
138
138
|
};
|
|
139
139
|
|
|
140
140
|
// src/lib/divinePrices.ts
|
|
141
141
|
var schema3 = CryptoMarketAssetSchema3;
|
|
142
|
-
var divinePrices = (coinGeckoPayload, uniswapPayload) => {
|
|
143
|
-
const coinGeckoPrices = divineCoinGeckoPrices(coinGeckoPayload);
|
|
144
|
-
const uniswapPrices = divineUniswapPrices(uniswapPayload);
|
|
142
|
+
var divinePrices = async (coinGeckoPayload, uniswapPayload) => {
|
|
143
|
+
const coinGeckoPrices = await divineCoinGeckoPrices(coinGeckoPayload);
|
|
144
|
+
const uniswapPrices = await divineUniswapPrices(uniswapPayload);
|
|
145
145
|
const prices = [uniswapPayload, coinGeckoPayload].some(exists3);
|
|
146
146
|
const assets = prices ? average(coinGeckoPrices, uniswapPrices) : {};
|
|
147
147
|
const timestamp = Date.now();
|
|
148
|
-
return new PayloadBuilder3({ schema: schema3 }).fields({ assets, timestamp }).build();
|
|
148
|
+
return await new PayloadBuilder3({ schema: schema3 }).fields({ assets, timestamp }).build();
|
|
149
149
|
};
|
|
150
150
|
|
|
151
151
|
// src/Schema.ts
|
|
@@ -156,10 +156,10 @@ var CryptoMarketAssetDivinerConfigSchema = "network.xyo.crypto.asset.diviner.con
|
|
|
156
156
|
var CryptoMarketAssetDiviner = class extends AbstractDiviner {
|
|
157
157
|
static configSchemas = [CryptoMarketAssetDivinerConfigSchema];
|
|
158
158
|
static targetSchema = CryptoMarketAssetSchema4;
|
|
159
|
-
divineHandler(payloads) {
|
|
159
|
+
async divineHandler(payloads) {
|
|
160
160
|
const coinGeckoPayload = payloads == null ? void 0 : payloads.find((payload) => (payload == null ? void 0 : payload.schema) === CoingeckoCryptoMarketSchema);
|
|
161
161
|
const uniswapPayload = payloads == null ? void 0 : payloads.find((payload) => (payload == null ? void 0 : payload.schema) === UniswapCryptoMarketSchema);
|
|
162
|
-
const result = divinePrices(coinGeckoPayload, uniswapPayload);
|
|
162
|
+
const result = await divinePrices(coinGeckoPayload, uniswapPayload);
|
|
163
163
|
return [result];
|
|
164
164
|
}
|
|
165
165
|
};
|