@xyo-network/gas-price-plugin 2.99.5 → 2.99.6
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/Plugin.d.cts +3 -3
- package/dist/browser/Plugin.d.mts +3 -3
- package/dist/browser/Plugin.d.ts +3 -3
- package/dist/browser/index.cjs +93 -216
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.mjs +93 -218
- package/dist/browser/index.mjs.map +1 -1
- package/dist/neutral/Plugin.d.cts +3 -3
- package/dist/neutral/Plugin.d.mts +3 -3
- package/dist/neutral/Plugin.d.ts +3 -3
- package/dist/neutral/index.cjs +93 -216
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.mjs +93 -218
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/node/Plugin.d.cts +3 -3
- package/dist/node/Plugin.d.mts +3 -3
- package/dist/node/Plugin.d.ts +3 -3
- package/dist/node/index.cjs +96 -223
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.mjs +96 -225
- package/dist/node/index.mjs.map +1 -1
- package/package.json +21 -21
package/dist/node/index.mjs
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
3
|
-
var __reflectGet = Reflect.get;
|
|
4
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
5
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
7
|
-
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
8
|
-
|
|
9
1
|
// src/Diviner.ts
|
|
10
2
|
import { AbstractDiviner } from "@xyo-network/diviner-abstract";
|
|
11
3
|
import { EthereumGasSchema as EthereumGasSchema2 } from "@xyo-network/gas-price-payload-plugin";
|
|
@@ -16,11 +8,11 @@ import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
|
16
8
|
|
|
17
9
|
// src/lib/average.ts
|
|
18
10
|
import { exists } from "@xylabs/exists";
|
|
19
|
-
var listAverage =
|
|
20
|
-
var averageProperty =
|
|
11
|
+
var listAverage = (x) => (x == null ? void 0 : x.length) ? x.reduce((a, b) => a + b) / x.length : void 0;
|
|
12
|
+
var averageProperty = (data, propertyExpression) => {
|
|
21
13
|
return listAverage(data.map(propertyExpression).filter(exists));
|
|
22
|
-
}
|
|
23
|
-
var average =
|
|
14
|
+
};
|
|
15
|
+
var average = (input) => {
|
|
24
16
|
const data = (input == null ? void 0 : input.filter(exists)) || [];
|
|
25
17
|
const averaged = {
|
|
26
18
|
baseFee: averageProperty(data, (x) => x.baseFee),
|
|
@@ -38,68 +30,53 @@ var average = /* @__PURE__ */ __name((input) => {
|
|
|
38
30
|
}
|
|
39
31
|
};
|
|
40
32
|
return averaged;
|
|
41
|
-
}
|
|
33
|
+
};
|
|
42
34
|
|
|
43
35
|
// src/lib/identities/isEthereumGasBlocknativePayload.ts
|
|
44
36
|
import { EthereumGasBlocknativeSchema } from "@xyo-network/blocknative-ethereum-gas-payload-plugin";
|
|
45
|
-
var isEthereumGasBlocknativePayload =
|
|
37
|
+
var isEthereumGasBlocknativePayload = (payload) => {
|
|
46
38
|
return (payload == null ? void 0 : payload.schema) === EthereumGasBlocknativeSchema;
|
|
47
|
-
}
|
|
39
|
+
};
|
|
48
40
|
|
|
49
41
|
// src/lib/identities/isEthereumGasEtherchainV2Payload.ts
|
|
50
42
|
import { EthereumGasEtherchainV2Schema } from "@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins";
|
|
51
|
-
var isEthereumGasEtherchainV2Payload =
|
|
43
|
+
var isEthereumGasEtherchainV2Payload = (payload) => {
|
|
52
44
|
return (payload == null ? void 0 : payload.schema) === EthereumGasEtherchainV2Schema;
|
|
53
|
-
}
|
|
45
|
+
};
|
|
54
46
|
|
|
55
47
|
// src/lib/identities/isEthereumGasEtherscanPayload.ts
|
|
56
48
|
import { EthereumGasEtherscanSchema } from "@xyo-network/etherscan-ethereum-gas-payload-plugin";
|
|
57
|
-
var isEthereumGasEtherscanPayload =
|
|
49
|
+
var isEthereumGasEtherscanPayload = (payload) => {
|
|
58
50
|
return (payload == null ? void 0 : payload.schema) === EthereumGasEtherscanSchema;
|
|
59
|
-
}
|
|
51
|
+
};
|
|
60
52
|
|
|
61
53
|
// src/lib/identities/isEthereumGasEthersPayload.ts
|
|
62
54
|
import { EthereumGasEthersSchema } from "@xyo-network/ethers-ethereum-gas-payload-plugin";
|
|
63
|
-
var isEthereumGasEthersPayload =
|
|
55
|
+
var isEthereumGasEthersPayload = (payload) => {
|
|
64
56
|
return (payload == null ? void 0 : payload.schema) === EthereumGasEthersSchema;
|
|
65
|
-
}
|
|
57
|
+
};
|
|
66
58
|
|
|
67
59
|
// src/lib/identities/isEthereumGasEthgasstationPayload.ts
|
|
68
60
|
import { EthereumGasEthgasstationSchema } from "@xyo-network/ethgasstation-ethereum-gas-payload-plugin";
|
|
69
|
-
var isEthereumGasEthgasstationPayload =
|
|
61
|
+
var isEthereumGasEthgasstationPayload = (payload) => {
|
|
70
62
|
return (payload == null ? void 0 : payload.schema) === EthereumGasEthgasstationSchema;
|
|
71
|
-
}
|
|
63
|
+
};
|
|
72
64
|
|
|
73
65
|
// src/lib/transforms/transformGasFromBlocknative.ts
|
|
74
66
|
import { linear } from "regression";
|
|
75
|
-
var getBaseFee =
|
|
67
|
+
var getBaseFee = (payload) => {
|
|
76
68
|
var _a, _b;
|
|
77
69
|
return (_b = (_a = payload == null ? void 0 : payload.blockPrices) == null ? void 0 : _a[0]) == null ? void 0 : _b.baseFeePerGas;
|
|
78
|
-
}
|
|
79
|
-
var getFeePerGas =
|
|
70
|
+
};
|
|
71
|
+
var getFeePerGas = (payload) => {
|
|
80
72
|
var _a, _b;
|
|
81
73
|
const sorted = (_b = (_a = payload.blockPrices) == null ? void 0 : _a[0].estimatedPrices) == null ? void 0 : _b.sort((a, b) => a.confidence - b.confidence);
|
|
82
74
|
const trend = linear([
|
|
83
|
-
[
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
],
|
|
87
|
-
[
|
|
88
|
-
1,
|
|
89
|
-
sorted == null ? void 0 : sorted[1].price
|
|
90
|
-
],
|
|
91
|
-
[
|
|
92
|
-
2,
|
|
93
|
-
sorted == null ? void 0 : sorted[2].price
|
|
94
|
-
],
|
|
95
|
-
[
|
|
96
|
-
3,
|
|
97
|
-
sorted == null ? void 0 : sorted[3].price
|
|
98
|
-
],
|
|
99
|
-
[
|
|
100
|
-
4,
|
|
101
|
-
sorted == null ? void 0 : sorted[4].price
|
|
102
|
-
]
|
|
75
|
+
[0, sorted == null ? void 0 : sorted[0].price],
|
|
76
|
+
[1, sorted == null ? void 0 : sorted[1].price],
|
|
77
|
+
[2, sorted == null ? void 0 : sorted[2].price],
|
|
78
|
+
[3, sorted == null ? void 0 : sorted[3].price],
|
|
79
|
+
[4, sorted == null ? void 0 : sorted[4].price]
|
|
103
80
|
]);
|
|
104
81
|
const feePerGas = {
|
|
105
82
|
low: trend.predict(0.5)[1],
|
|
@@ -108,31 +85,16 @@ var getFeePerGas = /* @__PURE__ */ __name((payload) => {
|
|
|
108
85
|
veryHigh: trend.predict(3.5)[1]
|
|
109
86
|
};
|
|
110
87
|
return feePerGas;
|
|
111
|
-
}
|
|
112
|
-
var getPriorityFeePerGas =
|
|
88
|
+
};
|
|
89
|
+
var getPriorityFeePerGas = (payload) => {
|
|
113
90
|
var _a, _b;
|
|
114
91
|
const sorted = (_b = (_a = payload.blockPrices) == null ? void 0 : _a[0].estimatedPrices) == null ? void 0 : _b.sort((a, b) => a.confidence - b.confidence);
|
|
115
92
|
const trend = linear([
|
|
116
|
-
[
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
],
|
|
120
|
-
[
|
|
121
|
-
1,
|
|
122
|
-
sorted == null ? void 0 : sorted[1].maxPriorityFeePerGas
|
|
123
|
-
],
|
|
124
|
-
[
|
|
125
|
-
2,
|
|
126
|
-
sorted == null ? void 0 : sorted[2].maxPriorityFeePerGas
|
|
127
|
-
],
|
|
128
|
-
[
|
|
129
|
-
3,
|
|
130
|
-
sorted == null ? void 0 : sorted[3].maxPriorityFeePerGas
|
|
131
|
-
],
|
|
132
|
-
[
|
|
133
|
-
4,
|
|
134
|
-
sorted == null ? void 0 : sorted[4].maxPriorityFeePerGas
|
|
135
|
-
]
|
|
93
|
+
[0, sorted == null ? void 0 : sorted[0].maxPriorityFeePerGas],
|
|
94
|
+
[1, sorted == null ? void 0 : sorted[1].maxPriorityFeePerGas],
|
|
95
|
+
[2, sorted == null ? void 0 : sorted[2].maxPriorityFeePerGas],
|
|
96
|
+
[3, sorted == null ? void 0 : sorted[3].maxPriorityFeePerGas],
|
|
97
|
+
[4, sorted == null ? void 0 : sorted[4].maxPriorityFeePerGas]
|
|
136
98
|
]);
|
|
137
99
|
const priorityFeePerGas = {
|
|
138
100
|
low: trend.predict(0.5)[1],
|
|
@@ -141,242 +103,151 @@ var getPriorityFeePerGas = /* @__PURE__ */ __name((payload) => {
|
|
|
141
103
|
veryHigh: trend.predict(3.5)[1]
|
|
142
104
|
};
|
|
143
105
|
return priorityFeePerGas;
|
|
144
|
-
}
|
|
145
|
-
var transformGasFromBlocknative =
|
|
106
|
+
};
|
|
107
|
+
var transformGasFromBlocknative = (payload) => {
|
|
146
108
|
const baseFee = getBaseFee(payload);
|
|
147
109
|
const feePerGas = getFeePerGas(payload);
|
|
148
110
|
const priorityFeePerGas = getPriorityFeePerGas(payload);
|
|
149
|
-
return {
|
|
150
|
-
|
|
151
|
-
feePerGas,
|
|
152
|
-
priorityFeePerGas
|
|
153
|
-
};
|
|
154
|
-
}, "transformGasFromBlocknative");
|
|
111
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
112
|
+
};
|
|
155
113
|
|
|
156
114
|
// src/lib/transforms/transformGasFromEtherchainV2.ts
|
|
157
|
-
var getFeePerGas2 =
|
|
115
|
+
var getFeePerGas2 = (payload) => {
|
|
158
116
|
const { slow, standard, fast, rapid } = payload.data;
|
|
159
117
|
const low = slow / 1e9;
|
|
160
118
|
const medium = standard / 1e9;
|
|
161
119
|
const high = fast / 1e9;
|
|
162
120
|
const veryHigh = rapid / 1e9;
|
|
163
|
-
return {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
medium,
|
|
167
|
-
veryHigh
|
|
168
|
-
};
|
|
169
|
-
}, "getFeePerGas");
|
|
170
|
-
var transformGasFromEtherchainV2 = /* @__PURE__ */ __name((payload) => {
|
|
121
|
+
return { high, low, medium, veryHigh };
|
|
122
|
+
};
|
|
123
|
+
var transformGasFromEtherchainV2 = (payload) => {
|
|
171
124
|
const baseFee = void 0;
|
|
172
125
|
const feePerGas = getFeePerGas2(payload);
|
|
173
126
|
const priorityFeePerGas = {};
|
|
174
|
-
return {
|
|
175
|
-
|
|
176
|
-
feePerGas,
|
|
177
|
-
priorityFeePerGas
|
|
178
|
-
};
|
|
179
|
-
}, "transformGasFromEtherchainV2");
|
|
127
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
128
|
+
};
|
|
180
129
|
|
|
181
130
|
// src/lib/transforms/transformGasFromEthers.ts
|
|
182
|
-
var getBaseFee2 =
|
|
131
|
+
var getBaseFee2 = (payload) => {
|
|
183
132
|
const { gasPrice } = payload;
|
|
184
133
|
return gasPrice ? gasPrice / 1e9 : void 0;
|
|
185
|
-
}
|
|
186
|
-
var getFeePerGas3 =
|
|
134
|
+
};
|
|
135
|
+
var getFeePerGas3 = (payload) => {
|
|
187
136
|
const { maxFeePerGas } = payload;
|
|
188
137
|
const high = maxFeePerGas ? maxFeePerGas / 1e9 : void 0;
|
|
189
|
-
return {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
}, "getFeePerGas");
|
|
193
|
-
var getPriorityFeePerGas2 = /* @__PURE__ */ __name((payload) => {
|
|
138
|
+
return { high };
|
|
139
|
+
};
|
|
140
|
+
var getPriorityFeePerGas2 = (payload) => {
|
|
194
141
|
const { maxPriorityFeePerGas } = payload;
|
|
195
142
|
const high = maxPriorityFeePerGas ? maxPriorityFeePerGas / 1e9 : void 0;
|
|
196
|
-
return {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}, "getPriorityFeePerGas");
|
|
200
|
-
var transformGasFromEthers = /* @__PURE__ */ __name((payload) => {
|
|
143
|
+
return { high };
|
|
144
|
+
};
|
|
145
|
+
var transformGasFromEthers = (payload) => {
|
|
201
146
|
const baseFee = getBaseFee2(payload);
|
|
202
147
|
const feePerGas = getFeePerGas3(payload);
|
|
203
148
|
const priorityFeePerGas = getPriorityFeePerGas2(payload);
|
|
204
|
-
return {
|
|
205
|
-
|
|
206
|
-
feePerGas,
|
|
207
|
-
priorityFeePerGas
|
|
208
|
-
};
|
|
209
|
-
}, "transformGasFromEthers");
|
|
149
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
150
|
+
};
|
|
210
151
|
|
|
211
152
|
// src/lib/transforms/transformGasFromEtherscan.ts
|
|
212
153
|
import { linear as linear2 } from "regression";
|
|
213
|
-
var getBaseFee3 =
|
|
154
|
+
var getBaseFee3 = (payload) => {
|
|
214
155
|
const { suggestBaseFee } = payload.result;
|
|
215
156
|
return Number.parseFloat(suggestBaseFee);
|
|
216
|
-
}
|
|
217
|
-
var getFeePerGas4 =
|
|
157
|
+
};
|
|
158
|
+
var getFeePerGas4 = (payload) => {
|
|
218
159
|
const { FastGasPrice, ProposeGasPrice, SafeGasPrice } = payload.result;
|
|
219
160
|
const low = Number.parseFloat(SafeGasPrice);
|
|
220
161
|
const medium = Number.parseFloat(ProposeGasPrice);
|
|
221
162
|
const high = Number.parseFloat(FastGasPrice);
|
|
222
163
|
const veryHigh = linear2([
|
|
223
|
-
[
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
],
|
|
227
|
-
[
|
|
228
|
-
1,
|
|
229
|
-
medium
|
|
230
|
-
],
|
|
231
|
-
[
|
|
232
|
-
2,
|
|
233
|
-
high
|
|
234
|
-
]
|
|
164
|
+
[0, low],
|
|
165
|
+
[1, medium],
|
|
166
|
+
[2, high]
|
|
235
167
|
]).predict(3)[1];
|
|
236
|
-
return {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
medium,
|
|
240
|
-
veryHigh
|
|
241
|
-
};
|
|
242
|
-
}, "getFeePerGas");
|
|
243
|
-
var transformGasFromEtherscan = /* @__PURE__ */ __name((payload) => {
|
|
168
|
+
return { high, low, medium, veryHigh };
|
|
169
|
+
};
|
|
170
|
+
var transformGasFromEtherscan = (payload) => {
|
|
244
171
|
const baseFee = getBaseFee3(payload);
|
|
245
172
|
const feePerGas = getFeePerGas4(payload);
|
|
246
173
|
const priorityFeePerGas = {};
|
|
247
|
-
return {
|
|
248
|
-
|
|
249
|
-
feePerGas,
|
|
250
|
-
priorityFeePerGas
|
|
251
|
-
};
|
|
252
|
-
}, "transformGasFromEtherscan");
|
|
174
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
175
|
+
};
|
|
253
176
|
|
|
254
177
|
// src/lib/transforms/transformGasFromEthgasstation.ts
|
|
255
178
|
import { linear as linear3 } from "regression";
|
|
256
|
-
var getBaseFee4 =
|
|
179
|
+
var getBaseFee4 = (payload) => {
|
|
257
180
|
const { baseFee } = payload;
|
|
258
181
|
return baseFee;
|
|
259
|
-
}
|
|
260
|
-
var getFeePerGas5 =
|
|
182
|
+
};
|
|
183
|
+
var getFeePerGas5 = (payload) => {
|
|
261
184
|
const { standard: medium, fast: high, instant: veryHigh } = payload.gasPrice;
|
|
262
185
|
const trend = linear3([
|
|
263
|
-
[
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
],
|
|
267
|
-
[
|
|
268
|
-
2,
|
|
269
|
-
high
|
|
270
|
-
],
|
|
271
|
-
[
|
|
272
|
-
3,
|
|
273
|
-
veryHigh
|
|
274
|
-
]
|
|
186
|
+
[1, medium],
|
|
187
|
+
[2, high],
|
|
188
|
+
[3, veryHigh]
|
|
275
189
|
]);
|
|
276
190
|
const low = trend.predict(0)[1];
|
|
277
|
-
return {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
high,
|
|
281
|
-
veryHigh
|
|
282
|
-
};
|
|
283
|
-
}, "getFeePerGas");
|
|
284
|
-
var getPriorityFeePerGas3 = /* @__PURE__ */ __name((payload) => {
|
|
191
|
+
return { low, medium, high, veryHigh };
|
|
192
|
+
};
|
|
193
|
+
var getPriorityFeePerGas3 = (payload) => {
|
|
285
194
|
const { standard: medium, fast: high, instant: veryHigh } = payload.priorityFee;
|
|
286
195
|
const trend = linear3([
|
|
287
|
-
[
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
],
|
|
291
|
-
[
|
|
292
|
-
2,
|
|
293
|
-
high
|
|
294
|
-
],
|
|
295
|
-
[
|
|
296
|
-
3,
|
|
297
|
-
veryHigh
|
|
298
|
-
]
|
|
196
|
+
[1, medium],
|
|
197
|
+
[2, high],
|
|
198
|
+
[3, veryHigh]
|
|
299
199
|
]);
|
|
300
200
|
const low = trend.predict(0)[1];
|
|
301
|
-
return {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
high,
|
|
305
|
-
veryHigh
|
|
306
|
-
};
|
|
307
|
-
}, "getPriorityFeePerGas");
|
|
308
|
-
var transformGasFromEthgasstation = /* @__PURE__ */ __name((payload) => {
|
|
201
|
+
return { low, medium, high, veryHigh };
|
|
202
|
+
};
|
|
203
|
+
var transformGasFromEthgasstation = (payload) => {
|
|
309
204
|
const baseFee = getBaseFee4(payload);
|
|
310
205
|
const feePerGas = getFeePerGas5(payload);
|
|
311
206
|
const priorityFeePerGas = getPriorityFeePerGas3(payload);
|
|
312
|
-
return {
|
|
313
|
-
|
|
314
|
-
feePerGas,
|
|
315
|
-
priorityFeePerGas
|
|
316
|
-
};
|
|
317
|
-
}, "transformGasFromEthgasstation");
|
|
207
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
208
|
+
};
|
|
318
209
|
|
|
319
210
|
// src/lib/divineGas.ts
|
|
320
|
-
var divineGas =
|
|
211
|
+
var divineGas = async (payloads) => {
|
|
321
212
|
const blocknative = payloads.filter(isEthereumGasBlocknativePayload).map(transformGasFromBlocknative);
|
|
322
213
|
const etherchainV2 = payloads.filter(isEthereumGasEtherchainV2Payload).map(transformGasFromEtherchainV2);
|
|
323
214
|
const ethers = payloads.filter(isEthereumGasEthersPayload).map(transformGasFromEthers);
|
|
324
215
|
const etherscan = payloads.filter(isEthereumGasEtherscanPayload).map(transformGasFromEtherscan);
|
|
325
216
|
const ethgasstation = payloads.filter(isEthereumGasEthgasstationPayload).map(transformGasFromEthgasstation);
|
|
326
|
-
const transactionCosts = [
|
|
327
|
-
...blocknative,
|
|
328
|
-
...etherchainV2,
|
|
329
|
-
...ethers,
|
|
330
|
-
...etherscan,
|
|
331
|
-
...ethgasstation
|
|
332
|
-
];
|
|
217
|
+
const transactionCosts = [...blocknative, ...etherchainV2, ...ethers, ...etherscan, ...ethgasstation];
|
|
333
218
|
const avg = average(transactionCosts);
|
|
334
219
|
const timestamp = Date.now();
|
|
335
|
-
const payload = await new PayloadBuilder({
|
|
336
|
-
schema: EthereumGasSchema
|
|
337
|
-
}).fields({
|
|
338
|
-
...avg,
|
|
339
|
-
timestamp
|
|
340
|
-
}).build();
|
|
220
|
+
const payload = await new PayloadBuilder({ schema: EthereumGasSchema }).fields({ ...avg, timestamp }).build();
|
|
341
221
|
return payload;
|
|
342
|
-
}
|
|
222
|
+
};
|
|
343
223
|
|
|
344
224
|
// src/Schema.ts
|
|
345
225
|
var EthereumGasDivinerQuerySchema = "network.xyo.blockchain.ethereum.gas.diviner.query";
|
|
346
226
|
var EthereumGasDivinerConfigSchema = "network.xyo.blockchain.ethereum.gas.diviner.config";
|
|
347
227
|
|
|
348
228
|
// src/Diviner.ts
|
|
349
|
-
var
|
|
229
|
+
var EthereumGasDiviner = class extends AbstractDiviner {
|
|
230
|
+
static configSchemas = [...super.configSchemas, EthereumGasDivinerConfigSchema];
|
|
231
|
+
static defaultConfigSchema = EthereumGasDivinerConfigSchema;
|
|
232
|
+
static targetSchema = EthereumGasSchema2;
|
|
350
233
|
async divineHandler(payloads) {
|
|
351
234
|
const cost = await divineGas(payloads ?? []);
|
|
352
|
-
return [
|
|
353
|
-
cost
|
|
354
|
-
];
|
|
235
|
+
return [cost];
|
|
355
236
|
}
|
|
356
237
|
};
|
|
357
|
-
__name(_EthereumGasDiviner, "EthereumGasDiviner");
|
|
358
|
-
__publicField(_EthereumGasDiviner, "configSchemas", [
|
|
359
|
-
...__superGet(_EthereumGasDiviner, _EthereumGasDiviner, "configSchemas"),
|
|
360
|
-
EthereumGasDivinerConfigSchema
|
|
361
|
-
]);
|
|
362
|
-
__publicField(_EthereumGasDiviner, "defaultConfigSchema", EthereumGasDivinerConfigSchema);
|
|
363
|
-
__publicField(_EthereumGasDiviner, "targetSchema", EthereumGasSchema2);
|
|
364
|
-
var EthereumGasDiviner = _EthereumGasDiviner;
|
|
365
238
|
|
|
366
239
|
// src/Plugin.ts
|
|
367
240
|
import { EthereumGasSchema as EthereumGasSchema3 } from "@xyo-network/gas-price-payload-plugin";
|
|
368
241
|
import { PayloadSetSchema } from "@xyo-network/payload-model";
|
|
369
242
|
import { createPayloadSetDivinerPlugin } from "@xyo-network/payloadset-plugin";
|
|
370
|
-
var EthereumGasPlugin =
|
|
371
|
-
required: {
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
}, "diviner")
|
|
379
|
-
}), "EthereumGasPlugin");
|
|
243
|
+
var EthereumGasPlugin = () => createPayloadSetDivinerPlugin(
|
|
244
|
+
{ required: { [EthereumGasSchema3]: 1 }, schema: PayloadSetSchema },
|
|
245
|
+
{
|
|
246
|
+
diviner: async (params) => {
|
|
247
|
+
return await EthereumGasDiviner.create(params);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
);
|
|
380
251
|
export {
|
|
381
252
|
EthereumGasDiviner,
|
|
382
253
|
EthereumGasDivinerConfigSchema,
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Diviner.ts","../../src/lib/divineGas.ts","../../src/lib/average.ts","../../src/lib/identities/isEthereumGasBlocknativePayload.ts","../../src/lib/identities/isEthereumGasEtherchainV2Payload.ts","../../src/lib/identities/isEthereumGasEtherscanPayload.ts","../../src/lib/identities/isEthereumGasEthersPayload.ts","../../src/lib/identities/isEthereumGasEthgasstationPayload.ts","../../src/lib/transforms/transformGasFromBlocknative.ts","../../src/lib/transforms/transformGasFromEtherchainV2.ts","../../src/lib/transforms/transformGasFromEthers.ts","../../src/lib/transforms/transformGasFromEtherscan.ts","../../src/lib/transforms/transformGasFromEthgasstation.ts","../../src/Schema.ts","../../src/Plugin.ts"],"sourcesContent":["import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerConfig, DivinerModule, DivinerParams } from '@xyo-network/diviner-model'\nimport { EthereumGasSchema } from '@xyo-network/gas-price-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { divineGas } from './lib/index.ts'\nimport { EthereumGasDivinerConfigSchema } from './Schema.ts'\n\nexport type EthereumGasDivinerConfig = DivinerConfig<{ schema: EthereumGasDivinerConfigSchema }>\nexport type EthereumGasDivinerParams = DivinerParams<AnyConfigSchema<EthereumGasDivinerConfig>>\n\nexport class EthereumGasDiviner<TParams extends EthereumGasDivinerParams = EthereumGasDivinerParams>\n extends AbstractDiviner<TParams>\n implements DivinerModule {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EthereumGasDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = EthereumGasDivinerConfigSchema\n static override targetSchema: string = EthereumGasSchema\n\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload[]> {\n const cost = await divineGas(payloads ?? [])\n return [cost]\n }\n}\n","import { EthereumGasPayload, EthereumGasSchema, FeeData } from '@xyo-network/gas-price-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { average } from './average.ts'\nimport {\n isEthereumGasBlocknativePayload,\n isEthereumGasEtherchainV2Payload,\n isEthereumGasEtherscanPayload,\n isEthereumGasEthersPayload,\n isEthereumGasEthgasstationPayload,\n} from './identities/index.ts'\nimport {\n transformGasFromBlocknative,\n transformGasFromEtherchainV2,\n transformGasFromEthers,\n transformGasFromEtherscan,\n transformGasFromEthgasstation,\n} from './transforms/index.ts'\n\nexport const divineGas = async (payloads: Payload[]): Promise<EthereumGasPayload> => {\n const blocknative = payloads.filter(isEthereumGasBlocknativePayload).map(transformGasFromBlocknative)\n const etherchainV2 = payloads.filter(isEthereumGasEtherchainV2Payload).map(transformGasFromEtherchainV2)\n const ethers = payloads.filter(isEthereumGasEthersPayload).map(transformGasFromEthers)\n const etherscan = payloads.filter(isEthereumGasEtherscanPayload).map(transformGasFromEtherscan)\n const ethgasstation = payloads.filter(isEthereumGasEthgasstationPayload).map(transformGasFromEthgasstation)\n const transactionCosts: FeeData[] = [...blocknative, ...etherchainV2, ...ethers, ...etherscan, ...ethgasstation]\n const avg = average(transactionCosts)\n const timestamp = Date.now()\n const payload = await new PayloadBuilder<EthereumGasPayload>({ schema: EthereumGasSchema }).fields({ ...avg, timestamp }).build()\n return payload\n}\n","import { exists } from '@xylabs/exists'\nimport { FeeData } from '@xyo-network/gas-price-payload-plugin'\n\n/**\n * Averages an array of numbers\n * @param x Averages an array of numbers\n * @returns The average of the array of numbers or undefined if the\n * array is empty or undefined\n */\nconst listAverage = (x?: number[]) => (x?.length ? x.reduce((a, b) => a + b) / x.length : undefined)\n\n/**\n * Averages the property indicates by the supplied property\n * expression across the array of FeeData\n * @param data The array of data to average\n * @param propertyExpression The expression for the property to\n * average\n * @returns The average of the supplied property across the array\n */\nconst averageProperty = (data: FeeData[], propertyExpression: (x: FeeData) => number | undefined) => {\n return listAverage(data.map(propertyExpression).filter(exists))\n}\n\n/**\n * Averages the supplied FeeData\n * @param input An array of FeeData or undefined\n * @returns The average of the supplied FeeData\n */\nexport const average = (input?: (FeeData | undefined)[]): FeeData => {\n const data = input?.filter(exists) || []\n const averaged: FeeData = {\n baseFee: averageProperty(data, x => x.baseFee),\n feePerGas: {\n high: averageProperty(data, x => x.feePerGas.high),\n low: averageProperty(data, x => x.feePerGas.low),\n medium: averageProperty(data, x => x.feePerGas.medium),\n veryHigh: averageProperty(data, x => x.feePerGas.veryHigh),\n },\n priorityFeePerGas: {\n high: averageProperty(data, x => x.priorityFeePerGas.high),\n low: averageProperty(data, x => x.priorityFeePerGas.low),\n medium: averageProperty(data, x => x.priorityFeePerGas.medium),\n veryHigh: averageProperty(data, x => x.priorityFeePerGas.veryHigh),\n },\n }\n return averaged\n}\n","import { EthereumGasBlocknativePayload, EthereumGasBlocknativeSchema } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasBlocknativePayload = (payload?: Payload | null): payload is EthereumGasBlocknativePayload => {\n return payload?.schema === EthereumGasBlocknativeSchema\n}\n","import { EthereumGasEtherchainV2Payload, EthereumGasEtherchainV2Schema } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEtherchainV2Payload = (payload?: Payload | null): payload is EthereumGasEtherchainV2Payload => {\n return payload?.schema === EthereumGasEtherchainV2Schema\n}\n","import { EthereumGasEtherscanPayload, EthereumGasEtherscanSchema } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEtherscanPayload = (payload?: Payload | null): payload is EthereumGasEtherscanPayload => {\n return payload?.schema === EthereumGasEtherscanSchema\n}\n","import { EthereumGasEthersPayload, EthereumGasEthersSchema } from '@xyo-network/ethers-ethereum-gas-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEthersPayload = (payload?: Payload | null): payload is EthereumGasEthersPayload => {\n return payload?.schema === EthereumGasEthersSchema\n}\n","import { EthereumGasEthgasstationPayload, EthereumGasEthgasstationSchema } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEthgasstationPayload = (payload?: Payload | null): payload is EthereumGasEthgasstationPayload => {\n return payload?.schema === EthereumGasEthgasstationSchema\n}\n","import { EthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'\nimport { FeeData, FeePerGas, PriorityFeePerGas } from '@xyo-network/gas-price-payload-plugin'\nimport { linear } from 'regression'\n\nconst getBaseFee = (payload: EthereumGasBlocknativePayload): number | undefined => {\n return payload?.blockPrices?.[0]?.baseFeePerGas\n}\n\nconst getFeePerGas = (payload: EthereumGasBlocknativePayload): Partial<FeePerGas> => {\n const sorted = payload.blockPrices?.[0].estimatedPrices?.sort((a, b) => a.confidence - b.confidence)\n const trend = linear([\n [0, sorted?.[0].price],\n [1, sorted?.[1].price],\n [2, sorted?.[2].price],\n [3, sorted?.[3].price],\n [4, sorted?.[4].price],\n ])\n const feePerGas: FeePerGas = {\n low: trend.predict(0.5)[1],\n medium: trend.predict(1.5)[1],\n high: trend.predict(2.5)[1],\n veryHigh: trend.predict(3.5)[1],\n }\n return feePerGas\n}\n\nconst getPriorityFeePerGas = (payload: EthereumGasBlocknativePayload): Partial<PriorityFeePerGas> => {\n const sorted = payload.blockPrices?.[0].estimatedPrices?.sort((a, b) => a.confidence - b.confidence)\n const trend = linear([\n [0, sorted?.[0].maxPriorityFeePerGas],\n [1, sorted?.[1].maxPriorityFeePerGas],\n [2, sorted?.[2].maxPriorityFeePerGas],\n [3, sorted?.[3].maxPriorityFeePerGas],\n [4, sorted?.[4].maxPriorityFeePerGas],\n ])\n const priorityFeePerGas: PriorityFeePerGas = {\n low: trend.predict(0.5)[1],\n medium: trend.predict(1.5)[1],\n high: trend.predict(2.5)[1],\n veryHigh: trend.predict(3.5)[1],\n }\n return priorityFeePerGas\n}\n\nexport const transformGasFromBlocknative = (payload: EthereumGasBlocknativePayload): FeeData => {\n const baseFee = getBaseFee(payload)\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = getPriorityFeePerGas(payload)\n return { baseFee, feePerGas, priorityFeePerGas }\n}\n","import { EthereumGasEtherchainV2Payload } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins'\nimport { FeeData, FeePerGas } from '@xyo-network/gas-price-payload-plugin'\n\nconst getFeePerGas = (payload: EthereumGasEtherchainV2Payload): Partial<FeePerGas> => {\n const { slow, standard, fast, rapid } = payload.data\n const low = slow / 1_000_000_000\n const medium = standard / 1_000_000_000\n const high = fast / 1_000_000_000\n const veryHigh = rapid / 1_000_000_000\n return { high, low, medium, veryHigh }\n}\n\nexport const transformGasFromEtherchainV2 = (payload: EthereumGasEtherchainV2Payload): FeeData => {\n const baseFee = undefined\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = {}\n return { baseFee, feePerGas, priorityFeePerGas }\n}\n","import { EthereumGasEthersPayload } from '@xyo-network/ethers-ethereum-gas-payload-plugin'\nimport { FeeData, FeePerGas, PriorityFeePerGas } from '@xyo-network/gas-price-payload-plugin'\n\nconst getBaseFee = (payload: EthereumGasEthersPayload): number | undefined => {\n const { gasPrice } = payload\n return gasPrice ? gasPrice / 1_000_000_000 : undefined\n}\n\nconst getFeePerGas = (payload: EthereumGasEthersPayload): Partial<FeePerGas> => {\n const { maxFeePerGas } = payload\n const high = maxFeePerGas ? maxFeePerGas / 1_000_000_000 : undefined\n return { high }\n}\n\nconst getPriorityFeePerGas = (payload: EthereumGasEthersPayload): Partial<PriorityFeePerGas> => {\n const { maxPriorityFeePerGas } = payload\n const high = maxPriorityFeePerGas ? maxPriorityFeePerGas / 1_000_000_000 : undefined\n return { high }\n}\n\nexport const transformGasFromEthers = (payload: EthereumGasEthersPayload): FeeData => {\n const baseFee = getBaseFee(payload)\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = getPriorityFeePerGas(payload)\n return { baseFee, feePerGas, priorityFeePerGas }\n}\n","import { EthereumGasEtherscanPayload } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'\nimport { FeeData, FeePerGas } from '@xyo-network/gas-price-payload-plugin'\nimport { linear } from 'regression'\n\nconst getBaseFee = (payload: EthereumGasEtherscanPayload): number | undefined => {\n const { suggestBaseFee } = payload.result\n return Number.parseFloat(suggestBaseFee)\n}\n\nconst getFeePerGas = (payload: EthereumGasEtherscanPayload): Partial<FeePerGas> => {\n const { FastGasPrice, ProposeGasPrice, SafeGasPrice } = payload.result\n const low = Number.parseFloat(SafeGasPrice)\n const medium = Number.parseFloat(ProposeGasPrice)\n const high = Number.parseFloat(FastGasPrice)\n const veryHigh = linear([\n [0, low],\n [1, medium],\n [2, high],\n ]).predict(3)[1]\n return { high, low, medium, veryHigh }\n}\n\nexport const transformGasFromEtherscan = (payload: EthereumGasEtherscanPayload): FeeData => {\n const baseFee = getBaseFee(payload)\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = {}\n return { baseFee, feePerGas, priorityFeePerGas }\n}\n","import { EthereumGasEthgasstationPayload } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin'\nimport { FeeData, FeePerGas, PriorityFeePerGas } from '@xyo-network/gas-price-payload-plugin'\nimport { linear } from 'regression'\n\nconst getBaseFee = (payload: EthereumGasEthgasstationPayload): number | undefined => {\n const { baseFee } = payload\n return baseFee\n}\n\nconst getFeePerGas = (payload: EthereumGasEthgasstationPayload): Partial<FeePerGas> => {\n const { standard: medium, fast: high, instant: veryHigh } = payload.gasPrice\n const trend = linear([\n [1, medium],\n [2, high],\n [3, veryHigh],\n ])\n const low = trend.predict(0)[1]\n return { low, medium, high, veryHigh }\n}\n\nconst getPriorityFeePerGas = (payload: EthereumGasEthgasstationPayload): Partial<PriorityFeePerGas> => {\n const { standard: medium, fast: high, instant: veryHigh } = payload.priorityFee\n const trend = linear([\n [1, medium],\n [2, high],\n [3, veryHigh],\n ])\n const low = trend.predict(0)[1]\n return { low, medium, high, veryHigh }\n}\n\nexport const transformGasFromEthgasstation = (payload: EthereumGasEthgasstationPayload): FeeData => {\n const baseFee = getBaseFee(payload)\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = getPriorityFeePerGas(payload)\n return { baseFee, feePerGas, priorityFeePerGas }\n}\n","export type EthereumGasDivinerQuerySchema = 'network.xyo.blockchain.ethereum.gas.diviner.query'\nexport const EthereumGasDivinerQuerySchema: EthereumGasDivinerQuerySchema = 'network.xyo.blockchain.ethereum.gas.diviner.query'\n\nexport type EthereumGasDivinerConfigSchema = 'network.xyo.blockchain.ethereum.gas.diviner.config'\nexport const EthereumGasDivinerConfigSchema: EthereumGasDivinerConfigSchema = 'network.xyo.blockchain.ethereum.gas.diviner.config'\n","import { EthereumGasSchema } from '@xyo-network/gas-price-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { EthereumGasDiviner } from './Diviner.ts'\n\nexport const EthereumGasPlugin = () =>\n createPayloadSetDivinerPlugin<EthereumGasDiviner>(\n { required: { [EthereumGasSchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await EthereumGasDiviner.create(params)) as EthereumGasDiviner\n },\n },\n )\n"],"mappings":"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","names":["AbstractDiviner","EthereumGasSchema","EthereumGasSchema","PayloadBuilder","exists","listAverage","x","length","reduce","a","b","undefined","averageProperty","data","propertyExpression","map","filter","exists","average","input","averaged","baseFee","feePerGas","high","low","medium","veryHigh","priorityFeePerGas","EthereumGasBlocknativeSchema","isEthereumGasBlocknativePayload","payload","schema","EthereumGasBlocknativeSchema","EthereumGasEtherchainV2Schema","isEthereumGasEtherchainV2Payload","payload","schema","EthereumGasEtherchainV2Schema","EthereumGasEtherscanSchema","isEthereumGasEtherscanPayload","payload","schema","EthereumGasEtherscanSchema","EthereumGasEthersSchema","isEthereumGasEthersPayload","payload","schema","EthereumGasEthersSchema","EthereumGasEthgasstationSchema","isEthereumGasEthgasstationPayload","payload","schema","EthereumGasEthgasstationSchema","linear","getBaseFee","payload","blockPrices","baseFeePerGas","getFeePerGas","sorted","estimatedPrices","sort","a","b","confidence","trend","linear","price","feePerGas","low","predict","medium","high","veryHigh","getPriorityFeePerGas","maxPriorityFeePerGas","priorityFeePerGas","transformGasFromBlocknative","baseFee","getFeePerGas","payload","slow","standard","fast","rapid","data","low","medium","high","veryHigh","transformGasFromEtherchainV2","baseFee","undefined","feePerGas","priorityFeePerGas","getBaseFee","payload","gasPrice","undefined","getFeePerGas","maxFeePerGas","high","getPriorityFeePerGas","maxPriorityFeePerGas","transformGasFromEthers","baseFee","feePerGas","priorityFeePerGas","linear","getBaseFee","payload","suggestBaseFee","result","Number","parseFloat","getFeePerGas","FastGasPrice","ProposeGasPrice","SafeGasPrice","low","medium","high","veryHigh","linear","predict","transformGasFromEtherscan","baseFee","feePerGas","priorityFeePerGas","linear","getBaseFee","payload","baseFee","getFeePerGas","standard","medium","fast","high","instant","veryHigh","gasPrice","trend","linear","low","predict","getPriorityFeePerGas","priorityFee","transformGasFromEthgasstation","feePerGas","priorityFeePerGas","divineGas","payloads","blocknative","filter","isEthereumGasBlocknativePayload","map","transformGasFromBlocknative","etherchainV2","isEthereumGasEtherchainV2Payload","transformGasFromEtherchainV2","ethers","isEthereumGasEthersPayload","transformGasFromEthers","etherscan","isEthereumGasEtherscanPayload","transformGasFromEtherscan","ethgasstation","isEthereumGasEthgasstationPayload","transformGasFromEthgasstation","transactionCosts","avg","average","timestamp","Date","now","payload","PayloadBuilder","schema","EthereumGasSchema","fields","build","EthereumGasDivinerQuerySchema","EthereumGasDivinerConfigSchema","EthereumGasDiviner","AbstractDiviner","divineHandler","payloads","cost","divineGas","configSchemas","EthereumGasDivinerConfigSchema","defaultConfigSchema","targetSchema","EthereumGasSchema","EthereumGasSchema","PayloadSetSchema","createPayloadSetDivinerPlugin","EthereumGasPlugin","createPayloadSetDivinerPlugin","required","EthereumGasSchema","schema","PayloadSetSchema","diviner","params","EthereumGasDiviner","create"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Diviner.ts","../../src/lib/divineGas.ts","../../src/lib/average.ts","../../src/lib/identities/isEthereumGasBlocknativePayload.ts","../../src/lib/identities/isEthereumGasEtherchainV2Payload.ts","../../src/lib/identities/isEthereumGasEtherscanPayload.ts","../../src/lib/identities/isEthereumGasEthersPayload.ts","../../src/lib/identities/isEthereumGasEthgasstationPayload.ts","../../src/lib/transforms/transformGasFromBlocknative.ts","../../src/lib/transforms/transformGasFromEtherchainV2.ts","../../src/lib/transforms/transformGasFromEthers.ts","../../src/lib/transforms/transformGasFromEtherscan.ts","../../src/lib/transforms/transformGasFromEthgasstation.ts","../../src/Schema.ts","../../src/Plugin.ts"],"sourcesContent":["import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport { DivinerConfig, DivinerModule, DivinerParams } from '@xyo-network/diviner-model'\nimport { EthereumGasSchema } from '@xyo-network/gas-price-payload-plugin'\nimport { AnyConfigSchema } from '@xyo-network/module-model'\nimport { Payload, Schema } from '@xyo-network/payload-model'\n\nimport { divineGas } from './lib/index.ts'\nimport { EthereumGasDivinerConfigSchema } from './Schema.ts'\n\nexport type EthereumGasDivinerConfig = DivinerConfig<{ schema: EthereumGasDivinerConfigSchema }>\nexport type EthereumGasDivinerParams = DivinerParams<AnyConfigSchema<EthereumGasDivinerConfig>>\n\nexport class EthereumGasDiviner<TParams extends EthereumGasDivinerParams = EthereumGasDivinerParams>\n extends AbstractDiviner<TParams>\n implements DivinerModule {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, EthereumGasDivinerConfigSchema]\n static override readonly defaultConfigSchema: Schema = EthereumGasDivinerConfigSchema\n static override targetSchema: string = EthereumGasSchema\n\n protected override async divineHandler(payloads?: Payload[]): Promise<Payload[]> {\n const cost = await divineGas(payloads ?? [])\n return [cost]\n }\n}\n","import { EthereumGasPayload, EthereumGasSchema, FeeData } from '@xyo-network/gas-price-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { average } from './average.ts'\nimport {\n isEthereumGasBlocknativePayload,\n isEthereumGasEtherchainV2Payload,\n isEthereumGasEtherscanPayload,\n isEthereumGasEthersPayload,\n isEthereumGasEthgasstationPayload,\n} from './identities/index.ts'\nimport {\n transformGasFromBlocknative,\n transformGasFromEtherchainV2,\n transformGasFromEthers,\n transformGasFromEtherscan,\n transformGasFromEthgasstation,\n} from './transforms/index.ts'\n\nexport const divineGas = async (payloads: Payload[]): Promise<EthereumGasPayload> => {\n const blocknative = payloads.filter(isEthereumGasBlocknativePayload).map(transformGasFromBlocknative)\n const etherchainV2 = payloads.filter(isEthereumGasEtherchainV2Payload).map(transformGasFromEtherchainV2)\n const ethers = payloads.filter(isEthereumGasEthersPayload).map(transformGasFromEthers)\n const etherscan = payloads.filter(isEthereumGasEtherscanPayload).map(transformGasFromEtherscan)\n const ethgasstation = payloads.filter(isEthereumGasEthgasstationPayload).map(transformGasFromEthgasstation)\n const transactionCosts: FeeData[] = [...blocknative, ...etherchainV2, ...ethers, ...etherscan, ...ethgasstation]\n const avg = average(transactionCosts)\n const timestamp = Date.now()\n const payload = await new PayloadBuilder<EthereumGasPayload>({ schema: EthereumGasSchema }).fields({ ...avg, timestamp }).build()\n return payload\n}\n","import { exists } from '@xylabs/exists'\nimport { FeeData } from '@xyo-network/gas-price-payload-plugin'\n\n/**\n * Averages an array of numbers\n * @param x Averages an array of numbers\n * @returns The average of the array of numbers or undefined if the\n * array is empty or undefined\n */\nconst listAverage = (x?: number[]) => (x?.length ? x.reduce((a, b) => a + b) / x.length : undefined)\n\n/**\n * Averages the property indicates by the supplied property\n * expression across the array of FeeData\n * @param data The array of data to average\n * @param propertyExpression The expression for the property to\n * average\n * @returns The average of the supplied property across the array\n */\nconst averageProperty = (data: FeeData[], propertyExpression: (x: FeeData) => number | undefined) => {\n return listAverage(data.map(propertyExpression).filter(exists))\n}\n\n/**\n * Averages the supplied FeeData\n * @param input An array of FeeData or undefined\n * @returns The average of the supplied FeeData\n */\nexport const average = (input?: (FeeData | undefined)[]): FeeData => {\n const data = input?.filter(exists) || []\n const averaged: FeeData = {\n baseFee: averageProperty(data, x => x.baseFee),\n feePerGas: {\n high: averageProperty(data, x => x.feePerGas.high),\n low: averageProperty(data, x => x.feePerGas.low),\n medium: averageProperty(data, x => x.feePerGas.medium),\n veryHigh: averageProperty(data, x => x.feePerGas.veryHigh),\n },\n priorityFeePerGas: {\n high: averageProperty(data, x => x.priorityFeePerGas.high),\n low: averageProperty(data, x => x.priorityFeePerGas.low),\n medium: averageProperty(data, x => x.priorityFeePerGas.medium),\n veryHigh: averageProperty(data, x => x.priorityFeePerGas.veryHigh),\n },\n }\n return averaged\n}\n","import { EthereumGasBlocknativePayload, EthereumGasBlocknativeSchema } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasBlocknativePayload = (payload?: Payload | null): payload is EthereumGasBlocknativePayload => {\n return payload?.schema === EthereumGasBlocknativeSchema\n}\n","import { EthereumGasEtherchainV2Payload, EthereumGasEtherchainV2Schema } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEtherchainV2Payload = (payload?: Payload | null): payload is EthereumGasEtherchainV2Payload => {\n return payload?.schema === EthereumGasEtherchainV2Schema\n}\n","import { EthereumGasEtherscanPayload, EthereumGasEtherscanSchema } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEtherscanPayload = (payload?: Payload | null): payload is EthereumGasEtherscanPayload => {\n return payload?.schema === EthereumGasEtherscanSchema\n}\n","import { EthereumGasEthersPayload, EthereumGasEthersSchema } from '@xyo-network/ethers-ethereum-gas-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEthersPayload = (payload?: Payload | null): payload is EthereumGasEthersPayload => {\n return payload?.schema === EthereumGasEthersSchema\n}\n","import { EthereumGasEthgasstationPayload, EthereumGasEthgasstationSchema } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEthgasstationPayload = (payload?: Payload | null): payload is EthereumGasEthgasstationPayload => {\n return payload?.schema === EthereumGasEthgasstationSchema\n}\n","import { EthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'\nimport { FeeData, FeePerGas, PriorityFeePerGas } from '@xyo-network/gas-price-payload-plugin'\nimport { linear } from 'regression'\n\nconst getBaseFee = (payload: EthereumGasBlocknativePayload): number | undefined => {\n return payload?.blockPrices?.[0]?.baseFeePerGas\n}\n\nconst getFeePerGas = (payload: EthereumGasBlocknativePayload): Partial<FeePerGas> => {\n const sorted = payload.blockPrices?.[0].estimatedPrices?.sort((a, b) => a.confidence - b.confidence)\n const trend = linear([\n [0, sorted?.[0].price],\n [1, sorted?.[1].price],\n [2, sorted?.[2].price],\n [3, sorted?.[3].price],\n [4, sorted?.[4].price],\n ])\n const feePerGas: FeePerGas = {\n low: trend.predict(0.5)[1],\n medium: trend.predict(1.5)[1],\n high: trend.predict(2.5)[1],\n veryHigh: trend.predict(3.5)[1],\n }\n return feePerGas\n}\n\nconst getPriorityFeePerGas = (payload: EthereumGasBlocknativePayload): Partial<PriorityFeePerGas> => {\n const sorted = payload.blockPrices?.[0].estimatedPrices?.sort((a, b) => a.confidence - b.confidence)\n const trend = linear([\n [0, sorted?.[0].maxPriorityFeePerGas],\n [1, sorted?.[1].maxPriorityFeePerGas],\n [2, sorted?.[2].maxPriorityFeePerGas],\n [3, sorted?.[3].maxPriorityFeePerGas],\n [4, sorted?.[4].maxPriorityFeePerGas],\n ])\n const priorityFeePerGas: PriorityFeePerGas = {\n low: trend.predict(0.5)[1],\n medium: trend.predict(1.5)[1],\n high: trend.predict(2.5)[1],\n veryHigh: trend.predict(3.5)[1],\n }\n return priorityFeePerGas\n}\n\nexport const transformGasFromBlocknative = (payload: EthereumGasBlocknativePayload): FeeData => {\n const baseFee = getBaseFee(payload)\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = getPriorityFeePerGas(payload)\n return { baseFee, feePerGas, priorityFeePerGas }\n}\n","import { EthereumGasEtherchainV2Payload } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins'\nimport { FeeData, FeePerGas } from '@xyo-network/gas-price-payload-plugin'\n\nconst getFeePerGas = (payload: EthereumGasEtherchainV2Payload): Partial<FeePerGas> => {\n const { slow, standard, fast, rapid } = payload.data\n const low = slow / 1_000_000_000\n const medium = standard / 1_000_000_000\n const high = fast / 1_000_000_000\n const veryHigh = rapid / 1_000_000_000\n return { high, low, medium, veryHigh }\n}\n\nexport const transformGasFromEtherchainV2 = (payload: EthereumGasEtherchainV2Payload): FeeData => {\n const baseFee = undefined\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = {}\n return { baseFee, feePerGas, priorityFeePerGas }\n}\n","import { EthereumGasEthersPayload } from '@xyo-network/ethers-ethereum-gas-payload-plugin'\nimport { FeeData, FeePerGas, PriorityFeePerGas } from '@xyo-network/gas-price-payload-plugin'\n\nconst getBaseFee = (payload: EthereumGasEthersPayload): number | undefined => {\n const { gasPrice } = payload\n return gasPrice ? gasPrice / 1_000_000_000 : undefined\n}\n\nconst getFeePerGas = (payload: EthereumGasEthersPayload): Partial<FeePerGas> => {\n const { maxFeePerGas } = payload\n const high = maxFeePerGas ? maxFeePerGas / 1_000_000_000 : undefined\n return { high }\n}\n\nconst getPriorityFeePerGas = (payload: EthereumGasEthersPayload): Partial<PriorityFeePerGas> => {\n const { maxPriorityFeePerGas } = payload\n const high = maxPriorityFeePerGas ? maxPriorityFeePerGas / 1_000_000_000 : undefined\n return { high }\n}\n\nexport const transformGasFromEthers = (payload: EthereumGasEthersPayload): FeeData => {\n const baseFee = getBaseFee(payload)\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = getPriorityFeePerGas(payload)\n return { baseFee, feePerGas, priorityFeePerGas }\n}\n","import { EthereumGasEtherscanPayload } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'\nimport { FeeData, FeePerGas } from '@xyo-network/gas-price-payload-plugin'\nimport { linear } from 'regression'\n\nconst getBaseFee = (payload: EthereumGasEtherscanPayload): number | undefined => {\n const { suggestBaseFee } = payload.result\n return Number.parseFloat(suggestBaseFee)\n}\n\nconst getFeePerGas = (payload: EthereumGasEtherscanPayload): Partial<FeePerGas> => {\n const { FastGasPrice, ProposeGasPrice, SafeGasPrice } = payload.result\n const low = Number.parseFloat(SafeGasPrice)\n const medium = Number.parseFloat(ProposeGasPrice)\n const high = Number.parseFloat(FastGasPrice)\n const veryHigh = linear([\n [0, low],\n [1, medium],\n [2, high],\n ]).predict(3)[1]\n return { high, low, medium, veryHigh }\n}\n\nexport const transformGasFromEtherscan = (payload: EthereumGasEtherscanPayload): FeeData => {\n const baseFee = getBaseFee(payload)\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = {}\n return { baseFee, feePerGas, priorityFeePerGas }\n}\n","import { EthereumGasEthgasstationPayload } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin'\nimport { FeeData, FeePerGas, PriorityFeePerGas } from '@xyo-network/gas-price-payload-plugin'\nimport { linear } from 'regression'\n\nconst getBaseFee = (payload: EthereumGasEthgasstationPayload): number | undefined => {\n const { baseFee } = payload\n return baseFee\n}\n\nconst getFeePerGas = (payload: EthereumGasEthgasstationPayload): Partial<FeePerGas> => {\n const { standard: medium, fast: high, instant: veryHigh } = payload.gasPrice\n const trend = linear([\n [1, medium],\n [2, high],\n [3, veryHigh],\n ])\n const low = trend.predict(0)[1]\n return { low, medium, high, veryHigh }\n}\n\nconst getPriorityFeePerGas = (payload: EthereumGasEthgasstationPayload): Partial<PriorityFeePerGas> => {\n const { standard: medium, fast: high, instant: veryHigh } = payload.priorityFee\n const trend = linear([\n [1, medium],\n [2, high],\n [3, veryHigh],\n ])\n const low = trend.predict(0)[1]\n return { low, medium, high, veryHigh }\n}\n\nexport const transformGasFromEthgasstation = (payload: EthereumGasEthgasstationPayload): FeeData => {\n const baseFee = getBaseFee(payload)\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = getPriorityFeePerGas(payload)\n return { baseFee, feePerGas, priorityFeePerGas }\n}\n","export type EthereumGasDivinerQuerySchema = 'network.xyo.blockchain.ethereum.gas.diviner.query'\nexport const EthereumGasDivinerQuerySchema: EthereumGasDivinerQuerySchema = 'network.xyo.blockchain.ethereum.gas.diviner.query'\n\nexport type EthereumGasDivinerConfigSchema = 'network.xyo.blockchain.ethereum.gas.diviner.config'\nexport const EthereumGasDivinerConfigSchema: EthereumGasDivinerConfigSchema = 'network.xyo.blockchain.ethereum.gas.diviner.config'\n","import { EthereumGasSchema } from '@xyo-network/gas-price-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { EthereumGasDiviner } from './Diviner.ts'\n\nexport const EthereumGasPlugin = () =>\n createPayloadSetDivinerPlugin<EthereumGasDiviner>(\n { required: { [EthereumGasSchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await EthereumGasDiviner.create(params)) as EthereumGasDiviner\n },\n },\n )\n"],"mappings":"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","names":["EthereumGasSchema","getFeePerGas","getBaseFee","getFeePerGas","getPriorityFeePerGas","linear","getBaseFee","getFeePerGas","linear","getBaseFee","getFeePerGas","getPriorityFeePerGas","EthereumGasSchema","EthereumGasSchema","EthereumGasSchema"]}
|
package/package.json
CHANGED
|
@@ -10,30 +10,30 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/plugins/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/exists": "^3.6.
|
|
14
|
-
"@xyo-network/blocknative-ethereum-gas-payload-plugin": "^2.99.
|
|
15
|
-
"@xyo-network/diviner-abstract": "^2.111.
|
|
16
|
-
"@xyo-network/diviner-model": "^2.111.
|
|
17
|
-
"@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins": "^2.99.
|
|
18
|
-
"@xyo-network/ethers-ethereum-gas-payload-plugin": "^2.99.
|
|
19
|
-
"@xyo-network/etherscan-ethereum-gas-payload-plugin": "^2.99.
|
|
20
|
-
"@xyo-network/ethgasstation-ethereum-gas-payload-plugin": "^2.99.
|
|
21
|
-
"@xyo-network/gas-price-payload-plugin": "^2.99.
|
|
22
|
-
"@xyo-network/module-model": "^2.111.
|
|
23
|
-
"@xyo-network/payload-builder": "^2.111.
|
|
24
|
-
"@xyo-network/payload-model": "^2.111.
|
|
25
|
-
"@xyo-network/payloadset-plugin": "^2.111.
|
|
13
|
+
"@xylabs/exists": "^3.6.12",
|
|
14
|
+
"@xyo-network/blocknative-ethereum-gas-payload-plugin": "^2.99.6",
|
|
15
|
+
"@xyo-network/diviner-abstract": "^2.111.3",
|
|
16
|
+
"@xyo-network/diviner-model": "^2.111.3",
|
|
17
|
+
"@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins": "^2.99.6",
|
|
18
|
+
"@xyo-network/ethers-ethereum-gas-payload-plugin": "^2.99.6",
|
|
19
|
+
"@xyo-network/etherscan-ethereum-gas-payload-plugin": "^2.99.6",
|
|
20
|
+
"@xyo-network/ethgasstation-ethereum-gas-payload-plugin": "^2.99.6",
|
|
21
|
+
"@xyo-network/gas-price-payload-plugin": "^2.99.6",
|
|
22
|
+
"@xyo-network/module-model": "^2.111.3",
|
|
23
|
+
"@xyo-network/payload-builder": "^2.111.3",
|
|
24
|
+
"@xyo-network/payload-model": "^2.111.3",
|
|
25
|
+
"@xyo-network/payloadset-plugin": "^2.111.3",
|
|
26
26
|
"regression": "^2.0.1"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/regression": "^2.0.6",
|
|
30
|
-
"@xylabs/ts-scripts-yarn3": "^3.15.
|
|
31
|
-
"@xylabs/tsconfig": "^3.15.
|
|
32
|
-
"@xyo-network/blocknative-ethereum-gas-plugin": "^2.99.
|
|
33
|
-
"@xyo-network/etherchain-gas-ethereum-blockchain-plugins": "^2.99.
|
|
34
|
-
"@xyo-network/ethers-ethereum-gas-plugin": "^2.99.
|
|
35
|
-
"@xyo-network/etherscan-ethereum-gas-plugin": "^2.99.
|
|
36
|
-
"@xyo-network/witness-blockchain-abstract": "^2.111.
|
|
30
|
+
"@xylabs/ts-scripts-yarn3": "^3.15.14",
|
|
31
|
+
"@xylabs/tsconfig": "^3.15.14",
|
|
32
|
+
"@xyo-network/blocknative-ethereum-gas-plugin": "^2.99.6",
|
|
33
|
+
"@xyo-network/etherchain-gas-ethereum-blockchain-plugins": "^2.99.6",
|
|
34
|
+
"@xyo-network/ethers-ethereum-gas-plugin": "^2.99.6",
|
|
35
|
+
"@xyo-network/etherscan-ethereum-gas-plugin": "^2.99.6",
|
|
36
|
+
"@xyo-network/witness-blockchain-abstract": "^2.111.3",
|
|
37
37
|
"typescript": "^5.5.4"
|
|
38
38
|
},
|
|
39
39
|
"description": "Typescript/Javascript Plugins for XYO Platform",
|
|
@@ -75,6 +75,6 @@
|
|
|
75
75
|
"url": "https://github.com/XYOracleNetwork/plugins.git"
|
|
76
76
|
},
|
|
77
77
|
"sideEffects": false,
|
|
78
|
-
"version": "2.99.
|
|
78
|
+
"version": "2.99.6",
|
|
79
79
|
"type": "module"
|
|
80
80
|
}
|