@sentio/sdk 2.7.4-rc.2 → 2.8.0-rc.2

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 (81) hide show
  1. package/lib/aptos/context.d.ts +2 -0
  2. package/lib/aptos/context.js +8 -2
  3. package/lib/aptos/context.js.map +1 -1
  4. package/lib/aptos/ext/aptos-dex.js +2 -0
  5. package/lib/aptos/ext/aptos-dex.js.map +1 -1
  6. package/lib/core/base-context.d.ts +1 -0
  7. package/lib/core/base-context.js.map +1 -1
  8. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.d.ts +2 -1
  9. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js +3 -2
  10. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -1
  11. package/lib/eth/builtin/internal/eacaggregatorproxy-test-utils.js +4 -4
  12. package/lib/eth/builtin/internal/eacaggregatorproxy-test-utils.js.map +1 -1
  13. package/lib/eth/builtin/internal/erc1155-processor.d.ts +2 -1
  14. package/lib/eth/builtin/internal/erc1155-processor.js +3 -2
  15. package/lib/eth/builtin/internal/erc1155-processor.js.map +1 -1
  16. package/lib/eth/builtin/internal/erc1155-test-utils.js +4 -4
  17. package/lib/eth/builtin/internal/erc1155-test-utils.js.map +1 -1
  18. package/lib/eth/builtin/internal/erc20-processor.d.ts +2 -1
  19. package/lib/eth/builtin/internal/erc20-processor.js +3 -2
  20. package/lib/eth/builtin/internal/erc20-processor.js.map +1 -1
  21. package/lib/eth/builtin/internal/erc20-test-utils.js +3 -3
  22. package/lib/eth/builtin/internal/erc20-test-utils.js.map +1 -1
  23. package/lib/eth/builtin/internal/erc20bytes-processor.d.ts +2 -1
  24. package/lib/eth/builtin/internal/erc20bytes-processor.js +3 -2
  25. package/lib/eth/builtin/internal/erc20bytes-processor.js.map +1 -1
  26. package/lib/eth/builtin/internal/erc20bytes-test-utils.js +2 -2
  27. package/lib/eth/builtin/internal/erc20bytes-test-utils.js.map +1 -1
  28. package/lib/eth/builtin/internal/erc721-processor.d.ts +2 -1
  29. package/lib/eth/builtin/internal/erc721-processor.js +3 -2
  30. package/lib/eth/builtin/internal/erc721-processor.js.map +1 -1
  31. package/lib/eth/builtin/internal/erc721-test-utils.js +3 -3
  32. package/lib/eth/builtin/internal/erc721-test-utils.js.map +1 -1
  33. package/lib/eth/builtin/internal/weth9-processor.d.ts +2 -1
  34. package/lib/eth/builtin/internal/weth9-processor.js +3 -2
  35. package/lib/eth/builtin/internal/weth9-processor.js.map +1 -1
  36. package/lib/eth/builtin/internal/weth9-test-utils.js +4 -4
  37. package/lib/eth/builtin/internal/weth9-test-utils.js.map +1 -1
  38. package/lib/eth/codegen/file.js +5 -3
  39. package/lib/eth/codegen/file.js.map +1 -1
  40. package/lib/eth/context.d.ts +1 -0
  41. package/lib/eth/context.js +3 -0
  42. package/lib/eth/context.js.map +1 -1
  43. package/lib/eth/index.d.ts +1 -1
  44. package/lib/eth/index.js +1 -1
  45. package/lib/eth/index.js.map +1 -1
  46. package/lib/eth/provider.d.ts +3 -1
  47. package/lib/eth/provider.js +9 -2
  48. package/lib/eth/provider.js.map +1 -1
  49. package/lib/solana/solana-context.d.ts +1 -0
  50. package/lib/solana/solana-context.js +4 -1
  51. package/lib/solana/solana-context.js.map +1 -1
  52. package/lib/sui/context.d.ts +1 -0
  53. package/lib/sui/context.js +4 -1
  54. package/lib/sui/context.js.map +1 -1
  55. package/lib/utils/erc20.test.js.map +1 -1
  56. package/lib/utils/token.d.ts +4 -2
  57. package/lib/utils/token.js +5 -3
  58. package/lib/utils/token.js.map +1 -1
  59. package/package.json +4 -4
  60. package/src/aptos/context.ts +10 -2
  61. package/src/aptos/ext/aptos-dex.ts +2 -0
  62. package/src/core/base-context.ts +2 -0
  63. package/src/eth/builtin/internal/eacaggregatorproxy-processor.ts +4 -1
  64. package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.ts +4 -4
  65. package/src/eth/builtin/internal/erc1155-processor.ts +4 -1
  66. package/src/eth/builtin/internal/erc1155-test-utils.ts +4 -4
  67. package/src/eth/builtin/internal/erc20-processor.ts +4 -1
  68. package/src/eth/builtin/internal/erc20-test-utils.ts +3 -3
  69. package/src/eth/builtin/internal/erc20bytes-processor.ts +4 -1
  70. package/src/eth/builtin/internal/erc20bytes-test-utils.ts +2 -2
  71. package/src/eth/builtin/internal/erc721-processor.ts +4 -1
  72. package/src/eth/builtin/internal/erc721-test-utils.ts +3 -3
  73. package/src/eth/builtin/internal/weth9-processor.ts +4 -1
  74. package/src/eth/builtin/internal/weth9-test-utils.ts +4 -4
  75. package/src/eth/codegen/file.ts +7 -3
  76. package/src/eth/context.ts +4 -0
  77. package/src/eth/index.ts +1 -1
  78. package/src/eth/provider.ts +10 -2
  79. package/src/solana/solana-context.ts +5 -1
  80. package/src/sui/context.ts +5 -1
  81. package/src/utils/token.ts +10 -4
@@ -1,19 +1,26 @@
1
1
  import { Network, JsonRpcProvider } from 'ethers';
2
2
  import PQueue from 'p-queue';
3
3
  import { Endpoints } from '@sentio/runtime';
4
+ import { BaseContext } from '../core/index.js';
4
5
  export const DummyProvider = new JsonRpcProvider('', Network.from(1));
5
6
  const providers = new Map();
