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

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 (78) 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/core/base-context.d.ts +1 -0
  5. package/lib/core/base-context.js.map +1 -1
  6. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.d.ts +2 -1
  7. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js +3 -2
  8. package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -1
  9. package/lib/eth/builtin/internal/eacaggregatorproxy-test-utils.js +4 -4
  10. package/lib/eth/builtin/internal/eacaggregatorproxy-test-utils.js.map +1 -1
  11. package/lib/eth/builtin/internal/erc1155-processor.d.ts +2 -1
  12. package/lib/eth/builtin/internal/erc1155-processor.js +3 -2
  13. package/lib/eth/builtin/internal/erc1155-processor.js.map +1 -1
  14. package/lib/eth/builtin/internal/erc1155-test-utils.js +4 -4
  15. package/lib/eth/builtin/internal/erc1155-test-utils.js.map +1 -1
  16. package/lib/eth/builtin/internal/erc20-processor.d.ts +2 -1
  17. package/lib/eth/builtin/internal/erc20-processor.js +3 -2
  18. package/lib/eth/builtin/internal/erc20-processor.js.map +1 -1
  19. package/lib/eth/builtin/internal/erc20-test-utils.js +3 -3
  20. package/lib/eth/builtin/internal/erc20-test-utils.js.map +1 -1
  21. package/lib/eth/builtin/internal/erc20bytes-processor.d.ts +2 -1
  22. package/lib/eth/builtin/internal/erc20bytes-processor.js +3 -2
  23. package/lib/eth/builtin/internal/erc20bytes-processor.js.map +1 -1
  24. package/lib/eth/builtin/internal/erc20bytes-test-utils.js +2 -2
  25. package/lib/eth/builtin/internal/erc20bytes-test-utils.js.map +1 -1
  26. package/lib/eth/builtin/internal/erc721-processor.d.ts +2 -1
  27. package/lib/eth/builtin/internal/erc721-processor.js +3 -2
  28. package/lib/eth/builtin/internal/erc721-processor.js.map +1 -1
  29. package/lib/eth/builtin/internal/erc721-test-utils.js +3 -3
  30. package/lib/eth/builtin/internal/erc721-test-utils.js.map +1 -1
  31. package/lib/eth/builtin/internal/weth9-processor.d.ts +2 -1
  32. package/lib/eth/builtin/internal/weth9-processor.js +3 -2
  33. package/lib/eth/builtin/internal/weth9-processor.js.map +1 -1
  34. package/lib/eth/builtin/internal/weth9-test-utils.js +4 -4
  35. package/lib/eth/builtin/internal/weth9-test-utils.js.map +1 -1
  36. package/lib/eth/codegen/file.js +5 -3
  37. package/lib/eth/codegen/file.js.map +1 -1
  38. package/lib/eth/context.d.ts +1 -0
  39. package/lib/eth/context.js +3 -0
  40. package/lib/eth/context.js.map +1 -1
  41. package/lib/eth/index.d.ts +1 -1
  42. package/lib/eth/index.js +1 -1
  43. package/lib/eth/index.js.map +1 -1
  44. package/lib/eth/provider.d.ts +3 -1
  45. package/lib/eth/provider.js +9 -2
  46. package/lib/eth/provider.js.map +1 -1
  47. package/lib/solana/solana-context.d.ts +1 -0
  48. package/lib/solana/solana-context.js +4 -1
  49. package/lib/solana/solana-context.js.map +1 -1
  50. package/lib/sui/context.d.ts +1 -0
  51. package/lib/sui/context.js +4 -1
  52. package/lib/sui/context.js.map +1 -1
  53. package/lib/utils/erc20.test.js.map +1 -1
  54. package/lib/utils/token.d.ts +4 -2
  55. package/lib/utils/token.js +5 -3
  56. package/lib/utils/token.js.map +1 -1
  57. package/package.json +4 -4
  58. package/src/aptos/context.ts +10 -2
  59. package/src/core/base-context.ts +2 -0
  60. package/src/eth/builtin/internal/eacaggregatorproxy-processor.ts +4 -1
  61. package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.ts +4 -4
  62. package/src/eth/builtin/internal/erc1155-processor.ts +4 -1
  63. package/src/eth/builtin/internal/erc1155-test-utils.ts +4 -4
  64. package/src/eth/builtin/internal/erc20-processor.ts +4 -1
  65. package/src/eth/builtin/internal/erc20-test-utils.ts +3 -3
  66. package/src/eth/builtin/internal/erc20bytes-processor.ts +4 -1
  67. package/src/eth/builtin/internal/erc20bytes-test-utils.ts +2 -2
  68. package/src/eth/builtin/internal/erc721-processor.ts +4 -1
  69. package/src/eth/builtin/internal/erc721-test-utils.ts +3 -3
  70. package/src/eth/builtin/internal/weth9-processor.ts +4 -1
  71. package/src/eth/builtin/internal/weth9-test-utils.ts +4 -4
  72. package/src/eth/codegen/file.ts +7 -3
  73. package/src/eth/context.ts +4 -0
  74. package/src/eth/index.ts +1 -1
  75. package/src/eth/provider.ts +10 -2
  76. package/src/solana/solana-context.ts +5 -1
  77. package/src/sui/context.ts +5 -1
  78. package/src/utils/token.ts +10 -4
