@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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { EthereumGasDiviner } from './Diviner.ts';
|
|
2
|
-
export declare const EthereumGasPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<EthereumGasDiviner<import("
|
|
3
|
-
account?: import("
|
|
2
|
+
export declare const EthereumGasPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<EthereumGasDiviner<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
|
|
3
|
+
account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
|
|
4
4
|
addToResolvers?: boolean;
|
|
5
|
-
additionalSigners?: import("
|
|
5
|
+
additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
|
|
6
6
|
allowNameResolution?: boolean;
|
|
7
7
|
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
|
|
8
8
|
schema: "network.xyo.blockchain.ethereum.gas.diviner.config";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { EthereumGasDiviner } from './Diviner.ts';
|
|
2
|
-
export declare const EthereumGasPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<EthereumGasDiviner<import("
|
|
3
|
-
account?: import("
|
|
2
|
+
export declare const EthereumGasPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<EthereumGasDiviner<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
|
|
3
|
+
account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
|
|
4
4
|
addToResolvers?: boolean;
|
|
5
|
-
additionalSigners?: import("
|
|
5
|
+
additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
|
|
6
6
|
allowNameResolution?: boolean;
|
|
7
7
|
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
|
|
8
8
|
schema: "network.xyo.blockchain.ethereum.gas.diviner.config";
|
package/dist/browser/Plugin.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { EthereumGasDiviner } from './Diviner.ts';
|
|
2
|
-
export declare const EthereumGasPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<EthereumGasDiviner<import("
|
|
3
|
-
account?: import("
|
|
2
|
+
export declare const EthereumGasPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<EthereumGasDiviner<import(".store/@xylabs-object-npm-3.6.12-443b813787/package").BaseParamsFields & {
|
|
3
|
+
account?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance | "random";
|
|
4
4
|
addToResolvers?: boolean;
|
|
5
|
-
additionalSigners?: import("
|
|
5
|
+
additionalSigners?: import(".store/@xyo-network-account-model-virtual-c593258ccf/package").AccountInstance[];
|
|
6
6
|
allowNameResolution?: boolean;
|
|
7
7
|
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<import("@xyo-network/module-model").ArchivingModuleConfig & import("@xyo-network/module-model").ModuleConfigFields & {
|
|
8
8
|
schema: "network.xyo.blockchain.ethereum.gas.diviner.config";
|
package/dist/browser/index.cjs
CHANGED
|
@@ -3,7 +3,6 @@ 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 });
|
|
7
6
|
var __export = (target, all) => {
|
|
8
7
|
for (var name in all)
|
|
9
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -39,11 +38,11 @@ var import_payload_builder = require("@xyo-network/payload-builder");
|
|
|
39
38
|
|
|
40
39
|
// src/lib/average.ts
|
|
41
40
|
var import_exists = require("@xylabs/exists");
|
|
42
|
-
var listAverage =
|
|
43
|
-
var averageProperty =
|
|
41
|
+
var listAverage = (x) => x?.length ? x.reduce((a, b) => a + b) / x.length : void 0;
|
|
42
|
+
var averageProperty = (data, propertyExpression) => {
|
|
44
43
|
return listAverage(data.map(propertyExpression).filter(import_exists.exists));
|
|
45
|
-
}
|
|
46
|
-
var average =
|
|
44
|
+
};
|
|
45
|
+
var average = (input) => {
|
|
47
46
|
const data = input?.filter(import_exists.exists) || [];
|
|
48
47
|
const averaged = {
|
|
49
48
|
baseFee: averageProperty(data, (x) => x.baseFee),
|
|
@@ -61,66 +60,51 @@ var average = /* @__PURE__ */ __name((input) => {
|
|
|
61
60
|
}
|
|
62
61
|
};
|
|
63
62
|
return averaged;
|
|
64
|
-
}
|
|
63
|
+
};
|
|
65
64
|
|
|
66
65
|
// src/lib/identities/isEthereumGasBlocknativePayload.ts
|
|
67
66
|
var import_blocknative_ethereum_gas_payload_plugin = require("@xyo-network/blocknative-ethereum-gas-payload-plugin");
|
|
68
|
-
var isEthereumGasBlocknativePayload =
|
|
67
|
+
var isEthereumGasBlocknativePayload = (payload) => {
|
|
69
68
|
return payload?.schema === import_blocknative_ethereum_gas_payload_plugin.EthereumGasBlocknativeSchema;
|
|
70
|
-
}
|
|
69
|
+
};
|
|
71
70
|
|
|
72
71
|
// src/lib/identities/isEthereumGasEtherchainV2Payload.ts
|
|
73
72
|
var import_etherchain_gas_ethereum_blockchain_payload_plugins = require("@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins");
|
|
74
|
-
var isEthereumGasEtherchainV2Payload =
|
|
73
|
+
var isEthereumGasEtherchainV2Payload = (payload) => {
|
|
75
74
|
return payload?.schema === import_etherchain_gas_ethereum_blockchain_payload_plugins.EthereumGasEtherchainV2Schema;
|
|
76
|
-
}
|
|
75
|
+
};
|
|
77
76
|
|
|
78
77
|
// src/lib/identities/isEthereumGasEtherscanPayload.ts
|
|
79
78
|
var import_etherscan_ethereum_gas_payload_plugin = require("@xyo-network/etherscan-ethereum-gas-payload-plugin");
|
|
80
|
-
var isEthereumGasEtherscanPayload =
|
|
79
|
+
var isEthereumGasEtherscanPayload = (payload) => {
|
|
81
80
|
return payload?.schema === import_etherscan_ethereum_gas_payload_plugin.EthereumGasEtherscanSchema;
|
|
82
|
-
}
|
|
81
|
+
};
|
|
83
82
|
|
|
84
83
|
// src/lib/identities/isEthereumGasEthersPayload.ts
|
|
85
84
|
var import_ethers_ethereum_gas_payload_plugin = require("@xyo-network/ethers-ethereum-gas-payload-plugin");
|
|
86
|
-
var isEthereumGasEthersPayload =
|
|
85
|
+
var isEthereumGasEthersPayload = (payload) => {
|
|
87
86
|
return payload?.schema === import_ethers_ethereum_gas_payload_plugin.EthereumGasEthersSchema;
|
|
88
|
-
}
|
|
87
|
+
};
|
|
89
88
|
|
|
90
89
|
// src/lib/identities/isEthereumGasEthgasstationPayload.ts
|
|
91
90
|
var import_ethgasstation_ethereum_gas_payload_plugin = require("@xyo-network/ethgasstation-ethereum-gas-payload-plugin");
|
|
92
|
-
var isEthereumGasEthgasstationPayload =
|
|
91
|
+
var isEthereumGasEthgasstationPayload = (payload) => {
|
|
93
92
|
return payload?.schema === import_ethgasstation_ethereum_gas_payload_plugin.EthereumGasEthgasstationSchema;
|
|
94
|
-
}
|
|
93
|
+
};
|
|
95
94
|
|
|
96
95
|
// src/lib/transforms/transformGasFromBlocknative.ts
|
|
97
96
|
var import_regression = require("regression");
|
|
98
|
-
var getBaseFee =
|
|
97
|
+
var getBaseFee = (payload) => {
|
|
99
98
|
return payload?.blockPrices?.[0]?.baseFeePerGas;
|
|
100
|
-
}
|
|
101
|
-
var getFeePerGas =
|
|
99
|
+
};
|
|
100
|
+
var getFeePerGas = (payload) => {
|
|
102
101
|
const sorted = payload.blockPrices?.[0].estimatedPrices?.sort((a, b) => a.confidence - b.confidence);
|
|
103
102
|
const trend = (0, import_regression.linear)([
|
|
104
|
-
[
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
]
|
|
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]
|
|
124
108
|
]);
|
|
125
109
|
const feePerGas = {
|
|
126
110
|
low: trend.predict(0.5)[1],
|
|
@@ -129,30 +113,15 @@ var getFeePerGas = /* @__PURE__ */ __name((payload) => {
|
|
|
129
113
|
veryHigh: trend.predict(3.5)[1]
|
|
130
114
|
};
|
|
131
115
|
return feePerGas;
|
|
132
|
-
}
|
|
133
|
-
var getPriorityFeePerGas =
|
|
116
|
+
};
|
|
117
|
+
var getPriorityFeePerGas = (payload) => {
|
|
134
118
|
const sorted = payload.blockPrices?.[0].estimatedPrices?.sort((a, b) => a.confidence - b.confidence);
|
|
135
119
|
const trend = (0, import_regression.linear)([
|
|
136
|
-
[
|
|
137
|
-
|
|
138
|
-
|
|
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
|
-
]
|
|
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]
|
|
156
125
|
]);
|
|
157
126
|
const priorityFeePerGas = {
|
|
158
127
|
low: trend.predict(0.5)[1],
|
|
@@ -161,205 +130,123 @@ var getPriorityFeePerGas = /* @__PURE__ */ __name((payload) => {
|
|
|
161
130
|
veryHigh: trend.predict(3.5)[1]
|
|
162
131
|
};
|
|
163
132
|
return priorityFeePerGas;
|
|
164
|
-
}
|
|
165
|
-
var transformGasFromBlocknative =
|
|
133
|
+
};
|
|
134
|
+
var transformGasFromBlocknative = (payload) => {
|
|
166
135
|
const baseFee = getBaseFee(payload);
|
|
167
136
|
const feePerGas = getFeePerGas(payload);
|
|
168
137
|
const priorityFeePerGas = getPriorityFeePerGas(payload);
|
|
169
|
-
return {
|
|
170
|
-
|
|
171
|
-
feePerGas,
|
|
172
|
-
priorityFeePerGas
|
|
173
|
-
};
|
|
174
|
-
}, "transformGasFromBlocknative");
|
|
138
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
139
|
+
};
|
|
175
140
|
|
|
176
141
|
// src/lib/transforms/transformGasFromEtherchainV2.ts
|
|
177
|
-
var getFeePerGas2 =
|
|
142
|
+
var getFeePerGas2 = (payload) => {
|
|
178
143
|
const { slow, standard, fast, rapid } = payload.data;
|
|
179
144
|
const low = slow / 1e9;
|
|
180
145
|
const medium = standard / 1e9;
|
|
181
146
|
const high = fast / 1e9;
|
|
182
147
|
const veryHigh = rapid / 1e9;
|
|
183
|
-
return {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
medium,
|
|
187
|
-
veryHigh
|
|
188
|
-
};
|
|
189
|
-
}, "getFeePerGas");
|
|
190
|
-
var transformGasFromEtherchainV2 = /* @__PURE__ */ __name((payload) => {
|
|
148
|
+
return { high, low, medium, veryHigh };
|
|
149
|
+
};
|
|
150
|
+
var transformGasFromEtherchainV2 = (payload) => {
|
|
191
151
|
const baseFee = void 0;
|
|
192
152
|
const feePerGas = getFeePerGas2(payload);
|
|
193
153
|
const priorityFeePerGas = {};
|
|
194
|
-
return {
|
|
195
|
-
|
|
196
|
-
feePerGas,
|
|
197
|
-
priorityFeePerGas
|
|
198
|
-
};
|
|
199
|
-
}, "transformGasFromEtherchainV2");
|
|
154
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
155
|
+
};
|
|
200
156
|
|
|
201
157
|
// src/lib/transforms/transformGasFromEthers.ts
|
|
202
|
-
var getBaseFee2 =
|
|
158
|
+
var getBaseFee2 = (payload) => {
|
|
203
159
|
const { gasPrice } = payload;
|
|
204
160
|
return gasPrice ? gasPrice / 1e9 : void 0;
|
|
205
|
-
}
|
|
206
|
-
var getFeePerGas3 =
|
|
161
|
+
};
|
|
162
|
+
var getFeePerGas3 = (payload) => {
|
|
207
163
|
const { maxFeePerGas } = payload;
|
|
208
164
|
const high = maxFeePerGas ? maxFeePerGas / 1e9 : void 0;
|
|
209
|
-
return {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}, "getFeePerGas");
|
|
213
|
-
var getPriorityFeePerGas2 = /* @__PURE__ */ __name((payload) => {
|
|
165
|
+
return { high };
|
|
166
|
+
};
|
|
167
|
+
var getPriorityFeePerGas2 = (payload) => {
|
|
214
168
|
const { maxPriorityFeePerGas } = payload;
|
|
215
169
|
const high = maxPriorityFeePerGas ? maxPriorityFeePerGas / 1e9 : void 0;
|
|
216
|
-
return {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}, "getPriorityFeePerGas");
|
|
220
|
-
var transformGasFromEthers = /* @__PURE__ */ __name((payload) => {
|
|
170
|
+
return { high };
|
|
171
|
+
};
|
|
172
|
+
var transformGasFromEthers = (payload) => {
|
|
221
173
|
const baseFee = getBaseFee2(payload);
|
|
222
174
|
const feePerGas = getFeePerGas3(payload);
|
|
223
175
|
const priorityFeePerGas = getPriorityFeePerGas2(payload);
|
|
224
|
-
return {
|
|
225
|
-
|
|
226
|
-
feePerGas,
|
|
227
|
-
priorityFeePerGas
|
|
228
|
-
};
|
|
229
|
-
}, "transformGasFromEthers");
|
|
176
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
177
|
+
};
|
|
230
178
|
|
|
231
179
|
// src/lib/transforms/transformGasFromEtherscan.ts
|
|
232
180
|
var import_regression2 = require("regression");
|
|
233
|
-
var getBaseFee3 =
|
|
181
|
+
var getBaseFee3 = (payload) => {
|
|
234
182
|
const { suggestBaseFee } = payload.result;
|
|
235
183
|
return Number.parseFloat(suggestBaseFee);
|
|
236
|
-
}
|
|
237
|
-
var getFeePerGas4 =
|
|
184
|
+
};
|
|
185
|
+
var getFeePerGas4 = (payload) => {
|
|
238
186
|
const { FastGasPrice, ProposeGasPrice, SafeGasPrice } = payload.result;
|
|
239
187
|
const low = Number.parseFloat(SafeGasPrice);
|
|
240
188
|
const medium = Number.parseFloat(ProposeGasPrice);
|
|
241
189
|
const high = Number.parseFloat(FastGasPrice);
|
|
242
190
|
const veryHigh = (0, import_regression2.linear)([
|
|
243
|
-
[
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
],
|
|
247
|
-
[
|
|
248
|
-
1,
|
|
249
|
-
medium
|
|
250
|
-
],
|
|
251
|
-
[
|
|
252
|
-
2,
|
|
253
|
-
high
|
|
254
|
-
]
|
|
191
|
+
[0, low],
|
|
192
|
+
[1, medium],
|
|
193
|
+
[2, high]
|
|
255
194
|
]).predict(3)[1];
|
|
256
|
-
return {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
medium,
|
|
260
|
-
veryHigh
|
|
261
|
-
};
|
|
262
|
-
}, "getFeePerGas");
|
|
263
|
-
var transformGasFromEtherscan = /* @__PURE__ */ __name((payload) => {
|
|
195
|
+
return { high, low, medium, veryHigh };
|
|
196
|
+
};
|
|
197
|
+
var transformGasFromEtherscan = (payload) => {
|
|
264
198
|
const baseFee = getBaseFee3(payload);
|
|
265
199
|
const feePerGas = getFeePerGas4(payload);
|
|
266
200
|
const priorityFeePerGas = {};
|
|
267
|
-
return {
|
|
268
|
-
|
|
269
|
-
feePerGas,
|
|
270
|
-
priorityFeePerGas
|
|
271
|
-
};
|
|
272
|
-
}, "transformGasFromEtherscan");
|
|
201
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
202
|
+
};
|
|
273
203
|
|
|
274
204
|
// src/lib/transforms/transformGasFromEthgasstation.ts
|
|
275
205
|
var import_regression3 = require("regression");
|
|
276
|
-
var getBaseFee4 =
|
|
206
|
+
var getBaseFee4 = (payload) => {
|
|
277
207
|
const { baseFee } = payload;
|
|
278
208
|
return baseFee;
|
|
279
|
-
}
|
|
280
|
-
var getFeePerGas5 =
|
|
209
|
+
};
|
|
210
|
+
var getFeePerGas5 = (payload) => {
|
|
281
211
|
const { standard: medium, fast: high, instant: veryHigh } = payload.gasPrice;
|
|
282
212
|
const trend = (0, import_regression3.linear)([
|
|
283
|
-
[
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
],
|
|
287
|
-
[
|
|
288
|
-
2,
|
|
289
|
-
high
|
|
290
|
-
],
|
|
291
|
-
[
|
|
292
|
-
3,
|
|
293
|
-
veryHigh
|
|
294
|
-
]
|
|
213
|
+
[1, medium],
|
|
214
|
+
[2, high],
|
|
215
|
+
[3, veryHigh]
|
|
295
216
|
]);
|
|
296
217
|
const low = trend.predict(0)[1];
|
|
297
|
-
return {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
high,
|
|
301
|
-
veryHigh
|
|
302
|
-
};
|
|
303
|
-
}, "getFeePerGas");
|
|
304
|
-
var getPriorityFeePerGas3 = /* @__PURE__ */ __name((payload) => {
|
|
218
|
+
return { low, medium, high, veryHigh };
|
|
219
|
+
};
|
|
220
|
+
var getPriorityFeePerGas3 = (payload) => {
|
|
305
221
|
const { standard: medium, fast: high, instant: veryHigh } = payload.priorityFee;
|
|
306
222
|
const trend = (0, import_regression3.linear)([
|
|
307
|
-
[
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
],
|
|
311
|
-
[
|
|
312
|
-
2,
|
|
313
|
-
high
|
|
314
|
-
],
|
|
315
|
-
[
|
|
316
|
-
3,
|
|
317
|
-
veryHigh
|
|
318
|
-
]
|
|
223
|
+
[1, medium],
|
|
224
|
+
[2, high],
|
|
225
|
+
[3, veryHigh]
|
|
319
226
|
]);
|
|
320
227
|
const low = trend.predict(0)[1];
|
|
321
|
-
return {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
high,
|
|
325
|
-
veryHigh
|
|
326
|
-
};
|
|
327
|
-
}, "getPriorityFeePerGas");
|
|
328
|
-
var transformGasFromEthgasstation = /* @__PURE__ */ __name((payload) => {
|
|
228
|
+
return { low, medium, high, veryHigh };
|
|
229
|
+
};
|
|
230
|
+
var transformGasFromEthgasstation = (payload) => {
|
|
329
231
|
const baseFee = getBaseFee4(payload);
|
|
330
232
|
const feePerGas = getFeePerGas5(payload);
|
|
331
233
|
const priorityFeePerGas = getPriorityFeePerGas3(payload);
|
|
332
|
-
return {
|
|
333
|
-
|
|
334
|
-
feePerGas,
|
|
335
|
-
priorityFeePerGas
|
|
336
|
-
};
|
|
337
|
-
}, "transformGasFromEthgasstation");
|
|
234
|
+
return { baseFee, feePerGas, priorityFeePerGas };
|
|
235
|
+
};
|
|
338
236
|
|
|
339
237
|
// src/lib/divineGas.ts
|
|
340
|
-
var divineGas =
|
|
238
|
+
var divineGas = async (payloads) => {
|
|
341
239
|
const blocknative = payloads.filter(isEthereumGasBlocknativePayload).map(transformGasFromBlocknative);
|
|
342
240
|
const etherchainV2 = payloads.filter(isEthereumGasEtherchainV2Payload).map(transformGasFromEtherchainV2);
|
|
343
241
|
const ethers = payloads.filter(isEthereumGasEthersPayload).map(transformGasFromEthers);
|
|
344
242
|
const etherscan = payloads.filter(isEthereumGasEtherscanPayload).map(transformGasFromEtherscan);
|
|
345
243
|
const ethgasstation = payloads.filter(isEthereumGasEthgasstationPayload).map(transformGasFromEthgasstation);
|
|
346
|
-
const transactionCosts = [
|
|
347
|
-
...blocknative,
|
|
348
|
-
...etherchainV2,
|
|
349
|
-
...ethers,
|
|
350
|
-
...etherscan,
|
|
351
|
-
...ethgasstation
|
|
352
|
-
];
|
|
244
|
+
const transactionCosts = [...blocknative, ...etherchainV2, ...ethers, ...etherscan, ...ethgasstation];
|
|
353
245
|
const avg = average(transactionCosts);
|
|
354
246
|
const timestamp = Date.now();
|
|
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();
|
|
247
|
+
const payload = await new import_payload_builder.PayloadBuilder({ schema: import_gas_price_payload_plugin.EthereumGasSchema }).fields({ ...avg, timestamp }).build();
|
|
361
248
|
return payload;
|
|
362
|
-
}
|
|
249
|
+
};
|
|
363
250
|
|
|
364
251
|
// src/Schema.ts
|
|
365
252
|
var EthereumGasDivinerQuerySchema = "network.xyo.blockchain.ethereum.gas.diviner.query";
|
|
@@ -367,20 +254,12 @@ var EthereumGasDivinerConfigSchema = "network.xyo.blockchain.ethereum.gas.divine
|
|
|
367
254
|
|
|
368
255
|
// src/Diviner.ts
|
|
369
256
|
var EthereumGasDiviner = class extends import_diviner_abstract.AbstractDiviner {
|
|
370
|
-
static
|
|
371
|
-
__name(this, "EthereumGasDiviner");
|
|
372
|
-
}
|
|
373
|
-
static configSchemas = [
|
|
374
|
-
...super.configSchemas,
|
|
375
|
-
EthereumGasDivinerConfigSchema
|
|
376
|
-
];
|
|
257
|
+
static configSchemas = [...super.configSchemas, EthereumGasDivinerConfigSchema];
|
|
377
258
|
static defaultConfigSchema = EthereumGasDivinerConfigSchema;
|
|
378
259
|
static targetSchema = import_gas_price_payload_plugin2.EthereumGasSchema;
|
|
379
260
|
async divineHandler(payloads) {
|
|
380
261
|
const cost = await divineGas(payloads ?? []);
|
|
381
|
-
return [
|
|
382
|
-
cost
|
|
383
|
-
];
|
|
262
|
+
return [cost];
|
|
384
263
|
}
|
|
385
264
|
};
|
|
386
265
|
|
|
@@ -388,14 +267,12 @@ var EthereumGasDiviner = class extends import_diviner_abstract.AbstractDiviner {
|
|
|
388
267
|
var import_gas_price_payload_plugin3 = require("@xyo-network/gas-price-payload-plugin");
|
|
389
268
|
var import_payload_model = require("@xyo-network/payload-model");
|
|
390
269
|
var import_payloadset_plugin = require("@xyo-network/payloadset-plugin");
|
|
391
|
-
var EthereumGasPlugin =
|
|
392
|
-
required: {
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
}, "diviner")
|
|
400
|
-
}), "EthereumGasPlugin");
|
|
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
|
+
);
|
|
401
278
|
//# 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.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
|
+
{"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":";;;;;;;;;;;;;;;;;;;;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,OAAK,EAAE,OAAO;AAAA,IAC7C,WAAW;AAAA,MACT,MAAM,gBAAgB,MAAM,OAAK,EAAE,UAAU,IAAI;AAAA,MACjD,KAAK,gBAAgB,MAAM,OAAK,EAAE,UAAU,GAAG;AAAA,MAC/C,QAAQ,gBAAgB,MAAM,OAAK,EAAE,UAAU,MAAM;AAAA,MACrD,UAAU,gBAAgB,MAAM,OAAK,EAAE,UAAU,QAAQ;AAAA,IAC3D;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM,gBAAgB,MAAM,OAAK,EAAE,kBAAkB,IAAI;AAAA,MACzD,KAAK,gBAAgB,MAAM,OAAK,EAAE,kBAAkB,GAAG;AAAA,MACvD,QAAQ,gBAAgB,MAAM,OAAK,EAAE,kBAAkB,MAAM;AAAA,MAC7D,UAAU,gBAAgB,MAAM,OAAK,EAAE,kBAAkB,QAAQ;AAAA,IACnE;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;;;ACHA,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;;;AC9CA,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;;;ACzBA,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;;;AXhBO,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,wCACiB;AAAA,EACzB,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;;;AcvBA,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"]}
|