@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.
- package/lib/aptos/context.d.ts +2 -0
- package/lib/aptos/context.js +8 -2
- package/lib/aptos/context.js.map +1 -1
- package/lib/core/base-context.d.ts +1 -0
- package/lib/core/base-context.js.map +1 -1
- package/lib/eth/builtin/internal/eacaggregatorproxy-processor.d.ts +2 -1
- package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js +3 -2
- package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -1
- package/lib/eth/builtin/internal/eacaggregatorproxy-test-utils.js +4 -4
- package/lib/eth/builtin/internal/eacaggregatorproxy-test-utils.js.map +1 -1
- package/lib/eth/builtin/internal/erc1155-processor.d.ts +2 -1
- package/lib/eth/builtin/internal/erc1155-processor.js +3 -2
- package/lib/eth/builtin/internal/erc1155-processor.js.map +1 -1
- package/lib/eth/builtin/internal/erc1155-test-utils.js +4 -4
- package/lib/eth/builtin/internal/erc1155-test-utils.js.map +1 -1
- package/lib/eth/builtin/internal/erc20-processor.d.ts +2 -1
- package/lib/eth/builtin/internal/erc20-processor.js +3 -2
- package/lib/eth/builtin/internal/erc20-processor.js.map +1 -1
- package/lib/eth/builtin/internal/erc20-test-utils.js +3 -3
- package/lib/eth/builtin/internal/erc20-test-utils.js.map +1 -1
- package/lib/eth/builtin/internal/erc20bytes-processor.d.ts +2 -1
- package/lib/eth/builtin/internal/erc20bytes-processor.js +3 -2
- package/lib/eth/builtin/internal/erc20bytes-processor.js.map +1 -1
- package/lib/eth/builtin/internal/erc20bytes-test-utils.js +2 -2
- package/lib/eth/builtin/internal/erc20bytes-test-utils.js.map +1 -1
- package/lib/eth/builtin/internal/erc721-processor.d.ts +2 -1
- package/lib/eth/builtin/internal/erc721-processor.js +3 -2
- package/lib/eth/builtin/internal/erc721-processor.js.map +1 -1
- package/lib/eth/builtin/internal/erc721-test-utils.js +3 -3
- package/lib/eth/builtin/internal/erc721-test-utils.js.map +1 -1
- package/lib/eth/builtin/internal/weth9-processor.d.ts +2 -1
- package/lib/eth/builtin/internal/weth9-processor.js +3 -2
- package/lib/eth/builtin/internal/weth9-processor.js.map +1 -1
- package/lib/eth/builtin/internal/weth9-test-utils.js +4 -4
- package/lib/eth/builtin/internal/weth9-test-utils.js.map +1 -1
- package/lib/eth/codegen/file.js +5 -3
- package/lib/eth/codegen/file.js.map +1 -1
- package/lib/eth/context.d.ts +1 -0
- package/lib/eth/context.js +3 -0
- package/lib/eth/context.js.map +1 -1
- package/lib/eth/index.d.ts +1 -1
- package/lib/eth/index.js +1 -1
- package/lib/eth/index.js.map +1 -1
- package/lib/eth/provider.d.ts +3 -1
- package/lib/eth/provider.js +9 -2
- package/lib/eth/provider.js.map +1 -1
- package/lib/solana/solana-context.d.ts +1 -0
- package/lib/solana/solana-context.js +4 -1
- package/lib/solana/solana-context.js.map +1 -1
- package/lib/sui/context.d.ts +1 -0
- package/lib/sui/context.js +4 -1
- package/lib/sui/context.js.map +1 -1
- package/lib/utils/erc20.test.js.map +1 -1
- package/lib/utils/token.d.ts +4 -2
- package/lib/utils/token.js +5 -3
- package/lib/utils/token.js.map +1 -1
- package/package.json +4 -4
- package/src/aptos/context.ts +10 -2
- package/src/core/base-context.ts +2 -0
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.ts +4 -1
- package/src/eth/builtin/internal/eacaggregatorproxy-test-utils.ts +4 -4
- package/src/eth/builtin/internal/erc1155-processor.ts +4 -1
- package/src/eth/builtin/internal/erc1155-test-utils.ts +4 -4
- package/src/eth/builtin/internal/erc20-processor.ts +4 -1
- package/src/eth/builtin/internal/erc20-test-utils.ts +3 -3
- package/src/eth/builtin/internal/erc20bytes-processor.ts +4 -1
- package/src/eth/builtin/internal/erc20bytes-test-utils.ts +2 -2
- package/src/eth/builtin/internal/erc721-processor.ts +4 -1
- package/src/eth/builtin/internal/erc721-test-utils.ts +3 -3
- package/src/eth/builtin/internal/weth9-processor.ts +4 -1
- package/src/eth/builtin/internal/weth9-test-utils.ts +4 -4
- package/src/eth/codegen/file.ts +7 -3
- package/src/eth/context.ts +4 -0
- package/src/eth/index.ts +1 -1
- package/src/eth/provider.ts +10 -2
- package/src/solana/solana-context.ts +5 -1
- package/src/sui/context.ts +5 -1
- package/src/utils/token.ts +10 -4
package/lib/utils/token.d.ts
CHANGED
@@ -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,
|
13
|
-
export declare function getER20NormalizedAmount(tokenAddress: string, amount: bigint,
|
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>;
|
package/lib/utils/token.js
CHANGED
@@ -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,
|
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,
|
46
|
-
const tokenInfo = await getERC20TokenInfo(tokenAddress,
|
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
|
package/lib/utils/token.js.map
CHANGED
@@ -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,
|
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.
|
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.
|
27
|
-
"@sentio/runtime": "^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": "
|
83
|
+
"gitHead": "b0afef263d7d67dd47f55feb2a041b768749ff9a"
|
84
84
|
}
|
package/src/aptos/context.ts
CHANGED
@@ -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(
|
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(
|
75
|
+
chainId: this.getChainId(),
|
68
76
|
name: name,
|
69
77
|
labels: normalizeLabels(labels),
|
70
78
|
}
|
package/src/core/base-context.ts
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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]
|
package/src/eth/codegen/file.ts
CHANGED
@@ -105,8 +105,10 @@ export class ${contract.name}ProcessorTemplate extends BaseProcessorTemplate<${c
|
|
105
105
|
.join('\n')}
|
106
106
|
}
|
107
107
|
|
108
|
-
|
109
|
-
|
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(', ')}]
|
package/src/eth/context.ts
CHANGED
@@ -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'
|
package/src/eth/provider.ts
CHANGED
@@ -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
|
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
|
-
|
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.
|
29
|
+
chainId: this.getChainId(),
|
26
30
|
name: name,
|
27
31
|
labels: normalizeLabels(labels),
|
28
32
|
}
|
package/src/sui/context.ts
CHANGED
@@ -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(
|
45
|
+
chainId: this.getChainId(),
|
42
46
|
name: name,
|
43
47
|
labels: normalizeLabels(labels),
|
44
48
|
}
|
package/src/utils/token.ts
CHANGED
@@ -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(
|
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
|
-
|
72
|
+
contextOrNetworkish: BaseContext | Networkish
|
67
73
|
): Promise<BigDecimal> {
|
68
|
-
const tokenInfo = await getERC20TokenInfo(tokenAddress,
|
74
|
+
const tokenInfo = await getERC20TokenInfo(tokenAddress, contextOrNetworkish)
|
69
75
|
return scaleDown(amount, tokenInfo.decimal)
|
70
76
|
}
|