@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.cjs
CHANGED
|
@@ -2,11 +2,7 @@
|
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __reflectGet = Reflect.get;
|
|
8
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
10
6
|
var __export = (target, all) => {
|
|
11
7
|
for (var name in all)
|
|
12
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -20,8 +16,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
20
16
|
return to;
|
|
21
17
|
};
|
|
22
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
24
|
-
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
25
19
|
|
|
26
20
|
// src/index.ts
|
|
27
21
|
var src_exports = {};
|
|
@@ -44,11 +38,11 @@ var import_payload_builder = require("@xyo-network/payload-builder");
|
|
|
44
38
|
|
|
45
39
|
// src/lib/average.ts
|
|
46
40
|
var import_exists = require("@xylabs/exists");
|
|
47
|
-
var listAverage =
|
|
48
|
-
var averageProperty =
|
|
41
|
+
var listAverage = (x) => (x == null ? void 0 : x.length) ? x.reduce((a, b) => a + b) / x.length : void 0;
|
|
42
|
+
var averageProperty = (data, propertyExpression) => {
|
|
49
43
|
return listAverage(data.map(propertyExpression).filter(import_exists.exists));
|
|
50
|
-
}
|
|
51
|
-
var average =
|
|
44
|
+
};
|
|
45
|
+
var average = (input) => {
|
|
52
46
|
const data = (input == null ? void 0 : input.filter(import_exists.exists)) || [];
|
|
53
47
|
const averaged = {
|
|
54
48
|
baseFee: averageProperty(data, (x) => x.baseFee),
|
|
@@ -66,68 +60,53 @@ var average = /* @__PURE__ */ __name((input) => {
|
|
|
66
60
|
}
|
|
67
61
|
};
|
|
68
62
|
return averaged;
|
|
69
|
-
}
|
|
63
|
+
};
|
|
70
64
|
|
|
71
65
|
// src/lib/identities/isEthereumGasBlocknativePayload.ts
|
|
72
66
|
var import_blocknative_ethereum_gas_payload_plugin = require("@xyo-network/blocknative-ethereum-gas-payload-plugin");
|
|
73
|
-
var isEthereumGasBlocknativePayload =
|
|
67
|
+
var isEthereumGasBlocknativePayload = (payload) => {
|
|
74
68
|
return (payload == null ? void 0 : payload.schema) === import_blocknative_ethereum_gas_payload_plugin.EthereumGasBlocknativeSchema;
|
|
75
|
-
}
|
|
69
|
+
};
|
|
76
70
|
|
|
77
71
|
// src/lib/identities/isEthereumGasEtherchainV2Payload.ts
|
|
78
72
|
var import_etherchain_gas_ethereum_blockchain_payload_plugins = require("@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins");
|
|
79
|
-
var isEthereumGasEtherchainV2Payload =
|
|
73
|
+
var isEthereumGasEtherchainV2Payload = (payload) => {
|
|
80
74
|
return (payload == null ? void 0 : payload.schema) === import_etherchain_gas_ethereum_blockchain_payload_plugins.EthereumGasEtherchainV2Schema;
|
|
81
|
-
}
|
|
75
|
+
};
|
|
82
76
|
|
|
83
77
|
// src/lib/identities/isEthereumGasEtherscanPayload.ts
|
|
84
78
|
var import_etherscan_ethereum_gas_payload_plugin = require("@xyo-network/etherscan-ethereum-gas-payload-plugin");
|
|
85
|
-
var isEthereumGasEtherscanPayload =
|
|
79
|
+
var isEthereumGasEtherscanPayload = (payload) => {
|
|
86
80
|
return (payload == null ? void 0 : payload.schema) === import_etherscan_ethereum_gas_payload_plugin.EthereumGasEtherscanSchema;
|
|
87
|
-
}
|
|
81
|
+
};
|
|
88
82
|
|
|
89
83
|
// src/lib/identities/isEthereumGasEthersPayload.ts
|
|
90
84
|
var import_ethers_ethereum_gas_payload_plugin = require("@xyo-network/ethers-ethereum-gas-payload-plugin");
|
|
91
|
-
var isEthereumGasEthersPayload =
|
|
85
|
+
var isEthereumGasEthersPayload = (payload) => {
|
|
92
86
|
return (payload == null ? void 0 : payload.schema) === import_ethers_ethereum_gas_payload_plugin.EthereumGasEthersSchema;
|
|
93
|
-
}
|
|
87
|
+
};
|
|
94
88
|
|
|
95
89
|
// src/lib/identities/isEthereumGasEthgasstationPayload.ts
|
|
96
90
|
var import_ethgasstation_ethereum_gas_payload_plugin = require("@xyo-network/ethgasstation-ethereum-gas-payload-plugin");
|
|
97
|
-
var isEthereumGasEthgasstationPayload =
|
|
91
|
+
var isEthereumGasEthgasstationPayload = (payload) => {
|
|
98
92
|
return (payload == null ? void 0 : payload.schema) === import_ethgasstation_ethereum_gas_payload_plugin.EthereumGasEthgasstationSchema;
|
|
99
|
-
}
|
|
93
|
+
};
|
|
100
94
|
|
|
101
95
|
// src/lib/transforms/transformGasFromBlocknative.ts
|
|
102
96
|
var import_regression = require("regression");
|
|
103
|
-
var getBaseFee =
|
|
97
|
+
var getBaseFee = (payload) => {
|
|
104
98
|
var _a, _b;
|
|
105
99
|
return (_b = (_a = payload == null ? void 0 : payload.blockPrices) == null ? void 0 : _a[0]) == null ? void 0 : _b.baseFeePerGas;
|
|
106
|
-
}
|
|
107
|
-
var getFeePerGas =
|
|
100
|
+
};
|
|
101
|
+
var getFeePerGas = (payload) => {
|
|
108
102
|
var _a, _b;
|
|
109
103
|
const sorted = (_b = (_a = payload.blockPrices) == null ? void 0 : _a[0].estimatedPrices) == null ? void 0 : _b.sort((a, b) => a.confidence - b.confidence);
|
|
110
104
|
const trend = (0, import_regression.linear)([
|
|
111
|
-
[
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
],
|
|
115
|
-
[
|
|
116
|
-
1,
|
|
117
|
-
sorted == null ? void 0 : sorted[1].price
|
|
118
|
-
],
|
|
119
|
-
[
|
|
120
|
-
2,
|
|
121
|
-
sorted == null ? void 0 : sorted[2].price
|
|
122
|
-
],
|
|
123
|
-
[
|
|
124
|
-
3,
|
|
125
|
-
sorted == null ? void 0 : sorted[3].price
|
|
126
|
-
],
|
|
127
|
-
[
|
|
128
|
-
4,
|
|
129
|
-
sorted == null ? void 0 : sorted[4].price
|
|
130
|
-
]
|
|
105
|
+
[0, sorted == null ? void 0 : sorted[0].price],
|
|
106
|
+
[1, sorted == null ? void 0 : sorted[1].price],
|
|
107
|
+
[2, sorted == null ? void 0 : sorted[2].price],
|
|
108
|
+
[3, sorted == null ? void 0 : sorted[3].price],
|
|
109
|
+
[4, sorted == null ? void 0 : sorted[4].price]
|
|
131
110
|
]);
|
|
132
111
|
const feePerGas = {
|
|
133
112
|
low: trend.predict(0.5)[1],
|
|
@@ -136,31 +115,16 @@ var getFeePerGas = /* @__PURE__ */ __name((payload) => {
|
|
|
136
115
|
veryHigh: trend.predict(3.5)[1]
|
|
137
116
|
};
|
|
138
117
|
return feePerGas;
|
|
139
|
-
}
|
|
140
|
-
var getPriorityFeePerGas =
|
|
118
|
+
};
|
|
119
|
+
var getPriorityFeePerGas = (payload) => {
|
|
141
120
|
var _a, _b;
|
|
142
121
|
const sorted = (_b = (_a = payload.blockPrices) == null ? void 0 : _a[0].estimatedPrices) == null ? void 0 : _b.sort((a, b) => a.confidence - b.confidence);
|
|
143
122
|
const trend = (0, import_regression.linear)([
|
|
144
|
-
[
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
],
|
|
148
|
-
[
|
|
149
|
-
1,
|
|
150
|
-
sorted == null ? void 0 : sorted[1].maxPriorityFeePerGas
|
|
151
|
-
],
|
|
152
|
-
[
|
|
153
|
-
2,
|
|
154
|
-
sorted == null ? void 0 : sorted[2].maxPriorityFeePerGas
|
|
155
|
-
],
|
|
156
|
-
[
|
|
157
|
-
3,
|
|
158
|
-
sorted == null ? void 0 : sorted[3].maxPriorityFeePerGas
|
|
159
|
-
],
|
|
160
|
-
[
|
|
161
|
-
4,
|
|
162
|
-
sorted == null ? void 0 : sorted[4].maxPriorityFeePerGas
|
|
163
|
-
]
|
|
123
|
+
[0, sorted == null ? void 0 : sorted[0].maxPriorityFeePerGas],
|
|
124
|
+
[1, sorted == null ? void 0 : sorted[1].maxPriorityFeePerGas],
|
|
125
|
+
[2, sorted == null ? void 0 : sorted[2].maxPriorityFeePerGas],
|
|
126
|
+
[3, sorted == null ? void 0 : sorted[3].maxPriorityFeePerGas],
|
|
127
|
+
[4, sorted == null ? void 0 : sorted[4].maxPriorityFeePerGas]
|
|
164
128
|
]);
|
|
165
129
|
const priorityFeePerGas = {
|
|
166
130
|
low: trend.predict(0.5)[1],
|
|
@@ -169,242 +133,151 @@ var getPriorityFeePerGas = /* @__PURE__ */ __name((payload) => {
|
|
|
169
133
|
veryHigh: trend.predict(3.5)[1]
|
|
170
134
|
};
|
|
171
135
|
return priorityFeePerGas;
|
|
172
|
-
}
|
|
173
|
-
var transformGasFromBlocknative =
|
|
136
|
+
};
|
|
137
|
+
var transformGasFromBlocknative = (payload) => {
|
|
174
138
|
const baseFee = getBaseFee(payload);
|
|
175
139
|
const feePerGas = getFeePerGas(payload);
|
|
176
140
|
const priorityFeePerGas = getPriorityFeePerGas(payload);
|
|
177
|
-
return {
|
|
178
|
-
|
|
179
|
-
feePerGas,
|
|
180
|
-
priorityFeePerGas
|
|
181
|
-
};
|
|
182
|
-
}, "transformGasFromBlocknative");
|
|
141
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
142
|
+
};
|
|
183
143
|
|
|
184
144
|
// src/lib/transforms/transformGasFromEtherchainV2.ts
|
|
185
|
-
var getFeePerGas2 =
|
|
145
|
+
var getFeePerGas2 = (payload) => {
|
|
186
146
|
const { slow, standard, fast, rapid } = payload.data;
|
|
187
147
|
const low = slow / 1e9;
|
|
188
148
|
const medium = standard / 1e9;
|
|
189
149
|
const high = fast / 1e9;
|
|
190
150
|
const veryHigh = rapid / 1e9;
|
|
191
|
-
return {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
medium,
|
|
195
|
-
veryHigh
|
|
196
|
-
};
|
|
197
|
-
}, "getFeePerGas");
|
|
198
|
-
var transformGasFromEtherchainV2 = /* @__PURE__ */ __name((payload) => {
|
|
151
|
+
return { high, low, medium, veryHigh };
|
|
152
|
+
};
|
|
153
|
+
var transformGasFromEtherchainV2 = (payload) => {
|
|
199
154
|
const baseFee = void 0;
|
|
200
155
|
const feePerGas = getFeePerGas2(payload);
|
|
201
156
|
const priorityFeePerGas = {};
|
|
202
|
-
return {
|
|
203
|
-
|
|
204
|
-
feePerGas,
|
|
205
|
-
priorityFeePerGas
|
|
206
|
-
};
|
|
207
|
-
}, "transformGasFromEtherchainV2");
|
|
157
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
158
|
+
};
|
|
208
159
|
|
|
209
160
|
// src/lib/transforms/transformGasFromEthers.ts
|
|
210
|
-
var getBaseFee2 =
|
|
161
|
+
var getBaseFee2 = (payload) => {
|
|
211
162
|
const { gasPrice } = payload;
|
|
212
163
|
return gasPrice ? gasPrice / 1e9 : void 0;
|
|
213
|
-
}
|
|
214
|
-
var getFeePerGas3 =
|
|
164
|
+
};
|
|
165
|
+
var getFeePerGas3 = (payload) => {
|
|
215
166
|
const { maxFeePerGas } = payload;
|
|
216
167
|
const high = maxFeePerGas ? maxFeePerGas / 1e9 : void 0;
|
|
217
|
-
return {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
}, "getFeePerGas");
|
|
221
|
-
var getPriorityFeePerGas2 = /* @__PURE__ */ __name((payload) => {
|
|
168
|
+
return { high };
|
|
169
|
+
};
|
|
170
|
+
var getPriorityFeePerGas2 = (payload) => {
|
|
222
171
|
const { maxPriorityFeePerGas } = payload;
|
|
223
172
|
const high = maxPriorityFeePerGas ? maxPriorityFeePerGas / 1e9 : void 0;
|
|
224
|
-
return {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}, "getPriorityFeePerGas");
|
|
228
|
-
var transformGasFromEthers = /* @__PURE__ */ __name((payload) => {
|
|
173
|
+
return { high };
|
|
174
|
+
};
|
|
175
|
+
var transformGasFromEthers = (payload) => {
|
|
229
176
|
const baseFee = getBaseFee2(payload);
|
|
230
177
|
const feePerGas = getFeePerGas3(payload);
|
|
231
178
|
const priorityFeePerGas = getPriorityFeePerGas2(payload);
|
|
232
|
-
return {
|
|
233
|
-
|
|
234
|
-
feePerGas,
|
|
235
|
-
priorityFeePerGas
|
|
236
|
-
};
|
|
237
|
-
}, "transformGasFromEthers");
|
|
179
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
180
|
+
};
|
|
238
181
|
|
|
239
182
|
// src/lib/transforms/transformGasFromEtherscan.ts
|
|
240
183
|
var import_regression2 = require("regression");
|
|
241
|
-
var getBaseFee3 =
|
|
184
|
+
var getBaseFee3 = (payload) => {
|
|
242
185
|
const { suggestBaseFee } = payload.result;
|
|
243
186
|
return Number.parseFloat(suggestBaseFee);
|
|
244
|
-
}
|
|
245
|
-
var getFeePerGas4 =
|
|
187
|
+
};
|
|
188
|
+
var getFeePerGas4 = (payload) => {
|
|
246
189
|
const { FastGasPrice, ProposeGasPrice, SafeGasPrice } = payload.result;
|
|
247
190
|
const low = Number.parseFloat(SafeGasPrice);
|
|
248
191
|
const medium = Number.parseFloat(ProposeGasPrice);
|
|
249
192
|
const high = Number.parseFloat(FastGasPrice);
|
|
250
193
|
const veryHigh = (0, import_regression2.linear)([
|
|
251
|
-
[
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
],
|
|
255
|
-
[
|
|
256
|
-
1,
|
|
257
|
-
medium
|
|
258
|
-
],
|
|
259
|
-
[
|
|
260
|
-
2,
|
|
261
|
-
high
|
|
262
|
-
]
|
|
194
|
+
[0, low],
|
|
195
|
+
[1, medium],
|
|
196
|
+
[2, high]
|
|
263
197
|
]).predict(3)[1];
|
|
264
|
-
return {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
medium,
|
|
268
|
-
veryHigh
|
|
269
|
-
};
|
|
270
|
-
}, "getFeePerGas");
|
|
271
|
-
var transformGasFromEtherscan = /* @__PURE__ */ __name((payload) => {
|
|
198
|
+
return { high, low, medium, veryHigh };
|
|
199
|
+
};
|
|
200
|
+
var transformGasFromEtherscan = (payload) => {
|
|
272
201
|
const baseFee = getBaseFee3(payload);
|
|
273
202
|
const feePerGas = getFeePerGas4(payload);
|
|
274
203
|
const priorityFeePerGas = {};
|
|
275
|
-
return {
|
|
276
|
-
|
|
277
|
-
feePerGas,
|
|
278
|
-
priorityFeePerGas
|
|
279
|
-
};
|
|
280
|
-
}, "transformGasFromEtherscan");
|
|
204
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
205
|
+
};
|
|
281
206
|
|
|
282
207
|
// src/lib/transforms/transformGasFromEthgasstation.ts
|
|
283
208
|
var import_regression3 = require("regression");
|
|
284
|
-
var getBaseFee4 =
|
|
209
|
+
var getBaseFee4 = (payload) => {
|
|
285
210
|
const { baseFee } = payload;
|
|
286
211
|
return baseFee;
|
|
287
|
-
}
|
|
288
|
-
var getFeePerGas5 =
|
|
212
|
+
};
|
|
213
|
+
var getFeePerGas5 = (payload) => {
|
|
289
214
|
const { standard: medium, fast: high, instant: veryHigh } = payload.gasPrice;
|
|
290
215
|
const trend = (0, import_regression3.linear)([
|
|
291
|
-
[
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
],
|
|
295
|
-
[
|
|
296
|
-
2,
|
|
297
|
-
high
|
|
298
|
-
],
|
|
299
|
-
[
|
|
300
|
-
3,
|
|
301
|
-
veryHigh
|
|
302
|
-
]
|
|
216
|
+
[1, medium],
|
|
217
|
+
[2, high],
|
|
218
|
+
[3, veryHigh]
|
|
303
219
|
]);
|
|
304
220
|
const low = trend.predict(0)[1];
|
|
305
|
-
return {
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
high,
|
|
309
|
-
veryHigh
|
|
310
|
-
};
|
|
311
|
-
}, "getFeePerGas");
|
|
312
|
-
var getPriorityFeePerGas3 = /* @__PURE__ */ __name((payload) => {
|
|
221
|
+
return { low, medium, high, veryHigh };
|
|
222
|
+
};
|
|
223
|
+
var getPriorityFeePerGas3 = (payload) => {
|
|
313
224
|
const { standard: medium, fast: high, instant: veryHigh } = payload.priorityFee;
|
|
314
225
|
const trend = (0, import_regression3.linear)([
|
|
315
|
-
[
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
],
|
|
319
|
-
[
|
|
320
|
-
2,
|
|
321
|
-
high
|
|
322
|
-
],
|
|
323
|
-
[
|
|
324
|
-
3,
|
|
325
|
-
veryHigh
|
|
326
|
-
]
|
|
226
|
+
[1, medium],
|
|
227
|
+
[2, high],
|
|
228
|
+
[3, veryHigh]
|
|
327
229
|
]);
|
|
328
230
|
const low = trend.predict(0)[1];
|
|
329
|
-
return {
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
high,
|
|
333
|
-
veryHigh
|
|
334
|
-
};
|
|
335
|
-
}, "getPriorityFeePerGas");
|
|
336
|
-
var transformGasFromEthgasstation = /* @__PURE__ */ __name((payload) => {
|
|
231
|
+
return { low, medium, high, veryHigh };
|
|
232
|
+
};
|
|
233
|
+
var transformGasFromEthgasstation = (payload) => {
|
|
337
234
|
const baseFee = getBaseFee4(payload);
|
|
338
235
|
const feePerGas = getFeePerGas5(payload);
|
|
339
236
|
const priorityFeePerGas = getPriorityFeePerGas3(payload);
|
|
340
|
-
return {
|
|
341
|
-
|
|
342
|
-
feePerGas,
|
|
343
|
-
priorityFeePerGas
|
|
344
|
-
};
|
|
345
|
-
}, "transformGasFromEthgasstation");
|
|
237
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
238
|
+
};
|
|
346
239
|
|
|
347
240
|
// src/lib/divineGas.ts
|
|
348
|
-
var divineGas =
|
|
241
|
+
var divineGas = async (payloads) => {
|
|
349
242
|
const blocknative = payloads.filter(isEthereumGasBlocknativePayload).map(transformGasFromBlocknative);
|
|
350
243
|
const etherchainV2 = payloads.filter(isEthereumGasEtherchainV2Payload).map(transformGasFromEtherchainV2);
|
|
351
244
|
const ethers = payloads.filter(isEthereumGasEthersPayload).map(transformGasFromEthers);
|
|
352
245
|
const etherscan = payloads.filter(isEthereumGasEtherscanPayload).map(transformGasFromEtherscan);
|
|
353
246
|
const ethgasstation = payloads.filter(isEthereumGasEthgasstationPayload).map(transformGasFromEthgasstation);
|
|
354
|
-
const transactionCosts = [
|
|
355
|
-
...blocknative,
|
|
356
|
-
...etherchainV2,
|
|
357
|
-
...ethers,
|
|
358
|
-
...etherscan,
|
|
359
|
-
...ethgasstation
|
|
360
|
-
];
|
|
247
|
+
const transactionCosts = [...blocknative, ...etherchainV2, ...ethers, ...etherscan, ...ethgasstation];
|
|
361
248
|
const avg = average(transactionCosts);
|
|
362
249
|
const timestamp = Date.now();
|
|
363
|
-
const payload = await new import_payload_builder.PayloadBuilder({
|
|
364
|
-
schema: import_gas_price_payload_plugin.EthereumGasSchema
|
|
365
|
-
}).fields({
|
|
366
|
-
...avg,
|
|
367
|
-
timestamp
|
|
368
|
-
}).build();
|
|
250
|
+
const payload = await new import_payload_builder.PayloadBuilder({ schema: import_gas_price_payload_plugin.EthereumGasSchema }).fields({ ...avg, timestamp }).build();
|
|
369
251
|
return payload;
|
|
370
|
-
}
|
|
252
|
+
};
|
|
371
253
|
|
|
372
254
|
// src/Schema.ts
|
|
373
255
|
var EthereumGasDivinerQuerySchema = "network.xyo.blockchain.ethereum.gas.diviner.query";
|
|
374
256
|
var EthereumGasDivinerConfigSchema = "network.xyo.blockchain.ethereum.gas.diviner.config";
|
|
375
257
|
|
|
376
258
|
// src/Diviner.ts
|
|
377
|
-
var
|
|
259
|
+
var EthereumGasDiviner = class extends import_diviner_abstract.AbstractDiviner {
|
|
260
|
+
static configSchemas = [...super.configSchemas, EthereumGasDivinerConfigSchema];
|
|
261
|
+
static defaultConfigSchema = EthereumGasDivinerConfigSchema;
|
|
262
|
+
static targetSchema = import_gas_price_payload_plugin2.EthereumGasSchema;
|
|
378
263
|
async divineHandler(payloads) {
|
|
379
264
|
const cost = await divineGas(payloads ?? []);
|
|
380
|
-
return [
|
|
381
|
-
cost
|
|
382
|
-
];
|
|
265
|
+
return [cost];
|
|
383
266
|
}
|
|
384
267
|
};
|
|
385
|
-
__name(_EthereumGasDiviner, "EthereumGasDiviner");
|
|
386
|
-
__publicField(_EthereumGasDiviner, "configSchemas", [
|
|
387
|
-
...__superGet(_EthereumGasDiviner, _EthereumGasDiviner, "configSchemas"),
|
|
388
|
-
EthereumGasDivinerConfigSchema
|
|
389
|
-
]);
|
|
390
|
-
__publicField(_EthereumGasDiviner, "defaultConfigSchema", EthereumGasDivinerConfigSchema);
|
|
391
|
-
__publicField(_EthereumGasDiviner, "targetSchema", import_gas_price_payload_plugin2.EthereumGasSchema);
|
|
392
|
-
var EthereumGasDiviner = _EthereumGasDiviner;
|
|
393
268
|
|
|
394
269
|
// src/Plugin.ts
|
|
395
270
|
var import_gas_price_payload_plugin3 = require("@xyo-network/gas-price-payload-plugin");
|
|
396
271
|
var import_payload_model = require("@xyo-network/payload-model");
|
|
397
272
|
var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
|
|
398
|
-
var EthereumGasPlugin =
|
|
399
|
-
required: {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
}, "diviner")
|
|
407
|
-
}), "EthereumGasPlugin");
|
|
273
|
+
var EthereumGasPlugin = () => (0, import_payloadset_plugin.createPayloadSetDivinerPlugin)(
|
|
274
|
+
{ required: { [import_gas_price_payload_plugin3.EthereumGasSchema]: 1 }, schema: import_payload_model.PayloadSetSchema },
|
|
275
|
+
{
|
|
276
|
+
diviner: async (params) => {
|
|
277
|
+
return await EthereumGasDiviner.create(params);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
);
|
|
408
281
|
// Annotate the CommonJS export names for ESM import in node:
|
|
409
282
|
0 && (module.exports = {
|
|
410
283
|
EthereumGasDiviner,
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../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":["export * from './Diviner.ts'\n// eslint-disable-next-line import/no-default-export\nexport { EthereumGasPlugin as default, EthereumGasPlugin } from './Plugin.ts'\nexport * from './Schema.ts'\n","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":["import_gas_price_payload_plugin","listAverage","x","length","reduce","a","b","undefined","averageProperty","data","propertyExpression","map","filter","exists","average","input","averaged","baseFee","feePerGas","high","low","medium","veryHigh","priorityFeePerGas","isEthereumGasBlocknativePayload","payload","schema","EthereumGasBlocknativeSchema","isEthereumGasEtherchainV2Payload","payload","schema","EthereumGasEtherchainV2Schema","isEthereumGasEtherscanPayload","payload","schema","EthereumGasEtherscanSchema","isEthereumGasEthersPayload","payload","schema","EthereumGasEthersSchema","isEthereumGasEthgasstationPayload","payload","schema","EthereumGasEthgasstationSchema","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","import_regression","getBaseFee","payload","suggestBaseFee","result","Number","parseFloat","getFeePerGas","FastGasPrice","ProposeGasPrice","SafeGasPrice","low","medium","high","veryHigh","linear","predict","transformGasFromEtherscan","baseFee","feePerGas","priorityFeePerGas","import_regression","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","import_gas_price_payload_plugin","EthereumGasPlugin","createPayloadSetDivinerPlugin","required","EthereumGasSchema","schema","PayloadSetSchema","diviner","params","EthereumGasDiviner","create"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../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":["export * from './Diviner.ts'\n// eslint-disable-next-line import/no-default-export\nexport { EthereumGasPlugin as default, EthereumGasPlugin } from './Plugin.ts'\nexport * from './Schema.ts'\n","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":["import_gas_price_payload_plugin","getFeePerGas","getBaseFee","getFeePerGas","getPriorityFeePerGas","import_regression","getBaseFee","getFeePerGas","import_regression","getBaseFee","getFeePerGas","getPriorityFeePerGas","import_gas_price_payload_plugin"]}
|