@xyo-network/blocknative-ethereum-gas-plugin 2.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +81 -0
  3. package/dist/cjs/Config.d.ts +6 -0
  4. package/dist/cjs/Config.d.ts.map +1 -0
  5. package/dist/cjs/Config.js +3 -0
  6. package/dist/cjs/Config.js.map +1 -0
  7. package/dist/cjs/Plugin.d.ts +15 -0
  8. package/dist/cjs/Plugin.d.ts.map +1 -0
  9. package/dist/cjs/Plugin.js +16 -0
  10. package/dist/cjs/Plugin.js.map +1 -0
  11. package/dist/cjs/Schema.d.ts +3 -0
  12. package/dist/cjs/Schema.d.ts.map +1 -0
  13. package/dist/cjs/Schema.js +5 -0
  14. package/dist/cjs/Schema.js.map +1 -0
  15. package/dist/cjs/Witness.d.ts +10 -0
  16. package/dist/cjs/Witness.d.ts.map +1 -0
  17. package/dist/cjs/Witness.js +36 -0
  18. package/dist/cjs/Witness.js.map +1 -0
  19. package/dist/cjs/index.d.ts +7 -0
  20. package/dist/cjs/index.d.ts.map +1 -0
  21. package/dist/cjs/index.js +12 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/lib/getGasFromBlocknative.d.ts +3 -0
  24. package/dist/cjs/lib/getGasFromBlocknative.d.ts.map +1 -0
  25. package/dist/cjs/lib/getGasFromBlocknative.js +13 -0
  26. package/dist/cjs/lib/getGasFromBlocknative.js.map +1 -0
  27. package/dist/cjs/lib/index.d.ts +2 -0
  28. package/dist/cjs/lib/index.d.ts.map +1 -0
  29. package/dist/cjs/lib/index.js +5 -0
  30. package/dist/cjs/lib/index.js.map +1 -0
  31. package/dist/docs.json +4679 -0
  32. package/dist/esm/Config.d.ts +6 -0
  33. package/dist/esm/Config.d.ts.map +1 -0
  34. package/dist/esm/Config.js +2 -0
  35. package/dist/esm/Config.js.map +1 -0
  36. package/dist/esm/Plugin.d.ts +15 -0
  37. package/dist/esm/Plugin.d.ts.map +1 -0
  38. package/dist/esm/Plugin.js +11 -0
  39. package/dist/esm/Plugin.js.map +1 -0
  40. package/dist/esm/Schema.d.ts +3 -0
  41. package/dist/esm/Schema.d.ts.map +1 -0
  42. package/dist/esm/Schema.js +2 -0
  43. package/dist/esm/Schema.js.map +1 -0
  44. package/dist/esm/Witness.d.ts +10 -0
  45. package/dist/esm/Witness.d.ts.map +1 -0
  46. package/dist/esm/Witness.js +21 -0
  47. package/dist/esm/Witness.js.map +1 -0
  48. package/dist/esm/index.d.ts +7 -0
  49. package/dist/esm/index.d.ts.map +1 -0
  50. package/dist/esm/index.js +8 -0
  51. package/dist/esm/index.js.map +1 -0
  52. package/dist/esm/lib/getGasFromBlocknative.d.ts +3 -0
  53. package/dist/esm/lib/getGasFromBlocknative.d.ts.map +1 -0
  54. package/dist/esm/lib/getGasFromBlocknative.js +8 -0
  55. package/dist/esm/lib/getGasFromBlocknative.js.map +1 -0
  56. package/dist/esm/lib/index.d.ts +2 -0
  57. package/dist/esm/lib/index.d.ts.map +1 -0
  58. package/dist/esm/lib/index.js +2 -0
  59. package/dist/esm/lib/index.js.map +1 -0
  60. package/package.json +55 -0
  61. package/src/Config.ts +7 -0
  62. package/src/Plugin.spec.ts +18 -0
  63. package/src/Plugin.ts +18 -0
  64. package/src/Schema.ts +3 -0
  65. package/src/Witness.spec.ts +20 -0
  66. package/src/Witness.ts +26 -0
  67. package/src/index.ts +10 -0
  68. package/src/lib/getGasFromBlocknative.spec.ts +39 -0
  69. package/src/lib/getGasFromBlocknative.ts +11 -0
  70. package/src/lib/index.ts +1 -0
