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

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