6
- export function getProvider(networkish) {
7
+ export function getNetworkFromCtxOrNetworkish(networkish) {
7
8
  if (!networkish) {
8
9
  networkish = 1;
9
10
  }
11
+ if (networkish instanceof BaseContext) {
12
+ networkish = networkish.getChainId();
13
+ }
10
14
  if (typeof networkish === 'string') {
11
15
  const id = parseInt(networkish);
12
16
  if (!isNaN(id)) {
13
17
  networkish = 1;
14
18
  }
15
19
  }
16
- const network = Network.from(networkish);
20
+ return Network.from(networkish);
21
+ }
22
+ export function getProvider(networkish) {
23
+ const network = getNetworkFromCtxOrNetworkish(networkish);
17
24
  // TODO check if other key needed
18
25
  const address = Endpoints.INSTANCE.chainServer.get(network.chainId.toString());
19
26
  const key = network.chainId.toString() + '-' + address;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Provider, Network, JsonRpcProvider } from 'ethers'\nimport { Networkish } from 'ethers/providers'\n\nimport PQueue from 'p-queue'\nimport { Endpoints } from '@sentio/runtime'\n\nexport const DummyProvider = new JsonRpcProvider('', Network.from(1))\n\nconst providers = new Map<string, JsonRpcProvider>()\n\nexport function getProvider(networkish?: Networkish): Provider {\n if (!networkish) {\n networkish = 1\n }\n if (typeof networkish === 'string') {\n const id = parseInt(networkish)\n if (!isNaN(id)) {\n networkish = 1\n }\n }\n const network = Network.from(networkish)\n // TODO check if other key needed\n\n const address = Endpoints.INSTANCE.chainServer.get(network.chainId.toString())\n const key = network.chainId.toString() + '-' + address\n let provider = providers.get(key)\n\n if (provider) {\n return provider\n }\n\n if (address === undefined) {\n throw Error(\n 'Provider not found for chain ' +\n network.chainId +\n ', configured chains: ' +\n [...Endpoints.INSTANCE.chainServer.keys()].join(' ')\n )\n }\n provider = new QueuedStaticJsonRpcProvider(address, Network.from(network), Endpoints.INSTANCE.concurrency)\n providers.set(network.chainId.toString(), provider)\n return provider\n}\n\nfunction getTag(prefix: string, value: any): string {\n return (\n prefix +\n ':' +\n JSON.stringify(value, (k, v) => {\n if (v == null) {\n return 'null'\n }\n if (typeof v === 'bigint') {\n return `bigint:${v.toString()}`\n }\n if (typeof v === 'string') {\n return v.toLowerCase()\n }\n\n // Sort object keys\n if (typeof v === 'object' && !Array.isArray(v)) {\n const keys = Object.keys(v)\n keys.sort()\n return keys.reduce((accum, key) => {\n accum[key] = v[key]\n return accum\n }, <any>{})\n }\n\n return v\n })\n )\n}\n\nclass QueuedStaticJsonRpcProvider extends JsonRpcProvider {\n executor: PQueue\n #performCache = new Map<string, Promise<any>>()\n\n constructor(url: string, network: Network, concurrency: number) {\n // TODO re-enable match when possible\n super(url, network, { staticNetwork: network, batchMaxCount: 1 })\n this.executor = new PQueue({ concurrency: concurrency })\n }\n\n async send(method: string, params: Array<any>): Promise<any> {\n const tag = getTag(method, params)\n const block = params[params.length - 1]\n let perform = this.#performCache.get(tag)\n if (!perform) {\n perform = this.executor.add(() => super.send(method, params))\n this.#performCache.set(tag, perform)\n // For non latest block call, we cache permanently, otherwise we cache for one minute\n if (block === 'latest') {\n setTimeout(() => {\n if (this.#performCache.get(tag) === perform) {\n this.#performCache.delete(tag)\n }\n }, 60 * 1000)\n }\n }\n\n const result = await perform\n if (!result) {\n throw Error('Unexpected null response')\n }\n return result\n }\n}\n"]}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Provider, Network, JsonRpcProvider } from 'ethers'\nimport { Networkish } from 'ethers/providers'\n\nimport PQueue from 'p-queue'\nimport { Endpoints } from '@sentio/runtime'\nimport { BaseContext } from '../core/index.js'\n\nexport const DummyProvider = new JsonRpcProvider('', Network.from(1))\n\nconst providers = new Map<string, JsonRpcProvider>()\n\nexport function getNetworkFromCtxOrNetworkish(networkish?: BaseContext | Networkish) {\n if (!networkish) {\n networkish = 1\n }\n if (networkish instanceof BaseContext) {\n networkish = networkish.getChainId()\n }\n if (typeof networkish === 'string') {\n const id = parseInt(networkish)\n if (!isNaN(id)) {\n networkish = 1\n }\n }\n return Network.from(networkish)\n}\n\nexport function getProvider(networkish?: Networkish): Provider {\n const network = getNetworkFromCtxOrNetworkish(networkish)\n // TODO check if other key needed\n\n const address = Endpoints.INSTANCE.chainServer.get(network.chainId.toString())\n const key = network.chainId.toString() + '-' + address\n let provider = providers.get(key)\n\n if (provider) {\n return provider\n }\n\n if (address === undefined) {\n throw Error(\n 'Provider not found for chain ' +\n network.chainId +\n ', configured chains: ' +\n [...Endpoints.INSTANCE.chainServer.keys()].join(' ')\n )\n }\n provider = new QueuedStaticJsonRpcProvider(address, Network.from(network), Endpoints.INSTANCE.concurrency)\n providers.set(network.chainId.toString(), provider)\n return provider\n}\n\nfunction getTag(prefix: string, value: any): string {\n return (\n prefix +\n ':' +\n JSON.stringify(value, (k, v) => {\n if (v == null) {\n return 'null'\n }\n if (typeof v === 'bigint') {\n return `bigint:${v.toString()}`\n }\n if (typeof v === 'string') {\n return v.toLowerCase()\n }\n\n // Sort object keys\n if (typeof v === 'object' && !Array.isArray(v)) {\n const keys = Object.keys(v)\n keys.sort()\n return keys.reduce((accum, key) => {\n accum[key] = v[key]\n return accum\n }, <any>{})\n }\n\n return v\n })\n )\n}\n\nclass QueuedStaticJsonRpcProvider extends JsonRpcProvider {\n executor: PQueue\n #performCache = new Map<string, Promise<any>>()\n\n constructor(url: string, network: Network, concurrency: number) {\n // TODO re-enable match when possible\n super(url, network, { staticNetwork: network, batchMaxCount: 1 })\n this.executor = new PQueue({ concurrency: concurrency })\n }\n\n async send(method: string, params: Array<any>): Promise<any> {\n const tag = getTag(method, params)\n const block = params[params.length - 1]\n let perform = this.#performCache.get(tag)\n if (!perform) {\n perform = this.executor.add(() => super.send(method, params))\n this.#performCache.set(tag, perform)\n // For non latest block call, we cache permanently, otherwise we cache for one minute\n if (block === 'latest') {\n setTimeout(() => {\n if (this.#performCache.get(tag) === perform) {\n this.#performCache.delete(tag)\n }\n }, 60 * 1000)\n }\n }\n\n const result = await perform\n if (!result) {\n throw Error('Unexpected null response')\n }\n return result\n }\n}\n"]}
@@ -5,5 +5,6 @@ export declare class SolanaContext extends BaseContext {
5
5
  programName: string;
6
6
  blockNumber: bigint;
7
7
  constructor(programName: string, network: string, address: string, slot: bigint);
8
+ getChainId(): string;
8
9
  getMetaData(name: string, labels: Labels): RecordMetaData;
9
10
  }
@@ -11,6 +11,9 @@ export class SolanaContext extends BaseContext {
11
11
  this.address = address;
12
12
  this.blockNumber = slot;
13
13
  }
14
+ getChainId() {
15
+ return this.network;
16
+ }
14
17
  getMetaData(name, labels) {
15
18
  return {
16
19
  address: this.address,
@@ -19,7 +22,7 @@ export class SolanaContext extends BaseContext {
19
22
  transactionIndex: 0,
20
23
  transactionHash: '',
21
24
  logIndex: 0,
22
- chainId: this.network,
25
+ chainId: this.getChainId(),
23
26
  name: name,
24
27
  labels: normalizeLabels(labels),
25
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"solana-context.js","sourceRoot":"","sources":["../../src/solana/solana-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAU,WAAW,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAA;AAE7F,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C,OAAO,CAAQ;IACf,OAAO,CAAQ;IACf,WAAW,CAAQ;IACnB,WAAW,CAAQ;IAEnB,YAAY,WAAmB,EAAE,OAAe,EAAE,OAAe,EAAE,IAAY;QAC7E,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,SAAS,CAAC,cAAc,CAAA;QAClD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,MAAc;QACtC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;SAChC,CAAA;IACH,CAAC;CACF","sourcesContent":["import { normalizeLabels, Labels, BaseContext, RecordMetaData, CHAIN_IDS } from '@sentio/sdk'\n\nexport class SolanaContext extends BaseContext {\n network: string\n address: string\n programName: string\n blockNumber: bigint\n\n constructor(programName: string, network: string, address: string, slot: bigint) {\n super()\n this.network = network || CHAIN_IDS.SOLANA_MAINNET\n this.programName = programName\n this.address = address\n this.blockNumber = slot\n }\n\n getMetaData(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.programName,\n blockNumber: this.blockNumber,\n transactionIndex: 0,\n transactionHash: '', // TODO add\n logIndex: 0,\n chainId: this.network,\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n}\n"]}
1
+ {"version":3,"file":"solana-context.js","sourceRoot":"","sources":["../../src/solana/solana-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAU,WAAW,EAAkB,SAAS,EAAE,MAAM,aAAa,CAAA;AAE7F,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C,OAAO,CAAQ;IACf,OAAO,CAAQ;IACf,WAAW,CAAQ;IACnB,WAAW,CAAQ;IAEnB,YAAY,WAAmB,EAAE,OAAe,EAAE,OAAe,EAAE,IAAY;QAC7E,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,SAAS,CAAC,cAAc,CAAA;QAClD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,MAAc;QACtC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;SAChC,CAAA;IACH,CAAC;CACF","sourcesContent":["import { normalizeLabels, Labels, BaseContext, RecordMetaData, CHAIN_IDS } from '@sentio/sdk'\n\nexport class SolanaContext extends BaseContext {\n network: string\n address: string\n programName: string\n blockNumber: bigint\n\n constructor(programName: string, network: string, address: string, slot: bigint) {\n super()\n this.network = network || CHAIN_IDS.SOLANA_MAINNET\n this.programName = programName\n this.address = address\n this.blockNumber = slot\n }\n\n getChainId(): string {\n return this.network\n }\n\n getMetaData(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.programName,\n blockNumber: this.blockNumber,\n transactionIndex: 0,\n transactionHash: '', // TODO add\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n}\n"]}
@@ -10,5 +10,6 @@ export declare class SuiContext extends BaseContext {
10
10
  slot: bigint;
11
11
  transaction: SuiTransactionResponse;
12
12
  constructor(moduleName: string, network: SuiNetwork, address: string, timestamp: Date, slot: bigint, transaction?: SuiTransactionResponse);
13
+ getChainId(): string;
13
14
  getMetaData(name: string, labels: Labels): RecordMetaData;
14
15
  }
@@ -18,6 +18,9 @@ export class SuiContext extends BaseContext {
18
18
  this.transaction = transaction;
19
19
  }
20
20
  }
21
+ getChainId() {
22
+ return getChainId(this.network);
23
+ }
21
24
  getMetaData(name, labels) {
22
25
  return {
23
26
  address: this.address,
@@ -26,7 +29,7 @@ export class SuiContext extends BaseContext {
26
29
  transactionIndex: 0,
27
30
  transactionHash: this.transaction?.certificate.transactionDigest || '',
28
31
  logIndex: 0,
29
- chainId: getChainId(this.network),
32
+ chainId: this.getChainId(),
30
33
  name: name,
31
34
  labels: normalizeLabels(labels),
32
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/sui/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAc,UAAU,EAAE,MAAM,cAAc,CAAA;AAGrD,MAAM,OAAO,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAQ;IACf,OAAO,CAAY;IACnB,UAAU,CAAQ;IAClB,SAAS,CAAM;IACf,IAAI,CAAQ;IACZ,WAAW,CAAwB;IAEnC,YACE,UAAkB,EAClB,OAAmB,EACnB,OAAe,EACf,SAAe,EACf,IAAY,EACZ,WAAoC;QAEpC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;SAC/B;IACH,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,MAAc;QACtC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,UAAU;YAC7B,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,iBAAiB,IAAI,EAAE;YACtE,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACjC,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;SAChC,CAAA;IACH,CAAC;CACF","sourcesContent":["import { RecordMetaData } from '@sentio/protos'\nimport { type Labels, BaseContext, normalizeLabels } from '../index.js'\nimport { SuiNetwork, getChainId } from './network.js'\nimport { SuiTransactionResponse } from '@mysten/sui.js'\n\nexport class SuiContext extends BaseContext {\n address: string\n network: SuiNetwork\n moduleName: string\n timestamp: Date\n slot: bigint\n transaction: SuiTransactionResponse\n\n constructor(\n moduleName: string,\n network: SuiNetwork,\n address: string,\n timestamp: Date,\n slot: bigint,\n transaction?: SuiTransactionResponse\n ) {\n super()\n this.address = address.toLowerCase()\n this.network = network\n this.moduleName = moduleName\n this.timestamp = timestamp\n this.slot = slot\n if (transaction) {\n this.transaction = transaction\n }\n }\n\n getMetaData(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.moduleName,\n blockNumber: this.slot,\n transactionIndex: 0,\n transactionHash: this.transaction?.certificate.transactionDigest || '', // TODO\n logIndex: 0,\n chainId: getChainId(this.network),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n}\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/sui/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAc,UAAU,EAAE,MAAM,cAAc,CAAA;AAGrD,MAAM,OAAO,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAQ;IACf,OAAO,CAAY;IACnB,UAAU,CAAQ;IAClB,SAAS,CAAM;IACf,IAAI,CAAQ;IACZ,WAAW,CAAwB;IAEnC,YACE,UAAkB,EAClB,OAAmB,EACnB,OAAe,EACf,SAAe,EACf,IAAY,EACZ,WAAoC;QAEpC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;SAC/B;IACH,CAAC;IAED,UAAU;QACR,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,MAAc;QACtC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,UAAU;YAC7B,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,iBAAiB,IAAI,EAAE;YACtE,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;YAC1B,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;SAChC,CAAA;IACH,CAAC;CACF","sourcesContent":["import { RecordMetaData } from '@sentio/protos'\nimport { type Labels, BaseContext, normalizeLabels } from '../index.js'\nimport { SuiNetwork, getChainId } from './network.js'\nimport { SuiTransactionResponse } from '@mysten/sui.js'\n\nexport class SuiContext extends BaseContext {\n address: string\n network: SuiNetwork\n moduleName: string\n timestamp: Date\n slot: bigint\n transaction: SuiTransactionResponse\n\n constructor(\n moduleName: string,\n network: SuiNetwork,\n address: string,\n timestamp: Date,\n slot: bigint,\n transaction?: SuiTransactionResponse\n ) {\n super()\n this.address = address.toLowerCase()\n this.network = network\n this.moduleName = moduleName\n this.timestamp = timestamp\n this.slot = slot\n if (transaction) {\n this.transaction = transaction\n }\n }\n\n getChainId(): string {\n return getChainId(this.network)\n }\n\n getMetaData(name: string, labels: Labels): RecordMetaData {\n return {\n address: this.address,\n contractName: this.moduleName,\n blockNumber: this.slot,\n transactionIndex: 0,\n transactionHash: this.transaction?.certificate.transactionDigest || '', // TODO\n logIndex: 0,\n chainId: this.getChainId(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.test.js","sourceRoot":"","sources":["../../src/utils/erc20.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AAEtE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,KAAK,CAAC,KAAK,EAAE,CAAA;IACb,oBAAoB;IAEpB,MAAM,aAAa,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAA;IAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAE/C,MAAM,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,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,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,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 { State } from '@sentio/runtime'\nimport { getERC20TokenInfo } from './token.js'\nimport { loadTestProvidersFromEnv } from '../testing/test-provider.js'\n\ndescribe('erc20 tests', () => {\n State.reset()\n // Endpoints.reset()\n\n const haveProviders = loadTestProvidersFromEnv('1')\n\n const testIf = haveProviders ? test : test.skip\n\n testIf('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 testIf('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
+ {"version":3,"file":"erc20.test.js","sourceRoot":"","sources":["../../src/utils/erc20.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AAEtE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,KAAK,CAAC,KAAK,EAAE,CAAA;IACb,oBAAoB;IAEpB,MAAM,aAAa,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAA;IAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAE/C,MAAM,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,4CAA4C,EAAE,CAAC,CAAC,CAAA;QAErF,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,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,4CAA4C,EAAE,CAAC,CAAC,CAAA;QAErF,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 { State } from '@sentio/runtime'\nimport { getERC20TokenInfo } from './token.js'\nimport { loadTestProvidersFromEnv } from '../testing/test-provider.js'\n\ndescribe('erc20 tests', () => {\n State.reset()\n // Endpoints.reset()\n\n const haveProviders = loadTestProvidersFromEnv('1')\n\n const testIf = haveProviders ? test : test.skip\n\n testIf('test bytes32', async () => {\n const info = await getERC20TokenInfo('0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2', 1)\n\n expect(info.decimal).toEqual(18)\n expect(info.symbol).toEqual('MKR')\n expect(info.name).toEqual('Maker')\n })\n\n testIf('test normal', async () => {\n const info = await getERC20TokenInfo('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 1)\n\n expect(info.decimal).toEqual(6)\n expect(info.symbol).toEqual('USDC')\n expect(info.name).toEqual('USD Coin')\n })\n})\n"]}
@@ -1,4 +1,6 @@
1
1
  import { BigDecimal } from '../core/big-decimal.js';
2
+ import { Networkish } from 'ethers';
3
+ import { BaseContext } from '../core/index.js';
2
4
  export interface TokenInfo {
3
5
  symbol: string;
4
6
  name: string;
@@ -9,5 +11,5 @@ export declare const NATIVE_ETH: {
9
11
  decimal: number;
10
12
  name: string;
11
13
  };
12
- export declare function getERC20TokenInfo(tokenAddress: string, chainId?: number): Promise<TokenInfo>;
13
- export declare function getER20NormalizedAmount(tokenAddress: string, amount: bigint, chainId: number): Promise<BigDecimal>;
14
+ export declare function getERC20TokenInfo(tokenAddress: string, contextOrNetworkish: BaseContext | Networkish): Promise<TokenInfo>;
15
+ export declare function getER20NormalizedAmount(tokenAddress: string, amount: bigint, contextOrNetworkish: BaseContext | Networkish): Promise<BigDecimal>;
@@ -2,6 +2,7 @@ import { getERC20Contract } from '../eth/builtin/erc20.js';
2
2
  import { getERC20BytesContract } from '../eth/builtin/erc20bytes.js';
3
3
  import { scaleDown } from '../core/big-decimal.js';
4
4
  import { decodeBytes32String } from 'ethers';
5
+ import { getNetworkFromCtxOrNetworkish } from '../eth/index.js';
5
6
  export const NATIVE_ETH = {
6
7
  symbol: 'ETH',
7
8
  decimal: 18,
@@ -15,7 +16,8 @@ async function getTokenInfoPromise(symbol, name, decimal) {
15
16
  decimal: Number(await decimal),
16
17
  };
17
18
  }
18
- export async function getERC20TokenInfo(tokenAddress, chainId = 1) {
19
+ export async function getERC20TokenInfo(tokenAddress, contextOrNetworkish) {
20
+ const chainId = getNetworkFromCtxOrNetworkish(contextOrNetworkish).chainId.toString();
19
21
  const key = chainId + tokenAddress;
20
22
  const res = TOKEN_INFOS.get(key);
21
23
  if (res) {
@@ -42,8 +44,8 @@ export async function getERC20TokenInfo(tokenAddress, chainId = 1) {
42
44
  TOKEN_INFOS.set(key, info);
43
45
  return info;
44
46
  }
45
- export async function getER20NormalizedAmount(tokenAddress, amount, chainId) {
46
- const tokenInfo = await getERC20TokenInfo(tokenAddress, chainId);
47
+ export async function getER20NormalizedAmount(tokenAddress, amount, contextOrNetworkish) {
48
+ const tokenInfo = await getERC20TokenInfo(tokenAddress, contextOrNetworkish);
47
49
  return scaleDown(amount, tokenInfo.decimal);
48
50
  }
49
51
  //# sourceMappingURL=token.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/utils/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAc,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAQ5C,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,YAAY;CACnB,CAAA;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAA;AAEzD,KAAK,UAAU,mBAAmB,CAChC,MAAuC,EACvC,IAAqC,EACrC,OAA+B;IAE/B,OAAO;QACL,MAAM,EAAE,MAAM,MAAM;QACpB,IAAI,EAAE,MAAM,IAAI;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,OAAO,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,CAAC,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,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACxD,MAAM,aAAa,GAAG,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAElE,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,IAAI;QACF,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;KAC7B;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,GAAG,mBAAmB,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAA;KACvD;IAED,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI;QACF,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAA;KACjC;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,GAAG,mBAAmB,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;KAC3D;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA;IACzC,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAEvD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC1B,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,YAAoB,EACpB,MAAc,EACd,OAAe;IAEf,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAChE,OAAO,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { getERC20Contract } from '../eth/builtin/erc20.js'\nimport { getERC20BytesContract } from '../eth/builtin/erc20bytes.js'\nimport { BigDecimal, scaleDown } from '../core/big-decimal.js'\nimport { PromiseOrValue } from '../eth/builtin/internal/common.js'\nimport { decodeBytes32String } from 'ethers'\n\nexport interface TokenInfo {\n symbol: string\n name: string\n decimal: number\n}\n\nexport const NATIVE_ETH = {\n symbol: 'ETH',\n decimal: 18,\n name: 'Native ETH',\n}\n\nconst TOKEN_INFOS = new Map<string, Promise<TokenInfo>>()\n\nasync function getTokenInfoPromise(\n symbol: PromiseOrValue<string> | string,\n name: PromiseOrValue<string> | string,\n decimal: PromiseOrValue<bigint>\n): Promise<TokenInfo> {\n return {\n symbol: await symbol,\n name: await name,\n decimal: Number(await decimal),\n }\n}\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 let name = ''\n try {\n name = await contract.name()\n } catch (e) {\n name = decodeBytes32String(await bytesContract.name())\n }\n\n let symbol = ''\n try {\n symbol = await contract.symbol()\n } catch (e) {\n symbol = decodeBytes32String(await bytesContract.symbol())\n }\n\n const decimal = await contract.decimals()\n const info = getTokenInfoPromise(symbol, name, decimal)\n\n TOKEN_INFOS.set(key, info)\n return info\n}\n\nexport async function getER20NormalizedAmount(\n tokenAddress: string,\n amount: bigint,\n chainId: number\n): Promise<BigDecimal> {\n const tokenInfo = await getERC20TokenInfo(tokenAddress, chainId)\n return scaleDown(amount, tokenInfo.decimal)\n}\n"]}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/utils/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAc,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,mBAAmB,EAAc,MAAM,QAAQ,CAAA;AAExD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAA;AAQ/D,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,YAAY;CACnB,CAAA;AAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAA;AAEzD,KAAK,UAAU,mBAAmB,CAChC,MAAuC,EACvC,IAAqC,EACrC,OAA+B;IAE/B,OAAO;QACL,MAAM,EAAE,MAAM,MAAM;QACpB,IAAI,EAAE,MAAM,IAAI;QAChB,OAAO,EAAE,MAAM,CAAC,MAAM,OAAO,CAAC;KAC/B,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,YAAoB,EACpB,mBAA6C;IAE7C,MAAM,OAAO,GAAG,6BAA6B,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;IACrF,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,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACxD,MAAM,aAAa,GAAG,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IAElE,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,IAAI;QACF,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;KAC7B;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,GAAG,mBAAmB,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,CAAA;KACvD;IAED,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI;QACF,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAA;KACjC;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,GAAG,mBAAmB,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;KAC3D;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAA;IACzC,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAEvD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC1B,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,YAAoB,EACpB,MAAc,EACd,mBAA6C;IAE7C,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAA;IAC5E,OAAO,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["import { getERC20Contract } from '../eth/builtin/erc20.js'\nimport { getERC20BytesContract } from '../eth/builtin/erc20bytes.js'\nimport { BigDecimal, scaleDown } from '../core/big-decimal.js'\nimport { PromiseOrValue } from '../eth/builtin/internal/common.js'\nimport { decodeBytes32String, Networkish } from 'ethers'\nimport { BaseContext } from '../core/index.js'\nimport { getNetworkFromCtxOrNetworkish } from '../eth/index.js'\n\nexport interface TokenInfo {\n symbol: string\n name: string\n decimal: number\n}\n\nexport const NATIVE_ETH = {\n symbol: 'ETH',\n decimal: 18,\n name: 'Native ETH',\n}\n\nconst TOKEN_INFOS = new Map<string, Promise<TokenInfo>>()\n\nasync function getTokenInfoPromise(\n symbol: PromiseOrValue<string> | string,\n name: PromiseOrValue<string> | string,\n decimal: PromiseOrValue<bigint>\n): Promise<TokenInfo> {\n return {\n symbol: await symbol,\n name: await name,\n decimal: Number(await decimal),\n }\n}\n\nexport async function getERC20TokenInfo(\n tokenAddress: string,\n contextOrNetworkish: BaseContext | Networkish\n): Promise<TokenInfo> {\n const chainId = getNetworkFromCtxOrNetworkish(contextOrNetworkish).chainId.toString()\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 let name = ''\n try {\n name = await contract.name()\n } catch (e) {\n name = decodeBytes32String(await bytesContract.name())\n }\n\n let symbol = ''\n try {\n symbol = await contract.symbol()\n } catch (e) {\n symbol = decodeBytes32String(await bytesContract.symbol())\n }\n\n const decimal = await contract.decimals()\n const info = getTokenInfoPromise(symbol, name, decimal)\n\n TOKEN_INFOS.set(key, info)\n return info\n}\n\nexport async function getER20NormalizedAmount(\n tokenAddress: string,\n amount: bigint,\n contextOrNetworkish: BaseContext | Networkish\n): Promise<BigDecimal> {\n const tokenInfo = await getERC20TokenInfo(tokenAddress, contextOrNetworkish)\n return scaleDown(amount, tokenInfo.decimal)\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sentio/sdk",
3
3
  "license": "Apache-2.0",
4
- "version": "2.7.4-rc.2",
4
+ "version": "2.8.0-rc.2",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "compile": "tsc && cp src/utils/*.csv lib/utils && cp src/tsup.config.ts lib",
@@ -23,8 +23,8 @@
23
23
  "@project-serum/anchor": "^0.26.0",
24
24
  "@sentio/bigdecimal": "^9.1.1-patch.3",
25
25
  "@sentio/ethers-v6": "^1.0.25",
26
- "@sentio/protos": "^2.7.4-rc.2",
27
- "@sentio/runtime": "^2.7.4-rc.2",
26
+ "@sentio/protos": "^2.8.0-rc.2",
27
+ "@sentio/runtime": "^2.8.0-rc.2",
28
28
  "@solana/web3.js": "^1.73.2",
29
29
  "@types/prettier": "^2.7.2",
30
30
  "aptos-sdk": "npm:aptos@^1.7.1",
@@ -80,5 +80,5 @@
80
80
  "engines": {
81
81
  "node": ">=16"
82
82
  },
83
- "gitHead": "5f121c6585d0175729927c13d1e3aea8fce741ad"
83
+ "gitHead": "1ec4e97cc7cf3f0cca1bba30d11f89d77b87e85c"
84
84
  }
@@ -27,6 +27,10 @@ export class AptosContext extends BaseContext {
27
27
  }
28
28
  }
29
29
 
30
+ getChainId(): string {
31
+ return getChainId(this.network)
32
+ }
33
+
30
34
  getMetaData(name: string, labels: Labels): RecordMetaData {
31
35
  return {
32
36
  address: this.address,
@@ -35,7 +39,7 @@ export class AptosContext extends BaseContext {
35
39
  transactionIndex: 0,
36
40
  transactionHash: this.transaction?.hash || '', // TODO
37
41
  logIndex: 0,
38
- chainId: getChainId(this.network),
42
+ chainId: this.getChainId(),
39
43
  name: name,
40
44
  labels: normalizeLabels(labels),
41
45
  }
@@ -56,6 +60,10 @@ export class AptosResourceContext extends BaseContext {
56
60
  this.timestampInMicros = timestampInMicros
57
61
  }
58
62
 
63
+ getChainId(): string {
64
+ return getChainId(this.network)
65
+ }
66
+
59
67
  getMetaData(name: string, labels: Labels): RecordMetaData {
60
68
  return {
61
69
  address: this.address,
@@ -64,7 +72,7 @@ export class AptosResourceContext extends BaseContext {
64
72
  transactionIndex: 0,
65
73
  transactionHash: '',
66
74
  logIndex: 0,
67
- chainId: getChainId(this.network),
75
+ chainId: this.getChainId(),
68
76
  name: name,
69
77
  labels: normalizeLabels(labels),
70
78
  }
@@ -84,12 +84,14 @@ export class AptosDex<T> {
84
84
  if (resultX.gt(0)) {
85
85
  this.volumeByCoin.record(ctx, resultX, {
86
86
  coin: coinXInfo.symbol,
87
+ bridge: coinXInfo.bridge,
87
88
  type: coinXInfo.token_type.type,
88
89
  })
89
90
  }
90
91
  if (resultY.gt(0)) {
91
92
  this.volumeByCoin.record(ctx, resultY, {
92
93
  coin: coinYInfo.symbol,
94
+ bridge: coinYInfo.bridge,
93
95
  type: coinYInfo.token_type.type,
94
96
  })
95
97
  }
@@ -23,4 +23,6 @@ export abstract class BaseContext {
23
23
  }
24
24
 
25
25
  abstract getMetaData(name: string, labels: Labels): RecordMetaData
26
+
27
+ abstract getChainId(): string
26
28
  }
@@ -19,7 +19,9 @@ import {
19
19
  ContractView,
20
20
  DummyProvider,
21
21
  TypedCallTrace,
22
+ getNetworkFromCtxOrNetworkish,
22
23
  } from "@sentio/sdk/eth";
24
+ import { BaseContext } from "@sentio/sdk";
23
25
  import { EthFetchConfig } from "@sentio/protos";
24
26
 
25
27
  import { EACAggregatorProxy, EACAggregatorProxy__factory } from "./index.js";
@@ -1086,8 +1088,9 @@ export class EACAggregatorProxyProcessorTemplate extends BaseProcessorTemplate<
1086
1088
 
1087
1089
  export function getEACAggregatorProxyContract(
1088
1090
  address: string,
1089
- network: Networkish = 1
1091
+ contextOrNetwork: BaseContext | Networkish
1090
1092
  ): EACAggregatorProxyContractView {
1093
+ const network = getNetworkFromCtxOrNetworkish(contextOrNetwork);
1091
1094
  let contract = getContractByABI(
1092
1095
  "EACAggregatorProxy",
1093
1096
  address,
@@ -24,7 +24,7 @@ export function mockAnswerUpdatedLog(
24
24
  contractAddress: string,
25
25
  event: AnswerUpdatedEventObject
26
26
  ): LogParams {
27
- const contract = getEACAggregatorProxyContract(contractAddress);
27
+ const contract = getEACAggregatorProxyContract(contractAddress, 1);
28
28
  const encodedLog = contract.rawContract.interface.encodeEventLog(
29
29
  "AnswerUpdated(int256,uint256,uint256)",
30
30
  [event.current, event.roundId, event.updatedAt]
@@ -42,7 +42,7 @@ export function mockNewRoundLog(
42
42
  contractAddress: string,
43
43
  event: NewRoundEventObject
44
44
  ): LogParams {
45
- const contract = getEACAggregatorProxyContract(contractAddress);
45
+ const contract = getEACAggregatorProxyContract(contractAddress, 1);
46
46
  const encodedLog = contract.rawContract.interface.encodeEventLog(
47
47
  "NewRound(uint256,address,uint256)",
48
48
  [event.roundId, event.startedBy, event.startedAt]
@@ -60,7 +60,7 @@ export function mockOwnershipTransferRequestedLog(
60
60
  contractAddress: string,
61
61
  event: OwnershipTransferRequestedEventObject
62
62
  ): LogParams {
63
- const contract = getEACAggregatorProxyContract(contractAddress);
63
+ const contract = getEACAggregatorProxyContract(contractAddress, 1);
64
64
  const encodedLog = contract.rawContract.interface.encodeEventLog(
65
65
  "OwnershipTransferRequested(address,address)",
66
66
  [event.from, event.to]
@@ -78,7 +78,7 @@ export function mockOwnershipTransferredLog(
78
78
  contractAddress: string,
79
79
  event: OwnershipTransferredEventObject
80
80
  ): LogParams {
81
- const contract = getEACAggregatorProxyContract(contractAddress);
81
+ const contract = getEACAggregatorProxyContract(contractAddress, 1);
82
82
  const encodedLog = contract.rawContract.interface.encodeEventLog(
83
83
  "OwnershipTransferred(address,address)",
84
84
  [event.from, event.to]
@@ -19,7 +19,9 @@ import {
19
19
  ContractView,
20
20
  DummyProvider,
21
21
  TypedCallTrace,
22
+ getNetworkFromCtxOrNetworkish,
22
23
  } from "@sentio/sdk/eth";
24
+ import { BaseContext } from "@sentio/sdk";
23
25
  import { EthFetchConfig } from "@sentio/protos";
24
26
 
25
27
  import { ERC1155, ERC1155__factory } from "./index.js";
@@ -509,8 +511,9 @@ export class ERC1155ProcessorTemplate extends BaseProcessorTemplate<
509
511
 
510
512
  export function getERC1155Contract(
511
513
  address: string,
512
- network: Networkish = 1
514
+ contextOrNetwork: BaseContext | Networkish
513
515
  ): ERC1155ContractView {
516
+ const network = getNetworkFromCtxOrNetworkish(contextOrNetwork);
514
517
  let contract = getContractByABI(
515
518
  "ERC1155",
516
519
  address,
@@ -24,7 +24,7 @@ export function mockApprovalForAllLog(
24
24
  contractAddress: string,
25
25
  event: ApprovalForAllEventObject
26
26
  ): LogParams {
27
- const contract = getERC1155Contract(contractAddress);
27
+ const contract = getERC1155Contract(contractAddress, 1);
28
28
  const encodedLog = contract.rawContract.interface.encodeEventLog(
29
29
  "ApprovalForAll(address,address,bool)",
30
30
  [event.account, event.operator, event.approved]
@@ -42,7 +42,7 @@ export function mockTransferBatchLog(
42
42
  contractAddress: string,
43
43
  event: TransferBatchEventObject
44
44
  ): LogParams {
45
- const contract = getERC1155Contract(contractAddress);
45
+ const contract = getERC1155Contract(contractAddress, 1);
46
46
  const encodedLog = contract.rawContract.interface.encodeEventLog(
47
47
  "TransferBatch(address,address,address,uint256[],uint256[])",
48
48
  [event.operator, event.from, event.to, event.ids, event.values]
@@ -60,7 +60,7 @@ export function mockTransferSingleLog(
60
60
  contractAddress: string,
61
61
  event: TransferSingleEventObject
62
62
  ): LogParams {
63
- const contract = getERC1155Contract(contractAddress);
63
+ const contract = getERC1155Contract(contractAddress, 1);
64
64
  const encodedLog = contract.rawContract.interface.encodeEventLog(
65
65
  "TransferSingle(address,address,address,uint256,uint256)",
66
66
  [event.operator, event.from, event.to, event.id, event.value]
@@ -78,7 +78,7 @@ export function mockURILog(
78
78
  contractAddress: string,
79
79
  event: URIEventObject
80
80
  ): LogParams {
81
- const contract = getERC1155Contract(contractAddress);
81
+ const contract = getERC1155Contract(contractAddress, 1);
82
82
  const encodedLog = contract.rawContract.interface.encodeEventLog(
83
83
  "URI(string,uint256)",
84
84
  [event.value, event.id]
@@ -19,7 +19,9 @@ import {
19
19
  ContractView,
20
20
  DummyProvider,
21
21
  TypedCallTrace,
22
+ getNetworkFromCtxOrNetworkish,
22
23
  } from "@sentio/sdk/eth";
24
+ import { BaseContext } from "@sentio/sdk";
23
25
  import { EthFetchConfig } from "@sentio/protos";
24
26
 
25
27
  import { ERC20, ERC20__factory } from "./index.js";
@@ -622,8 +624,9 @@ export class ERC20ProcessorTemplate extends BaseProcessorTemplate<
622
624
 
623
625
  export function getERC20Contract(
624
626
  address: string,
625
- network: Networkish = 1
627
+ contextOrNetwork: BaseContext | Networkish
626
628
  ): ERC20ContractView {
629
+ const network = getNetworkFromCtxOrNetworkish(contextOrNetwork);
627
630
  let contract = getContractByABI(
628
631
  "ERC20",
629
632
  address,
@@ -23,7 +23,7 @@ export function mockApprovalLog(
23
23
  contractAddress: string,
24
24
  event: ApprovalEventObject
25
25
  ): LogParams {
26
- const contract = getERC20Contract(contractAddress);
26
+ const contract = getERC20Contract(contractAddress, 1);
27
27
  const encodedLog = contract.rawContract.interface.encodeEventLog(
28
28
  "Approval(address,address,uint256)",
29
29
  [event.owner, event.spender, event.value]
@@ -41,7 +41,7 @@ export function mockOwnershipTransferredLog(
41
41
  contractAddress: string,
42
42
  event: OwnershipTransferredEventObject
43
43
  ): LogParams {
44
- const contract = getERC20Contract(contractAddress);
44
+ const contract = getERC20Contract(contractAddress, 1);
45
45
  const encodedLog = contract.rawContract.interface.encodeEventLog(
46
46
  "OwnershipTransferred(address,address)",
47
47
  [event.previousOwner, event.newOwner]
@@ -59,7 +59,7 @@ export function mockTransferLog(
59
59
  contractAddress: string,
60
60
  event: TransferEventObject
61
61
  ): LogParams {
62
- const contract = getERC20Contract(contractAddress);
62
+ const contract = getERC20Contract(contractAddress, 1);
63
63
  const encodedLog = contract.rawContract.interface.encodeEventLog(
64
64
  "Transfer(address,address,uint256)",
65
65
  [event.from, event.to, event.value]
@@ -19,7 +19,9 @@ import {
19
19
  ContractView,
20
20
  DummyProvider,
21
21
  TypedCallTrace,
22
+ getNetworkFromCtxOrNetworkish,
22
23
  } from "@sentio/sdk/eth";
24
+ import { BaseContext } from "@sentio/sdk";
23
25
  import { EthFetchConfig } from "@sentio/protos";
24
26
 
25
27
  import { ERC20Bytes, ERC20Bytes__factory } from "./index.js";
@@ -418,8 +420,9 @@ export class ERC20BytesProcessorTemplate extends BaseProcessorTemplate<
418
420
 
419
421
  export function getERC20BytesContract(
420
422
  address: string,
421
- network: Networkish = 1
423
+ contextOrNetwork: BaseContext | Networkish
422
424
  ): ERC20BytesContractView {
425
+ const network = getNetworkFromCtxOrNetworkish(contextOrNetwork);
423
426
  let contract = getContractByABI(
424
427
  "ERC20Bytes",
425
428
  address,
@@ -19,7 +19,7 @@ export function mockApprovalLog(
19
19
  contractAddress: string,
20
20
  event: ApprovalEventObject
21
21
  ): LogParams {
22
- const contract = getERC20BytesContract(contractAddress);
22
+ const contract = getERC20BytesContract(contractAddress, 1);
23
23
  const encodedLog = contract.rawContract.interface.encodeEventLog(
24
24
  "Approval(address,address,uint256)",
25
25
  [event.owner, event.spender, event.value]
@@ -37,7 +37,7 @@ export function mockTransferLog(
37
37
  contractAddress: string,
38
38
  event: TransferEventObject
39
39
  ): LogParams {
40
- const contract = getERC20BytesContract(contractAddress);
40
+ const contract = getERC20BytesContract(contractAddress, 1);
41
41
  const encodedLog = contract.rawContract.interface.encodeEventLog(
42
42
  "Transfer(address,address,uint256)",
43
43
  [event.from, event.to, event.value]
@@ -19,7 +19,9 @@ import {
19
19
  ContractView,
20
20
  DummyProvider,
21
21
  TypedCallTrace,
22
+ getNetworkFromCtxOrNetworkish,
22
23
  } from "@sentio/sdk/eth";
24
+ import { BaseContext } from "@sentio/sdk";
23
25
  import { EthFetchConfig } from "@sentio/protos";
24
26
 
25
27
  import { ERC721, ERC721__factory } from "./index.js";
@@ -639,8 +641,9 @@ export class ERC721ProcessorTemplate extends BaseProcessorTemplate<
639
641
 
640
642
  export function getERC721Contract(
641
643
  address: string,
642
- network: Networkish = 1
644
+ contextOrNetwork: BaseContext | Networkish
643
645
  ): ERC721ContractView {
646
+ const network = getNetworkFromCtxOrNetworkish(contextOrNetwork);
644
647
  let contract = getContractByABI(
645
648
  "ERC721",
646
649
  address,
@@ -23,7 +23,7 @@ export function mockApprovalLog(
23
23
  contractAddress: string,
24
24
  event: ApprovalEventObject
25
25
  ): LogParams {
26
- const contract = getERC721Contract(contractAddress);
26
+ const contract = getERC721Contract(contractAddress, 1);
27
27
  const encodedLog = contract.rawContract.interface.encodeEventLog(
28
28
  "Approval(address,address,uint256)",
29
29
  [event.owner, event.approved, event.tokenId]
@@ -41,7 +41,7 @@ export function mockApprovalForAllLog(
41
41
  contractAddress: string,
42
42
  event: ApprovalForAllEventObject
43
43
  ): LogParams {
44
- const contract = getERC721Contract(contractAddress);
44
+ const contract = getERC721Contract(contractAddress, 1);
45
45
  const encodedLog = contract.rawContract.interface.encodeEventLog(
46
46
  "ApprovalForAll(address,address,bool)",
47
47
  [event.owner, event.operator, event.approved]
@@ -59,7 +59,7 @@ export function mockTransferLog(
59
59
  contractAddress: string,
60
60
  event: TransferEventObject
61
61
  ): LogParams {
62
- const contract = getERC721Contract(contractAddress);
62
+ const contract = getERC721Contract(contractAddress, 1);
63
63
  const encodedLog = contract.rawContract.interface.encodeEventLog(
64
64
  "Transfer(address,address,uint256)",
65
65
  [event.from, event.to, event.tokenId]
@@ -19,7 +19,9 @@ import {
19
19
  ContractView,
20
20
  DummyProvider,
21
21
  TypedCallTrace,
22
+ getNetworkFromCtxOrNetworkish,
22
23
  } from "@sentio/sdk/eth";
24
+ import { BaseContext } from "@sentio/sdk";
23
25
  import { EthFetchConfig } from "@sentio/protos";
24
26
 
25
27
  import { WETH9, WETH9__factory } from "./index.js";
@@ -492,8 +494,9 @@ export class WETH9ProcessorTemplate extends BaseProcessorTemplate<
492
494
 
493
495
  export function getWETH9Contract(
494
496
  address: string,
495
- network: Networkish = 1
497
+ contextOrNetwork: BaseContext | Networkish
496
498
  ): WETH9ContractView {
499
+ const network = getNetworkFromCtxOrNetworkish(contextOrNetwork);
497
500
  let contract = getContractByABI(
498
501
  "WETH9",
499
502
  address,
@@ -24,7 +24,7 @@ export function mockApprovalLog(
24
24
  contractAddress: string,
25
25
  event: ApprovalEventObject
26
26
  ): LogParams {
27
- const contract = getWETH9Contract(contractAddress);
27
+ const contract = getWETH9Contract(contractAddress, 1);
28
28
  const encodedLog = contract.rawContract.interface.encodeEventLog(
29
29
  "Approval(address,address,uint256)",
30
30
  [event.src, event.guy, event.wad]
@@ -42,7 +42,7 @@ export function mockTransferLog(
42
42
  contractAddress: string,
43
43
  event: TransferEventObject
44
44
  ): LogParams {
45
- const contract = getWETH9Contract(contractAddress);
45
+ const contract = getWETH9Contract(contractAddress, 1);
46
46
  const encodedLog = contract.rawContract.interface.encodeEventLog(
47
47
  "Transfer(address,address,uint256)",
48
48
  [event.src, event.dst, event.wad]
@@ -60,7 +60,7 @@ export function mockDepositLog(
60
60
  contractAddress: string,
61
61
  event: DepositEventObject
62
62
  ): LogParams {
63
- const contract = getWETH9Contract(contractAddress);
63
+ const contract = getWETH9Contract(contractAddress, 1);
64
64
  const encodedLog = contract.rawContract.interface.encodeEventLog(
65
65
  "Deposit(address,uint256)",
66
66
  [event.dst, event.wad]
@@ -78,7 +78,7 @@ export function mockWithdrawalLog(
78
78
  contractAddress: string,
79
79
  event: WithdrawalEventObject
80
80
  ): LogParams {
81
- const contract = getWETH9Contract(contractAddress);
81
+ const contract = getWETH9Contract(contractAddress, 1);
82
82
  const encodedLog = contract.rawContract.interface.encodeEventLog(
83
83
  "Withdrawal(address,uint256)",
84
84
  [event.src, event.wad]