@sentio/sdk 1.7.18 → 1.7.21

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 (120) hide show
  1. package/lib/builtin/erc20/index.d.ts +1 -1
  2. package/lib/builtin/erc20/index.js +1 -1
  3. package/lib/builtin/erc20/index.js.map +1 -1
  4. package/lib/builtin/erc20/test-utils.d.ts +2 -1
  5. package/lib/builtin/erc20/test-utils.js +14 -3
  6. package/lib/builtin/erc20/test-utils.js.map +1 -1
  7. package/lib/builtin/erc20bytes/index.d.ts +2 -0
  8. package/lib/builtin/erc20bytes/index.js +22 -0
  9. package/lib/builtin/erc20bytes/index.js.map +1 -0
  10. package/lib/builtin/erc20bytes/test-utils.d.ts +4 -0
  11. package/lib/builtin/erc20bytes/test-utils.js +35 -0
  12. package/lib/builtin/erc20bytes/test-utils.js.map +1 -0
  13. package/lib/builtin/internal/ERC20.d.ts +307 -0
  14. package/lib/builtin/internal/{Weth9.js → ERC20.js} +1 -1
  15. package/lib/builtin/internal/ERC20.js.map +1 -0
  16. package/lib/builtin/internal/{Erc20.d.ts → ERC20Bytes.d.ts} +62 -46
  17. package/lib/builtin/internal/ERC20Bytes.js +3 -0
  18. package/lib/builtin/internal/ERC20Bytes.js.map +1 -0
  19. package/lib/builtin/internal/{Weth9.d.ts → WETH9.d.ts} +3 -3
  20. package/lib/builtin/internal/{Erc20.js → WETH9.js} +1 -1
  21. package/lib/builtin/internal/{Weth9.js.map → WETH9.js.map} +1 -1
  22. package/lib/builtin/internal/erc20_processor.d.ts +28 -16
  23. package/lib/builtin/internal/erc20_processor.js +168 -32
  24. package/lib/builtin/internal/erc20_processor.js.map +1 -1
  25. package/lib/builtin/internal/erc20bytes_processor.d.ts +42 -0
  26. package/lib/builtin/internal/erc20bytes_processor.js +271 -0
  27. package/lib/builtin/internal/erc20bytes_processor.js.map +1 -0
  28. package/lib/builtin/internal/factories/ERC20Bytes__factory.d.ts +48 -0
  29. package/lib/builtin/internal/factories/{Erc20__factory.js → ERC20Bytes__factory.js} +127 -89
  30. package/lib/builtin/internal/factories/ERC20Bytes__factory.js.map +1 -0
  31. package/lib/builtin/internal/factories/{Erc20__factory.d.ts → ERC20__factory.d.ts} +12 -5
  32. package/lib/builtin/internal/factories/ERC20__factory.js +404 -0
  33. package/lib/builtin/internal/factories/ERC20__factory.js.map +1 -0
  34. package/lib/builtin/internal/factories/{Weth9__factory.d.ts → WETH9__factory.d.ts} +4 -4
  35. package/lib/builtin/internal/factories/{Weth9__factory.js → WETH9__factory.js} +4 -4
  36. package/lib/builtin/internal/factories/{Weth9__factory.js.map → WETH9__factory.js.map} +1 -1
  37. package/lib/builtin/internal/factories/index.d.ts +3 -2
  38. package/lib/builtin/internal/factories/index.js +7 -5
  39. package/lib/builtin/internal/factories/index.js.map +1 -1
  40. package/lib/builtin/internal/index.d.ts +6 -4
  41. package/lib/builtin/internal/index.js +7 -5
  42. package/lib/builtin/internal/index.js.map +1 -1
  43. package/lib/builtin/internal/weth9_processor.d.ts +20 -20
  44. package/lib/builtin/internal/weth9_processor.js +36 -36
  45. package/lib/builtin/internal/weth9_processor.js.map +1 -1
  46. package/lib/builtin/weth9/index.d.ts +1 -1
  47. package/lib/builtin/weth9/index.js +1 -1
  48. package/lib/builtin/weth9/index.js.map +1 -1
  49. package/lib/builtin/weth9/test-utils.js +4 -4
  50. package/lib/builtin/weth9/test-utils.js.map +1 -1
  51. package/lib/error.d.ts +5 -0
  52. package/lib/error.js +6 -4
  53. package/lib/error.js.map +1 -1
  54. package/lib/generic-processor.d.ts +3 -3
  55. package/lib/generic-processor.js +8 -11
  56. package/lib/generic-processor.js.map +1 -1
  57. package/lib/index.d.ts +1 -0
  58. package/lib/index.js +3 -1
  59. package/lib/index.js.map +1 -1
  60. package/lib/meter.d.ts +1 -0
  61. package/lib/meter.js +7 -1
  62. package/lib/meter.js.map +1 -1
  63. package/lib/meter.test.d.ts +1 -0
  64. package/lib/meter.test.js +16 -0
  65. package/lib/meter.test.js.map +1 -0
  66. package/lib/numberish.js.map +1 -1
  67. package/lib/test/erc20-template.js +3 -3
  68. package/lib/test/erc20-template.js.map +1 -1
  69. package/lib/test/erc20.js +8 -8
  70. package/lib/test/erc20.js.map +1 -1
  71. package/lib/test/erc20.test.js +3 -3
  72. package/lib/test/erc20.test.js.map +1 -1
  73. package/lib/utils/convert.d.ts +3 -1
  74. package/lib/utils/convert.js +19 -1
  75. package/lib/utils/convert.js.map +1 -1
  76. package/lib/utils/erc20.d.ts +9 -0
  77. package/lib/utils/erc20.js +51 -0
  78. package/lib/utils/erc20.js.map +1 -0
  79. package/lib/utils/erc20.test.d.ts +1 -0
  80. package/lib/utils/erc20.test.js +28 -0
  81. package/lib/utils/erc20.test.js.map +1 -0
  82. package/lib/utils/index.d.ts +2 -1
  83. package/lib/utils/index.js +5 -1
  84. package/lib/utils/index.js.map +1 -1
  85. package/package.json +3 -3
  86. package/src/abis/ERC20.json +174 -0
  87. package/src/abis/{erc20.json → ERC20Bytes.json} +124 -86
  88. package/src/abis/{weth9.json → WETH9.json} +0 -0
  89. package/src/builtin/erc20/index.ts +1 -1
  90. package/src/builtin/erc20/test-utils.ts +25 -3
  91. package/src/builtin/erc20bytes/index.ts +6 -0
  92. package/src/builtin/erc20bytes/test-utils.ts +53 -0
  93. package/src/builtin/internal/ERC20.ts +679 -0
  94. package/src/builtin/internal/{Erc20.ts → ERC20Bytes.ts} +138 -110
  95. package/src/builtin/internal/{Weth9.ts → WETH9.ts} +3 -3
  96. package/src/builtin/internal/erc20_processor.ts +188 -44
  97. package/src/builtin/internal/erc20bytes_processor.ts +362 -0
  98. package/src/builtin/internal/factories/{Erc20__factory.ts → ERC20Bytes__factory.ts} +132 -91
  99. package/src/builtin/internal/factories/ERC20__factory.ts +404 -0
  100. package/src/builtin/internal/factories/{Weth9__factory.ts → WETH9__factory.ts} +6 -6
  101. package/src/builtin/internal/factories/index.ts +3 -2
  102. package/src/builtin/internal/index.ts +6 -4
  103. package/src/builtin/internal/weth9_processor.ts +52 -52
  104. package/src/builtin/weth9/index.ts +1 -1
  105. package/src/builtin/weth9/test-utils.ts +5 -5
  106. package/src/error.ts +6 -4
  107. package/src/generic-processor.ts +8 -11
  108. package/src/index.ts +1 -0
  109. package/src/meter.test.ts +16 -0
  110. package/src/meter.ts +7 -0
  111. package/src/numberish.ts +2 -1
  112. package/src/test/erc20-template.ts +4 -4
  113. package/src/test/erc20.test.ts +3 -3
  114. package/src/test/erc20.ts +9 -9
  115. package/src/utils/convert.ts +21 -1
  116. package/src/utils/erc20.test.ts +31 -0
  117. package/src/utils/erc20.ts +60 -0
  118. package/src/utils/index.ts +2 -1
  119. package/lib/builtin/internal/Erc20.js.map +0 -1
  120. package/lib/builtin/internal/factories/Erc20__factory.js.map +0 -1
