@xyo-network/gas-price-plugin 2.99.4 → 2.99.5

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.
Files changed (117) hide show
  1. package/dist/browser/Diviner.d.cts +1 -1
  2. package/dist/browser/Diviner.d.cts.map +1 -1
  3. package/dist/browser/Diviner.d.mts +1 -1
  4. package/dist/browser/Diviner.d.mts.map +1 -1
  5. package/dist/browser/Diviner.d.ts +1 -1
  6. package/dist/browser/Diviner.d.ts.map +1 -1
  7. package/dist/browser/Plugin.d.cts +2 -2
  8. package/dist/browser/Plugin.d.mts +2 -2
  9. package/dist/browser/Plugin.d.ts +2 -2
  10. package/dist/browser/index.cjs +216 -93
  11. package/dist/browser/index.cjs.map +1 -1
  12. package/dist/browser/index.d.cts +3 -3
  13. package/dist/browser/index.d.mts +3 -3
  14. package/dist/browser/index.d.ts +3 -3
  15. package/dist/browser/{index.js → index.mjs} +219 -94
  16. package/dist/browser/index.mjs.map +1 -0
  17. package/dist/browser/lib/identities/index.d.cts +5 -5
  18. package/dist/browser/lib/identities/index.d.mts +5 -5
  19. package/dist/browser/lib/identities/index.d.ts +5 -5
  20. package/dist/browser/lib/index.d.cts +1 -1
  21. package/dist/browser/lib/index.d.mts +1 -1
  22. package/dist/browser/lib/index.d.ts +1 -1
  23. package/dist/browser/lib/transforms/index.d.cts +5 -5
  24. package/dist/browser/lib/transforms/index.d.mts +5 -5
  25. package/dist/browser/lib/transforms/index.d.ts +5 -5
  26. package/dist/browser/lib/transforms/transformGasFromBlocknative.d.cts.map +1 -1
  27. package/dist/browser/lib/transforms/transformGasFromBlocknative.d.mts.map +1 -1
  28. package/dist/browser/lib/transforms/transformGasFromBlocknative.d.ts.map +1 -1
  29. package/dist/browser/lib/transforms/transformGasFromEthgasstation.d.cts.map +1 -1
  30. package/dist/browser/lib/transforms/transformGasFromEthgasstation.d.mts.map +1 -1
  31. package/dist/browser/lib/transforms/transformGasFromEthgasstation.d.ts.map +1 -1
  32. package/dist/browser/test/index.d.cts +5 -5
  33. package/dist/browser/test/index.d.mts +5 -5
  34. package/dist/browser/test/index.d.ts +5 -5
  35. package/dist/neutral/Diviner.d.cts +1 -1
  36. package/dist/neutral/Diviner.d.cts.map +1 -1
  37. package/dist/neutral/Diviner.d.mts +1 -1
  38. package/dist/neutral/Diviner.d.mts.map +1 -1
  39. package/dist/neutral/Diviner.d.ts +1 -1
  40. package/dist/neutral/Diviner.d.ts.map +1 -1
  41. package/dist/neutral/Plugin.d.cts +2 -2
  42. package/dist/neutral/Plugin.d.mts +2 -2
  43. package/dist/neutral/Plugin.d.ts +2 -2
  44. package/dist/neutral/index.cjs +216 -93
  45. package/dist/neutral/index.cjs.map +1 -1
  46. package/dist/neutral/index.d.cts +3 -3
  47. package/dist/neutral/index.d.mts +3 -3
  48. package/dist/neutral/index.d.ts +3 -3
  49. package/dist/neutral/{index.js → index.mjs} +219 -94
  50. package/dist/neutral/index.mjs.map +1 -0
  51. package/dist/neutral/lib/identities/index.d.cts +5 -5
  52. package/dist/neutral/lib/identities/index.d.mts +5 -5
  53. package/dist/neutral/lib/identities/index.d.ts +5 -5
  54. package/dist/neutral/lib/index.d.cts +1 -1
  55. package/dist/neutral/lib/index.d.mts +1 -1
  56. package/dist/neutral/lib/index.d.ts +1 -1
  57. package/dist/neutral/lib/transforms/index.d.cts +5 -5
  58. package/dist/neutral/lib/transforms/index.d.mts +5 -5
  59. package/dist/neutral/lib/transforms/index.d.ts +5 -5
  60. package/dist/neutral/lib/transforms/transformGasFromBlocknative.d.cts.map +1 -1
  61. package/dist/neutral/lib/transforms/transformGasFromBlocknative.d.mts.map +1 -1
  62. package/dist/neutral/lib/transforms/transformGasFromBlocknative.d.ts.map +1 -1
  63. package/dist/neutral/lib/transforms/transformGasFromEthgasstation.d.cts.map +1 -1
  64. package/dist/neutral/lib/transforms/transformGasFromEthgasstation.d.mts.map +1 -1
  65. package/dist/neutral/lib/transforms/transformGasFromEthgasstation.d.ts.map +1 -1
  66. package/dist/neutral/test/index.d.cts +5 -5
  67. package/dist/neutral/test/index.d.mts +5 -5
  68. package/dist/neutral/test/index.d.ts +5 -5
  69. package/dist/node/Diviner.d.cts +1 -1
  70. package/dist/node/Diviner.d.cts.map +1 -1
  71. package/dist/node/Diviner.d.mts +1 -1
  72. package/dist/node/Diviner.d.mts.map +1 -1
  73. package/dist/node/Diviner.d.ts +1 -1
  74. package/dist/node/Diviner.d.ts.map +1 -1
  75. package/dist/node/Plugin.d.cts +2 -2
  76. package/dist/node/Plugin.d.mts +2 -2
  77. package/dist/node/Plugin.d.ts +2 -2
  78. package/dist/node/index.cjs +223 -96
  79. package/dist/node/index.cjs.map +1 -1
  80. package/dist/node/index.d.cts +3 -3
  81. package/dist/node/index.d.mts +3 -3
  82. package/dist/node/index.d.ts +3 -3
  83. package/dist/node/{index.js → index.mjs} +226 -97
  84. package/dist/node/index.mjs.map +1 -0
  85. package/dist/node/lib/identities/index.d.cts +5 -5
  86. package/dist/node/lib/identities/index.d.mts +5 -5
  87. package/dist/node/lib/identities/index.d.ts +5 -5
  88. package/dist/node/lib/index.d.cts +1 -1
  89. package/dist/node/lib/index.d.mts +1 -1
  90. package/dist/node/lib/index.d.ts +1 -1
  91. package/dist/node/lib/transforms/index.d.cts +5 -5
  92. package/dist/node/lib/transforms/index.d.mts +5 -5
  93. package/dist/node/lib/transforms/index.d.ts +5 -5
  94. package/dist/node/lib/transforms/transformGasFromBlocknative.d.cts.map +1 -1
  95. package/dist/node/lib/transforms/transformGasFromBlocknative.d.mts.map +1 -1
  96. package/dist/node/lib/transforms/transformGasFromBlocknative.d.ts.map +1 -1
  97. package/dist/node/lib/transforms/transformGasFromEthgasstation.d.cts.map +1 -1
  98. package/dist/node/lib/transforms/transformGasFromEthgasstation.d.mts.map +1 -1
  99. package/dist/node/lib/transforms/transformGasFromEthgasstation.d.ts.map +1 -1
  100. package/dist/node/test/index.d.cts +5 -5
  101. package/dist/node/test/index.d.mts +5 -5
  102. package/dist/node/test/index.d.ts +5 -5
  103. package/package.json +25 -25
  104. package/src/Diviner.ts +3 -4
  105. package/src/Plugin.ts +1 -1
  106. package/src/index.ts +3 -3
  107. package/src/lib/average.ts +9 -9
  108. package/src/lib/divineGas.ts +3 -3
  109. package/src/lib/identities/index.ts +5 -5
  110. package/src/lib/index.ts +1 -1
  111. package/src/lib/transforms/index.ts +5 -5
  112. package/src/lib/transforms/transformGasFromBlocknative.ts +0 -1
  113. package/src/lib/transforms/transformGasFromEthgasstation.ts +0 -1
  114. package/src/test/index.ts +5 -5
  115. package/dist/browser/index.js.map +0 -1
  116. package/dist/neutral/index.js.map +0 -1
  117. package/dist/node/index.js.map +0 -1