@@ -0,0 +1,6 @@
1
+ import { XyoWitnessConfig } from '@xyo-network/witness';
2
+ import { XyoEthereumGasBlocknativeWitnessConfigSchema } from './Schema';
3
+ export type XyoEthereumGasBlocknativeWitnessConfig = XyoWitnessConfig<{
4
+ schema: XyoEthereumGasBlocknativeWitnessConfigSchema;
5
+ }>;
6
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,EAAE,4CAA4C,EAAE,MAAM,UAAU,CAAA;AAEvE,MAAM,MAAM,sCAAsC,GAAG,gBAAgB,CAAC;IACpE,MAAM,EAAE,4CAA4C,CAAA;CACrD,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import { XyoModuleParams } from '@xyo-network/module';
2
+ import { PayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin';
3
+ export declare const XyoEthereumGasBlocknativePlugin: () => PayloadSetWitnessPlugin<XyoModuleParams<import("@xyo-network/payload").SchemaFields & import("@xyo-network/payload").PayloadFields & {
4
+ security?: {
5
+ allowed?: Record<string, string[][]> | undefined;
6
+ disallowed?: Record<string, string[]> | undefined;
7
+ } | undefined;
8
+ } & {
9
+ schema: "network.xyo.blockchain.ethereum.gas.blocknative.witness.config";
10
+ } & {
11
+ targetSet?: (import("@xyo-network/payload").SchemaFields & import("@xyo-network/payload").PayloadFields & import("@xyo-network/payload").PayloadSet & {
12
+ schema: "network.xyo.payload.set";
13
+ }) | undefined;
14
+ }>>;
15
+ //# sourceMappingURL=Plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAA0B,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAKhG,eAAO,MAAM,+BAA+B;;;;;;;;;;;GASzC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { XyoEthereumGasBlocknativeSchema } from '@xyo-network/blocknative-ethereum-gas-payload-plugin';
2
+ import { PayloadSetSchema } from '@xyo-network/payload';
3
+ import { createPayloadSetPlugin } from '@xyo-network/payloadset-plugin';
4
+ import { XyoEthereumGasBlocknativeWitness } from './Witness';
5
+ export const XyoEthereumGasBlocknativePlugin = () => createPayloadSetPlugin({ required: { [XyoEthereumGasBlocknativeSchema]: 1 }, schema: PayloadSetSchema }, {
6
+ witness: async (params) => {
7
+ const result = await XyoEthereumGasBlocknativeWitness.create(params);
8
+ return result;
9
+ },
10
+ });
11
+ //# sourceMappingURL=Plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sDAAsD,CAAA;AAEtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAA2B,MAAM,gCAAgC,CAAA;AAGhG,OAAO,EAAE,gCAAgC,EAAE,MAAM,WAAW,CAAA;AAE5D,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,EAAE,CAClD,sBAAsB,CACpB,EAAE,QAAQ,EAAE,EAAE,CAAC,+BAA+B,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAChF;IACE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,gCAAgC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACpE,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ export type XyoEthereumGasBlocknativeWitnessConfigSchema = 'network.xyo.blockchain.ethereum.gas.blocknative.witness.config';
2
+ export declare const XyoEthereumGasBlocknativeWitnessConfigSchema: XyoEthereumGasBlocknativeWitnessConfigSchema;
3
+ //# 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,4CAA4C,GAAG,gEAAgE,CAAA;AAC3H,eAAO,MAAM,4CAA4C,EAAE,4CACO,CAAA"}
@@ -0,0 +1,2 @@
1
+ export const XyoEthereumGasBlocknativeWitnessConfigSchema = 'network.xyo.blockchain.ethereum.gas.blocknative.witness.config';
2
+ //# sourceMappingURL=Schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,4CAA4C,GACvD,gEAAgE,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { XyoModuleParams } from '@xyo-network/module';
2
+ import { XyoPayload } from '@xyo-network/payload';
3
+ import { TimestampWitness } from '@xyo-network/witness';
4
+ import { XyoEthereumGasBlocknativeWitnessConfig } from './Config';
5
+ export declare class XyoEthereumGasBlocknativeWitness extends TimestampWitness<XyoEthereumGasBlocknativeWitnessConfig> {
6
+ static configSchema: "network.xyo.blockchain.ethereum.gas.blocknative.witness.config";
7
+ static create(params?: XyoModuleParams<XyoEthereumGasBlocknativeWitnessConfig>): Promise<XyoEthereumGasBlocknativeWitness>;
8
+ observe(): Promise<XyoPayload[]>;
9
+ }
10
+ //# sourceMappingURL=Witness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,EAAE,sCAAsC,EAAE,MAAM,UAAU,CAAA;AAIjE,qBAAa,gCAAiC,SAAQ,gBAAgB,CAAC,sCAAsC,CAAC;IAC5G,OAAgB,YAAY,mEAA+C;WAErD,MAAM,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,sCAAsC,CAAC,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAI1H,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAShD"}
@@ -0,0 +1,21 @@
1
+ import { XyoEthereumGasBlocknativeSchema } from '@xyo-network/blocknative-ethereum-gas-payload-plugin';
2
+ import { XyoPayloadBuilder } from '@xyo-network/payload';
3
+ import { TimestampWitness } from '@xyo-network/witness';
4
+ import { getGasFromBlocknative } from './lib';
5
+ import { XyoEthereumGasBlocknativeWitnessConfigSchema } from './Schema';
6
+ export class XyoEthereumGasBlocknativeWitness extends TimestampWitness {
7
+ static configSchema = XyoEthereumGasBlocknativeWitnessConfigSchema;
8
+ static async create(params) {
9
+ return (await super.create(params));
10
+ }
11
+ async observe() {
12
+ const fields = await getGasFromBlocknative();
13
+ const payload = new XyoPayloadBuilder({
14
+ schema: XyoEthereumGasBlocknativeSchema,
15
+ })
16
+ .fields(fields)
17
+ .build();
18
+ return super.observe([payload]);
19
+ }
20
+ }
21
+ //# sourceMappingURL=Witness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,+BAA+B,EAAE,MAAM,sDAAsD,CAAA;AAExI,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAGvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,4CAA4C,EAAE,MAAM,UAAU,CAAA;AAEvE,MAAM,OAAO,gCAAiC,SAAQ,gBAAwD;IAC5G,MAAM,CAAU,YAAY,GAAG,4CAA4C,CAAA;IAE3E,MAAM,CAAU,KAAK,CAAC,MAAM,CAAC,MAAgE;QAC3F,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAqC,CAAA;IACzE,CAAC;IAEQ,KAAK,CAAC,OAAO;QACpB,MAAM,MAAM,GAAG,MAAM,qBAAqB,EAAE,CAAA;QAC5C,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAmC;YACtE,MAAM,EAAE,+BAA+B;SACxC,CAAC;aACC,MAAM,CAAC,MAAM,CAAC;aACd,KAAK,EAAE,CAAA;QACV,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACjC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { XyoEthereumGasBlocknativePlugin } from './Plugin';
2
+ export * from './Config';
3
+ export * from './Schema';
4
+ export * from './Witness';
5
+ export { XyoEthereumGasBlocknativePlugin };
6
+ export default XyoEthereumGasBlocknativePlugin;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAA;AAE1D,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,+BAA+B,EAAE,CAAA;AAG1C,eAAe,+BAA+B,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { XyoEthereumGasBlocknativePlugin } from './Plugin';
2
+ export * from './Config';
3
+ export * from './Schema';
4
+ export * from './Witness';
5
+ export { XyoEthereumGasBlocknativePlugin };
6
+ // eslint-disable-next-line import/no-default-export
7
+ export default XyoEthereumGasBlocknativePlugin;
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAA;AAE1D,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,+BAA+B,EAAE,CAAA;AAE1C,oDAAoD;AACpD,eAAe,+BAA+B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { EthereumGasBlocknativeResponse } from '@xyo-network/blocknative-ethereum-gas-payload-plugin';
2
+ export declare const getGasFromBlocknative: () => Promise<EthereumGasBlocknativeResponse>;
3
+ //# sourceMappingURL=getGasFromBlocknative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGasFromBlocknative.d.ts","sourceRoot":"","sources":["../../../src/lib/getGasFromBlocknative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,sDAAsD,CAAA;AAQrG,eAAO,MAAM,qBAAqB,QAAa,QAAQ,8BAA8B,CAEpF,CAAA"}
@@ -0,0 +1,8 @@
1
+ import axios from 'axios';
2
+ const url = 'https://api.blocknative.com/gasprices/blockprices';
3
+ const Authorization = '9d3e23c3-e31d-4f9c-9d7c-c579cb75d226';
4
+ const config = { headers: { Authorization } };
5
+ export const getGasFromBlocknative = async () => {
6
+ return (await axios.get(url, config)).data;
7
+ };
8
+ //# sourceMappingURL=getGasFromBlocknative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGasFromBlocknative.js","sourceRoot":"","sources":["../../../src/lib/getGasFromBlocknative.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,GAAG,GAAG,mDAAmD,CAAA;AAE/D,MAAM,aAAa,GAAG,sCAAsC,CAAA;AAC5D,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,EAAE,CAAA;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,IAA6C,EAAE;IACvF,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,CAAiC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5E,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './getGasFromBlocknative';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './getGasFromBlocknative';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@xyo-network/blocknative-ethereum-gas-plugin",
3
+ "author": {
4
+ "email": "support@xyo.network",
5
+ "name": "XYO Development Team",
6
+ "url": "https://xyo.network"
7
+ },
8
+ "bugs": {
9
+ "email": "support@xyo.network",
10
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
+ },
12
+ "dependencies": {
13
+ "@xyo-network/blocknative-ethereum-gas-payload-plugin": "^2.42.0",
14
+ "@xyo-network/module": "^2.42.0",
15
+ "@xyo-network/payload": "^2.42.0",
16
+ "@xyo-network/payloadset-plugin": "^2.42.0",
17
+ "@xyo-network/witness": "^2.42.0",
18
+ "axios": "~1.2.1",
19
+ "tslib": "^2.4.1"
20
+ },
21
+ "description": "Primary SDK for using XYO Protocol 2.0",
22
+ "browser": "dist/esm/index.js",
23
+ "docs": "dist/docs.json",
24
+ "exports": {
25
+ ".": {
26
+ "node": {
27
+ "import": "./dist/esm/index.js",
28
+ "require": "./dist/cjs/index.js"
29
+ },
30
+ "browser": {
31
+ "import": "./dist/esm/index.js",
32
+ "require": "./dist/cjs/index.js"
33
+ },
34
+ "default": "./dist/esm/index.js"
35
+ },
36
+ "./dist/docs.json": {
37
+ "default": "./dist/docs.json"
38
+ },
39
+ "./package.json": "./package.json"
40
+ },
41
+ "main": "dist/cjs/index.js",
42
+ "module": "dist/esm/index.js",
43
+ "homepage": "https://xyo.network",
44
+ "license": "LGPL-3.0-only",
45
+ "publishConfig": {
46
+ "access": "public"
47
+ },
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
51
+ },
52
+ "sideEffects": false,
53
+ "types": "dist/esm/index.d.ts",
54
+ "version": "2.42.0"
55
+ }
package/src/Config.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { XyoWitnessConfig } from '@xyo-network/witness'
2
+
3
+ import { XyoEthereumGasBlocknativeWitnessConfigSchema } from './Schema'
4
+
5
+ export type XyoEthereumGasBlocknativeWitnessConfig = XyoWitnessConfig<{
6
+ schema: XyoEthereumGasBlocknativeWitnessConfigSchema
7
+ }>
@@ -0,0 +1,18 @@
1
+ import { XyoEthereumGasBlocknativeSchema } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
2
+ import { PayloadSetPluginResolver } from '@xyo-network/payloadset-plugin'
3
+
4
+ import { XyoEthereumGasBlocknativePlugin } from './Plugin'
5
+ import { XyoEthereumGasBlocknativeWitness } from './Witness'
6
+
7
+ describe('XyoEthereumGasBlocknativePlugin', () => {
8
+ test('Add to Resolver', () => {
9
+ const plugin = XyoEthereumGasBlocknativePlugin()
10
+ const resolver = new PayloadSetPluginResolver().register(plugin, {
11
+ witness: {
12
+ config: { schema: XyoEthereumGasBlocknativeWitness.configSchema },
13
+ },
14
+ })
15
+ expect(resolver.resolve(plugin.set)).toBeObject()
16
+ expect(resolver.witness(XyoEthereumGasBlocknativeSchema)).toBeObject()
17
+ })
18
+ })
package/src/Plugin.ts ADDED
@@ -0,0 +1,18 @@
1
+ import { XyoEthereumGasBlocknativeSchema } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
2
+ import { XyoModuleParams } from '@xyo-network/module'
3
+ import { PayloadSetSchema } from '@xyo-network/payload'
4
+ import { createPayloadSetPlugin, PayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'
5
+
6
+ import { XyoEthereumGasBlocknativeWitnessConfig } from './Config'
7
+ import { XyoEthereumGasBlocknativeWitness } from './Witness'
8
+
9
+ export const XyoEthereumGasBlocknativePlugin = () =>
10
+ createPayloadSetPlugin<PayloadSetWitnessPlugin<XyoModuleParams<XyoEthereumGasBlocknativeWitnessConfig>>>(
11
+ { required: { [XyoEthereumGasBlocknativeSchema]: 1 }, schema: PayloadSetSchema },
12
+ {
13
+ witness: async (params) => {
14
+ const result = await XyoEthereumGasBlocknativeWitness.create(params)
15
+ return result
16
+ },
17
+ },
18
+ )
package/src/Schema.ts ADDED
@@ -0,0 +1,3 @@
1
+ export type XyoEthereumGasBlocknativeWitnessConfigSchema = 'network.xyo.blockchain.ethereum.gas.blocknative.witness.config'
2
+ export const XyoEthereumGasBlocknativeWitnessConfigSchema: XyoEthereumGasBlocknativeWitnessConfigSchema =
3
+ 'network.xyo.blockchain.ethereum.gas.blocknative.witness.config'
@@ -0,0 +1,20 @@
1
+ import { XyoEthereumGasBlocknativeSchema } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
2
+ import { PayloadWrapper } from '@xyo-network/payload'
3
+
4
+ import { XyoEthereumGasBlocknativeWitnessConfigSchema } from './Schema'
5
+ import { XyoEthereumGasBlocknativeWitness } from './Witness'
6
+
7
+ describe('XyoEthereumGasBlocknativeWitness', () => {
8
+ it('returns observation', async () => {
9
+ const sut = await XyoEthereumGasBlocknativeWitness.create({
10
+ config: {
11
+ schema: XyoEthereumGasBlocknativeWitnessConfigSchema,
12
+ },
13
+ })
14
+ const [actual] = await sut.observe()
15
+ expect(actual.timestamp).toBeNumber()
16
+ expect(actual.schema).toBe(XyoEthereumGasBlocknativeSchema)
17
+ const answerWrapper = new PayloadWrapper(actual)
18
+ expect(answerWrapper.valid).toBe(true)
19
+ })
20
+ })
package/src/Witness.ts ADDED
@@ -0,0 +1,26 @@
1
+ import { XyoEthereumGasBlocknativePayload, XyoEthereumGasBlocknativeSchema } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
2
+ import { XyoModuleParams } from '@xyo-network/module'
3
+ import { XyoPayload, XyoPayloadBuilder } from '@xyo-network/payload'
4
+ import { TimestampWitness } from '@xyo-network/witness'
5
+
6
+ import { XyoEthereumGasBlocknativeWitnessConfig } from './Config'
7
+ import { getGasFromBlocknative } from './lib'
8
+ import { XyoEthereumGasBlocknativeWitnessConfigSchema } from './Schema'
9
+
10
+ export class XyoEthereumGasBlocknativeWitness extends TimestampWitness<XyoEthereumGasBlocknativeWitnessConfig> {
11
+ static override configSchema = XyoEthereumGasBlocknativeWitnessConfigSchema
12
+
13
+ static override async create(params?: XyoModuleParams<XyoEthereumGasBlocknativeWitnessConfig>): Promise<XyoEthereumGasBlocknativeWitness> {
14
+ return (await super.create(params)) as XyoEthereumGasBlocknativeWitness
15
+ }
16
+
17
+ override async observe(): Promise<XyoPayload[]> {
18
+ const fields = await getGasFromBlocknative()
19
+ const payload = new XyoPayloadBuilder<XyoEthereumGasBlocknativePayload>({
20
+ schema: XyoEthereumGasBlocknativeSchema,
21
+ })
22
+ .fields(fields)
23
+ .build()
24
+ return super.observe([payload])
25
+ }
26
+ }
package/src/index.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { XyoEthereumGasBlocknativePlugin } from './Plugin'
2
+
3
+ export * from './Config'
4
+ export * from './Schema'
5
+ export * from './Witness'
6
+
7
+ export { XyoEthereumGasBlocknativePlugin }
8
+
9
+ // eslint-disable-next-line import/no-default-export
10
+ export default XyoEthereumGasBlocknativePlugin
@@ -0,0 +1,39 @@
1
+ import { PendingBlockNumber } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
2
+
3
+ import { getGasFromBlocknative } from './getGasFromBlocknative'
4
+
5
+ describe('getGasFromBlocknative', () => {
6
+ test('returns prices', async () => {
7
+ const result = await getGasFromBlocknative()
8
+ expect(result).toBeObject()
9
+ expect(result?.blockPrices).toBeArrayOfSize(1)
10
+ result.blockPrices.map((blockPrice) => {
11
+ expect(blockPrice.baseFeePerGas).toBeNumber()
12
+ expect(blockPrice.blockNumber).toBeNumber()
13
+ expect(blockPrice.estimatedPrices).toBeArrayOfSize(5)
14
+ blockPrice.estimatedPrices.map((estimatedPrice) => {
15
+ expect(estimatedPrice?.confidence).toBeNumber()
16
+ expect(estimatedPrice?.maxFeePerGas).toBeNumber()
17
+ expect(estimatedPrice?.maxPriorityFeePerGas).toBeNumber()
18
+ expect(estimatedPrice?.price).toBeNumber()
19
+ })
20
+ expect(blockPrice.estimatedTransactionCount).toBeNumber()
21
+ })
22
+ expect(result?.estimatedBaseFees).toBeArrayOfSize(5)
23
+ for (let index = 0; index < result?.estimatedBaseFees.length; index++) {
24
+ const blockNumber = `pending+${index + 1}` as PendingBlockNumber
25
+ const pendingBlockInfo = result.estimatedBaseFees?.[index]?.[blockNumber]
26
+ expect(pendingBlockInfo).toBeArrayOfSize(1)
27
+ const pendingBlock = pendingBlockInfo?.[0]
28
+ expect(pendingBlock).toBeObject()
29
+ expect(pendingBlock?.baseFee).toBeNumber()
30
+ expect(pendingBlock?.confidence).toBeNumber()
31
+ }
32
+ expect(result?.currentBlockNumber).toBeNumber()
33
+ expect(result?.maxPrice).toBeNumber()
34
+ expect(result?.msSinceLastBlock).toBeNumber()
35
+ expect(result?.network).toEqual('main')
36
+ expect(result?.system).toEqual('ethereum')
37
+ expect(result?.unit).toEqual('gwei')
38
+ })
39
+ })
@@ -0,0 +1,11 @@
1
+ import { EthereumGasBlocknativeResponse } from '@xyo-network/blocknative-ethereum-gas-payload-plugin'
2
+ import axios from 'axios'
3
+
4
+ const url = 'https://api.blocknative.com/gasprices/blockprices'
5
+
6
+ const Authorization = '9d3e23c3-e31d-4f9c-9d7c-c579cb75d226'
7
+ const config = { headers: { Authorization } }
8
+
9
+ export const getGasFromBlocknative = async (): Promise<EthereumGasBlocknativeResponse> => {
10
+ return (await axios.get<EthereumGasBlocknativeResponse>(url, config)).data
11
+ }
@@ -0,0 +1 @@
1
+ export * from './getGasFromBlocknative'