package/lib/meter.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"meter.js","sourceRoot":"","sources":["../src/meter.ts"],"names":[],"mappings":"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","sourcesContent":["import { RecordMetaData } from './gen/processor/protos/processor'\nimport { Context, EthContext, SolanaContext } from './context'\nimport { toMetricValue, Numberish } from './numberish'\nimport Long from 'long'\n\nfunction GetRecordMetaData(ctx: EthContext | SolanaContext, name: string, labels: Labels): RecordMetaData {\n if (ctx instanceof Context) {\n if (ctx.log) {\n return {\n contractAddress: ctx.contract.rawContract.address,\n blockNumber: Long.fromNumber(ctx.log.blockNumber, true), // TODO need number type to be long\n transactionIndex: ctx.log.transactionIndex,\n logIndex: ctx.log.logIndex,\n chainId: ctx.chainId.toString(),\n name: name,\n labels: labels,\n }\n }\n if (ctx.block) {\n return {\n contractAddress: ctx.contract.rawContract.address,\n blockNumber: Long.fromNumber(ctx.block.number, true),\n transactionIndex: -1,\n logIndex: -1,\n chainId: ctx.chainId.toString(),\n name: name,\n labels: labels,\n }\n }\n } else if (ctx instanceof SolanaContext) {\n return {\n contractAddress: ctx.address,\n blockNumber: Long.ZERO, // TODO need number type to be long\n transactionIndex: 0,\n logIndex: 0,\n chainId: 'SOL:mainnet', // TODO set in context\n name: name,\n labels: labels,\n }\n }\n throw new Error(\"This can't happen\")\n}\n\nexport type Labels = { [key: string]: string }\n\nexport class Counter {\n private readonly ctx: EthContext | SolanaContext\n private readonly name: string\n\n constructor(name: string, ctx: EthContext | SolanaContext) {\n this.name = name\n this.ctx = ctx\n }\n\n add(value: Numberish, labels: Labels = {}) {\n this.record(value, labels, true)\n }\n\n sub(value: Numberish, labels: Labels = {}) {\n this.record(value, labels, false)\n }\n\n private record(value: Numberish, labels: Labels, add: boolean) {\n this.ctx.counters.push({\n metadata: GetRecordMetaData(this.ctx, this.name, labels),\n metricValue: toMetricValue(value),\n add: add,\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class Gauge {\n private readonly name: string\n private readonly ctx: EthContext | SolanaContext\n\n constructor(name: string, ctx: EthContext | SolanaContext) {\n this.name = name\n this.ctx = ctx\n }\n\n record(value: Numberish, labels: Labels = {}) {\n this.ctx.gauges.push({\n metadata: GetRecordMetaData(this.ctx, this.name, labels),\n metricValue: toMetricValue(value),\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class Meter {\n private readonly ctx: EthContext | SolanaContext\n\n // TODO is map necessary since we are sending request remotely?\n // counterMap = new Map<string, Counter>()\n // gaugeMap = new Map<string, Gauge>()\n\n constructor(ctx: EthContext | SolanaContext) {\n this.ctx = ctx\n }\n\n Counter(name: string): Counter {\n // let counter = this.counterMap.get(name)\n\n // if (!counter) {\n // counter = new Counter(name, this.ctx)\n // }\n // return counter\n\n return new Counter(name, this.ctx)\n }\n\n Gauge(name: string): Gauge {\n // let gauge = this.gaugeMap.get(name)\n //\n // if (!gauge) {\n // gauge = new Gauge(name, this.ctx)\n // }\n // return gauge\n return new Gauge(name, this.ctx)\n }\n}\n"]}
1
+ {"version":3,"file":"meter.js","sourceRoot":"","sources":["../src/meter.ts"],"names":[],"mappings":"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","sourcesContent":["import { RecordMetaData } from './gen/processor/protos/processor'\nimport { Context, EthContext, SolanaContext } from './context'\nimport { toMetricValue, Numberish } from './numberish'\nimport Long from 'long'\n\nexport function normalizeName(name: string) {\n const regex = new RegExp('![_.a-zA-Z0-9]')\n return name.slice(0, 100).replace(regex, '_')\n}\n\nfunction GetRecordMetaData(ctx: EthContext | SolanaContext, name: string, labels: Labels): RecordMetaData {\n name = normalizeName(name)\n\n if (ctx instanceof Context) {\n if (ctx.log) {\n return {\n contractAddress: ctx.contract.rawContract.address,\n blockNumber: Long.fromNumber(ctx.log.blockNumber, true), // TODO need number type to be long\n transactionIndex: ctx.log.transactionIndex,\n logIndex: ctx.log.logIndex,\n chainId: ctx.chainId.toString(),\n name: name,\n labels: labels,\n }\n }\n if (ctx.block) {\n return {\n contractAddress: ctx.contract.rawContract.address,\n blockNumber: Long.fromNumber(ctx.block.number, true),\n transactionIndex: -1,\n logIndex: -1,\n chainId: ctx.chainId.toString(),\n name: name,\n labels: labels,\n }\n }\n } else if (ctx instanceof SolanaContext) {\n return {\n contractAddress: ctx.address,\n blockNumber: Long.ZERO, // TODO need number type to be long\n transactionIndex: 0,\n logIndex: 0,\n chainId: 'SOL:mainnet', // TODO set in context\n name: name,\n labels: labels,\n }\n }\n throw new Error(\"This can't happen\")\n}\n\nexport type Labels = { [key: string]: string }\n\nexport class Counter {\n private readonly ctx: EthContext | SolanaContext\n private readonly name: string\n\n constructor(name: string, ctx: EthContext | SolanaContext) {\n this.name = name\n this.ctx = ctx\n }\n\n add(value: Numberish, labels: Labels = {}) {\n this.record(value, labels, true)\n }\n\n sub(value: Numberish, labels: Labels = {}) {\n this.record(value, labels, false)\n }\n\n private record(value: Numberish, labels: Labels, add: boolean) {\n this.ctx.counters.push({\n metadata: GetRecordMetaData(this.ctx, this.name, labels),\n metricValue: toMetricValue(value),\n add: add,\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class Gauge {\n private readonly name: string\n private readonly ctx: EthContext | SolanaContext\n\n constructor(name: string, ctx: EthContext | SolanaContext) {\n this.name = name\n this.ctx = ctx\n }\n\n record(value: Numberish, labels: Labels = {}) {\n this.ctx.gauges.push({\n metadata: GetRecordMetaData(this.ctx, this.name, labels),\n metricValue: toMetricValue(value),\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class Meter {\n private readonly ctx: EthContext | SolanaContext\n\n // TODO is map necessary since we are sending request remotely?\n // counterMap = new Map<string, Counter>()\n // gaugeMap = new Map<string, Gauge>()\n\n constructor(ctx: EthContext | SolanaContext) {\n this.ctx = ctx\n }\n\n Counter(name: string): Counter {\n // let counter = this.counterMap.get(name)\n\n // if (!counter) {\n // counter = new Counter(name, this.ctx)\n // }\n // return counter\n\n return new Counter(name, this.ctx)\n }\n\n Gauge(name: string): Gauge {\n // let gauge = this.gaugeMap.get(name)\n //\n // if (!gauge) {\n // gauge = new Gauge(name, this.ctx)\n // }\n // return gauge\n return new Gauge(name, this.ctx)\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const meter_1 = require("./meter");
5
+ describe('meter tests', () => {
6
+ test('test normalization ', async () => {
7
+ (0, chai_1.expect)((0, meter_1.normalizeName)('abc') === 'abc');
8
+ (0, chai_1.expect)((0, meter_1.normalizeName)('a-b-c') === 'a-b-c');
9
+ (0, chai_1.expect)((0, meter_1.normalizeName)('_a-B-1.') === '_a-B-1.');
10
+ (0, chai_1.expect)((0, meter_1.normalizeName)('a/b\\c\n') === 'abc');
11
+ (0, chai_1.expect)((0, meter_1.normalizeName)('abc abc') === 'abc_abc');
12
+ (0, chai_1.expect)((0, meter_1.normalizeName)('*&~') === '___');
13
+ (0, chai_1.expect)((0, meter_1.normalizeName)('x'.repeat(200)).length === 100);
14
+ });
15
+ });
16
+ //# sourceMappingURL=meter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meter.test.js","sourceRoot":"","sources":["../src/meter.test.ts"],"names":[],"mappings":";;AAAA,+BAA6B;AAC7B,mCAAuC;AAEvC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAA;QACtC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAA;QAC1C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAA;QAE9C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,UAAU,CAAC,KAAK,KAAK,CAAC,CAAA;QAC3C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAA;QAC9C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAA;QAEtC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { expect } from 'chai'\nimport { normalizeName } from './meter'\n\ndescribe('meter tests', () => {\n test('test normalization ', async () => {\n expect(normalizeName('abc') === 'abc')\n expect(normalizeName('a-b-c') === 'a-b-c')\n expect(normalizeName('_a-B-1.') === '_a-B-1.')\n\n expect(normalizeName('a/b\\\\c\\n') === 'abc')\n expect(normalizeName('abc abc') === 'abc_abc')\n expect(normalizeName('*&~') === '___')\n\n expect(normalizeName('x'.repeat(200)).length === 100)\n })\n})\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"numberish.js","sourceRoot":"","sources":["../src/numberish.ts"],"names":[],"mappings":"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","sourcesContent":["import { BigNumber } from 'ethers'\nimport { BigInteger, MetricValue } from './gen/processor/protos/processor'\nimport { BigDecimal } from '.'\nimport { BN } from '@project-serum/anchor'\n\nexport type Numberish = number | BigNumber | bigint | BigDecimal //BigNumberish\n\nexport function toMetricValue(value: Numberish): MetricValue {\n if (value instanceof BigNumber) {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value.toBigInt()),\n })\n }\n if (value instanceof BigDecimal) {\n // Carefully consider the use case here\n if (value.isInteger()) {\n return MetricValue.fromPartial({\n bigInteger: bigDecimalToBigInteger(value),\n })\n } else {\n return MetricValue.fromPartial({\n bigDecimal: value.toString(), // e.g. -7.350918e-428\n })\n }\n }\n if (BN.isBN(value)) {\n return MetricValue.fromPartial({\n bigInteger: bnToBigInteger(value),\n })\n }\n if (typeof value === 'bigint' || Number.isInteger(value)) {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n\n return MetricValue.fromPartial({\n doubleValue: Number(value),\n })\n}\nfunction bigDecimalToBigInteger(a: BigDecimal): BigInteger {\n const negative = a.isNegative()\n if (negative) {\n a = a.abs()\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nfunction bnToBigInteger(a: BN): BigInteger {\n const negative = a.isNeg()\n if (negative) {\n a = a.abs()\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nfunction intToBigInteger(a: bigint | number): BigInteger {\n const negative = a < 0\n if (negative) {\n a = -a\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nexport function toBigInteger(a: Numberish): BigInteger {\n if (a instanceof BigDecimal) {\n return bigDecimalToBigInteger(a)\n }\n if (a instanceof BN) {\n return bnToBigInteger(a)\n }\n if (a instanceof BigNumber) {\n return intToBigInteger(a.toBigInt())\n }\n return intToBigInteger(a)\n\n // Following code is actually very slow\n // while (a > 0) {\n // const d = a & 0xffn\n // a >>= 8n\n // value.push(Number(d))\n // }\n //\n // return {\n // negative, value: new Uint8Array(value.reverse()),\n // }\n}\n\nfunction hexToBigInteger(hex: string, negative: boolean): BigInteger {\n if (hex.length % 2 === 1) {\n hex = '0' + hex\n }\n const buffer = Buffer.from(hex, 'hex')\n\n return {\n negative: negative,\n data: new Uint8Array(buffer),\n }\n}\n"]}
1
+ {"version":3,"file":"numberish.js","sourceRoot":"","sources":["../src/numberish.ts"],"names":[],"mappings":"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","sourcesContent":["import { BigNumber } from 'ethers'\nimport { BigInteger, MetricValue } from './gen/processor/protos/processor'\nimport { BigDecimal } from '.'\nimport { BN } from '@project-serum/anchor'\n\nexport type Numberish = number | BigNumber | bigint | BigDecimal\n\nexport function toMetricValue(value: Numberish): MetricValue {\n if (value instanceof BigNumber) {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value.toBigInt()),\n })\n }\n if (value instanceof BigDecimal) {\n // Carefully consider the use case here\n if (value.isInteger()) {\n return MetricValue.fromPartial({\n bigInteger: bigDecimalToBigInteger(value),\n })\n } else {\n return MetricValue.fromPartial({\n bigDecimal: value.toString(), // e.g. -7.350918e-428\n })\n }\n }\n if (BN.isBN(value)) {\n return MetricValue.fromPartial({\n bigInteger: bnToBigInteger(value),\n })\n }\n if (typeof value === 'bigint' || Number.isInteger(value)) {\n return MetricValue.fromPartial({\n bigInteger: toBigInteger(value),\n })\n }\n\n return MetricValue.fromPartial({\n doubleValue: Number(value),\n })\n}\n\nfunction bigDecimalToBigInteger(a: BigDecimal): BigInteger {\n const negative = a.isNegative()\n if (negative) {\n a = a.abs()\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nfunction bnToBigInteger(a: BN): BigInteger {\n const negative = a.isNeg()\n if (negative) {\n a = a.abs()\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nfunction intToBigInteger(a: bigint | number): BigInteger {\n const negative = a < 0\n if (negative) {\n a = -a\n }\n return hexToBigInteger(a.toString(16), negative)\n}\n\nexport function toBigInteger(a: Numberish): BigInteger {\n if (a instanceof BigDecimal) {\n return bigDecimalToBigInteger(a)\n }\n if (a instanceof BN) {\n return bnToBigInteger(a)\n }\n if (a instanceof BigNumber) {\n return intToBigInteger(a.toBigInt())\n }\n return intToBigInteger(a)\n\n // Following code is actually very slow\n // while (a > 0) {\n // const d = a & 0xffn\n // a >>= 8n\n // value.push(Number(d))\n // }\n //\n // return {\n // negative, value: new Uint8Array(value.reverse()),\n // }\n}\n\nfunction hexToBigInteger(hex: string, negative: boolean): BigInteger {\n if (hex.length % 2 === 1) {\n hex = '0' + hex\n }\n const buffer = Buffer.from(hex, 'hex')\n\n return {\n negative: negative,\n data: new Uint8Array(buffer),\n }\n}\n"]}
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.filter = void 0;
4
4
  const erc20_1 = require("../builtin/erc20");
5
- exports.filter = erc20_1.Erc20Processor.filters.Transfer('0x0000000000000000000000000000000000000000', '0xb329e39ebefd16f40d38f07643652ce17ca5bac1');
6
- const processorTemplate = new erc20_1.Erc20ProcessorTemplate().onTransfer(async function (event, ctx) {
5
+ exports.filter = erc20_1.ERC20Processor.filters.Transfer('0x0000000000000000000000000000000000000000', '0xb329e39ebefd16f40d38f07643652ce17ca5bac1');
6
+ const processorTemplate = new erc20_1.ERC20ProcessorTemplate().onTransfer(async function (event, ctx) {
7
7
  console.log('');
8
8
  });
9
- erc20_1.Erc20Processor.bind({
9
+ erc20_1.ERC20Processor.bind({
10
10
  address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',
11
11
  network: 1,
12
12
  name: 'x2y2',
@@ -1 +1 @@
1
- {"version":3,"file":"erc20-template.js","sourceRoot":"","sources":["../../src/test/erc20-template.ts"],"names":[],"mappings":";;;AAAA,4CAAyE;AAE5D,QAAA,MAAM,GAAG,sBAAc,CAAC,OAAO,CAAC,QAAQ,CACnD,4CAA4C,EAC5C,4CAA4C,CAC7C,CAAA;AAED,MAAM,iBAAiB,GAAG,IAAI,8BAAsB,EAAE,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,sBAAc,CAAC,IAAI,CAAC;IAClB,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,QAAQ;CACrB,CAAC,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACtC,iBAAiB,CAAC,IAAI,CAAC;QACrB,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;IACF,4EAA4E;IAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC,CAAA","sourcesContent":["import { Erc20Processor, Erc20ProcessorTemplate } from '../builtin/erc20'\n\nexport const filter = Erc20Processor.filters.Transfer(\n '0x0000000000000000000000000000000000000000',\n '0xb329e39ebefd16f40d38f07643652ce17ca5bac1'\n)\n\nconst processorTemplate = new Erc20ProcessorTemplate().onTransfer(async function (event, ctx) {\n console.log('')\n})\n\nErc20Processor.bind({\n address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',\n network: 1,\n name: 'x2y2',\n startBlock: 14201940,\n}).onTransfer(async function (event, ctx) {\n processorTemplate.bind({\n address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n network: 3,\n name: 'dynamic',\n })\n // template.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 3, 'dynamic')\n ctx.meter.Counter('c1').add(1)\n}, filter)\n"]}
1
+ {"version":3,"file":"erc20-template.js","sourceRoot":"","sources":["../../src/test/erc20-template.ts"],"names":[],"mappings":";;;AAAA,4CAAyE;AAE5D,QAAA,MAAM,GAAG,sBAAc,CAAC,OAAO,CAAC,QAAQ,CACnD,4CAA4C,EAC5C,4CAA4C,CAC7C,CAAA;AAED,MAAM,iBAAiB,GAAG,IAAI,8BAAsB,EAAE,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,sBAAc,CAAC,IAAI,CAAC;IAClB,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,QAAQ;CACrB,CAAC,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACtC,iBAAiB,CAAC,IAAI,CAAC;QACrB,OAAO,EAAE,4CAA4C;QACrD,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;IACF,4EAA4E;IAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC,CAAA","sourcesContent":["import { ERC20Processor, ERC20ProcessorTemplate } from '../builtin/erc20'\n\nexport const filter = ERC20Processor.filters.Transfer(\n '0x0000000000000000000000000000000000000000',\n '0xb329e39ebefd16f40d38f07643652ce17ca5bac1'\n)\n\nconst processorTemplate = new ERC20ProcessorTemplate().onTransfer(async function (event, ctx) {\n console.log('')\n})\n\nERC20Processor.bind({\n address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',\n network: 1,\n name: 'x2y2',\n startBlock: 14201940,\n}).onTransfer(async function (event, ctx) {\n processorTemplate.bind({\n address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n network: 3,\n name: 'dynamic',\n })\n // template.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 3, 'dynamic')\n ctx.meter.Counter('c1').add(1)\n}, filter)\n"]}
package/lib/test/erc20.js CHANGED
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.filter = void 0;
4
4
  const erc20_1 = require("../builtin/erc20");
5
- exports.filter = erc20_1.Erc20Processor.filters.Transfer('0x0000000000000000000000000000000000000000', '0xb329e39ebefd16f40d38f07643652ce17ca5bac1');
6
- const processorTemplate = new erc20_1.Erc20ProcessorTemplate().onTransfer(async function (event, ctx) {
5
+ exports.filter = erc20_1.ERC20Processor.filters.Transfer('0x0000000000000000000000000000000000000000', '0xb329e39ebefd16f40d38f07643652ce17ca5bac1');
6
+ const processorTemplate = new erc20_1.ERC20ProcessorTemplate().onTransfer(async function (event, ctx) {
7
7
  console.log('');
8
8
  });
9
- erc20_1.Erc20Processor.bind({
9
+ erc20_1.ERC20Processor.bind({
10
10
  address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',
11
11
  // network: 1,
12
12
  name: 'x2y2',
@@ -20,7 +20,7 @@ erc20_1.Erc20Processor.bind({
20
20
  .onBlock(async function (block, ctx) {
21
21
  ctx.meter.Gauge('g1').record(10, { k: 'v' });
22
22
  });
23
- erc20_1.Erc20Processor.bind({ address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', network: 56, name: 'usdc' })
23
+ erc20_1.ERC20Processor.bind({ address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', network: 56, name: 'usdc' })
24
24
  .onTransfer(async function (event, ctx) {
25
25
  ctx.meter.Counter('c2').add(2);
26
26
  }, exports.filter)
@@ -28,10 +28,10 @@ erc20_1.Erc20Processor.bind({ address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB
28
28
  ctx.meter.Gauge('g2').record(20, { k: 'v' });
29
29
  });
30
30
  // .startBlock(14201940)
31
- erc20_1.Erc20Processor.bind({ address: 'xxxx', network: 56 });
32
- erc20_1.Erc20Processor.bind({ address: 'yyyy', network: 1 });
33
- erc20_1.Erc20Processor.bind({ address: 'yyyy', network: 1 });
34
- erc20_1.Erc20Processor.bind({ address: 'yyyy', network: 1, startBlock: 21 });
31
+ erc20_1.ERC20Processor.bind({ address: 'xxxx', network: 56 });
32
+ erc20_1.ERC20Processor.bind({ address: 'yyyy', network: 1 });
33
+ erc20_1.ERC20Processor.bind({ address: 'yyyy', network: 1 });
34
+ erc20_1.ERC20Processor.bind({ address: 'yyyy', network: 1, startBlock: 21 });
35
35
  // const template = Erc20Processor.template
36
36
  // .onTransfer(async function (event, ctx) {
37
37
  // ctx.meter.Counter('c2').add(2)
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/test/erc20.ts"],"names":[],"mappings":";;;AAAA,4CAAyE;AAE5D,QAAA,MAAM,GAAG,sBAAc,CAAC,OAAO,CAAC,QAAQ,CACnD,4CAA4C,EAC5C,4CAA4C,CAC7C,CAAA;AAED,MAAM,iBAAiB,GAAG,IAAI,8BAAsB,EAAE,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,sBAAc,CAAC,IAAI,CAAC;IAClB,OAAO,EAAE,4CAA4C;IACrD,cAAc;IACd,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,QAAQ;CACrB,CAAC;KACC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACpC,iBAAiB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAC9G,4EAA4E;IAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC;KACT,OAAO,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACjC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEJ,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtG,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACpC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC;KACT,OAAO,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACjC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AACJ,wBAAwB;AAExB,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;AAErD,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AACpD,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AACpD,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;AAEpE,2CAA2C;AAC3C,8CAA8C;AAC9C,qCAAqC;AACrC,eAAe;AACf,2CAA2C;AAC3C,mDAAmD;AACnD,OAAO","sourcesContent":["import { Erc20Processor, Erc20ProcessorTemplate } from '../builtin/erc20'\n\nexport const filter = Erc20Processor.filters.Transfer(\n '0x0000000000000000000000000000000000000000',\n '0xb329e39ebefd16f40d38f07643652ce17ca5bac1'\n)\n\nconst processorTemplate = new Erc20ProcessorTemplate().onTransfer(async function (event, ctx) {\n console.log('')\n})\n\nErc20Processor.bind({\n address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',\n // network: 1,\n name: 'x2y2',\n startBlock: 14201940,\n})\n .onTransfer(async function (event, ctx) {\n processorTemplate.bind({ address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9', network: 3, name: 'dynamic' })\n // template.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 3, 'dynamic')\n ctx.meter.Counter('c1').add(1)\n }, filter)\n .onBlock(async function (block, ctx) {\n ctx.meter.Gauge('g1').record(10, { k: 'v' })\n })\n\nErc20Processor.bind({ address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', network: 56, name: 'usdc' })\n .onTransfer(async function (event, ctx) {\n ctx.meter.Counter('c2').add(2)\n }, filter)\n .onBlock(async function (block, ctx) {\n ctx.meter.Gauge('g2').record(20, { k: 'v' })\n })\n// .startBlock(14201940)\n\nErc20Processor.bind({ address: 'xxxx', network: 56 })\n\nErc20Processor.bind({ address: 'yyyy', network: 1 })\nErc20Processor.bind({ address: 'yyyy', network: 1 })\nErc20Processor.bind({ address: 'yyyy', network: 1, startBlock: 21 })\n\n// const template = Erc20Processor.template\n// .onTransfer(async function (event, ctx) {\n// ctx.meter.Counter('c2').add(2)\n// }, filter)\n// .onBlock(async function (block, ctx) {\n// ctx.meter.Gauge('h1').record(20, { k: 'v' })\n// })\n"]}
1
+ {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/test/erc20.ts"],"names":[],"mappings":";;;AAAA,4CAAyE;AAE5D,QAAA,MAAM,GAAG,sBAAc,CAAC,OAAO,CAAC,QAAQ,CACnD,4CAA4C,EAC5C,4CAA4C,CAC7C,CAAA;AAED,MAAM,iBAAiB,GAAG,IAAI,8BAAsB,EAAE,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA;AAEF,sBAAc,CAAC,IAAI,CAAC;IAClB,OAAO,EAAE,4CAA4C;IACrD,cAAc;IACd,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,QAAQ;CACrB,CAAC;KACC,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACpC,iBAAiB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAC9G,4EAA4E;IAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC;KACT,OAAO,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACjC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEJ,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtG,UAAU,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACpC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChC,CAAC,EAAE,cAAM,CAAC;KACT,OAAO,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;IACjC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AACJ,wBAAwB;AAExB,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;AAErD,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AACpD,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;AACpD,sBAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;AAEpE,2CAA2C;AAC3C,8CAA8C;AAC9C,qCAAqC;AACrC,eAAe;AACf,2CAA2C;AAC3C,mDAAmD;AACnD,OAAO","sourcesContent":["import { ERC20Processor, ERC20ProcessorTemplate } from '../builtin/erc20'\n\nexport const filter = ERC20Processor.filters.Transfer(\n '0x0000000000000000000000000000000000000000',\n '0xb329e39ebefd16f40d38f07643652ce17ca5bac1'\n)\n\nconst processorTemplate = new ERC20ProcessorTemplate().onTransfer(async function (event, ctx) {\n console.log('')\n})\n\nERC20Processor.bind({\n address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',\n // network: 1,\n name: 'x2y2',\n startBlock: 14201940,\n})\n .onTransfer(async function (event, ctx) {\n processorTemplate.bind({ address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9', network: 3, name: 'dynamic' })\n // template.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 3, 'dynamic')\n ctx.meter.Counter('c1').add(1)\n }, filter)\n .onBlock(async function (block, ctx) {\n ctx.meter.Gauge('g1').record(10, { k: 'v' })\n })\n\nERC20Processor.bind({ address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', network: 56, name: 'usdc' })\n .onTransfer(async function (event, ctx) {\n ctx.meter.Counter('c2').add(2)\n }, filter)\n .onBlock(async function (block, ctx) {\n ctx.meter.Gauge('g2').record(20, { k: 'v' })\n })\n// .startBlock(14201940)\n\nERC20Processor.bind({ address: 'xxxx', network: 56 })\n\nERC20Processor.bind({ address: 'yyyy', network: 1 })\nERC20Processor.bind({ address: 'yyyy', network: 1 })\nERC20Processor.bind({ address: 'yyyy', network: 1, startBlock: 21 })\n\n// const template = Erc20Processor.template\n// .onTransfer(async function (event, ctx) {\n// ctx.meter.Counter('c2').add(2)\n// }, filter)\n// .onBlock(async function (block, ctx) {\n// ctx.meter.Gauge('h1').record(20, { k: 'v' })\n// })\n"]}
@@ -16,10 +16,10 @@ describe('Test Basic Examples', () => {
16
16
  const config = await service.getConfig({});
17
17
  (0, chai_1.expect)(config.contractConfigs).length(5);
18
18
  // check auto rename
19
- (0, chai_1.expect)(config.contractConfigs?.[2].contract?.name).equals('Erc20');
20
- (0, chai_1.expect)(config.contractConfigs?.[3].contract?.name).equals('Erc20_1');
19
+ (0, chai_1.expect)(config.contractConfigs?.[2].contract?.name).equals('ERC20');
20
+ (0, chai_1.expect)(config.contractConfigs?.[3].contract?.name).equals('ERC20_1');
21
21
  // same as above because only differ in parameters
22
- (0, chai_1.expect)(config.contractConfigs?.[4].contract?.name).equals('Erc20_1');
22
+ (0, chai_1.expect)(config.contractConfigs?.[4].contract?.name).equals('ERC20_1');
23
23
  });
24
24
  test('Check block dispatch', async () => {
25
25
  const res = await service.testBlock(blockData);
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.test.js","sourceRoot":"","sources":["../../src/test/erc20.test.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO move out of this package\n\nimport { expect } from 'chai'\n\nimport { HandlerType } from '..'\n\nimport { TestProcessorServer } from './test-processor-server'\nimport { firstCounterValue, firstGaugeValue } from './metric-utils'\nimport { BigNumber } from 'ethers'\nimport { mockTransferLog } from '../builtin/erc20/test-utils'\n\ndescribe('Test Basic Examples', () => {\n const service = new TestProcessorServer(() => require('./erc20'))\n\n beforeAll(async () => {\n await service.start()\n })\n\n test('check configuration', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(5)\n\n // check auto rename\n expect(config.contractConfigs?.[2].contract?.name).equals('Erc20')\n expect(config.contractConfigs?.[3].contract?.name).equals('Erc20_1')\n // same as above because only differ in parameters\n expect(config.contractConfigs?.[4].contract?.name).equals('Erc20_1')\n })\n\n test('Check block dispatch', async () => {\n const res = await service.testBlock(blockData)\n const o11yRes = res.result\n expect(o11yRes?.counters).length(0)\n expect(o11yRes?.gauges).length(1)\n expect(firstGaugeValue(o11yRes, 'g1')).equals(10n)\n\n const gauge = o11yRes?.gauges?.[0]\n expect(gauge?.metadata?.blockNumber?.toString()).equals('14373295')\n expect(gauge?.runtimeInfo?.from).equals(HandlerType.BLOCK)\n\n const res2 = await service.testBlock(blockData, 56)\n const o11yRes2 = res2.result\n expect(o11yRes2?.counters).length(0)\n expect(o11yRes2?.gauges).length(1)\n expect(firstGaugeValue(o11yRes2, 'g2')).equals(20n)\n })\n\n test('Check log dispatch', async () => {\n const logData = mockTransferLog('0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9', {\n from: '0x0000000000000000000000000000000000000000',\n to: '0xB329e39Ebefd16f40d38f07643652cE17Ca5Bac1',\n value: BigNumber.from('0x9a71db64810aaa0000'),\n })\n\n let res = await service.testLog(logData)\n\n const counters = res.result?.counters\n expect(counters).length(1)\n expect(firstCounterValue(res.result, 'c1')).equals(1n)\n\n expect(counters?.[0].metadata?.chainId).equals('1')\n expect(counters?.[0].runtimeInfo?.from).equals(HandlerType.LOG)\n expect(res.configUpdated).equals(true)\n\n const logData2 = Object.assign({}, logData)\n logData2.address = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'\n res = await service.testLog(logData2, 56)\n\n expect(firstCounterValue(res.result, 'c2')).equals(2n)\n expect(res.result?.counters[0].metadata?.chainId).equals('56')\n\n expect(res.result?.gauges).length(0)\n\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(6) //config increased\n expect(config.contractConfigs?.[5].contract?.name).equals('dynamic')\n\n // repeat trigger won't bind again\n await service.testLogs([logData])\n const config2 = await service.getConfig({})\n expect(config).deep.equals(config2)\n })\n\n const blockData = {\n hash: '0x2b9b7cce1f17f3b7e1f3c2472cc806a07bee3f0baca07d021350950d81d73a42',\n number: 14373295,\n timestamp: 1647106437,\n extraData: '0xe4b883e5bda9e7a59ee4bb99e9b1bc493421',\n }\n})\n"]}
1
+ {"version":3,"file":"erc20.test.js","sourceRoot":"","sources":["../../src/test/erc20.test.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO move out of this package\n\nimport { expect } from 'chai'\n\nimport { HandlerType } from '..'\n\nimport { TestProcessorServer } from './test-processor-server'\nimport { firstCounterValue, firstGaugeValue } from './metric-utils'\nimport { BigNumber } from 'ethers'\nimport { mockTransferLog } from '../builtin/erc20/test-utils'\n\ndescribe('Test Basic Examples', () => {\n const service = new TestProcessorServer(() => require('./erc20'))\n\n beforeAll(async () => {\n await service.start()\n })\n\n test('check configuration', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(5)\n\n // check auto rename\n expect(config.contractConfigs?.[2].contract?.name).equals('ERC20')\n expect(config.contractConfigs?.[3].contract?.name).equals('ERC20_1')\n // same as above because only differ in parameters\n expect(config.contractConfigs?.[4].contract?.name).equals('ERC20_1')\n })\n\n test('Check block dispatch', async () => {\n const res = await service.testBlock(blockData)\n const o11yRes = res.result\n expect(o11yRes?.counters).length(0)\n expect(o11yRes?.gauges).length(1)\n expect(firstGaugeValue(o11yRes, 'g1')).equals(10n)\n\n const gauge = o11yRes?.gauges?.[0]\n expect(gauge?.metadata?.blockNumber?.toString()).equals('14373295')\n expect(gauge?.runtimeInfo?.from).equals(HandlerType.BLOCK)\n\n const res2 = await service.testBlock(blockData, 56)\n const o11yRes2 = res2.result\n expect(o11yRes2?.counters).length(0)\n expect(o11yRes2?.gauges).length(1)\n expect(firstGaugeValue(o11yRes2, 'g2')).equals(20n)\n })\n\n test('Check log dispatch', async () => {\n const logData = mockTransferLog('0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9', {\n from: '0x0000000000000000000000000000000000000000',\n to: '0xB329e39Ebefd16f40d38f07643652cE17Ca5Bac1',\n value: BigNumber.from('0x9a71db64810aaa0000'),\n })\n\n let res = await service.testLog(logData)\n\n const counters = res.result?.counters\n expect(counters).length(1)\n expect(firstCounterValue(res.result, 'c1')).equals(1n)\n\n expect(counters?.[0].metadata?.chainId).equals('1')\n expect(counters?.[0].runtimeInfo?.from).equals(HandlerType.LOG)\n expect(res.configUpdated).equals(true)\n\n const logData2 = Object.assign({}, logData)\n logData2.address = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'\n res = await service.testLog(logData2, 56)\n\n expect(firstCounterValue(res.result, 'c2')).equals(2n)\n expect(res.result?.counters[0].metadata?.chainId).equals('56')\n\n expect(res.result?.gauges).length(0)\n\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(6) //config increased\n expect(config.contractConfigs?.[5].contract?.name).equals('dynamic')\n\n // repeat trigger won't bind again\n await service.testLogs([logData])\n const config2 = await service.getConfig({})\n expect(config).deep.equals(config2)\n })\n\n const blockData = {\n hash: '0x2b9b7cce1f17f3b7e1f3c2472cc806a07bee3f0baca07d021350950d81d73a42',\n number: 14373295,\n timestamp: 1647106437,\n extraData: '0xe4b883e5bda9e7a59ee4bb99e9b1bc493421',\n }\n})\n"]}
@@ -1,3 +1,5 @@
1
1
  import { BigNumber } from 'ethers';
2
- import { BigDecimal } from '@sentio/sdk';
2
+ import { BigDecimal, MetricValue } from '@sentio/sdk';
3
+ import { Numberish } from '../numberish';
3
4
  export declare function toBigDecimal(n: BigNumber): BigDecimal;
5
+ export declare function metricValueToNumberish(v: MetricValue): Numberish;
@@ -1,9 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toBigDecimal = void 0;
3
+ exports.metricValueToNumberish = exports.toBigDecimal = void 0;
4
+ const ethers_1 = require("ethers");
4
5
  const sdk_1 = require("@sentio/sdk");
5
6
  function toBigDecimal(n) {
6
7
  return new sdk_1.BigDecimal(n.toString());
7
8
  }
8
9
  exports.toBigDecimal = toBigDecimal;
10
+ function metricValueToNumberish(v) {
11
+ if (v.doubleValue) {
12
+ return v.doubleValue;
13
+ }
14
+ if (v.bigInteger) {
15
+ const bn = ethers_1.BigNumber.from(v.bigInteger.data);
16
+ if (v.bigInteger.negative) {
17
+ return ethers_1.BigNumber.from(0).sub(bn);
18
+ }
19
+ return bn;
20
+ }
21
+ if (v.bigDecimal) {
22
+ return new sdk_1.BigDecimal(v.bigDecimal);
23
+ }
24
+ throw Error("MetricValue doesn't contain any of possible value");
25
+ }
26
+ exports.metricValueToNumberish = metricValueToNumberish;
9
27
  //# sourceMappingURL=convert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/utils/convert.ts"],"names":[],"mappings":";;;AACA,qCAAwC;AAExC,SAAgB,YAAY,CAAC,CAAY;IACvC,OAAO,IAAI,gBAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;AACrC,CAAC;AAFD,oCAEC","sourcesContent":["import { BigNumber } from 'ethers'\nimport { BigDecimal } from '@sentio/sdk'\n\nexport function toBigDecimal(n: BigNumber) {\n return new BigDecimal(n.toString())\n}\n"]}
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/utils/convert.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAClC,qCAAqD;AAGrD,SAAgB,YAAY,CAAC,CAAY;IACvC,OAAO,IAAI,gBAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;AACrC,CAAC;AAFD,oCAEC;AAED,SAAgB,sBAAsB,CAAC,CAAc;IACnD,IAAI,CAAC,CAAC,WAAW,EAAE;QACjB,OAAO,CAAC,CAAC,WAAW,CAAA;KACrB;IACD,IAAI,CAAC,CAAC,UAAU,EAAE;QAChB,MAAM,EAAE,GAAG,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC5C,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;YACzB,OAAO,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;SACjC;QACD,OAAO,EAAE,CAAA;KACV;IAED,IAAI,CAAC,CAAC,UAAU,EAAE;QAChB,OAAO,IAAI,gBAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;KACpC;IAED,MAAM,KAAK,CAAC,mDAAmD,CAAC,CAAA;AAClE,CAAC;AAjBD,wDAiBC","sourcesContent":["import { BigNumber } from 'ethers'\nimport { BigDecimal, MetricValue } from '@sentio/sdk'\nimport { Numberish } from '../numberish'\n\nexport function toBigDecimal(n: BigNumber) {\n return new BigDecimal(n.toString())\n}\n\nexport function metricValueToNumberish(v: MetricValue): Numberish {\n if (v.doubleValue) {\n return v.doubleValue\n }\n if (v.bigInteger) {\n const bn = BigNumber.from(v.bigInteger.data)\n if (v.bigInteger.negative) {\n return BigNumber.from(0).sub(bn)\n }\n return bn\n }\n\n if (v.bigDecimal) {\n return new BigDecimal(v.bigDecimal)\n }\n\n throw Error(\"MetricValue doesn't contain any of possible value\")\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import { BigNumber } from '@ethersproject/bignumber';
2
+ import { BigDecimal } from '@sentio/sdk';
3
+ export interface TokenInfo {
4
+ symbol: string;
5
+ name: string;
6
+ decimal: number;
7
+ }
8
+ export declare function getERC20TokenInfo(tokenAddress: string, chainId?: number): Promise<TokenInfo>;
9
+ export declare function getER20NormalizedAmount(tokenAddress: string, amount: BigNumber, chainId: number): Promise<BigDecimal>;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getER20NormalizedAmount = exports.getERC20TokenInfo = void 0;
4
+ const error_1 = require("../error");
5
+ const erc20_1 = require("../builtin/erc20");
6
+ const erc20bytes_processor_1 = require("../builtin/internal/erc20bytes_processor");
7
+ const sdk_1 = require("@sentio/sdk");
8
+ const convert_1 = require("./convert");
9
+ const ethers_1 = require("ethers");
10
+ const TOKEN_INFOS = new Map();
11
+ async function getERC20TokenInfo(tokenAddress, chainId = 1) {
12
+ const key = chainId + tokenAddress;
13
+ const res = TOKEN_INFOS.get(key);
14
+ if (res) {
15
+ return res;
16
+ }
17
+ const contract = (0, erc20_1.getERC20Contract)(tokenAddress, chainId);
18
+ const bytesContract = (0, erc20bytes_processor_1.getERC20BytesContract)(tokenAddress, chainId);
19
+ try {
20
+ // TODO maybe not do try catch, just do raw call the parse results
21
+ let name = '';
22
+ try {
23
+ name = await contract.name();
24
+ }
25
+ catch (e) {
26
+ name = ethers_1.utils.parseBytes32String(await bytesContract.name());
27
+ }
28
+ let symbol = '';
29
+ try {
30
+ symbol = await contract.symbol();
31
+ }
32
+ catch (e) {
33
+ symbol = ethers_1.utils.parseBytes32String(await bytesContract.symbol());
34
+ }
35
+ const decimal = await contract.decimals();
36
+ const info = { name, symbol, decimal };
37
+ TOKEN_INFOS.set(key, info);
38
+ return info;
39
+ }
40
+ catch (e) {
41
+ throw (0, error_1.transformEtherError)(e, undefined);
42
+ }
43
+ }
44
+ exports.getERC20TokenInfo = getERC20TokenInfo;
45
+ async function getER20NormalizedAmount(tokenAddress, amount, chainId) {
46
+ const tokenInfo = await getERC20TokenInfo(tokenAddress, chainId);
47
+ const divider = new sdk_1.BigDecimal(10).pow(tokenInfo.decimal);
48
+ return (0, convert_1.toBigDecimal)(amount).dividedBy(divider);
49
+ }
50
+ exports.getER20NormalizedAmount = getER20NormalizedAmount;
51
+ //# sourceMappingURL=erc20.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/utils/erc20.ts"],"names":[],"mappings":";;;AAEA,oCAA8C;AAC9C,4CAAmD;AACnD,mFAAgF;AAChF,qCAAwC;AACxC,uCAAwC;AACxC,mCAA8B;AAQ9B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAA;AAEzC,KAAK,UAAU,iBAAiB,CAAC,YAAoB,EAAE,OAAO,GAAG,CAAC;IACvE,MAAM,GAAG,GAAG,OAAO,GAAG,YAAY,CAAA;IAClC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,GAAG,EAAE;QACP,OAAO,GAAG,CAAA;KACX;IACD,MAAM,QAAQ,GAAG,IAAA,wBAAgB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACxD,MAAM,aAAa,GAAG,IAAA,4CAAqB,EAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAElE,IAAI;QACF,kEAAkE;QAClE,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,IAAI;YACF,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;SAC7B;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,GAAG,cAAK,CAAC,kBAAkB,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAA;SAC5D;QAED,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI;YACF,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAA;SACjC;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,GAAG,cAAK,CAAC,kBAAkB,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;SAChE;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;QACtC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC1B,OAAO,IAAI,CAAA;KACZ;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAA,2BAAmB,EAAC,CAAC,EAAE,SAAS,CAAC,CAAA;KACxC;AACH,CAAC;AAhCD,8CAgCC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,YAAoB,EACpB,MAAiB,EACjB,OAAe;IAEf,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAChE,MAAM,OAAO,GAAG,IAAI,gBAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACzD,OAAO,IAAA,sBAAY,EAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;AAChD,CAAC;AARD,0DAQC","sourcesContent":["import { BigNumber } from '@ethersproject/bignumber'\n\nimport { transformEtherError } from '../error'\nimport { getERC20Contract } from '../builtin/erc20'\nimport { getERC20BytesContract } from '../builtin/internal/erc20bytes_processor'\nimport { BigDecimal } from '@sentio/sdk'\nimport { toBigDecimal } from './convert'\nimport { utils } from 'ethers'\n\nexport interface TokenInfo {\n symbol: string\n name: string\n decimal: number\n}\n\nconst TOKEN_INFOS = new Map<string, TokenInfo>()\n\nexport async function getERC20TokenInfo(tokenAddress: string, chainId = 1): Promise<TokenInfo> {\n const key = chainId + tokenAddress\n const res = TOKEN_INFOS.get(key)\n if (res) {\n return res\n }\n const contract = getERC20Contract(tokenAddress, chainId)\n const bytesContract = getERC20BytesContract(tokenAddress, chainId)\n\n try {\n // TODO maybe not do try catch, just do raw call the parse results\n let name = ''\n try {\n name = await contract.name()\n } catch (e) {\n name = utils.parseBytes32String(await bytesContract.name())\n }\n\n let symbol = ''\n try {\n symbol = await contract.symbol()\n } catch (e) {\n symbol = utils.parseBytes32String(await bytesContract.symbol())\n }\n\n const decimal = await contract.decimals()\n const info = { name, symbol, decimal }\n TOKEN_INFOS.set(key, info)\n return info\n } catch (e) {\n throw transformEtherError(e, undefined)\n }\n}\n\nexport async function getER20NormalizedAmount(\n tokenAddress: string,\n amount: BigNumber,\n chainId: number\n): Promise<BigDecimal> {\n const tokenInfo = await getERC20TokenInfo(tokenAddress, chainId)\n const divider = new BigDecimal(10).pow(tokenInfo.decimal)\n return toBigDecimal(amount).dividedBy(divider)\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const sdk_1 = require("@sentio/sdk");
4
+ const erc20_1 = require("./erc20");
5
+ describe('erc20 tests', () => {
6
+ beforeAll(async () => {
7
+ global.PROCESSOR_STATE = new sdk_1.ProcessorState();
8
+ (0, sdk_1.setProvider)({
9
+ '1': {
10
+ ChainID: '1',
11
+ Https: ['https://eth-mainnet.alchemyapi.io/v2/Gk024pFA-64RaEPIawL40n__1esXJFb2'], // Use env
12
+ },
13
+ });
14
+ });
15
+ test('test bytes32', async () => {
16
+ const info = await (0, erc20_1.getERC20TokenInfo)('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2');
17
+ expect(info.decimal).toEqual(18);
18
+ expect(info.symbol).toEqual('MKR');
19
+ expect(info.name).toEqual('Maker');
20
+ });
21
+ test('test normal', async () => {
22
+ const info = await (0, erc20_1.getERC20TokenInfo)('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48');
23
+ expect(info.decimal).toEqual(6);
24
+ expect(info.symbol).toEqual('USDC');
25
+ expect(info.name).toEqual('USD Coin');
26
+ });
27
+ });
28
+ //# sourceMappingURL=erc20.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc20.test.js","sourceRoot":"","sources":["../../src/utils/erc20.test.ts"],"names":[],"mappings":";;AAAA,qCAAyD;AACzD,mCAA2C;AAE3C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,CAAC,eAAe,GAAG,IAAI,oBAAc,EAAE,CAAA;QAE7C,IAAA,iBAAW,EAAC;YACV,GAAG,EAAE;gBACH,OAAO,EAAE,GAAG;gBACZ,KAAK,EAAE,CAAC,uEAAuE,CAAC,EAAE,UAAU;aAC7F;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAiB,EAAC,4CAA4C,CAAC,CAAA;QAElF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAiB,EAAC,4CAA4C,CAAC,CAAA;QAElF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { ProcessorState, setProvider } from '@sentio/sdk'\nimport { getERC20TokenInfo } from './erc20'\n\ndescribe('erc20 tests', () => {\n beforeAll(async () => {\n global.PROCESSOR_STATE = new ProcessorState()\n\n setProvider({\n '1': {\n ChainID: '1',\n Https: ['https://eth-mainnet.alchemyapi.io/v2/Gk024pFA-64RaEPIawL40n__1esXJFb2'], // Use env\n },\n })\n })\n\n test('test bytes32', async () => {\n const info = await getERC20TokenInfo('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2')\n\n expect(info.decimal).toEqual(18)\n expect(info.symbol).toEqual('MKR')\n expect(info.name).toEqual('Maker')\n })\n\n test('test normal', async () => {\n const info = await getERC20TokenInfo('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48')\n\n expect(info.decimal).toEqual(6)\n expect(info.symbol).toEqual('USDC')\n expect(info.name).toEqual('USD Coin')\n })\n})\n"]}
@@ -1,2 +1,3 @@
1
1
  export { getChainName } from './chainmap';
2
- export { toBigDecimal } from './convert';
2
+ export { toBigDecimal, metricValueToNumberish } from './convert';
3
+ export { getERC20TokenInfo, getER20NormalizedAmount } from './erc20';
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toBigDecimal = exports.getChainName = void 0;
3
+ exports.getER20NormalizedAmount = exports.getERC20TokenInfo = exports.metricValueToNumberish = exports.toBigDecimal = exports.getChainName = void 0;
4
4
  var chainmap_1 = require("./chainmap");
5
5
  Object.defineProperty(exports, "getChainName", { enumerable: true, get: function () { return chainmap_1.getChainName; } });
6
6
  var convert_1 = require("./convert");
7
7
  Object.defineProperty(exports, "toBigDecimal", { enumerable: true, get: function () { return convert_1.toBigDecimal; } });
8
+ Object.defineProperty(exports, "metricValueToNumberish", { enumerable: true, get: function () { return convert_1.metricValueToNumberish; } });
9
+ var erc20_1 = require("./erc20");
10
+ Object.defineProperty(exports, "getERC20TokenInfo", { enumerable: true, get: function () { return erc20_1.getERC20TokenInfo; } });
11
+ Object.defineProperty(exports, "getER20NormalizedAmount", { enumerable: true, get: function () { return erc20_1.getER20NormalizedAmount; } });
8
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAAhC,wGAAA,YAAY,OAAA;AACrB,qCAAwC;AAA/B,uGAAA,YAAY,OAAA","sourcesContent":["export { getChainName } from './chainmap'\nexport { toBigDecimal } from './convert'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAAhC,wGAAA,YAAY,OAAA;AACrB,qCAAgE;AAAvD,uGAAA,YAAY,OAAA;AAAE,iHAAA,sBAAsB,OAAA;AAC7C,iCAAoE;AAA3D,0GAAA,iBAAiB,OAAA;AAAE,gHAAA,uBAAuB,OAAA","sourcesContent":["export { getChainName } from './chainmap'\nexport { toBigDecimal, metricValueToNumberish } from './convert'\nexport { getERC20TokenInfo, getER20NormalizedAmount } from './erc20'\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sentio/sdk",
3
3
  "license": "Apache-2.0",
4
- "version": "1.7.18",
4
+ "version": "1.7.21",
5
5
  "scripts": {
6
6
  "compile_target": "yarn tsc -b src/target-ethers-sentio/tsconfig.json",
7
7
  "compile": "tsc -p . && cp src/cli/webpack.config.js lib/cli",
@@ -57,9 +57,9 @@
57
57
  "@types/node": "^18.0.4",
58
58
  "chai": "^4.3.6",
59
59
  "clean-publish": "^4.0.1",
60
- "jest": "^28.0.1",
60
+ "jest": "^29.0.0",
61
61
  "semantic-release": "^19.0.5",
62
- "ts-jest": "^28.0.8",
62
+ "ts-jest": "^29.0.0",
63
63
  "ts-node": "^10.8.0",
64
64
  "tsconfig-paths": "^4.0.0",
65
65
  "typescript": "^4.8.0"
@@ -0,0 +1,174 @@
1
+ [
2
+ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" },
3
+ {
4
+ "anonymous": false,
5
+ "inputs": [
6
+ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" },
7
+ { "indexed": true, "internalType": "address", "name": "spender", "type": "address" },
8
+ { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }
9
+ ],
10
+ "name": "Approval",
11
+ "type": "event"
12
+ },
13
+ {
14
+ "anonymous": false,
15
+ "inputs": [
16
+ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" },
17
+ { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" }
18
+ ],
19
+ "name": "OwnershipTransferred",
20
+ "type": "event"
21
+ },
22
+ {
23
+ "anonymous": false,
24
+ "inputs": [
25
+ { "indexed": true, "internalType": "address", "name": "from", "type": "address" },
26
+ { "indexed": true, "internalType": "address", "name": "to", "type": "address" },
27
+ { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }
28
+ ],
29
+ "name": "Transfer",
30
+ "type": "event"
31
+ },
32
+ {
33
+ "inputs": [
34
+ { "internalType": "address", "name": "owner", "type": "address" },
35
+ { "internalType": "address", "name": "spender", "type": "address" }
36
+ ],
37
+ "name": "allowance",
38
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
39
+ "stateMutability": "view",
40
+ "type": "function"
41
+ },
42
+ {
43
+ "inputs": [
44
+ { "internalType": "address", "name": "spender", "type": "address" },
45
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
46
+ ],
47
+ "name": "approve",
48
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
49
+ "stateMutability": "nonpayable",
50
+ "type": "function"
51
+ },
52
+ {
53
+ "inputs": [{ "internalType": "address", "name": "account", "type": "address" }],
54
+ "name": "balanceOf",
55
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
56
+ "stateMutability": "view",
57
+ "type": "function"
58
+ },
59
+ {
60
+ "inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }],
61
+ "name": "burn",
62
+ "outputs": [],
63
+ "stateMutability": "nonpayable",
64
+ "type": "function"
65
+ },
66
+ {
67
+ "inputs": [
68
+ { "internalType": "address", "name": "account", "type": "address" },
69
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
70
+ ],
71
+ "name": "burnFrom",
72
+ "outputs": [],
73
+ "stateMutability": "nonpayable",
74
+ "type": "function"
75
+ },
76
+ {
77
+ "inputs": [],
78
+ "name": "decimals",
79
+ "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
80
+ "stateMutability": "view",
81
+ "type": "function"
82
+ },
83
+ {
84
+ "inputs": [
85
+ { "internalType": "address", "name": "spender", "type": "address" },
86
+ { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" }
87
+ ],
88
+ "name": "decreaseAllowance",
89
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
90
+ "stateMutability": "nonpayable",
91
+ "type": "function"
92
+ },
93
+ {
94
+ "inputs": [
95
+ { "internalType": "address", "name": "spender", "type": "address" },
96
+ { "internalType": "uint256", "name": "addedValue", "type": "uint256" }
97
+ ],
98
+ "name": "increaseAllowance",
99
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
100
+ "stateMutability": "nonpayable",
101
+ "type": "function"
102
+ },
103
+ {
104
+ "inputs": [],
105
+ "name": "locker",
106
+ "outputs": [{ "internalType": "contract ILocker", "name": "", "type": "address" }],
107
+ "stateMutability": "view",
108
+ "type": "function"
109
+ },
110
+ {
111
+ "inputs": [],
112
+ "name": "name",
113
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
114
+ "stateMutability": "view",
115
+ "type": "function"
116
+ },
117
+ {
118
+ "inputs": [],
119
+ "name": "owner",
120
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
121
+ "stateMutability": "view",
122
+ "type": "function"
123
+ },
124
+ { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" },
125
+ {
126
+ "inputs": [{ "internalType": "address", "name": "_locker", "type": "address" }],
127
+ "name": "setLocker",
128
+ "outputs": [],
129
+ "stateMutability": "nonpayable",
130
+ "type": "function"
131
+ },
132
+ {
133
+ "inputs": [],
134
+ "name": "symbol",
135
+ "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
136
+ "stateMutability": "view",
137
+ "type": "function"
138
+ },
139
+ {
140
+ "inputs": [],
141
+ "name": "totalSupply",
142
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
143
+ "stateMutability": "view",
144
+ "type": "function"
145
+ },
146
+ {
147
+ "inputs": [
148
+ { "internalType": "address", "name": "recipient", "type": "address" },
149
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
150
+ ],
151
+ "name": "transfer",
152
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
153
+ "stateMutability": "nonpayable",
154
+ "type": "function"
155
+ },
156
+ {
157
+ "inputs": [
158
+ { "internalType": "address", "name": "sender", "type": "address" },
159
+ { "internalType": "address", "name": "recipient", "type": "address" },
160
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
161
+ ],
162
+ "name": "transferFrom",
163
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
164
+ "stateMutability": "nonpayable",
165
+ "type": "function"
166
+ },
167
+ {
168
+ "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
169
+ "name": "transferOwnership",
170
+ "outputs": [],
171
+ "stateMutability": "nonpayable",
172
+ "type": "function"
173
+ }
174
+ ]