@xyo-network/gas-price-plugin 3.0.3 → 3.0.4
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/neutral/Diviner.d.ts +16 -0
- package/dist/neutral/Diviner.d.ts.map +1 -0
- package/dist/neutral/Plugin.d.ts +19 -0
- package/dist/neutral/Plugin.d.ts.map +1 -0
- package/dist/neutral/Schema.d.ts +5 -0
- package/dist/neutral/Schema.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +4 -45
- package/dist/neutral/index.d.ts.map +1 -0
- package/dist/neutral/index.mjs +70 -13
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/lib/average.d.ts +3 -0
- package/dist/neutral/lib/average.d.ts.map +1 -0
- package/dist/neutral/lib/divineGas.d.ts +4 -0
- package/dist/neutral/lib/divineGas.d.ts.map +1 -0
- package/dist/neutral/lib/identities/index.d.ts +6 -0
- package/dist/neutral/lib/identities/index.d.ts.map +1 -0
- package/dist/neutral/lib/identities/isEthereumGasBlocknativePayload.d.ts +4 -0
- package/dist/neutral/lib/identities/isEthereumGasBlocknativePayload.d.ts.map +1 -0
- package/dist/neutral/lib/identities/isEthereumGasEtherchainV2Payload.d.ts +4 -0
- package/dist/neutral/lib/identities/isEthereumGasEtherchainV2Payload.d.ts.map +1 -0
- package/dist/neutral/lib/identities/isEthereumGasEthersPayload.d.ts +4 -0
- package/dist/neutral/lib/identities/isEthereumGasEthersPayload.d.ts.map +1 -0
- package/dist/neutral/lib/identities/isEthereumGasEtherscanPayload.d.ts +4 -0
- package/dist/neutral/lib/identities/isEthereumGasEtherscanPayload.d.ts.map +1 -0
- package/dist/neutral/lib/identities/isEthereumGasEthgasstationPayload.d.ts +4 -0
- package/dist/neutral/lib/identities/isEthereumGasEthgasstationPayload.d.ts.map +1 -0
- package/dist/neutral/lib/index.d.ts +2 -0
- package/dist/neutral/lib/index.d.ts.map +1 -0
- package/dist/neutral/lib/transforms/index.d.ts +6 -0
- package/dist/neutral/lib/transforms/index.d.ts.map +1 -0
- package/dist/neutral/lib/transforms/transformGasFromBlocknative.d.ts +4 -0
- package/dist/neutral/lib/transforms/transformGasFromBlocknative.d.ts.map +1 -0
- package/dist/neutral/lib/transforms/transformGasFromEtherchainV2.d.ts +4 -0
- package/dist/neutral/lib/transforms/transformGasFromEtherchainV2.d.ts.map +1 -0
- package/dist/neutral/lib/transforms/transformGasFromEthers.d.ts +4 -0
- package/dist/neutral/lib/transforms/transformGasFromEthers.d.ts.map +1 -0
- package/dist/neutral/lib/transforms/transformGasFromEtherscan.d.ts +4 -0
- package/dist/neutral/lib/transforms/transformGasFromEtherscan.d.ts.map +1 -0
- package/dist/neutral/lib/transforms/transformGasFromEthgasstation.d.ts +4 -0
- package/dist/neutral/lib/transforms/transformGasFromEthgasstation.d.ts.map +1 -0
- package/dist/neutral/test/index.d.ts +6 -0
- package/dist/neutral/test/index.d.ts.map +1 -0
- package/dist/neutral/test/sampleBlocknativeGas.d.ts +3 -0
- package/dist/neutral/test/sampleBlocknativeGas.d.ts.map +1 -0
- package/dist/neutral/test/sampleEtherchainGasV2.d.ts +3 -0
- package/dist/neutral/test/sampleEtherchainGasV2.d.ts.map +1 -0
- package/dist/neutral/test/sampleEthersGas.d.ts +3 -0
- package/dist/neutral/test/sampleEthersGas.d.ts.map +1 -0
- package/dist/neutral/test/sampleEtherscanGas.d.ts +3 -0
- package/dist/neutral/test/sampleEtherscanGas.d.ts.map +1 -0
- package/dist/neutral/test/sampleEthgasstationGas.d.ts +3 -0
- package/dist/neutral/test/sampleEthgasstationGas.d.ts.map +1 -0
- package/package.json +44 -44
- package/src/Diviner.ts +3 -1
- package/src/lib/transforms/transformGasFromBlocknative.ts +6 -2
- package/src/lib/transforms/transformGasFromEtherchainV2.ts +9 -3
- package/src/lib/transforms/transformGasFromEthers.ts +6 -2
- package/src/lib/transforms/transformGasFromEtherscan.ts +9 -3
- package/src/lib/transforms/transformGasFromEthgasstation.ts +18 -6
- package/xy.config.ts +1 -3
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AbstractDiviner } from '@xyo-network/diviner-abstract';
|
|
2
|
+
import type { DivinerConfig, DivinerModule, DivinerParams } from '@xyo-network/diviner-model';
|
|
3
|
+
import type { AnyConfigSchema } from '@xyo-network/module-model';
|
|
4
|
+
import type { Payload, Schema } from '@xyo-network/payload-model';
|
|
5
|
+
import { EthereumGasDivinerConfigSchema } from './Schema.ts';
|
|
6
|
+
export type EthereumGasDivinerConfig = DivinerConfig<{
|
|
7
|
+
schema: EthereumGasDivinerConfigSchema;
|
|
8
|
+
}>;
|
|
9
|
+
export type EthereumGasDivinerParams = DivinerParams<AnyConfigSchema<EthereumGasDivinerConfig>>;
|
|
10
|
+
export declare class EthereumGasDiviner<TParams extends EthereumGasDivinerParams = EthereumGasDivinerParams> extends AbstractDiviner<TParams> implements DivinerModule {
|
|
11
|
+
static readonly configSchemas: Schema[];
|
|
12
|
+
static readonly defaultConfigSchema: Schema;
|
|
13
|
+
static targetSchema: string;
|
|
14
|
+
protected divineHandler(payloads?: Payload[]): Promise<Payload[]>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=Diviner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Diviner.d.ts","sourceRoot":"","sources":["../../src/Diviner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EACV,aAAa,EAAE,aAAa,EAAE,aAAa,EAC5C,MAAM,4BAA4B,CAAA;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAGjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAE5D,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAC;IAAE,MAAM,EAAE,8BAA8B,CAAA;CAAE,CAAC,CAAA;AAChG,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC,CAAA;AAE/F,qBAAa,kBAAkB,CAAC,OAAO,SAAS,wBAAwB,GAAG,wBAAwB,CACjG,SAAQ,eAAe,CAAC,OAAO,CAC/B,YAAW,aAAa;IACxB,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAA2D;IAC3G,gBAAyB,mBAAmB,EAAE,MAAM,CAAiC;IACrF,OAAgB,YAAY,EAAE,MAAM,CAAoB;cAE/B,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAIjF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EthereumGasDiviner } from './Diviner.ts';
|
|
2
|
+
export declare const EthereumGasPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetDivinerPlugin<EthereumGasDiviner<import(".store/@xylabs-object-npm-4.0.4-83706dfe17/package").BaseParamsFields & {
|
|
3
|
+
account?: import(".store/@xyo-network-account-model-virtual-6a37ef4f2d/package").AccountInstance | "random";
|
|
4
|
+
addToResolvers?: boolean;
|
|
5
|
+
additionalSigners?: import(".store/@xyo-network-account-model-virtual-6a37ef4f2d/package").AccountInstance[];
|
|
6
|
+
allowNameResolution?: boolean;
|
|
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
|
+
schema: "network.xyo.blockchain.ethereum.gas.diviner.config";
|
|
9
|
+
} & {
|
|
10
|
+
schema: import("./Schema.ts").EthereumGasDivinerConfigSchema;
|
|
11
|
+
}, "schema"> & {
|
|
12
|
+
schema: "network.xyo.blockchain.ethereum.gas.diviner.config";
|
|
13
|
+
}, "schema"> & {
|
|
14
|
+
schema: string;
|
|
15
|
+
};
|
|
16
|
+
ephemeralQueryAccountEnabled?: boolean;
|
|
17
|
+
moduleIdentifierTransformers?: import("@xyo-network/module-model").ModuleIdentifierTransformer[];
|
|
18
|
+
}>>;
|
|
19
|
+
//# sourceMappingURL=Plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;GAQ3B,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type EthereumGasDivinerQuerySchema = 'network.xyo.blockchain.ethereum.gas.diviner.query';
|
|
2
|
+
export declare const EthereumGasDivinerQuerySchema: EthereumGasDivinerQuerySchema;
|
|
3
|
+
export type EthereumGasDivinerConfigSchema = 'network.xyo.blockchain.ethereum.gas.diviner.config';
|
|
4
|
+
export declare const EthereumGasDivinerConfigSchema: EthereumGasDivinerConfigSchema;
|
|
5
|
+
//# sourceMappingURL=Schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,6BAA6B,GAAG,mDAAmD,CAAA;AAC/F,eAAO,MAAM,6BAA6B,EAAE,6BAAmF,CAAA;AAE/H,MAAM,MAAM,8BAA8B,GAAG,oDAAoD,CAAA;AACjG,eAAO,MAAM,8BAA8B,EAAE,8BAAqF,CAAA"}
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1,45 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import * as _xyo_network_payload_model from '@xyo-network/payload-model';
|
|
6
|
-
import { Schema, Payload } from '@xyo-network/payload-model';
|
|
7
|
-
import * as _xyo_network_payloadset_plugin from '@xyo-network/payloadset-plugin';
|
|
8
|
-
import * as _store__xyo_network_account_model_virtual_e036bb1dc5_package from '.store/@xyo-network-account-model-virtual-e036bb1dc5/package';
|
|
9
|
-
import * as _store__xylabs_object_npm_4_0_2_c4743812cc_package from '.store/@xylabs-object-npm-4.0.2-c4743812cc/package';
|
|
10
|
-
|
|
11
|
-
type EthereumGasDivinerQuerySchema = 'network.xyo.blockchain.ethereum.gas.diviner.query';
|
|
12
|
-
declare const EthereumGasDivinerQuerySchema: EthereumGasDivinerQuerySchema;
|
|
13
|
-
type EthereumGasDivinerConfigSchema = 'network.xyo.blockchain.ethereum.gas.diviner.config';
|
|
14
|
-
declare const EthereumGasDivinerConfigSchema: EthereumGasDivinerConfigSchema;
|
|
15
|
-
|
|
16
|
-
type EthereumGasDivinerConfig = DivinerConfig<{
|
|
17
|
-
schema: EthereumGasDivinerConfigSchema;
|
|
18
|
-
}>;
|
|
19
|
-
type EthereumGasDivinerParams = DivinerParams<AnyConfigSchema<EthereumGasDivinerConfig>>;
|
|
20
|
-
declare class EthereumGasDiviner<TParams extends EthereumGasDivinerParams = EthereumGasDivinerParams> extends AbstractDiviner<TParams> implements DivinerModule {
|
|
21
|
-
static readonly configSchemas: Schema[];
|
|
22
|
-
static readonly defaultConfigSchema: Schema;
|
|
23
|
-
static targetSchema: string;
|
|
24
|
-
protected divineHandler(payloads?: Payload[]): Promise<Payload[]>;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
declare const EthereumGasPlugin: () => _xyo_network_payloadset_plugin.PayloadSetDivinerPlugin<EthereumGasDiviner<_store__xylabs_object_npm_4_0_2_c4743812cc_package.BaseParamsFields & {
|
|
28
|
-
account?: _store__xyo_network_account_model_virtual_e036bb1dc5_package.AccountInstance | "random";
|
|
29
|
-
addToResolvers?: boolean;
|
|
30
|
-
additionalSigners?: _store__xyo_network_account_model_virtual_e036bb1dc5_package.AccountInstance[];
|
|
31
|
-
allowNameResolution?: boolean;
|
|
32
|
-
config: _xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & Omit<_xyo_network_module_model.ArchivingModuleConfig & _xyo_network_module_model.ModuleConfigFields & _xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & Omit<_xyo_network_module_model.ArchivingModuleConfig & _xyo_network_module_model.ModuleConfigFields & {
|
|
33
|
-
schema: "network.xyo.blockchain.ethereum.gas.diviner.config";
|
|
34
|
-
} & {
|
|
35
|
-
schema: EthereumGasDivinerConfigSchema;
|
|
36
|
-
}, "schema"> & {
|
|
37
|
-
schema: "network.xyo.blockchain.ethereum.gas.diviner.config";
|
|
38
|
-
}, "schema"> & {
|
|
39
|
-
schema: string;
|
|
40
|
-
};
|
|
41
|
-
ephemeralQueryAccountEnabled?: boolean;
|
|
42
|
-
moduleIdentifierTransformers?: _xyo_network_module_model.ModuleIdentifierTransformer[];
|
|
43
|
-
}>>;
|
|
44
|
-
|
|
45
|
-
export { EthereumGasDiviner, type EthereumGasDivinerConfig, EthereumGasDivinerConfigSchema, type EthereumGasDivinerParams, EthereumGasDivinerQuerySchema, EthereumGasPlugin, EthereumGasPlugin as default };
|
|
1
|
+
export * from './Diviner.ts';
|
|
2
|
+
export { EthereumGasPlugin as default, EthereumGasPlugin } from './Plugin.ts';
|
|
3
|
+
export * from './Schema.ts';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAE5B,OAAO,EAAE,iBAAiB,IAAI,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC7E,cAAc,aAAa,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -105,23 +105,41 @@ var transformGasFromBlocknative = (payload) => {
|
|
|
105
105
|
const baseFee = getBaseFee(payload);
|
|
106
106
|
const feePerGas = getFeePerGas(payload);
|
|
107
107
|
const priorityFeePerGas = getPriorityFeePerGas(payload);
|
|
108
|
-
return {
|
|
108
|
+
return {
|
|
109
|
+
baseFee,
|
|
110
|
+
feePerGas,
|
|
111
|
+
priorityFeePerGas
|
|
112
|
+
};
|
|
109
113
|
};
|
|
110
114
|
|
|
111
115
|
// src/lib/transforms/transformGasFromEtherchainV2.ts
|
|
112
116
|
var getFeePerGas2 = (payload) => {
|
|
113
|
-
const {
|
|
117
|
+
const {
|
|
118
|
+
slow,
|
|
119
|
+
standard,
|
|
120
|
+
fast,
|
|
121
|
+
rapid
|
|
122
|
+
} = payload.data;
|
|
114
123
|
const low = slow / 1e9;
|
|
115
124
|
const medium = standard / 1e9;
|
|
116
125
|
const high = fast / 1e9;
|
|
117
126
|
const veryHigh = rapid / 1e9;
|
|
118
|
-
return {
|
|
127
|
+
return {
|
|
128
|
+
high,
|
|
129
|
+
low,
|
|
130
|
+
medium,
|
|
131
|
+
veryHigh
|
|
132
|
+
};
|
|
119
133
|
};
|
|
120
134
|
var transformGasFromEtherchainV2 = (payload) => {
|
|
121
135
|
const baseFee = void 0;
|
|
122
136
|
const feePerGas = getFeePerGas2(payload);
|
|
123
137
|
const priorityFeePerGas = {};
|
|
124
|
-
return {
|
|
138
|
+
return {
|
|
139
|
+
baseFee,
|
|
140
|
+
feePerGas,
|
|
141
|
+
priorityFeePerGas
|
|
142
|
+
};
|
|
125
143
|
};
|
|
126
144
|
|
|
127
145
|
// src/lib/transforms/transformGasFromEthers.ts
|
|
@@ -143,7 +161,11 @@ var transformGasFromEthers = (payload) => {
|
|
|
143
161
|
const baseFee = getBaseFee2(payload);
|
|
144
162
|
const feePerGas = getFeePerGas3(payload);
|
|
145
163
|
const priorityFeePerGas = getPriorityFeePerGas2(payload);
|
|
146
|
-
return {
|
|
164
|
+
return {
|
|
165
|
+
baseFee,
|
|
166
|
+
feePerGas,
|
|
167
|
+
priorityFeePerGas
|
|
168
|
+
};
|
|
147
169
|
};
|
|
148
170
|
|
|
149
171
|
// src/lib/transforms/transformGasFromEtherscan.ts
|
|
@@ -153,7 +175,11 @@ var getBaseFee3 = (payload) => {
|
|
|
153
175
|
return Number.parseFloat(suggestBaseFee);
|
|
154
176
|
};
|
|
155
177
|
var getFeePerGas4 = (payload) => {
|
|
156
|
-
const {
|
|
178
|
+
const {
|
|
179
|
+
FastGasPrice,
|
|
180
|
+
ProposeGasPrice,
|
|
181
|
+
SafeGasPrice
|
|
182
|
+
} = payload.result;
|
|
157
183
|
const low = Number.parseFloat(SafeGasPrice);
|
|
158
184
|
const medium = Number.parseFloat(ProposeGasPrice);
|
|
159
185
|
const high = Number.parseFloat(FastGasPrice);
|
|
@@ -162,13 +188,22 @@ var getFeePerGas4 = (payload) => {
|
|
|
162
188
|
[1, medium],
|
|
163
189
|
[2, high]
|
|
164
190
|
]).predict(3)[1];
|
|
165
|
-
return {
|
|
191
|
+
return {
|
|
192
|
+
high,
|
|
193
|
+
low,
|
|
194
|
+
medium,
|
|
195
|
+
veryHigh
|
|
196
|
+
};
|
|
166
197
|
};
|
|
167
198
|
var transformGasFromEtherscan = (payload) => {
|
|
168
199
|
const baseFee = getBaseFee3(payload);
|
|
169
200
|
const feePerGas = getFeePerGas4(payload);
|
|
170
201
|
const priorityFeePerGas = {};
|
|
171
|
-
return {
|
|
202
|
+
return {
|
|
203
|
+
baseFee,
|
|
204
|
+
feePerGas,
|
|
205
|
+
priorityFeePerGas
|
|
206
|
+
};
|
|
172
207
|
};
|
|
173
208
|
|
|
174
209
|
// src/lib/transforms/transformGasFromEthgasstation.ts
|
|
@@ -178,30 +213,52 @@ var getBaseFee4 = (payload) => {
|
|
|
178
213
|
return baseFee;
|
|
179
214
|
};
|
|
180
215
|
var getFeePerGas5 = (payload) => {
|
|
181
|
-
const {
|
|
216
|
+
const {
|
|
217
|
+
standard: medium,
|
|
218
|
+
fast: high,
|
|
219
|
+
instant: veryHigh
|
|
220
|
+
} = payload.gasPrice;
|
|
182
221
|
const trend = linear3([
|
|
183
222
|
[1, medium],
|
|
184
223
|
[2, high],
|
|
185
224
|
[3, veryHigh]
|
|
186
225
|
]);
|
|
187
226
|
const low = trend.predict(0)[1];
|
|
188
|
-
return {
|
|
227
|
+
return {
|
|
228
|
+
low,
|
|
229
|
+
medium,
|
|
230
|
+
high,
|
|
231
|
+
veryHigh
|
|
232
|
+
};
|
|
189
233
|
};
|
|
190
234
|
var getPriorityFeePerGas3 = (payload) => {
|
|
191
|
-
const {
|
|
235
|
+
const {
|
|
236
|
+
standard: medium,
|
|
237
|
+
fast: high,
|
|
238
|
+
instant: veryHigh
|
|
239
|
+
} = payload.priorityFee;
|
|
192
240
|
const trend = linear3([
|
|
193
241
|
[1, medium],
|
|
194
242
|
[2, high],
|
|
195
243
|
[3, veryHigh]
|
|
196
244
|
]);
|
|
197
245
|
const low = trend.predict(0)[1];
|
|
198
|
-
return {
|
|
246
|
+
return {
|
|
247
|
+
low,
|
|
248
|
+
medium,
|
|
249
|
+
high,
|
|
250
|
+
veryHigh
|
|
251
|
+
};
|
|
199
252
|
};
|
|
200
253
|
var transformGasFromEthgasstation = (payload) => {
|
|
201
254
|
const baseFee = getBaseFee4(payload);
|
|
202
255
|
const feePerGas = getFeePerGas5(payload);
|
|
203
256
|
const priorityFeePerGas = getPriorityFeePerGas3(payload);
|
|
204
|
-
return {
|
|
257
|
+
return {
|
|
258
|
+
baseFee,
|
|
259
|
+
feePerGas,
|
|
260
|
+
priorityFeePerGas
|
|
261
|
+
};
|
|
205
262
|
};
|
|
206
263
|
|
|
207
264
|
// src/lib/divineGas.ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Diviner.ts","../../src/lib/divineGas.ts","../../src/lib/average.ts","../../src/lib/identities/isEthereumGasBlocknativePayload.ts","../../src/lib/identities/isEthereumGasEtherchainV2Payload.ts","../../src/lib/identities/isEthereumGasEtherscanPayload.ts","../../src/lib/identities/isEthereumGasEthersPayload.ts","../../src/lib/identities/isEthereumGasEthgasstationPayload.ts","../../src/lib/transforms/transformGasFromBlocknative.ts","../../src/lib/transforms/transformGasFromEtherchainV2.ts","../../src/lib/transforms/transformGasFromEthers.ts","../../src/lib/transforms/transformGasFromEtherscan.ts","../../src/lib/transforms/transformGasFromEthgasstation.ts","../../src/Schema.ts","../../src/Plugin.ts"],"sourcesContent":["import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport type { DivinerConfig, DivinerModule, DivinerParams } from '@xyo-network/diviner-model'\nimport { EthereumGasSchema } from '@xyo-network/gas-price-payload-plugin'\nimport type { AnyConfigSchema } from '@xyo-network/module-model'\nimport type { 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 type { EthereumGasPayload, FeeData } from '@xyo-network/gas-price-payload-plugin'\nimport { EthereumGasSchema } from '@xyo-network/gas-price-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { 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 type { 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 type { EthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'\nimport { EthereumGasBlocknativeSchema } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasBlocknativePayload = (payload?: Payload | null): payload is EthereumGasBlocknativePayload => {\n return payload?.schema === EthereumGasBlocknativeSchema\n}\n","import type { EthereumGasEtherchainV2Payload } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins'\nimport { EthereumGasEtherchainV2Schema } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEtherchainV2Payload = (payload?: Payload | null): payload is EthereumGasEtherchainV2Payload => {\n return payload?.schema === EthereumGasEtherchainV2Schema\n}\n","import type { EthereumGasEtherscanPayload } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'\nimport { EthereumGasEtherscanSchema } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEtherscanPayload = (payload?: Payload | null): payload is EthereumGasEtherscanPayload => {\n return payload?.schema === EthereumGasEtherscanSchema\n}\n","import type { EthereumGasEthersPayload } from '@xyo-network/ethers-ethereum-gas-payload-plugin'\nimport { EthereumGasEthersSchema } from '@xyo-network/ethers-ethereum-gas-payload-plugin'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEthersPayload = (payload?: Payload | null): payload is EthereumGasEthersPayload => {\n return payload?.schema === EthereumGasEthersSchema\n}\n","import type { EthereumGasEthgasstationPayload } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin'\nimport { EthereumGasEthgasstationSchema } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEthgasstationPayload = (payload?: Payload | null): payload is EthereumGasEthgasstationPayload => {\n return payload?.schema === EthereumGasEthgasstationSchema\n}\n","import type { EthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'\nimport type { 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 type { EthereumGasEtherchainV2Payload } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins'\nimport type { 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 type { EthereumGasEthersPayload } from '@xyo-network/ethers-ethereum-gas-payload-plugin'\nimport type { 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 type { EthereumGasEtherscanPayload } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'\nimport type { 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 type { EthereumGasEthgasstationPayload } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin'\nimport type { FeeData, FeePerGas, PriorityFeePerGas } from '@xyo-network/gas-price-payload-plugin'\nimport { linear } from 'regression'\n\nconst getBaseFee = (payload: EthereumGasEthgasstationPayload): number | undefined => {\n const { baseFee } = payload\n return baseFee\n}\n\nconst getFeePerGas = (payload: EthereumGasEthgasstationPayload): Partial<FeePerGas> => {\n const { standard: medium, fast: high, instant: veryHigh } = payload.gasPrice\n const trend = linear([\n [1, medium],\n [2, high],\n [3, veryHigh],\n ])\n const low = trend.predict(0)[1]\n return { low, medium, high, veryHigh }\n}\n\nconst getPriorityFeePerGas = (payload: EthereumGasEthgasstationPayload): Partial<PriorityFeePerGas> => {\n const { standard: medium, fast: high, instant: veryHigh } = payload.priorityFee\n const trend = linear([\n [1, medium],\n [2, high],\n [3, veryHigh],\n ])\n const low = trend.predict(0)[1]\n return { low, medium, high, veryHigh }\n}\n\nexport const transformGasFromEthgasstation = (payload: EthereumGasEthgasstationPayload): FeeData => {\n const baseFee = getBaseFee(payload)\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = getPriorityFeePerGas(payload)\n return { baseFee, feePerGas, priorityFeePerGas }\n}\n","export type EthereumGasDivinerQuerySchema = 'network.xyo.blockchain.ethereum.gas.diviner.query'\nexport const EthereumGasDivinerQuerySchema: EthereumGasDivinerQuerySchema = 'network.xyo.blockchain.ethereum.gas.diviner.query'\n\nexport type EthereumGasDivinerConfigSchema = 'network.xyo.blockchain.ethereum.gas.diviner.config'\nexport const EthereumGasDivinerConfigSchema: EthereumGasDivinerConfigSchema = 'network.xyo.blockchain.ethereum.gas.diviner.config'\n","import { EthereumGasSchema } from '@xyo-network/gas-price-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { EthereumGasDiviner } from './Diviner.ts'\n\nexport const EthereumGasPlugin = () =>\n createPayloadSetDivinerPlugin<EthereumGasDiviner>(\n { required: { [EthereumGasSchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await EthereumGasDiviner.create(params)) as EthereumGasDiviner\n },\n },\n )\n"],"mappings":"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","names":["EthereumGasSchema","getFeePerGas","getBaseFee","getFeePerGas","getPriorityFeePerGas","linear","getBaseFee","getFeePerGas","linear","getBaseFee","getFeePerGas","getPriorityFeePerGas","EthereumGasSchema","EthereumGasSchema","EthereumGasSchema"]}
|
|
1
|
+
{"version":3,"sources":["../../src/Diviner.ts","../../src/lib/divineGas.ts","../../src/lib/average.ts","../../src/lib/identities/isEthereumGasBlocknativePayload.ts","../../src/lib/identities/isEthereumGasEtherchainV2Payload.ts","../../src/lib/identities/isEthereumGasEtherscanPayload.ts","../../src/lib/identities/isEthereumGasEthersPayload.ts","../../src/lib/identities/isEthereumGasEthgasstationPayload.ts","../../src/lib/transforms/transformGasFromBlocknative.ts","../../src/lib/transforms/transformGasFromEtherchainV2.ts","../../src/lib/transforms/transformGasFromEthers.ts","../../src/lib/transforms/transformGasFromEtherscan.ts","../../src/lib/transforms/transformGasFromEthgasstation.ts","../../src/Schema.ts","../../src/Plugin.ts"],"sourcesContent":["import { AbstractDiviner } from '@xyo-network/diviner-abstract'\nimport type {\n DivinerConfig, DivinerModule, DivinerParams,\n} from '@xyo-network/diviner-model'\nimport { EthereumGasSchema } from '@xyo-network/gas-price-payload-plugin'\nimport type { AnyConfigSchema } from '@xyo-network/module-model'\nimport type { 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 type { EthereumGasPayload, FeeData } from '@xyo-network/gas-price-payload-plugin'\nimport { EthereumGasSchema } from '@xyo-network/gas-price-payload-plugin'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { 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 type { 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 type { EthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'\nimport { EthereumGasBlocknativeSchema } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasBlocknativePayload = (payload?: Payload | null): payload is EthereumGasBlocknativePayload => {\n return payload?.schema === EthereumGasBlocknativeSchema\n}\n","import type { EthereumGasEtherchainV2Payload } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins'\nimport { EthereumGasEtherchainV2Schema } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEtherchainV2Payload = (payload?: Payload | null): payload is EthereumGasEtherchainV2Payload => {\n return payload?.schema === EthereumGasEtherchainV2Schema\n}\n","import type { EthereumGasEtherscanPayload } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'\nimport { EthereumGasEtherscanSchema } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEtherscanPayload = (payload?: Payload | null): payload is EthereumGasEtherscanPayload => {\n return payload?.schema === EthereumGasEtherscanSchema\n}\n","import type { EthereumGasEthersPayload } from '@xyo-network/ethers-ethereum-gas-payload-plugin'\nimport { EthereumGasEthersSchema } from '@xyo-network/ethers-ethereum-gas-payload-plugin'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEthersPayload = (payload?: Payload | null): payload is EthereumGasEthersPayload => {\n return payload?.schema === EthereumGasEthersSchema\n}\n","import type { EthereumGasEthgasstationPayload } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin'\nimport { EthereumGasEthgasstationSchema } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const isEthereumGasEthgasstationPayload = (payload?: Payload | null): payload is EthereumGasEthgasstationPayload => {\n return payload?.schema === EthereumGasEthgasstationSchema\n}\n","import type { EthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'\nimport type {\n FeeData, FeePerGas, PriorityFeePerGas,\n} 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 {\n baseFee, feePerGas, priorityFeePerGas,\n }\n}\n","import type { EthereumGasEtherchainV2Payload } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins'\nimport type { FeeData, FeePerGas } from '@xyo-network/gas-price-payload-plugin'\n\nconst getFeePerGas = (payload: EthereumGasEtherchainV2Payload): Partial<FeePerGas> => {\n const {\n slow, standard, fast, rapid,\n } = 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 {\n high, low, medium, veryHigh,\n }\n}\n\nexport const transformGasFromEtherchainV2 = (payload: EthereumGasEtherchainV2Payload): FeeData => {\n const baseFee = undefined\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = {}\n return {\n baseFee, feePerGas, priorityFeePerGas,\n }\n}\n","import type { EthereumGasEthersPayload } from '@xyo-network/ethers-ethereum-gas-payload-plugin'\nimport type {\n FeeData, FeePerGas, PriorityFeePerGas,\n} 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 {\n baseFee, feePerGas, priorityFeePerGas,\n }\n}\n","import type { EthereumGasEtherscanPayload } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'\nimport type { 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 {\n FastGasPrice, ProposeGasPrice, SafeGasPrice,\n } = 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 {\n high, low, medium, veryHigh,\n }\n}\n\nexport const transformGasFromEtherscan = (payload: EthereumGasEtherscanPayload): FeeData => {\n const baseFee = getBaseFee(payload)\n const feePerGas = getFeePerGas(payload)\n const priorityFeePerGas = {}\n return {\n baseFee, feePerGas, priorityFeePerGas,\n }\n}\n","import type { EthereumGasEthgasstationPayload } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin'\nimport type {\n FeeData, FeePerGas, PriorityFeePerGas,\n} 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 {\n standard: medium, fast: high, instant: veryHigh,\n } = 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 {\n low, medium, high, veryHigh,\n }\n}\n\nconst getPriorityFeePerGas = (payload: EthereumGasEthgasstationPayload): Partial<PriorityFeePerGas> => {\n const {\n standard: medium, fast: high, instant: veryHigh,\n } = 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 {\n low, medium, high, veryHigh,\n }\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 {\n baseFee, feePerGas, priorityFeePerGas,\n }\n}\n","export type EthereumGasDivinerQuerySchema = 'network.xyo.blockchain.ethereum.gas.diviner.query'\nexport const EthereumGasDivinerQuerySchema: EthereumGasDivinerQuerySchema = 'network.xyo.blockchain.ethereum.gas.diviner.query'\n\nexport type EthereumGasDivinerConfigSchema = 'network.xyo.blockchain.ethereum.gas.diviner.config'\nexport const EthereumGasDivinerConfigSchema: EthereumGasDivinerConfigSchema = 'network.xyo.blockchain.ethereum.gas.diviner.config'\n","import { EthereumGasSchema } from '@xyo-network/gas-price-payload-plugin'\nimport { PayloadSetSchema } from '@xyo-network/payload-model'\nimport { createPayloadSetDivinerPlugin } from '@xyo-network/payloadset-plugin'\n\nimport { EthereumGasDiviner } from './Diviner.ts'\n\nexport const EthereumGasPlugin = () =>\n createPayloadSetDivinerPlugin<EthereumGasDiviner>(\n { required: { [EthereumGasSchema]: 1 }, schema: PayloadSetSchema },\n {\n diviner: async (params) => {\n return (await EthereumGasDiviner.create(params)) as EthereumGasDiviner\n },\n },\n )\n"],"mappings":"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","names":["EthereumGasSchema","getFeePerGas","getBaseFee","getFeePerGas","getPriorityFeePerGas","linear","getBaseFee","getFeePerGas","linear","getBaseFee","getFeePerGas","getPriorityFeePerGas","EthereumGasSchema","EthereumGasSchema","EthereumGasSchema"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"average.d.ts","sourceRoot":"","sources":["../../../src/lib/average.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAA;AA2BpE,eAAO,MAAM,OAAO,WAAY,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,KAAG,OAkBzD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"divineGas.d.ts","sourceRoot":"","sources":["../../../src/lib/divineGas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAW,MAAM,uCAAuC,CAAA;AAGxF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAkBzD,eAAO,MAAM,SAAS,aAAoB,OAAO,EAAE,KAAG,OAAO,CAAC,kBAAkB,CAW/E,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './isEthereumGasBlocknativePayload.ts';
|
|
2
|
+
export * from './isEthereumGasEtherchainV2Payload.ts';
|
|
3
|
+
export * from './isEthereumGasEtherscanPayload.ts';
|
|
4
|
+
export * from './isEthereumGasEthersPayload.ts';
|
|
5
|
+
export * from './isEthereumGasEthgasstationPayload.ts';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/identities/index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAA;AACpD,cAAc,uCAAuC,CAAA;AACrD,cAAc,oCAAoC,CAAA;AAClD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin';
|
|
2
|
+
import type { Payload } from '@xyo-network/payload-model';
|
|
3
|
+
export declare const isEthereumGasBlocknativePayload: (payload?: Payload | null) => payload is EthereumGasBlocknativePayload;
|
|
4
|
+
//# sourceMappingURL=isEthereumGasBlocknativePayload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEthereumGasBlocknativePayload.d.ts","sourceRoot":"","sources":["../../../../src/lib/identities/isEthereumGasBlocknativePayload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sDAAsD,CAAA;AAEzG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,eAAO,MAAM,+BAA+B,aAAc,OAAO,GAAG,IAAI,KAAG,OAAO,IAAI,6BAErF,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EthereumGasEtherchainV2Payload } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins';
|
|
2
|
+
import type { Payload } from '@xyo-network/payload-model';
|
|
3
|
+
export declare const isEthereumGasEtherchainV2Payload: (payload?: Payload | null) => payload is EthereumGasEtherchainV2Payload;
|
|
4
|
+
//# sourceMappingURL=isEthereumGasEtherchainV2Payload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEthereumGasEtherchainV2Payload.d.ts","sourceRoot":"","sources":["../../../../src/lib/identities/isEthereumGasEtherchainV2Payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iEAAiE,CAAA;AAErH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,eAAO,MAAM,gCAAgC,aAAc,OAAO,GAAG,IAAI,KAAG,OAAO,IAAI,8BAEtF,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EthereumGasEthersPayload } from '@xyo-network/ethers-ethereum-gas-payload-plugin';
|
|
2
|
+
import type { Payload } from '@xyo-network/payload-model';
|
|
3
|
+
export declare const isEthereumGasEthersPayload: (payload?: Payload | null) => payload is EthereumGasEthersPayload;
|
|
4
|
+
//# sourceMappingURL=isEthereumGasEthersPayload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEthereumGasEthersPayload.d.ts","sourceRoot":"","sources":["../../../../src/lib/identities/isEthereumGasEthersPayload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAA;AAE/F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,eAAO,MAAM,0BAA0B,aAAc,OAAO,GAAG,IAAI,KAAG,OAAO,IAAI,wBAEhF,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EthereumGasEtherscanPayload } from '@xyo-network/etherscan-ethereum-gas-payload-plugin';
|
|
2
|
+
import type { Payload } from '@xyo-network/payload-model';
|
|
3
|
+
export declare const isEthereumGasEtherscanPayload: (payload?: Payload | null) => payload is EthereumGasEtherscanPayload;
|
|
4
|
+
//# sourceMappingURL=isEthereumGasEtherscanPayload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEthereumGasEtherscanPayload.d.ts","sourceRoot":"","sources":["../../../../src/lib/identities/isEthereumGasEtherscanPayload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAA;AAErG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,eAAO,MAAM,6BAA6B,aAAc,OAAO,GAAG,IAAI,KAAG,OAAO,IAAI,2BAEnF,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EthereumGasEthgasstationPayload } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin';
|
|
2
|
+
import type { Payload } from '@xyo-network/payload-model';
|
|
3
|
+
export declare const isEthereumGasEthgasstationPayload: (payload?: Payload | null) => payload is EthereumGasEthgasstationPayload;
|
|
4
|
+
//# sourceMappingURL=isEthereumGasEthgasstationPayload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEthereumGasEthgasstationPayload.d.ts","sourceRoot":"","sources":["../../../../src/lib/identities/isEthereumGasEthgasstationPayload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAA;AAE7G,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,eAAO,MAAM,iCAAiC,aAAc,OAAO,GAAG,IAAI,KAAG,OAAO,IAAI,+BAEvF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './transformGasFromBlocknative.ts';
|
|
2
|
+
export * from './transformGasFromEtherchainV2.ts';
|
|
3
|
+
export * from './transformGasFromEthers.ts';
|
|
4
|
+
export * from './transformGasFromEtherscan.ts';
|
|
5
|
+
export * from './transformGasFromEthgasstation.ts';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/transforms/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oCAAoC,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin';
|
|
2
|
+
import type { FeeData } from '@xyo-network/gas-price-payload-plugin';
|
|
3
|
+
export declare const transformGasFromBlocknative: (payload: EthereumGasBlocknativePayload) => FeeData;
|
|
4
|
+
//# sourceMappingURL=transformGasFromBlocknative.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformGasFromBlocknative.d.ts","sourceRoot":"","sources":["../../../../src/lib/transforms/transformGasFromBlocknative.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sDAAsD,CAAA;AACzG,OAAO,KAAK,EACV,OAAO,EACR,MAAM,uCAAuC,CAAA;AA2C9C,eAAO,MAAM,2BAA2B,YAAa,6BAA6B,KAAG,OAOpF,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EthereumGasEtherchainV2Payload } from '@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins';
|
|
2
|
+
import type { FeeData } from '@xyo-network/gas-price-payload-plugin';
|
|
3
|
+
export declare const transformGasFromEtherchainV2: (payload: EthereumGasEtherchainV2Payload) => FeeData;
|
|
4
|
+
//# sourceMappingURL=transformGasFromEtherchainV2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformGasFromEtherchainV2.d.ts","sourceRoot":"","sources":["../../../../src/lib/transforms/transformGasFromEtherchainV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iEAAiE,CAAA;AACrH,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,uCAAuC,CAAA;AAe/E,eAAO,MAAM,4BAA4B,YAAa,8BAA8B,KAAG,OAOtF,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EthereumGasEthersPayload } from '@xyo-network/ethers-ethereum-gas-payload-plugin';
|
|
2
|
+
import type { FeeData } from '@xyo-network/gas-price-payload-plugin';
|
|
3
|
+
export declare const transformGasFromEthers: (payload: EthereumGasEthersPayload) => FeeData;
|
|
4
|
+
//# sourceMappingURL=transformGasFromEthers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformGasFromEthers.d.ts","sourceRoot":"","sources":["../../../../src/lib/transforms/transformGasFromEthers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAA;AAC/F,OAAO,KAAK,EACV,OAAO,EACR,MAAM,uCAAuC,CAAA;AAmB9C,eAAO,MAAM,sBAAsB,YAAa,wBAAwB,KAAG,OAO1E,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EthereumGasEtherscanPayload } from '@xyo-network/etherscan-ethereum-gas-payload-plugin';
|
|
2
|
+
import type { FeeData } from '@xyo-network/gas-price-payload-plugin';
|
|
3
|
+
export declare const transformGasFromEtherscan: (payload: EthereumGasEtherscanPayload) => FeeData;
|
|
4
|
+
//# sourceMappingURL=transformGasFromEtherscan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformGasFromEtherscan.d.ts","sourceRoot":"","sources":["../../../../src/lib/transforms/transformGasFromEtherscan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAA;AACrG,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,uCAAuC,CAAA;AAyB/E,eAAO,MAAM,yBAAyB,YAAa,2BAA2B,KAAG,OAOhF,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EthereumGasEthgasstationPayload } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin';
|
|
2
|
+
import type { FeeData } from '@xyo-network/gas-price-payload-plugin';
|
|
3
|
+
export declare const transformGasFromEthgasstation: (payload: EthereumGasEthgasstationPayload) => FeeData;
|
|
4
|
+
//# sourceMappingURL=transformGasFromEthgasstation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformGasFromEthgasstation.d.ts","sourceRoot":"","sources":["../../../../src/lib/transforms/transformGasFromEthgasstation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAA;AAC7G,OAAO,KAAK,EACV,OAAO,EACR,MAAM,uCAAuC,CAAA;AAsC9C,eAAO,MAAM,6BAA6B,YAAa,+BAA+B,KAAG,OAOxF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/test/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampleBlocknativeGas.d.ts","sourceRoot":"","sources":["../../../src/test/sampleBlocknativeGas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,6BAA6B,EAAE,MAAM,sDAAsD,CAAA;AAG3H,eAAO,MAAM,oBAAoB,EAAE,6BA0FlC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampleEtherchainGasV2.d.ts","sourceRoot":"","sources":["../../../src/test/sampleEtherchainGasV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iEAAiE,CAAA;AAGrH,eAAO,MAAM,qBAAqB,EAAE,8BAYnC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampleEthersGas.d.ts","sourceRoot":"","sources":["../../../src/test/sampleEthersGas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAA;AAG/F,eAAO,MAAM,eAAe,EAAE,wBAM7B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampleEtherscanGas.d.ts","sourceRoot":"","sources":["../../../src/test/sampleEtherscanGas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAA;AAGrG,eAAO,MAAM,kBAAkB,EAAE,2BAahC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampleEthgasstationGas.d.ts","sourceRoot":"","sources":["../../../src/test/sampleEthgasstationGas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAA;AAG7G,eAAO,MAAM,sBAAsB,EAAE,+BAiBpC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,43 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/gas-price-plugin",
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"url": "https://xyo.network"
|
|
7
|
-
},
|
|
3
|
+
"version": "3.0.4",
|
|
4
|
+
"description": "Typescript/Javascript Plugins for XYO Platform",
|
|
5
|
+
"homepage": "https://xyo.network",
|
|
8
6
|
"bugs": {
|
|
9
|
-
"
|
|
10
|
-
"
|
|
7
|
+
"url": "git+https://github.com/XYOracleNetwork/plugins/issues",
|
|
8
|
+
"email": "support@xyo.network"
|
|
11
9
|
},
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"@xyo-network/diviner-abstract": "^3.0.3",
|
|
16
|
-
"@xyo-network/diviner-model": "^3.0.3",
|
|
17
|
-
"@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins": "^3.0.3",
|
|
18
|
-
"@xyo-network/ethers-ethereum-gas-payload-plugin": "^3.0.3",
|
|
19
|
-
"@xyo-network/etherscan-ethereum-gas-payload-plugin": "^3.0.3",
|
|
20
|
-
"@xyo-network/ethgasstation-ethereum-gas-payload-plugin": "^3.0.3",
|
|
21
|
-
"@xyo-network/gas-price-payload-plugin": "^3.0.3",
|
|
22
|
-
"@xyo-network/module-model": "^3.0.3",
|
|
23
|
-
"@xyo-network/payload-builder": "^3.0.3",
|
|
24
|
-
"@xyo-network/payload-model": "^3.0.3",
|
|
25
|
-
"@xyo-network/payloadset-plugin": "^3.0.3",
|
|
26
|
-
"regression": "^2.0.1"
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/XYOracleNetwork/plugins.git"
|
|
27
13
|
},
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"@xyo-network/etherchain-gas-ethereum-blockchain-plugins": "^3.0.3",
|
|
34
|
-
"@xyo-network/ethers-ethereum-gas-plugin": "^3.0.3",
|
|
35
|
-
"@xyo-network/etherscan-ethereum-gas-plugin": "^3.0.3",
|
|
36
|
-
"@xyo-network/witness-blockchain-abstract": "^3.0.3",
|
|
37
|
-
"typescript": "^5.5.4"
|
|
14
|
+
"license": "LGPL-3.0-only",
|
|
15
|
+
"author": {
|
|
16
|
+
"name": "XYO Development Team",
|
|
17
|
+
"email": "support@xyo.network",
|
|
18
|
+
"url": "https://xyo.network"
|
|
38
19
|
},
|
|
39
|
-
"
|
|
40
|
-
"
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"type": "module",
|
|
41
22
|
"exports": {
|
|
42
23
|
".": {
|
|
43
24
|
"types": "./dist/neutral/index.d.ts",
|
|
@@ -46,16 +27,35 @@
|
|
|
46
27
|
"./package.json": "./package.json"
|
|
47
28
|
},
|
|
48
29
|
"module": "dist/neutral/index.mjs",
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
"
|
|
30
|
+
"types": "dist/neutral/index.d.ts",
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@xylabs/exists": "^4.0.4",
|
|
33
|
+
"@xyo-network/blocknative-ethereum-gas-payload-plugin": "^3.0.4",
|
|
34
|
+
"@xyo-network/diviner-abstract": "^3.0.10",
|
|
35
|
+
"@xyo-network/diviner-model": "^3.0.10",
|
|
36
|
+
"@xyo-network/etherchain-gas-ethereum-blockchain-payload-plugins": "^3.0.4",
|
|
37
|
+
"@xyo-network/ethers-ethereum-gas-payload-plugin": "^3.0.4",
|
|
38
|
+
"@xyo-network/etherscan-ethereum-gas-payload-plugin": "^3.0.4",
|
|
39
|
+
"@xyo-network/ethgasstation-ethereum-gas-payload-plugin": "^3.0.4",
|
|
40
|
+
"@xyo-network/gas-price-payload-plugin": "^3.0.4",
|
|
41
|
+
"@xyo-network/module-model": "^3.0.10",
|
|
42
|
+
"@xyo-network/payload-builder": "^3.0.10",
|
|
43
|
+
"@xyo-network/payload-model": "^3.0.10",
|
|
44
|
+
"@xyo-network/payloadset-plugin": "^3.0.10",
|
|
45
|
+
"regression": "^2.0.1"
|
|
53
46
|
},
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@types/regression": "^2.0.6",
|
|
49
|
+
"@xylabs/ts-scripts-yarn3": "^4.0.7",
|
|
50
|
+
"@xylabs/tsconfig": "^4.0.7",
|
|
51
|
+
"@xyo-network/blocknative-ethereum-gas-plugin": "^3.0.4",
|
|
52
|
+
"@xyo-network/etherchain-gas-ethereum-blockchain-plugins": "^3.0.4",
|
|
53
|
+
"@xyo-network/ethers-ethereum-gas-plugin": "^3.0.4",
|
|
54
|
+
"@xyo-network/etherscan-ethereum-gas-plugin": "^3.0.4",
|
|
55
|
+
"@xyo-network/witness-blockchain-abstract": "^3.0.10",
|
|
56
|
+
"typescript": "^5.5.4"
|
|
57
57
|
},
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
"publishConfig": {
|
|
59
|
+
"access": "public"
|
|
60
|
+
}
|
|
61
61
|
}
|
package/src/Diviner.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { AbstractDiviner } from '@xyo-network/diviner-abstract'
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
DivinerConfig, DivinerModule, DivinerParams,
|
|
4
|
+
} from '@xyo-network/diviner-model'
|
|
3
5
|
import { EthereumGasSchema } from '@xyo-network/gas-price-payload-plugin'
|
|
4
6
|
import type { AnyConfigSchema } from '@xyo-network/module-model'
|
|
5
7
|
import type { Payload, Schema } from '@xyo-network/payload-model'
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { EthereumGasBlocknativePayload } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
FeeData, FeePerGas, PriorityFeePerGas,
|
|
4
|
+
} from '@xyo-network/gas-price-payload-plugin'
|
|
3
5
|
import { linear } from 'regression'
|
|
4
6
|
|
|
5
7
|
const getBaseFee = (payload: EthereumGasBlocknativePayload): number | undefined => {
|
|
@@ -46,5 +48,7 @@ export const transformGasFromBlocknative = (payload: EthereumGasBlocknativePaylo
|
|
|
46
48
|
const baseFee = getBaseFee(payload)
|
|
47
49
|
const feePerGas = getFeePerGas(payload)
|
|
48
50
|
const priorityFeePerGas = getPriorityFeePerGas(payload)
|
|
49
|
-
return {
|
|
51
|
+
return {
|
|
52
|
+
baseFee, feePerGas, priorityFeePerGas,
|
|
53
|
+
}
|
|
50
54
|
}
|
|
@@ -2,17 +2,23 @@ import type { EthereumGasEtherchainV2Payload } from '@xyo-network/etherchain-gas
|
|
|
2
2
|
import type { FeeData, FeePerGas } from '@xyo-network/gas-price-payload-plugin'
|
|
3
3
|
|
|
4
4
|
const getFeePerGas = (payload: EthereumGasEtherchainV2Payload): Partial<FeePerGas> => {
|
|
5
|
-
const {
|
|
5
|
+
const {
|
|
6
|
+
slow, standard, fast, rapid,
|
|
7
|
+
} = payload.data
|
|
6
8
|
const low = slow / 1_000_000_000
|
|
7
9
|
const medium = standard / 1_000_000_000
|
|
8
10
|
const high = fast / 1_000_000_000
|
|
9
11
|
const veryHigh = rapid / 1_000_000_000
|
|
10
|
-
return {
|
|
12
|
+
return {
|
|
13
|
+
high, low, medium, veryHigh,
|
|
14
|
+
}
|
|
11
15
|
}
|
|
12
16
|
|
|
13
17
|
export const transformGasFromEtherchainV2 = (payload: EthereumGasEtherchainV2Payload): FeeData => {
|
|
14
18
|
const baseFee = undefined
|
|
15
19
|
const feePerGas = getFeePerGas(payload)
|
|
16
20
|
const priorityFeePerGas = {}
|
|
17
|
-
return {
|
|
21
|
+
return {
|
|
22
|
+
baseFee, feePerGas, priorityFeePerGas,
|
|
23
|
+
}
|
|
18
24
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { EthereumGasEthersPayload } from '@xyo-network/ethers-ethereum-gas-payload-plugin'
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
FeeData, FeePerGas, PriorityFeePerGas,
|
|
4
|
+
} from '@xyo-network/gas-price-payload-plugin'
|
|
3
5
|
|
|
4
6
|
const getBaseFee = (payload: EthereumGasEthersPayload): number | undefined => {
|
|
5
7
|
const { gasPrice } = payload
|
|
@@ -22,5 +24,7 @@ export const transformGasFromEthers = (payload: EthereumGasEthersPayload): FeeDa
|
|
|
22
24
|
const baseFee = getBaseFee(payload)
|
|
23
25
|
const feePerGas = getFeePerGas(payload)
|
|
24
26
|
const priorityFeePerGas = getPriorityFeePerGas(payload)
|
|
25
|
-
return {
|
|
27
|
+
return {
|
|
28
|
+
baseFee, feePerGas, priorityFeePerGas,
|
|
29
|
+
}
|
|
26
30
|
}
|
|
@@ -8,7 +8,9 @@ const getBaseFee = (payload: EthereumGasEtherscanPayload): number | undefined =>
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
const getFeePerGas = (payload: EthereumGasEtherscanPayload): Partial<FeePerGas> => {
|
|
11
|
-
const {
|
|
11
|
+
const {
|
|
12
|
+
FastGasPrice, ProposeGasPrice, SafeGasPrice,
|
|
13
|
+
} = payload.result
|
|
12
14
|
const low = Number.parseFloat(SafeGasPrice)
|
|
13
15
|
const medium = Number.parseFloat(ProposeGasPrice)
|
|
14
16
|
const high = Number.parseFloat(FastGasPrice)
|
|
@@ -17,12 +19,16 @@ const getFeePerGas = (payload: EthereumGasEtherscanPayload): Partial<FeePerGas>
|
|
|
17
19
|
[1, medium],
|
|
18
20
|
[2, high],
|
|
19
21
|
]).predict(3)[1]
|
|
20
|
-
return {
|
|
22
|
+
return {
|
|
23
|
+
high, low, medium, veryHigh,
|
|
24
|
+
}
|
|
21
25
|
}
|
|
22
26
|
|
|
23
27
|
export const transformGasFromEtherscan = (payload: EthereumGasEtherscanPayload): FeeData => {
|
|
24
28
|
const baseFee = getBaseFee(payload)
|
|
25
29
|
const feePerGas = getFeePerGas(payload)
|
|
26
30
|
const priorityFeePerGas = {}
|
|
27
|
-
return {
|
|
31
|
+
return {
|
|
32
|
+
baseFee, feePerGas, priorityFeePerGas,
|
|
33
|
+
}
|
|
28
34
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { EthereumGasEthgasstationPayload } from '@xyo-network/ethgasstation-ethereum-gas-payload-plugin'
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
FeeData, FeePerGas, PriorityFeePerGas,
|
|
4
|
+
} from '@xyo-network/gas-price-payload-plugin'
|
|
3
5
|
import { linear } from 'regression'
|
|
4
6
|
|
|
5
7
|
const getBaseFee = (payload: EthereumGasEthgasstationPayload): number | undefined => {
|
|
@@ -8,30 +10,40 @@ const getBaseFee = (payload: EthereumGasEthgasstationPayload): number | undefine
|
|
|
8
10
|
}
|
|
9
11
|
|
|
10
12
|
const getFeePerGas = (payload: EthereumGasEthgasstationPayload): Partial<FeePerGas> => {
|
|
11
|
-
const {
|
|
13
|
+
const {
|
|
14
|
+
standard: medium, fast: high, instant: veryHigh,
|
|
15
|
+
} = payload.gasPrice
|
|
12
16
|
const trend = linear([
|
|
13
17
|
[1, medium],
|
|
14
18
|
[2, high],
|
|
15
19
|
[3, veryHigh],
|
|
16
20
|
])
|
|
17
21
|
const low = trend.predict(0)[1]
|
|
18
|
-
return {
|
|
22
|
+
return {
|
|
23
|
+
low, medium, high, veryHigh,
|
|
24
|
+
}
|
|
19
25
|
}
|
|
20
26
|
|
|
21
27
|
const getPriorityFeePerGas = (payload: EthereumGasEthgasstationPayload): Partial<PriorityFeePerGas> => {
|
|
22
|
-
const {
|
|
28
|
+
const {
|
|
29
|
+
standard: medium, fast: high, instant: veryHigh,
|
|
30
|
+
} = payload.priorityFee
|
|
23
31
|
const trend = linear([
|
|
24
32
|
[1, medium],
|
|
25
33
|
[2, high],
|
|
26
34
|
[3, veryHigh],
|
|
27
35
|
])
|
|
28
36
|
const low = trend.predict(0)[1]
|
|
29
|
-
return {
|
|
37
|
+
return {
|
|
38
|
+
low, medium, high, veryHigh,
|
|
39
|
+
}
|
|
30
40
|
}
|
|
31
41
|
|
|
32
42
|
export const transformGasFromEthgasstation = (payload: EthereumGasEthgasstationPayload): FeeData => {
|
|
33
43
|
const baseFee = getBaseFee(payload)
|
|
34
44
|
const feePerGas = getFeePerGas(payload)
|
|
35
45
|
const priorityFeePerGas = getPriorityFeePerGas(payload)
|
|
36
|
-
return {
|
|
46
|
+
return {
|
|
47
|
+
baseFee, feePerGas, priorityFeePerGas,
|
|
48
|
+
}
|
|
37
49
|
}
|