@@ -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.1",
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.1",
27
+ "@sentio/runtime": "^2.8.0-rc.1",
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": "b0afef263d7d67dd47f55feb2a041b768749ff9a"
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
  }
@@ -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]
@@ -105,8 +105,10 @@ export class ${contract.name}ProcessorTemplate extends BaseProcessorTemplate<${c
105
105
  .join('\n')}
106
106
  }
107
107
 
108
-
109
- export function get${contract.name}Contract(address: string, network: Networkish = 1): ${contract.name}ContractView {
108
+ export function get${contract.name}Contract(address: string, contextOrNetwork: BaseContext | Networkish): ${
109
+ contract.name
110
+ }ContractView {
111
+ const network = getNetworkFromCtxOrNetworkish(contextOrNetwork)
110
112
  let contract = getContractByABI("${contract.name}", address, network) as ${contract.name}ContractView
111
113
  if (!contract) {
112
114
  const rawContract = ${contract.name}__factory.connect(address, getProvider(network))
@@ -162,8 +164,10 @@ export class ${contract.name}ProcessorTemplate extends BaseProcessorTemplate<${c
162
164
  'ContractView',
163
165
  'DummyProvider',
164
166
  'TypedCallTrace',
167
+ 'getNetworkFromCtxOrNetworkish',
165
168
  // 'toBlockTag',
166
169
  ],
170
+ '@sentio/sdk': ['BaseContext'],
167
171
  '@sentio/protos': ['EthFetchConfig'],
168
172
  './common.js': ['PromiseOrValue'],
169
173
  './index.js': [`${contract.name}`, `${contract.name}__factory`],
@@ -226,7 +230,7 @@ function generateMockEventLogFunction(event: EventDeclaration, contractName: str
226
230
 
227
231
  return `
228
232
  export function mock${eventName}Log(contractAddress: string, event: ${eventName}EventObject): LogParams {
229
- const contract = get${contractName}Contract(contractAddress)
233
+ const contract = get${contractName}Contract(contractAddress, 1)
230
234
  const encodedLog = contract.rawContract.interface.encodeEventLog(
231
235
  '${getFullSignatureForEvent(event)}',
232
236
  [${eventArgs.join(', ')}]
@@ -50,6 +50,10 @@ export abstract class EthContext extends BaseContext {
50
50
 
51
51
  protected abstract getContractName(): string
52
52
 
53
+ getChainId(): string {
54
+ return this.chainId.toString()
55
+ }
56
+
53
57
  getMetaData(name: string, labels: Labels): RecordMetaData {
54
58
  if (this.log) {
55
59
  return {
package/src/eth/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { BaseProcessor } from './base-processor.js'
2
2
  export { GenericProcessor } from './generic-processor.js'
3
3
  export { BaseProcessorTemplate } from './base-processor-template.js'
4
- export { getProvider, DummyProvider } from './provider.js'
4
+ export { getProvider, DummyProvider, getNetworkFromCtxOrNetworkish } from './provider.js'
5
5
  export type { TypedCallTrace, Trace } from './trace.js'
6
6
  export * from './eth.js'
7
7
  export { BindOptions, AccountBindOptions } from './bind-options.js'
@@ -3,22 +3,30 @@ import { Networkish } from 'ethers/providers'
3
3
 
4
4
  import PQueue from 'p-queue'
5
5
  import { Endpoints } from '@sentio/runtime'
6
+ import { BaseContext } from '../core/index.js'
6
7
 
7
8
  export const DummyProvider = new JsonRpcProvider('', Network.from(1))
8
9
 
9
10
  const providers = new Map<string, JsonRpcProvider>()
10
11
 
11
- export function getProvider(networkish?: Networkish): Provider {
12
+ export function getNetworkFromCtxOrNetworkish(networkish?: BaseContext | Networkish) {
12
13
  if (!networkish) {
13
14
  networkish = 1
14
15
  }
16
+ if (networkish instanceof BaseContext) {
17
+ networkish = networkish.getChainId()
18
+ }
15
19
  if (typeof networkish === 'string') {
16
20
  const id = parseInt(networkish)
17
21
  if (!isNaN(id)) {
18
22
  networkish = 1
19
23
  }
20
24
  }
21
- const network = Network.from(networkish)
25
+ return Network.from(networkish)
26
+ }
27
+
28
+ export function getProvider(networkish?: Networkish): Provider {
29
+ const network = getNetworkFromCtxOrNetworkish(networkish)
22
30
  // TODO check if other key needed
23
31
 
24
32
  const address = Endpoints.INSTANCE.chainServer.get(network.chainId.toString())
@@ -14,6 +14,10 @@ export class SolanaContext extends BaseContext {
14
14
  this.blockNumber = slot
15
15
  }
16
16
 
17
+ getChainId(): string {
18
+ return this.network
19
+ }
20
+
17
21
  getMetaData(name: string, labels: Labels): RecordMetaData {
18
22
  return {
19
23
  address: this.address,
@@ -22,7 +26,7 @@ export class SolanaContext extends BaseContext {
22
26
  transactionIndex: 0,
23
27
  transactionHash: '', // TODO add
24
28
  logIndex: 0,
25
- chainId: this.network,
29
+ chainId: this.getChainId(),
26
30
  name: name,
27
31
  labels: normalizeLabels(labels),
28
32
  }
@@ -30,6 +30,10 @@ export class SuiContext extends BaseContext {
30
30
  }
31
31
  }
32
32
 
33
+ getChainId(): string {
34
+ return getChainId(this.network)
35
+ }
36
+
33
37
  getMetaData(name: string, labels: Labels): RecordMetaData {
34
38
  return {
35
39
  address: this.address,
@@ -38,7 +42,7 @@ export class SuiContext extends BaseContext {
38
42
  transactionIndex: 0,
39
43
  transactionHash: this.transaction?.certificate.transactionDigest || '', // TODO
40
44
  logIndex: 0,
41
- chainId: getChainId(this.network),
45
+ chainId: this.getChainId(),
42
46
  name: name,
43
47
  labels: normalizeLabels(labels),
44
48
  }
@@ -2,7 +2,9 @@ import { getERC20Contract } from '../eth/builtin/erc20.js'
2
2
  import { getERC20BytesContract } from '../eth/builtin/erc20bytes.js'
3
3
  import { BigDecimal, scaleDown } from '../core/big-decimal.js'
4
4
  import { PromiseOrValue } from '../eth/builtin/internal/common.js'
5
- import { decodeBytes32String } from 'ethers'
5
+ import { decodeBytes32String, Networkish } from 'ethers'
6
+ import { BaseContext } from '../core/index.js'
7
+ import { getNetworkFromCtxOrNetworkish } from '../eth/index.js'
6
8
 
7
9
  export interface TokenInfo {
8
10
  symbol: string
@@ -30,7 +32,11 @@ async function getTokenInfoPromise(
30
32
  }
31
33
  }
32
34
 
33
- export async function getERC20TokenInfo(tokenAddress: string, chainId = 1): Promise<TokenInfo> {
35
+ export async function getERC20TokenInfo(
36
+ tokenAddress: string,
37
+ contextOrNetworkish: BaseContext | Networkish
38
+ ): Promise<TokenInfo> {
39
+ const chainId = getNetworkFromCtxOrNetworkish(contextOrNetworkish).chainId.toString()
34
40
  const key = chainId + tokenAddress
35
41
  const res = TOKEN_INFOS.get(key)
36
42
  if (res) {
@@ -63,8 +69,8 @@ export async function getERC20TokenInfo(tokenAddress: string, chainId = 1): Prom
63
69
  export async function getER20NormalizedAmount(
64
70
  tokenAddress: string,
65
71
  amount: bigint,
66
- chainId: number
72
+ contextOrNetworkish: BaseContext | Networkish
67
73
  ): Promise<BigDecimal> {
68
- const tokenInfo = await getERC20TokenInfo(tokenAddress, chainId)
74
+ const tokenInfo = await getERC20TokenInfo(tokenAddress, contextOrNetworkish)
69
75
  return scaleDown(amount, tokenInfo.decimal)
70
76
  }