@@ -3,6 +3,7 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
7
  var __export = (target, all) => {
7
8
  for (var name in all)
8
9
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -38,11 +39,11 @@ var import_payload_builder = require("@xyo-network/payload-builder");
38
39
 
39
40
  // src/lib/average.ts
40
41
  var import_exists = require("@xylabs/exists");
41
- var listAverage = (x) => x?.length ? x.reduce((a, b) => a + b) / x.length : void 0;
42
- var averageProperty = (data, propertyExpression) => {
42
+ var listAverage = /* @__PURE__ */ __name((x) => x?.length ? x.reduce((a, b) => a + b) / x.length : void 0, "listAverage");
43
+ var averageProperty = /* @__PURE__ */ __name((data, propertyExpression) => {
43
44
  return listAverage(data.map(propertyExpression).filter(import_exists.exists));
44
- };
45
- var average = (input) => {
45
+ }, "averageProperty");
46
+ var average = /* @__PURE__ */ __name((input) => {
46
47
  const data = input?.filter(import_exists.exists) || [];
47
48
  const averaged = {
48
49
  baseFee: averageProperty(data, (x) => x.baseFee),
@@ -60,51 +61,66 @@ var average = (input) => {
60
61
  }
61
62
  };
62
63
  return averaged;
63
- };
64
+ }, "average");
64
65
 
65
66
  // src/lib/identities/isEthereumGasBlocknativePayload.ts
66
67
  var import_blocknative_ethereum_gas_payload_plugin = require("@xyo-network/blocknative-ethereum-gas-payload-plugin");
67
- var isEthereumGasBlocknativePayload = (payload) => {
68
+ var isEthereumGasBlocknativePayload = /* @__PURE__ */ __name((payload) => {
68
69
  return payload?.schema === import_blocknative_ethereum_gas_payload_plugin.EthereumGasBlocknativeSchema;
69
- };
70
+ }, "isEthereumGasBlocknativePayload");
70
71
 
71
72
  // src/lib/identities/isEthereumGasEtherchainV2Payload.ts
72
73
  var import_etherchain_gas_ethereum_blockchain_payload_plugins = require("@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins");
73
- var isEthereumGasEtherchainV2Payload = (payload) => {
74
+ var isEthereumGasEtherchainV2Payload = /* @__PURE__ */ __name((payload) => {
74
75
  return payload?.schema === import_etherchain_gas_ethereum_blockchain_payload_plugins.EthereumGasEtherchainV2Schema;
75
- };
76
+ }, "isEthereumGasEtherchainV2Payload");
76
77
 
77
78
  // src/lib/identities/isEthereumGasEtherscanPayload.ts
78
79
  var import_etherscan_ethereum_gas_payload_plugin = require("@xyo-network/etherscan-ethereum-gas-payload-plugin");
79
- var isEthereumGasEtherscanPayload = (payload) => {
80
+ var isEthereumGasEtherscanPayload = /* @__PURE__ */ __name((payload) => {
80
81
  return payload?.schema === import_etherscan_ethereum_gas_payload_plugin.EthereumGasEtherscanSchema;
81
- };
82
+ }, "isEthereumGasEtherscanPayload");
82
83
 
83
84
  // src/lib/identities/isEthereumGasEthersPayload.ts
84
85
  var import_ethers_ethereum_gas_payload_plugin = require("@xyo-network/ethers-ethereum-gas-payload-plugin");
85
- var isEthereumGasEthersPayload = (payload) => {
86
+ var isEthereumGasEthersPayload = /* @__PURE__ */ __name((payload) => {
86
87
  return payload?.schema === import_ethers_ethereum_gas_payload_plugin.EthereumGasEthersSchema;
87
- };
88
+ }, "isEthereumGasEthersPayload");
88
89
 
89
90
  // src/lib/identities/isEthereumGasEthgasstationPayload.ts
90
91
  var import_ethgasstation_ethereum_gas_payload_plugin = require("@xyo-network/ethgasstation-ethereum-gas-payload-plugin");
91
- var isEthereumGasEthgasstationPayload = (payload) => {
92
+ var isEthereumGasEthgasstationPayload = /* @__PURE__ */ __name((payload) => {
92
93
  return payload?.schema === import_ethgasstation_ethereum_gas_payload_plugin.EthereumGasEthgasstationSchema;
93
- };
94
+ }, "isEthereumGasEthgasstationPayload");
94
95
 
95
96
  // src/lib/transforms/transformGasFromBlocknative.ts
96
97
  var import_regression = require("regression");
97
- var getBaseFee = (payload) => {
98
+ var getBaseFee = /* @__PURE__ */ __name((payload) => {
98
99
  return payload?.blockPrices?.[0]?.baseFeePerGas;
99
- };
100
- var getFeePerGas = (payload) => {
100
+ }, "getBaseFee");
101
+ var getFeePerGas = /* @__PURE__ */ __name((payload) => {
101
102
  const sorted = payload.blockPrices?.[0].estimatedPrices?.sort((a, b) => a.confidence - b.confidence);
102
103
  const trend = (0, import_regression.linear)([
103
- [0, sorted?.[0].price],
104
- [1, sorted?.[1].price],
105
- [2, sorted?.[2].price],
106
- [3, sorted?.[3].price],
107
- [4, sorted?.[4].price]
104
+ [
105
+ 0,
106
+ sorted?.[0].price
107
+ ],
108
+ [
109
+ 1,
110
+ sorted?.[1].price
111
+ ],
112
+ [
113
+ 2,
114
+ sorted?.[2].price
115
+ ],
116
+ [
117
+ 3,
118
+ sorted?.[3].price
119
+ ],
120
+ [
121
+ 4,
122
+ sorted?.[4].price
123
+ ]
108
124
  ]);
109
125
  const feePerGas = {
110
126
  low: trend.predict(0.5)[1],
@@ -113,15 +129,30 @@ var getFeePerGas = (payload) => {
113
129
  veryHigh: trend.predict(3.5)[1]
114
130
  };
115
131
  return feePerGas;
116
- };
117
- var getPriorityFeePerGas = (payload) => {
132
+ }, "getFeePerGas");
133
+ var getPriorityFeePerGas = /* @__PURE__ */ __name((payload) => {
118
134
  const sorted = payload.blockPrices?.[0].estimatedPrices?.sort((a, b) => a.confidence - b.confidence);
119
135
  const trend = (0, import_regression.linear)([
120
- [0, sorted?.[0].maxPriorityFeePerGas],
121
- [1, sorted?.[1].maxPriorityFeePerGas],
122
- [2, sorted?.[2].maxPriorityFeePerGas],
123
- [3, sorted?.[3].maxPriorityFeePerGas],
124
- [4, sorted?.[4].maxPriorityFeePerGas]
136
+ [
137
+ 0,
138
+ sorted?.[0].maxPriorityFeePerGas
139
+ ],
140
+ [
141
+ 1,
142
+ sorted?.[1].maxPriorityFeePerGas
143
+ ],
144
+ [
145
+ 2,
146
+ sorted?.[2].maxPriorityFeePerGas
147
+ ],
148
+ [
149
+ 3,
150
+ sorted?.[3].maxPriorityFeePerGas
151
+ ],
152
+ [
153
+ 4,
154
+ sorted?.[4].maxPriorityFeePerGas
155
+ ]
125
156
  ]);
126
157
  const priorityFeePerGas = {
127
158
  low: trend.predict(0.5)[1],
@@ -130,123 +161,205 @@ var getPriorityFeePerGas = (payload) => {
130
161
  veryHigh: trend.predict(3.5)[1]
131
162
  };
132
163
  return priorityFeePerGas;
133
- };
134
- var transformGasFromBlocknative = (payload) => {
164
+ }, "getPriorityFeePerGas");
165
+ var transformGasFromBlocknative = /* @__PURE__ */ __name((payload) => {
135
166
  const baseFee = getBaseFee(payload);
136
167
  const feePerGas = getFeePerGas(payload);
137
168
  const priorityFeePerGas = getPriorityFeePerGas(payload);
138
- return { baseFee, feePerGas, priorityFeePerGas };
139
- };
169
+ return {
170
+ baseFee,
171
+ feePerGas,
172
+ priorityFeePerGas
173
+ };
174
+ }, "transformGasFromBlocknative");
140
175
 
141
176
  // src/lib/transforms/transformGasFromEtherchainV2.ts
142
- var getFeePerGas2 = (payload) => {
177
+ var getFeePerGas2 = /* @__PURE__ */ __name((payload) => {
143
178
  const { slow, standard, fast, rapid } = payload.data;
144
179
  const low = slow / 1e9;
145
180
  const medium = standard / 1e9;
146
181
  const high = fast / 1e9;
147
182
  const veryHigh = rapid / 1e9;
148
- return { high, low, medium, veryHigh };
149
- };
150
- var transformGasFromEtherchainV2 = (payload) => {
183
+ return {
184
+ high,
185
+ low,
186
+ medium,
187
+ veryHigh
188
+ };
189
+ }, "getFeePerGas");
190
+ var transformGasFromEtherchainV2 = /* @__PURE__ */ __name((payload) => {
151
191
  const baseFee = void 0;
152
192
  const feePerGas = getFeePerGas2(payload);
153
193
  const priorityFeePerGas = {};
154
- return { baseFee, feePerGas, priorityFeePerGas };
155
- };
194
+ return {
195
+ baseFee,
196
+ feePerGas,
197
+ priorityFeePerGas
198
+ };
199
+ }, "transformGasFromEtherchainV2");
156
200
 
157
201
  // src/lib/transforms/transformGasFromEthers.ts
158
- var getBaseFee2 = (payload) => {
202
+ var getBaseFee2 = /* @__PURE__ */ __name((payload) => {
159
203
  const { gasPrice } = payload;
160
204
  return gasPrice ? gasPrice / 1e9 : void 0;
161
- };
162
- var getFeePerGas3 = (payload) => {
205
+ }, "getBaseFee");
206
+ var getFeePerGas3 = /* @__PURE__ */ __name((payload) => {
163
207
  const { maxFeePerGas } = payload;
164
208
  const high = maxFeePerGas ? maxFeePerGas / 1e9 : void 0;
165
- return { high };
166
- };
167
- var getPriorityFeePerGas2 = (payload) => {
209
+ return {
210
+ high
211
+ };
212
+ }, "getFeePerGas");
213
+ var getPriorityFeePerGas2 = /* @__PURE__ */ __name((payload) => {
168
214
  const { maxPriorityFeePerGas } = payload;
169
215
  const high = maxPriorityFeePerGas ? maxPriorityFeePerGas / 1e9 : void 0;
170
- return { high };
171
- };
172
- var transformGasFromEthers = (payload) => {
216
+ return {
217
+ high
218
+ };
219
+ }, "getPriorityFeePerGas");
220
+ var transformGasFromEthers = /* @__PURE__ */ __name((payload) => {
173
221
  const baseFee = getBaseFee2(payload);
174
222
  const feePerGas = getFeePerGas3(payload);
175
223
  const priorityFeePerGas = getPriorityFeePerGas2(payload);
176
- return { baseFee, feePerGas, priorityFeePerGas };
177
- };
224
+ return {
225
+ baseFee,
226
+ feePerGas,
227
+ priorityFeePerGas
228
+ };
229
+ }, "transformGasFromEthers");
178
230
 
179
231
  // src/lib/transforms/transformGasFromEtherscan.ts
180
232
  var import_regression2 = require("regression");
181
- var getBaseFee3 = (payload) => {
233
+ var getBaseFee3 = /* @__PURE__ */ __name((payload) => {
182
234
  const { suggestBaseFee } = payload.result;
183
235
  return Number.parseFloat(suggestBaseFee);
184
- };
185
- var getFeePerGas4 = (payload) => {
236
+ }, "getBaseFee");
237
+ var getFeePerGas4 = /* @__PURE__ */ __name((payload) => {
186
238
  const { FastGasPrice, ProposeGasPrice, SafeGasPrice } = payload.result;
187
239
  const low = Number.parseFloat(SafeGasPrice);
188
240
  const medium = Number.parseFloat(ProposeGasPrice);
189
241
  const high = Number.parseFloat(FastGasPrice);
190
242
  const veryHigh = (0, import_regression2.linear)([
191
- [0, low],
192
- [1, medium],
193
- [2, high]
243
+ [
244
+ 0,
245
+ low
246
+ ],
247
+ [
248
+ 1,
249
+ medium
250
+ ],
251
+ [
252
+ 2,
253
+ high
254
+ ]
194
255
  ]).predict(3)[1];
195
- return { high, low, medium, veryHigh };
196
- };
197
- var transformGasFromEtherscan = (payload) => {
256
+ return {
257
+ high,
258
+ low,
259
+ medium,
260
+ veryHigh
261
+ };
262
+ }, "getFeePerGas");
263
+ var transformGasFromEtherscan = /* @__PURE__ */ __name((payload) => {
198
264
  const baseFee = getBaseFee3(payload);
199
265
  const feePerGas = getFeePerGas4(payload);
200
266
  const priorityFeePerGas = {};
201
- return { baseFee, feePerGas, priorityFeePerGas };
202
- };
267
+ return {
268
+ baseFee,
269
+ feePerGas,
270
+ priorityFeePerGas
271
+ };
272
+ }, "transformGasFromEtherscan");
203
273
 
204
274
  // src/lib/transforms/transformGasFromEthgasstation.ts
205
275
  var import_regression3 = require("regression");
206
- var getBaseFee4 = (payload) => {
276
+ var getBaseFee4 = /* @__PURE__ */ __name((payload) => {
207
277
  const { baseFee } = payload;
208
278
  return baseFee;
209
- };
210
- var getFeePerGas5 = (payload) => {
279
+ }, "getBaseFee");
280
+ var getFeePerGas5 = /* @__PURE__ */ __name((payload) => {
211
281
  const { standard: medium, fast: high, instant: veryHigh } = payload.gasPrice;
212
282
  const trend = (0, import_regression3.linear)([
213
- [1, medium],
214
- [2, high],
215
- [3, veryHigh]
283
+ [
284
+ 1,
285
+ medium
286
+ ],
287
+ [
288
+ 2,
289
+ high
290
+ ],
291
+ [
292
+ 3,
293
+ veryHigh
294
+ ]
216
295
  ]);
217
296
  const low = trend.predict(0)[1];
218
- return { low, medium, high, veryHigh };
219
- };
220
- var getPriorityFeePerGas3 = (payload) => {
297
+ return {
298
+ low,
299
+ medium,
300
+ high,
301
+ veryHigh
302
+ };
303
+ }, "getFeePerGas");
304
+ var getPriorityFeePerGas3 = /* @__PURE__ */ __name((payload) => {
221
305
  const { standard: medium, fast: high, instant: veryHigh } = payload.priorityFee;
222
306
  const trend = (0, import_regression3.linear)([
223
- [1, medium],
224
- [2, high],
225
- [3, veryHigh]
307
+ [
308
+ 1,
309
+ medium
310
+ ],
311
+ [
312
+ 2,
313
+ high
314
+ ],
315
+ [
316
+ 3,
317
+ veryHigh
318
+ ]
226
319
  ]);
227
320
  const low = trend.predict(0)[1];
228
- return { low, medium, high, veryHigh };
229
- };
230
- var transformGasFromEthgasstation = (payload) => {
321
+ return {
322
+ low,
323
+ medium,
324
+ high,
325
+ veryHigh
326
+ };
327
+ }, "getPriorityFeePerGas");
328
+ var transformGasFromEthgasstation = /* @__PURE__ */ __name((payload) => {
231
329
  const baseFee = getBaseFee4(payload);
232
330
  const feePerGas = getFeePerGas5(payload);
233
331
  const priorityFeePerGas = getPriorityFeePerGas3(payload);
234
- return { baseFee, feePerGas, priorityFeePerGas };
235
- };
332
+ return {
333
+ baseFee,
334
+ feePerGas,
335
+ priorityFeePerGas
336
+ };
337
+ }, "transformGasFromEthgasstation");
236
338
 
237
339
  // src/lib/divineGas.ts
238
- var divineGas = async (payloads) => {
340
+ var divineGas = /* @__PURE__ */ __name(async (payloads) => {
239
341
  const blocknative = payloads.filter(isEthereumGasBlocknativePayload).map(transformGasFromBlocknative);
240
342
  const etherchainV2 = payloads.filter(isEthereumGasEtherchainV2Payload).map(transformGasFromEtherchainV2);
241
343
  const ethers = payloads.filter(isEthereumGasEthersPayload).map(transformGasFromEthers);
242
344
  const etherscan = payloads.filter(isEthereumGasEtherscanPayload).map(transformGasFromEtherscan);
243
345
  const ethgasstation = payloads.filter(isEthereumGasEthgasstationPayload).map(transformGasFromEthgasstation);
244
- const transactionCosts = [...blocknative, ...etherchainV2, ...ethers, ...etherscan, ...ethgasstation];
346
+ const transactionCosts = [
347
+ ...blocknative,
348
+ ...etherchainV2,
349
+ ...ethers,
350
+ ...etherscan,
351
+ ...ethgasstation
352
+ ];
245
353
  const avg = average(transactionCosts);
246
354
  const timestamp = Date.now();
247
- const payload = await new import_payload_builder.PayloadBuilder({ schema: import_gas_price_payload_plugin.EthereumGasSchema }).fields({ ...avg, timestamp }).build();
355
+ const payload = await new import_payload_builder.PayloadBuilder({
356
+ schema: import_gas_price_payload_plugin.EthereumGasSchema
357
+ }).fields({
358
+ ...avg,
359
+ timestamp
360
+ }).build();
248
361
  return payload;
249
- };
362
+ }, "divineGas");
250
363
 
251
364
  // src/Schema.ts
252
365
  var EthereumGasDivinerQuerySchema = "network.xyo.blockchain.ethereum.gas.diviner.query";
@@ -254,12 +367,20 @@ var EthereumGasDivinerConfigSchema = "network.xyo.blockchain.ethereum.gas.divine
254
367
 
255
368
  // src/Diviner.ts
256
369
  var EthereumGasDiviner = class extends import_diviner_abstract.AbstractDiviner {
257
- static configSchemas = [...super.configSchemas, EthereumGasDivinerConfigSchema];
370
+ static {
371
+ __name(this, "EthereumGasDiviner");
372
+ }
373
+ static configSchemas = [
374
+ ...super.configSchemas,
375
+ EthereumGasDivinerConfigSchema
376
+ ];
258
377
  static defaultConfigSchema = EthereumGasDivinerConfigSchema;
259
378
  static targetSchema = import_gas_price_payload_plugin2.EthereumGasSchema;
260
379
  async divineHandler(payloads) {
261
380
  const cost = await divineGas(payloads ?? []);
262
- return [cost];
381
+ return [
382
+ cost
383
+ ];
263
384
  }
264
385
  };
265
386
 
@@ -267,12 +388,14 @@ var EthereumGasDiviner = class extends import_diviner_abstract.AbstractDiviner {
267
388
  var import_gas_price_payload_plugin3 = require("@xyo-network/gas-price-payload-plugin");
268
389
  var import_payload_model = require("@xyo-network/payload-model");
269
390
  var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
270
- var EthereumGasPlugin = () => (0, import_payloadset_plugin.createPayloadSetDivinerPlugin)(
271
- { required: { [import_gas_price_payload_plugin3.EthereumGasSchema]: 1 }, schema: import_payload_model.PayloadSetSchema },
272
- {
273
- diviner: async (params) => {
274
- return await EthereumGasDiviner.create(params);
275
- }
276
- }
277
- );
391
+ var EthereumGasPlugin = /* @__PURE__ */ __name(() => (0, import_payloadset_plugin.createPayloadSetDivinerPlugin)({
392
+ required: {
393
+ [import_gas_price_payload_plugin3.EthereumGasSchema]: 1
394
+ },
395
+ schema: import_payload_model.PayloadSetSchema
396
+ }, {
397
+ diviner: /* @__PURE__ */ __name(async (params) => {
398
+ return await EthereumGasDiviner.create(params);
399
+ }, "diviner")
400
+ }), "EthereumGasPlugin");
278
401
  //# sourceMappingURL=index.cjs.map
@@ -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.js'\n// eslint-disable-next-line import/no-default-export\nexport { EthereumGasPlugin as default, EthereumGasPlugin } from './Plugin.js'\nexport * from './Schema.js'\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.js'\nimport { EthereumGasDivinerConfigSchema } from './Schema.js'\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{\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.js'\nimport {\n isEthereumGasBlocknativePayload,\n isEthereumGasEtherchainV2Payload,\n isEthereumGasEtherscanPayload,\n isEthereumGasEthersPayload,\n isEthereumGasEthgasstationPayload,\n} from './identities/index.js'\nimport {\n transformGasFromBlocknative,\n transformGasFromEtherchainV2,\n transformGasFromEthers,\n transformGasFromEtherscan,\n transformGasFromEthgasstation,\n} from './transforms/index.js'\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","/* eslint-disable sort-keys-fix/sort-keys-fix */\nimport { 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","/* eslint-disable sort-keys-fix/sort-keys-fix */\nimport { 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.js'\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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,8BAAgC;AAEhC,IAAAA,mCAAkC;;;ACFlC,sCAA+D;AAC/D,6BAA+B;;;ACD/B,oBAAuB;AASvB,IAAM,cAAc,CAAC,MAAkB,GAAG,SAAS,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,SAAS;AAU1F,IAAM,kBAAkB,CAAC,MAAiB,uBAA2D;AACnG,SAAO,YAAY,KAAK,IAAI,kBAAkB,EAAE,OAAO,oBAAM,CAAC;AAChE;AAOO,IAAM,UAAU,CAAC,UAA6C;AACnE,QAAM,OAAO,OAAO,OAAO,oBAAM,KAAK,CAAC;AACvC,QAAM,WAAoB;AAAA,IACxB,SAAS,gBAAgB,MAAM,CAAC,MAAM,EAAE,OAAO;AAAA,IAC/C,WAAW;AAAA,MACT,MAAM,gBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,IAAI;AAAA,MACnD,KAAK,gBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG;AAAA,MACjD,QAAQ,gBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,MAAM;AAAA,MACvD,UAAU,gBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,QAAQ;AAAA,IAC7D;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,gBAAgB,MAAM,CAAC,MAAM,EAAE,kBAAkB,IAAI;AAAA,MAC3D,KAAK,gBAAgB,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG;AAAA,MACzD,QAAQ,gBAAgB,MAAM,CAAC,MAAM,EAAE,kBAAkB,MAAM;AAAA,MAC/D,UAAU,gBAAgB,MAAM,CAAC,MAAM,EAAE,kBAAkB,QAAQ;AAAA,IACrE;AAAA,EACF;AACA,SAAO;AACT;;;AC9CA,qDAA4E;AAGrE,IAAM,kCAAkC,CAAC,YAAuE;AACrH,SAAO,SAAS,WAAW;AAC7B;;;ACLA,gEAA8E;AAGvE,IAAM,mCAAmC,CAAC,YAAwE;AACvH,SAAO,SAAS,WAAW;AAC7B;;;ACLA,mDAAwE;AAGjE,IAAM,gCAAgC,CAAC,YAAqE;AACjH,SAAO,SAAS,WAAW;AAC7B;;;ACLA,gDAAkE;AAG3D,IAAM,6BAA6B,CAAC,YAAkE;AAC3G,SAAO,SAAS,WAAW;AAC7B;;;ACLA,uDAAgF;AAGzE,IAAM,oCAAoC,CAAC,YAAyE;AACzH,SAAO,SAAS,WAAW;AAC7B;;;ACFA,wBAAuB;AAEvB,IAAM,aAAa,CAAC,YAA+D;AACjF,SAAO,SAAS,cAAc,CAAC,GAAG;AACpC;AAEA,IAAM,eAAe,CAAC,YAA+D;AACnF,QAAM,SAAS,QAAQ,cAAc,CAAC,EAAE,iBAAiB,KAAK,CAAC,GAAG,MAAM,EAAE,aAAa,EAAE,UAAU;AACnG,QAAM,YAAQ,0BAAO;AAAA,IACnB,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK;AAAA,IACrB,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK;AAAA,IACrB,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK;AAAA,IACrB,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK;AAAA,IACrB,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK;AAAA,EACvB,CAAC;AACD,QAAM,YAAuB;AAAA,IAC3B,KAAK,MAAM,QAAQ,GAAG,EAAE,CAAC;AAAA,IACzB,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAAA,IAC5B,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC;AAAA,IAC1B,UAAU,MAAM,QAAQ,GAAG,EAAE,CAAC;AAAA,EAChC;AACA,SAAO;AACT;AAEA,IAAM,uBAAuB,CAAC,YAAuE;AACnG,QAAM,SAAS,QAAQ,cAAc,CAAC,EAAE,iBAAiB,KAAK,CAAC,GAAG,MAAM,EAAE,aAAa,EAAE,UAAU;AACnG,QAAM,YAAQ,0BAAO;AAAA,IACnB,CAAC,GAAG,SAAS,CAAC,EAAE,oBAAoB;AAAA,IACpC,CAAC,GAAG,SAAS,CAAC,EAAE,oBAAoB;AAAA,IACpC,CAAC,GAAG,SAAS,CAAC,EAAE,oBAAoB;AAAA,IACpC,CAAC,GAAG,SAAS,CAAC,EAAE,oBAAoB;AAAA,IACpC,CAAC,GAAG,SAAS,CAAC,EAAE,oBAAoB;AAAA,EACtC,CAAC;AACD,QAAM,oBAAuC;AAAA,IAC3C,KAAK,MAAM,QAAQ,GAAG,EAAE,CAAC;AAAA,IACzB,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAAA,IAC5B,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC;AAAA,IAC1B,UAAU,MAAM,QAAQ,GAAG,EAAE,CAAC;AAAA,EAChC;AACA,SAAO;AACT;AAEO,IAAM,8BAA8B,CAAC,YAAoD;AAC9F,QAAM,UAAU,WAAW,OAAO;AAClC,QAAM,YAAY,aAAa,OAAO;AACtC,QAAM,oBAAoB,qBAAqB,OAAO;AACtD,SAAO,EAAE,SAAS,WAAW,kBAAkB;AACjD;;;AC/CA,IAAMC,gBAAe,CAAC,YAAgE;AACpF,QAAM,EAAE,MAAM,UAAU,MAAM,MAAM,IAAI,QAAQ;AAChD,QAAM,MAAM,OAAO;AACnB,QAAM,SAAS,WAAW;AAC1B,QAAM,OAAO,OAAO;AACpB,QAAM,WAAW,QAAQ;AACzB,SAAO,EAAE,MAAM,KAAK,QAAQ,SAAS;AACvC;AAEO,IAAM,+BAA+B,CAAC,YAAqD;AAChG,QAAM,UAAU;AAChB,QAAM,YAAYA,cAAa,OAAO;AACtC,QAAM,oBAAoB,CAAC;AAC3B,SAAO,EAAE,SAAS,WAAW,kBAAkB;AACjD;;;ACdA,IAAMC,cAAa,CAAC,YAA0D;AAC5E,QAAM,EAAE,SAAS,IAAI;AACrB,SAAO,WAAW,WAAW,MAAgB;AAC/C;AAEA,IAAMC,gBAAe,CAAC,YAA0D;AAC9E,QAAM,EAAE,aAAa,IAAI;AACzB,QAAM,OAAO,eAAe,eAAe,MAAgB;AAC3D,SAAO,EAAE,KAAK;AAChB;AAEA,IAAMC,wBAAuB,CAAC,YAAkE;AAC9F,QAAM,EAAE,qBAAqB,IAAI;AACjC,QAAM,OAAO,uBAAuB,uBAAuB,MAAgB;AAC3E,SAAO,EAAE,KAAK;AAChB;AAEO,IAAM,yBAAyB,CAAC,YAA+C;AACpF,QAAM,UAAUF,YAAW,OAAO;AAClC,QAAM,YAAYC,cAAa,OAAO;AACtC,QAAM,oBAAoBC,sBAAqB,OAAO;AACtD,SAAO,EAAE,SAAS,WAAW,kBAAkB;AACjD;;;ACvBA,IAAAC,qBAAuB;AAEvB,IAAMC,cAAa,CAAC,YAA6D;AAC/E,QAAM,EAAE,eAAe,IAAI,QAAQ;AACnC,SAAO,OAAO,WAAW,cAAc;AACzC;AAEA,IAAMC,gBAAe,CAAC,YAA6D;AACjF,QAAM,EAAE,cAAc,iBAAiB,aAAa,IAAI,QAAQ;AAChE,QAAM,MAAM,OAAO,WAAW,YAAY;AAC1C,QAAM,SAAS,OAAO,WAAW,eAAe;AAChD,QAAM,OAAO,OAAO,WAAW,YAAY;AAC3C,QAAM,eAAW,2BAAO;AAAA,IACtB,CAAC,GAAG,GAAG;AAAA,IACP,CAAC,GAAG,MAAM;AAAA,IACV,CAAC,GAAG,IAAI;AAAA,EACV,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;AACf,SAAO,EAAE,MAAM,KAAK,QAAQ,SAAS;AACvC;AAEO,IAAM,4BAA4B,CAAC,YAAkD;AAC1F,QAAM,UAAUD,YAAW,OAAO;AAClC,QAAM,YAAYC,cAAa,OAAO;AACtC,QAAM,oBAAoB,CAAC;AAC3B,SAAO,EAAE,SAAS,WAAW,kBAAkB;AACjD;;;ACxBA,IAAAC,qBAAuB;AAEvB,IAAMC,cAAa,CAAC,YAAiE;AACnF,QAAM,EAAE,QAAQ,IAAI;AACpB,SAAO;AACT;AAEA,IAAMC,gBAAe,CAAC,YAAiE;AACrF,QAAM,EAAE,UAAU,QAAQ,MAAM,MAAM,SAAS,SAAS,IAAI,QAAQ;AACpE,QAAM,YAAQ,2BAAO;AAAA,IACnB,CAAC,GAAG,MAAM;AAAA,IACV,CAAC,GAAG,IAAI;AAAA,IACR,CAAC,GAAG,QAAQ;AAAA,EACd,CAAC;AACD,QAAM,MAAM,MAAM,QAAQ,CAAC,EAAE,CAAC;AAC9B,SAAO,EAAE,KAAK,QAAQ,MAAM,SAAS;AACvC;AAEA,IAAMC,wBAAuB,CAAC,YAAyE;AACrG,QAAM,EAAE,UAAU,QAAQ,MAAM,MAAM,SAAS,SAAS,IAAI,QAAQ;AACpE,QAAM,YAAQ,2BAAO;AAAA,IACnB,CAAC,GAAG,MAAM;AAAA,IACV,CAAC,GAAG,IAAI;AAAA,IACR,CAAC,GAAG,QAAQ;AAAA,EACd,CAAC;AACD,QAAM,MAAM,MAAM,QAAQ,CAAC,EAAE,CAAC;AAC9B,SAAO,EAAE,KAAK,QAAQ,MAAM,SAAS;AACvC;AAEO,IAAM,gCAAgC,CAAC,YAAsD;AAClG,QAAM,UAAUF,YAAW,OAAO;AAClC,QAAM,YAAYC,cAAa,OAAO;AACtC,QAAM,oBAAoBC,sBAAqB,OAAO;AACtD,SAAO,EAAE,SAAS,WAAW,kBAAkB;AACjD;;;AXjBO,IAAM,YAAY,OAAO,aAAqD;AACnF,QAAM,cAAc,SAAS,OAAO,+BAA+B,EAAE,IAAI,2BAA2B;AACpG,QAAM,eAAe,SAAS,OAAO,gCAAgC,EAAE,IAAI,4BAA4B;AACvG,QAAM,SAAS,SAAS,OAAO,0BAA0B,EAAE,IAAI,sBAAsB;AACrF,QAAM,YAAY,SAAS,OAAO,6BAA6B,EAAE,IAAI,yBAAyB;AAC9F,QAAM,gBAAgB,SAAS,OAAO,iCAAiC,EAAE,IAAI,6BAA6B;AAC1G,QAAM,mBAA8B,CAAC,GAAG,aAAa,GAAG,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa;AAC/G,QAAM,MAAM,QAAQ,gBAAgB;AACpC,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,UAAU,MAAM,IAAI,sCAAmC,EAAE,QAAQ,kDAAkB,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC,EAAE,MAAM;AAChI,SAAO;AACT;;;AY9BO,IAAM,gCAA+D;AAGrE,IAAM,iCAAiE;;;AbQvE,IAAM,qBAAN,cACG,wCAEV;AAAA,EACE,OAAyB,gBAA0B,CAAC,GAAG,MAAM,eAAe,8BAA8B;AAAA,EAC1G,OAAyB,sBAA8B;AAAA,EACvD,OAAgB,eAAuB;AAAA,EAEvC,MAAyB,cAAc,UAA0C;AAC/E,UAAM,OAAO,MAAM,UAAU,YAAY,CAAC,CAAC;AAC3C,WAAO,CAAC,IAAI;AAAA,EACd;AACF;;;AcxBA,IAAAC,mCAAkC;AAClC,2BAAiC;AACjC,+BAA8C;AAIvC,IAAM,oBAAoB,UAC/B;AAAA,EACE,EAAE,UAAU,EAAE,CAAC,kDAAiB,GAAG,EAAE,GAAG,QAAQ,sCAAiB;AAAA,EACjE;AAAA,IACE,SAAS,OAAO,WAAW;AACzB,aAAQ,MAAM,mBAAmB,OAAO,MAAM;AAAA,IAChD;AAAA,EACF;AACF;","names":["import_gas_price_payload_plugin","getFeePerGas","getBaseFee","getFeePerGas","getPriorityFeePerGas","import_regression","getBaseFee","getFeePerGas","import_regression","getBaseFee","getFeePerGas","getPriorityFeePerGas","import_gas_price_payload_plugin"]}
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","configSchemas","EthereumGasDivinerConfigSchema","defaultConfigSchema","targetSchema","EthereumGasSchema","divineHandler","payloads","cost","divineGas","import_gas_price_payload_plugin","EthereumGasPlugin","createPayloadSetDivinerPlugin","required","EthereumGasSchema","schema","PayloadSetSchema","diviner","params","EthereumGasDiviner","create"]}
@@ -1,4 +1,4 @@
1
- export * from './Diviner.js';
2
- export { EthereumGasPlugin as default, EthereumGasPlugin } from './Plugin.js';
3
- export * from './Schema.js';
1
+ export * from './Diviner.ts';
2
+ export { EthereumGasPlugin as default, EthereumGasPlugin } from './Plugin.ts';
3
+ export * from './Schema.ts';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './Diviner.js';
2
- export { EthereumGasPlugin as default, EthereumGasPlugin } from './Plugin.js';
3
- export * from './Schema.js';
1
+ export * from './Diviner.ts';
2
+ export { EthereumGasPlugin as default, EthereumGasPlugin } from './Plugin.ts';
3
+ export * from './Schema.ts';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- export * from './Diviner.js';
2
- export { EthereumGasPlugin as default, EthereumGasPlugin } from './Plugin.js';
3
- export * from './Schema.js';
1
+ export * from './Diviner.ts';
2
+ export { EthereumGasPlugin as default, EthereumGasPlugin } from './Plugin.ts';
3
+ export * from './Schema.ts';
4
4
  //# sourceMappingURL=index.d.ts.map