@0xtorch/evm 0.0.126 → 0.0.127

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 (105) hide show
  1. package/.DS_Store +0 -0
  2. package/_cjs/chain/definitions/ethereum.js +2 -2
  3. package/_cjs/chain/definitions/ethereum.js.map +1 -1
  4. package/_cjs/explorer/etherscanV2/client.js +94 -0
  5. package/_cjs/explorer/etherscanV2/client.js.map +1 -0
  6. package/_cjs/explorer/etherscanV2/create.js +196 -0
  7. package/_cjs/explorer/etherscanV2/create.js.map +1 -0
  8. package/_cjs/explorer/etherscanV2/getBlockNumberByTimestamp.js +21 -0
  9. package/_cjs/explorer/etherscanV2/getBlockNumberByTimestamp.js.map +1 -0
  10. package/_cjs/explorer/etherscanV2/getContractCreatorAndCreationTxHash.js +34 -0
  11. package/_cjs/explorer/etherscanV2/getContractCreatorAndCreationTxHash.js.map +1 -0
  12. package/_cjs/explorer/etherscanV2/getContractSourceCodeForVerifiedContract.js +36 -0
  13. package/_cjs/explorer/etherscanV2/getContractSourceCodeForVerifiedContract.js.map +1 -0
  14. package/_cjs/explorer/etherscanV2/getEventLogsByAddressFilteredByTopics.js +48 -0
  15. package/_cjs/explorer/etherscanV2/getEventLogsByAddressFilteredByTopics.js.map +1 -0
  16. package/_cjs/explorer/etherscanV2/getInternalTransactionsByTransactionHash.js +64 -0
  17. package/_cjs/explorer/etherscanV2/getInternalTransactionsByTransactionHash.js.map +1 -0
  18. package/_cjs/explorer/etherscanV2/getListOfErc1155TokenTransferEventsByAddress.js +51 -0
  19. package/_cjs/explorer/etherscanV2/getListOfErc1155TokenTransferEventsByAddress.js.map +1 -0
  20. package/_cjs/explorer/etherscanV2/getListOfErc20TokenTransferEventsByAddress.js +69 -0
  21. package/_cjs/explorer/etherscanV2/getListOfErc20TokenTransferEventsByAddress.js.map +1 -0
  22. package/_cjs/explorer/etherscanV2/getListOfErc721TokenTransferEventsByAddress.js +47 -0
  23. package/_cjs/explorer/etherscanV2/getListOfErc721TokenTransferEventsByAddress.js.map +1 -0
  24. package/_cjs/explorer/etherscanV2/getListOfInternalTransactionsByAddress.js +74 -0
  25. package/_cjs/explorer/etherscanV2/getListOfInternalTransactionsByAddress.js.map +1 -0
  26. package/_cjs/explorer/etherscanV2/getListOfNormalTransactionsByAddress.js +51 -0
  27. package/_cjs/explorer/etherscanV2/getListOfNormalTransactionsByAddress.js.map +1 -0
  28. package/_cjs/explorer/index.js +9 -7
  29. package/_cjs/explorer/index.js.map +1 -1
  30. package/_cjs/index.js +2 -1
  31. package/_cjs/index.js.map +1 -1
  32. package/_esm/chain/definitions/ethereum.js +3 -3
  33. package/_esm/chain/definitions/ethereum.js.map +1 -1
  34. package/_esm/explorer/etherscanV2/client.js +95 -0
  35. package/_esm/explorer/etherscanV2/client.js.map +1 -0
  36. package/_esm/explorer/etherscanV2/create.js +195 -0
  37. package/_esm/explorer/etherscanV2/create.js.map +1 -0
  38. package/_esm/explorer/etherscanV2/getBlockNumberByTimestamp.js +18 -0
  39. package/_esm/explorer/etherscanV2/getBlockNumberByTimestamp.js.map +1 -0
  40. package/_esm/explorer/etherscanV2/getContractCreatorAndCreationTxHash.js +31 -0
  41. package/_esm/explorer/etherscanV2/getContractCreatorAndCreationTxHash.js.map +1 -0
  42. package/_esm/explorer/etherscanV2/getContractSourceCodeForVerifiedContract.js +33 -0
  43. package/_esm/explorer/etherscanV2/getContractSourceCodeForVerifiedContract.js.map +1 -0
  44. package/_esm/explorer/etherscanV2/getEventLogsByAddressFilteredByTopics.js +45 -0
  45. package/_esm/explorer/etherscanV2/getEventLogsByAddressFilteredByTopics.js.map +1 -0
  46. package/_esm/explorer/etherscanV2/getInternalTransactionsByTransactionHash.js +61 -0
  47. package/_esm/explorer/etherscanV2/getInternalTransactionsByTransactionHash.js.map +1 -0
  48. package/_esm/explorer/etherscanV2/getListOfErc1155TokenTransferEventsByAddress.js +48 -0
  49. package/_esm/explorer/etherscanV2/getListOfErc1155TokenTransferEventsByAddress.js.map +1 -0
  50. package/_esm/explorer/etherscanV2/getListOfErc20TokenTransferEventsByAddress.js +66 -0
  51. package/_esm/explorer/etherscanV2/getListOfErc20TokenTransferEventsByAddress.js.map +1 -0
  52. package/_esm/explorer/etherscanV2/getListOfErc721TokenTransferEventsByAddress.js +44 -0
  53. package/_esm/explorer/etherscanV2/getListOfErc721TokenTransferEventsByAddress.js.map +1 -0
  54. package/_esm/explorer/etherscanV2/getListOfInternalTransactionsByAddress.js +71 -0
  55. package/_esm/explorer/etherscanV2/getListOfInternalTransactionsByAddress.js.map +1 -0
  56. package/_esm/explorer/etherscanV2/getListOfNormalTransactionsByAddress.js +48 -0
  57. package/_esm/explorer/etherscanV2/getListOfNormalTransactionsByAddress.js.map +1 -0
  58. package/_esm/explorer/index.js +1 -0
  59. package/_esm/explorer/index.js.map +1 -1
  60. package/_esm/index.js +1 -1
  61. package/_esm/index.js.map +1 -1
  62. package/_types/explorer/etherscanV2/client.d.ts +17 -0
  63. package/_types/explorer/etherscanV2/client.d.ts.map +1 -0
  64. package/_types/explorer/etherscanV2/create.d.ts +12 -0
  65. package/_types/explorer/etherscanV2/create.d.ts.map +1 -0
  66. package/_types/explorer/etherscanV2/getBlockNumberByTimestamp.d.ts +12 -0
  67. package/_types/explorer/etherscanV2/getBlockNumberByTimestamp.d.ts.map +1 -0
  68. package/_types/explorer/etherscanV2/getContractCreatorAndCreationTxHash.d.ts +12 -0
  69. package/_types/explorer/etherscanV2/getContractCreatorAndCreationTxHash.d.ts.map +1 -0
  70. package/_types/explorer/etherscanV2/getContractSourceCodeForVerifiedContract.d.ts +12 -0
  71. package/_types/explorer/etherscanV2/getContractSourceCodeForVerifiedContract.d.ts.map +1 -0
  72. package/_types/explorer/etherscanV2/getEventLogsByAddressFilteredByTopics.d.ts +16 -0
  73. package/_types/explorer/etherscanV2/getEventLogsByAddressFilteredByTopics.d.ts.map +1 -0
  74. package/_types/explorer/etherscanV2/getInternalTransactionsByTransactionHash.d.ts +12 -0
  75. package/_types/explorer/etherscanV2/getInternalTransactionsByTransactionHash.d.ts.map +1 -0
  76. package/_types/explorer/etherscanV2/getListOfErc1155TokenTransferEventsByAddress.d.ts +16 -0
  77. package/_types/explorer/etherscanV2/getListOfErc1155TokenTransferEventsByAddress.d.ts.map +1 -0
  78. package/_types/explorer/etherscanV2/getListOfErc20TokenTransferEventsByAddress.d.ts +20 -0
  79. package/_types/explorer/etherscanV2/getListOfErc20TokenTransferEventsByAddress.d.ts.map +1 -0
  80. package/_types/explorer/etherscanV2/getListOfErc721TokenTransferEventsByAddress.d.ts +16 -0
  81. package/_types/explorer/etherscanV2/getListOfErc721TokenTransferEventsByAddress.d.ts.map +1 -0
  82. package/_types/explorer/etherscanV2/getListOfInternalTransactionsByAddress.d.ts +17 -0
  83. package/_types/explorer/etherscanV2/getListOfInternalTransactionsByAddress.d.ts.map +1 -0
  84. package/_types/explorer/etherscanV2/getListOfNormalTransactionsByAddress.d.ts +17 -0
  85. package/_types/explorer/etherscanV2/getListOfNormalTransactionsByAddress.d.ts.map +1 -0
  86. package/_types/explorer/index.d.ts +1 -0
  87. package/_types/explorer/index.d.ts.map +1 -1
  88. package/_types/index.d.ts +1 -1
  89. package/_types/index.d.ts.map +1 -1
  90. package/chain/definitions/ethereum.ts +3 -3
  91. package/explorer/etherscanV2/client.ts +154 -0
  92. package/explorer/etherscanV2/create.ts +251 -0
  93. package/explorer/etherscanV2/getBlockNumberByTimestamp.ts +33 -0
  94. package/explorer/etherscanV2/getContractCreatorAndCreationTxHash.ts +46 -0
  95. package/explorer/etherscanV2/getContractSourceCodeForVerifiedContract.ts +54 -0
  96. package/explorer/etherscanV2/getEventLogsByAddressFilteredByTopics.ts +67 -0
  97. package/explorer/etherscanV2/getInternalTransactionsByTransactionHash.ts +76 -0
  98. package/explorer/etherscanV2/getListOfErc1155TokenTransferEventsByAddress.ts +74 -0
  99. package/explorer/etherscanV2/getListOfErc20TokenTransferEventsByAddress.ts +92 -0
  100. package/explorer/etherscanV2/getListOfErc721TokenTransferEventsByAddress.ts +68 -0
  101. package/explorer/etherscanV2/getListOfInternalTransactionsByAddress.ts +100 -0
  102. package/explorer/etherscanV2/getListOfNormalTransactionsByAddress.ts +73 -0
  103. package/explorer/index.ts +1 -0
  104. package/index.ts +1 -0
  105. package/package.json +1 -1
@@ -0,0 +1,195 @@
1
+ import { createInternalTransactionId } from '../../utils/createInternalTransactionId';
2
+ import { createEtherscanV2Client } from './client';
3
+ import { getBlockNumberByTimestamp } from './getBlockNumberByTimestamp';
4
+ import { getContractCreatorAndCreationTxHash } from './getContractCreatorAndCreationTxHash';
5
+ import { getContractSourceCodeForVerifiedContract } from './getContractSourceCodeForVerifiedContract';
6
+ import { getEventLogsByAddressFilteredByTopics } from './getEventLogsByAddressFilteredByTopics';
7
+ import { getInternalTransactionsByTransactionHash } from './getInternalTransactionsByTransactionHash';
8
+ import { getListOfErc20TokenTransferEventsByAddress } from './getListOfErc20TokenTransferEventsByAddress';
9
+ import { getListOfErc721TokenTransferEventsByAddress } from './getListOfErc721TokenTransferEventsByAddress';
10
+ import { getListOfErc1155TokenTransferEventsByAddress } from './getListOfErc1155TokenTransferEventsByAddress';
11
+ import { getListOfInternalTransactionsByAddress } from './getListOfInternalTransactionsByAddress';
12
+ import { getListOfNormalTransactionsByAddress } from './getListOfNormalTransactionsByAddress';
13
+ export const createEtherscanV2 = ({ name, baseUrl, chainId, apiKey, proxyUrl, pageSize = 10_000, }) => {
14
+ const client = createEtherscanV2Client({
15
+ chainId,
16
+ apiKey,
17
+ proxyUrl,
18
+ });
19
+ return {
20
+ name,
21
+ baseUrl,
22
+ getAddressInternalTransactions: async ({ address, fromBlock, toBlock, headers, }) => {
23
+ const internalTransactions = new Map();
24
+ let startblock = fromBlock;
25
+ const endblock = toBlock;
26
+ while (true) {
27
+ const result = await getListOfInternalTransactionsByAddress({
28
+ client,
29
+ address,
30
+ startblock,
31
+ endblock,
32
+ offset: pageSize,
33
+ headers,
34
+ });
35
+ for (const transaction of result) {
36
+ const id = createInternalTransactionId(transaction);
37
+ if (!internalTransactions.has(id)) {
38
+ internalTransactions.set(id, transaction);
39
+ }
40
+ }
41
+ if (result.length < pageSize) {
42
+ break;
43
+ }
44
+ const maxBlockNumber = Math.max(...result.map((x) => x.blockNumber));
45
+ startblock = maxBlockNumber;
46
+ }
47
+ return [...internalTransactions.values()];
48
+ },
49
+ getAddressTransactionIndexes: async ({ address, fromBlock, toBlock, headers, }) => {
50
+ const indexes = new Map();
51
+ let startblock = fromBlock;
52
+ const endblock = toBlock;
53
+ while (true) {
54
+ const result = await getListOfNormalTransactionsByAddress({
55
+ client,
56
+ address,
57
+ startblock,
58
+ endblock,
59
+ offset: pageSize,
60
+ headers,
61
+ });
62
+ for (const index of result) {
63
+ if (!indexes.has(index.hash)) {
64
+ indexes.set(index.hash, index);
65
+ }
66
+ }
67
+ if (result.length < pageSize) {
68
+ break;
69
+ }
70
+ const maxBlockNumber = Math.max(...result.map((x) => x.blockNumber));
71
+ startblock = maxBlockNumber;
72
+ }
73
+ return [...indexes.values()];
74
+ },
75
+ getAddressTokenTransferIndexes: async ({ address, fromBlock, toBlock, headers, }) => {
76
+ const indexes = new Map();
77
+ const erc20Transfers = [];
78
+ const endblock = toBlock;
79
+ // ERC20
80
+ let startblock = fromBlock;
81
+ while (true) {
82
+ const { indexes: resultIndexes, erc20Transfers: resultErc20Transfers } = await getListOfErc20TokenTransferEventsByAddress({
83
+ client,
84
+ address,
85
+ startblock,
86
+ endblock,
87
+ offset: pageSize,
88
+ headers,
89
+ });
90
+ for (const index of resultIndexes) {
91
+ if (!indexes.has(index.hash)) {
92
+ indexes.set(index.hash, index);
93
+ }
94
+ }
95
+ erc20Transfers.push(...resultErc20Transfers);
96
+ if (resultIndexes.length < pageSize) {
97
+ break;
98
+ }
99
+ const maxBlockNumber = Math.max(...resultIndexes.map((x) => x.blockNumber));
100
+ startblock = maxBlockNumber;
101
+ }
102
+ // ERC721
103
+ startblock = fromBlock;
104
+ while (true) {
105
+ const result = await getListOfErc721TokenTransferEventsByAddress({
106
+ client,
107
+ address,
108
+ startblock,
109
+ endblock,
110
+ offset: pageSize,
111
+ headers,
112
+ });
113
+ for (const index of result) {
114
+ if (!indexes.has(index.hash)) {
115
+ indexes.set(index.hash, index);
116
+ }
117
+ }
118
+ if (result.length < pageSize) {
119
+ break;
120
+ }
121
+ const maxBlockNumber = Math.max(...result.map((x) => x.blockNumber));
122
+ startblock = maxBlockNumber;
123
+ }
124
+ // ERC1155
125
+ startblock = fromBlock;
126
+ while (true) {
127
+ const result = await getListOfErc1155TokenTransferEventsByAddress({
128
+ client,
129
+ address,
130
+ startblock,
131
+ endblock,
132
+ offset: pageSize,
133
+ headers,
134
+ });
135
+ for (const index of result) {
136
+ if (!indexes.has(index.hash)) {
137
+ indexes.set(index.hash, index);
138
+ }
139
+ }
140
+ if (result.length < pageSize) {
141
+ break;
142
+ }
143
+ const maxBlockNumber = Math.max(...result.map((x) => x.blockNumber));
144
+ startblock = maxBlockNumber;
145
+ }
146
+ return {
147
+ indexes: [...indexes.values()],
148
+ erc20Transfers,
149
+ };
150
+ },
151
+ getBlockNumberOfTimestamp: ({ timestamp, headers }) => getBlockNumberByTimestamp({
152
+ client,
153
+ timestamp: Math.floor(timestamp / 1000),
154
+ headers,
155
+ }),
156
+ getContract: ({ address, headers }) => getContractSourceCodeForVerifiedContract({
157
+ client,
158
+ address,
159
+ headers,
160
+ }),
161
+ getContractCreations: ({ addresses, headers }) => getContractCreatorAndCreationTxHash({
162
+ client,
163
+ contractaddresses: addresses,
164
+ headers,
165
+ }),
166
+ getEventLogs: async ({ address, topic0, fromBlock: fromBlockParam, toBlock, headers, }) => {
167
+ const logs = [];
168
+ let fromBlock = fromBlockParam ?? 0;
169
+ const maxPageSize = 10_000;
170
+ while (true) {
171
+ const result = await getEventLogsByAddressFilteredByTopics({
172
+ client,
173
+ address,
174
+ topic0,
175
+ fromBlock,
176
+ toBlock,
177
+ headers,
178
+ });
179
+ logs.push(...result);
180
+ if (result.length < maxPageSize) {
181
+ break;
182
+ }
183
+ const maxBlockNumber = Math.max(...result.map((x) => x.blockNumber));
184
+ fromBlock = maxBlockNumber;
185
+ }
186
+ return logs;
187
+ },
188
+ getInternalTransactionOfTransaction: ({ hash, headers }) => getInternalTransactionsByTransactionHash({
189
+ client,
190
+ txhash: hash,
191
+ headers,
192
+ }),
193
+ };
194
+ };
195
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../explorer/etherscanV2/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ const resultSchema = z.string().regex(/^\d+$/).transform(Number);
3
+ /** {@link https://docs.etherscan.io/etherscan-v2/api-endpoints/blocks#get-block-number-by-timestamp} */
4
+ export const getBlockNumberByTimestamp = async ({ client, timestamp, closest = 'before', headers, }) => {
5
+ const result = await client.get({
6
+ path: '',
7
+ query: {
8
+ module: 'block',
9
+ action: 'getblocknobytime',
10
+ timestamp: timestamp.toString(),
11
+ closest,
12
+ },
13
+ resultSchema,
14
+ headers,
15
+ });
16
+ return result;
17
+ };
18
+ //# sourceMappingURL=getBlockNumberByTimestamp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBlockNumberByTimestamp.js","sourceRoot":"","sources":["../../../explorer/etherscanV2/getBlockNumberByTimestamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAWvB,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AAEhE,wGAAwG;AACxG,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,EAC9C,MAAM,EACN,SAAS,EACT,OAAO,GAAG,QAAQ,EAClB,OAAO,GAC6B,EAAE,EAAE;IACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;QAC9B,IAAI,EAAE,EAAE;QACR,KAAK,EAAE;YACL,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,kBAAkB;YAC1B,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE;YAC/B,OAAO;SACR;QACD,YAAY;QACZ,OAAO;KACR,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -0,0 +1,31 @@
1
+ import { z } from 'zod';
2
+ import { addressPrimitiveSchema, lowerHexSchema } from '../../types/primitive';
3
+ const contractCreationSchema = z.object({
4
+ contractAddress: addressPrimitiveSchema,
5
+ contractCreator: addressPrimitiveSchema,
6
+ txHash: lowerHexSchema,
7
+ });
8
+ const resultSchema = z.array(contractCreationSchema);
9
+ /** {@link https://docs.etherscan.io/etherscan-v2/api-endpoints/contracts#get-contract-creator-and-creation-tx-hash} */
10
+ export const getContractCreatorAndCreationTxHash = async ({ client, contractaddresses, headers, }) => {
11
+ try {
12
+ const result = await client.get({
13
+ path: '',
14
+ query: {
15
+ module: 'contract',
16
+ action: 'getcontractcreation',
17
+ contractaddresses: contractaddresses.join(','),
18
+ },
19
+ resultSchema,
20
+ headers,
21
+ });
22
+ return result;
23
+ }
24
+ catch (error) {
25
+ if (error instanceof Error && error.message.includes('No data found')) {
26
+ return [];
27
+ }
28
+ throw error;
29
+ }
30
+ };
31
+ //# sourceMappingURL=getContractCreatorAndCreationTxHash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getContractCreatorAndCreationTxHash.js","sourceRoot":"","sources":["../../../explorer/etherscanV2/getContractCreatorAndCreationTxHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAU9E,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,eAAe,EAAE,sBAAsB;IACvC,eAAe,EAAE,sBAAsB;IACvC,MAAM,EAAE,cAAc;CACvB,CAAC,CAAA;AACF,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;AAEpD,uHAAuH;AACvH,MAAM,CAAC,MAAM,mCAAmC,GAAG,KAAK,EAAE,EACxD,MAAM,EACN,iBAAiB,EACjB,OAAO,GACuC,EAE9C,EAAE;IACF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;YAC9B,IAAI,EAAE,EAAE;YACR,KAAK,EAAE;gBACL,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,qBAAqB;gBAC7B,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;aAC/C;YACD,YAAY;YACZ,OAAO;SACR,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACtE,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ const resultSchema = z.array(z.object({
3
+ ABI: z.string().optional(),
4
+ ContractName: z.string().optional(),
5
+ }));
6
+ /** {@link https://docs.etherscan.io/etherscan-v2/api-endpoints/contracts#get-contract-source-code-for-verified-contract-source-codes} */
7
+ export const getContractSourceCodeForVerifiedContract = async ({ client, address, headers, }) => {
8
+ const result = await client.get({
9
+ path: '',
10
+ query: {
11
+ module: 'contract',
12
+ action: 'getsourcecode',
13
+ address,
14
+ },
15
+ resultSchema,
16
+ headers,
17
+ });
18
+ if (result.length === 0) {
19
+ return undefined;
20
+ }
21
+ const contract = result[0];
22
+ if (contract.ABI === undefined ||
23
+ contract.ABI.length === 0 ||
24
+ contract.ContractName === undefined ||
25
+ contract.ContractName.length === 0) {
26
+ return undefined;
27
+ }
28
+ return {
29
+ abi: contract.ABI,
30
+ name: contract.ContractName,
31
+ };
32
+ };
33
+ //# sourceMappingURL=getContractSourceCodeForVerifiedContract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getContractSourceCodeForVerifiedContract.js","sourceRoot":"","sources":["../../../explorer/etherscanV2/getContractSourceCodeForVerifiedContract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAWvB,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAC1B,CAAC,CAAC,MAAM,CAAC;IACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CACH,CAAA;AAED,yIAAyI;AACzI,MAAM,CAAC,MAAM,wCAAwC,GAAG,KAAK,EAAE,EAC7D,MAAM,EACN,OAAO,EACP,OAAO,GAC4C,EAEnD,EAAE;IACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;QAC9B,IAAI,EAAE,EAAE;QACR,KAAK,EAAE;YACL,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,eAAe;YACvB,OAAO;SACR;QACD,YAAY;QACZ,OAAO;KACR,CAAC,CAAA;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1B,IACE,QAAQ,CAAC,GAAG,KAAK,SAAS;QAC1B,QAAQ,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;QACzB,QAAQ,CAAC,YAAY,KAAK,SAAS;QACnC,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAClC,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO;QACL,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,IAAI,EAAE,QAAQ,CAAC,YAAY;KAC5B,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ import { addressPrimitiveSchema, lowerHexSchema } from '../../types/primitive';
3
+ const logSchema = z.object({
4
+ address: addressPrimitiveSchema,
5
+ blockNumber: z
6
+ .string()
7
+ .regex(/^0x[\da-f]*$/)
8
+ .transform((x) => (x === '0x' ? 0 : Number(x))),
9
+ data: lowerHexSchema,
10
+ logIndex: z
11
+ .string()
12
+ .regex(/^0x[\da-f]*$/)
13
+ .transform((x) => (x === '0x' ? 0 : Number(x))),
14
+ topics: z
15
+ .array(lowerHexSchema.nullable())
16
+ .transform((x) => x.filter((v) => v !== null)),
17
+ transactionHash: lowerHexSchema,
18
+ });
19
+ const resultSchema = z.array(logSchema);
20
+ /** {@link https://docs.etherscan.io/etherscan-v2/api-endpoints/logs#get-event-logs-by-address-filtered-by-topics} */
21
+ export const getEventLogsByAddressFilteredByTopics = async ({ client, address, topic0, fromBlock, toBlock, headers, }) => {
22
+ try {
23
+ const result = await client.get({
24
+ path: '',
25
+ query: {
26
+ module: 'logs',
27
+ action: 'getLogs',
28
+ address,
29
+ topic0,
30
+ ...(fromBlock === undefined ? {} : { fromBlock: fromBlock.toString() }),
31
+ ...(toBlock === undefined ? {} : { toBlock: toBlock.toString() }),
32
+ },
33
+ resultSchema,
34
+ headers,
35
+ });
36
+ return result;
37
+ }
38
+ catch (error) {
39
+ if (error instanceof Error && error.message.includes('No records found')) {
40
+ return [];
41
+ }
42
+ throw error;
43
+ }
44
+ };
45
+ //# sourceMappingURL=getEventLogsByAddressFilteredByTopics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEventLogsByAddressFilteredByTopics.js","sourceRoot":"","sources":["../../../explorer/etherscanV2/getEventLogsByAddressFilteredByTopics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAa9E,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,OAAO,EAAE,sBAAsB;IAC/B,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,KAAK,CAAC,cAAc,CAAC;SACrB,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,KAAK,CAAC,cAAc,CAAC;SACrB,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;SAChC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAiB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC/D,eAAe,EAAE,cAAc;CAChC,CAAC,CAAA;AACF,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AAEvC,qHAAqH;AACrH,MAAM,CAAC,MAAM,qCAAqC,GAAG,KAAK,EAAE,EAC1D,MAAM,EACN,OAAO,EACP,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,GACyC,EAEhD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;YAC9B,IAAI,EAAE,EAAE;YACR,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,SAAS;gBACjB,OAAO;gBACP,MAAM;gBACN,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACvE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aAClE;YACD,YAAY;YACZ,OAAO;SACR,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,61 @@
1
+ import { z } from 'zod';
2
+ import { addressPrimitiveSchema, bigintTextSchema } from '../../types/primitive';
3
+ const internalTransactionSchema = z.object({
4
+ blockNumber: z.string().regex(/^\d+$/).transform(Number),
5
+ contractAddress: z.union([
6
+ addressPrimitiveSchema,
7
+ z
8
+ .literal('')
9
+ .nullable()
10
+ .transform(() => undefined),
11
+ ]),
12
+ from: addressPrimitiveSchema,
13
+ gas: bigintTextSchema,
14
+ isError: z
15
+ .string()
16
+ .regex(/^\d+$/)
17
+ .transform((x) => x === '1'),
18
+ timeStamp: z.string().regex(/^\d+$/).transform(Number),
19
+ to: z.union([
20
+ addressPrimitiveSchema,
21
+ z
22
+ .literal('')
23
+ .nullable()
24
+ .transform(() => undefined),
25
+ ]),
26
+ value: bigintTextSchema,
27
+ });
28
+ const resultSchema = z.array(internalTransactionSchema);
29
+ /** {@link https://docs.etherscan.io/etherscan-v2/api-endpoints/accounts#get-internal-transactions-by-transaction-hash} */
30
+ export const getInternalTransactionsByTransactionHash = async ({ client, txhash, headers, }) => {
31
+ try {
32
+ const result = await client.get({
33
+ path: '',
34
+ query: {
35
+ module: 'account',
36
+ action: 'txlistinternal',
37
+ txhash,
38
+ },
39
+ resultSchema,
40
+ headers,
41
+ });
42
+ return result.map((v) => ({
43
+ blockNumber: v.blockNumber,
44
+ contractAddress: v.contractAddress,
45
+ from: v.from,
46
+ gas: v.gas,
47
+ isError: v.isError,
48
+ timestamp: v.timeStamp * 1000,
49
+ to: v.to,
50
+ txHash: txhash,
51
+ value: v.value,
52
+ }));
53
+ }
54
+ catch (error) {
55
+ if (error instanceof Error && error.message === 'No transactions found') {
56
+ return [];
57
+ }
58
+ throw error;
59
+ }
60
+ };
61
+ //# sourceMappingURL=getInternalTransactionsByTransactionHash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getInternalTransactionsByTransactionHash.js","sourceRoot":"","sources":["../../../explorer/etherscanV2/getInternalTransactionsByTransactionHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAShF,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACxD,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC;QACvB,sBAAsB;QACtB,CAAC;aACE,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,EAAE;aACV,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;KAC9B,CAAC;IACF,IAAI,EAAE,sBAAsB;IAC5B,GAAG,EAAE,gBAAgB;IACrB,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,KAAK,CAAC,OAAO,CAAC;SACd,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACtD,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;QACV,sBAAsB;QACtB,CAAC;aACE,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,EAAE;aACV,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;KAC9B,CAAC;IACF,KAAK,EAAE,gBAAgB;CACxB,CAAC,CAAA;AACF,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAEvD,0HAA0H;AAC1H,MAAM,CAAC,MAAM,wCAAwC,GAAG,KAAK,EAAE,EAC7D,MAAM,EACN,MAAM,EACN,OAAO,GAC4C,EAEnD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;YAC9B,IAAI,EAAE,EAAE;YACR,KAAK,EAAE;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,gBAAgB;gBACxB,MAAM;aACP;YACD,YAAY;YACZ,OAAO;SACR,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI;YAC7B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC,CAAA;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,uBAAuB,EAAE,CAAC;YACxE,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,48 @@
1
+ import { z } from 'zod';
2
+ import { lowerHexSchema } from '../../types/primitive';
3
+ const transferSchema = z.object({
4
+ blockNumber: z.string().regex(/^\d+$/).transform(Number),
5
+ hash: lowerHexSchema,
6
+ timeStamp: z.string().regex(/^\d+$/).transform(Number),
7
+ });
8
+ const resultSchema = z.array(transferSchema);
9
+ /** {@link https://docs.etherscan.io/etherscan-v2/api-endpoints/accounts#get-a-list-of-erc1155-token-transfer-events-by-address} */
10
+ export const getListOfErc1155TokenTransferEventsByAddress = async ({ client, address, startblock = 0, endblock, page = 1, offset = 10_000, sort = 'asc', headers, }) => {
11
+ try {
12
+ const result = await client.get({
13
+ path: '',
14
+ query: {
15
+ module: 'account',
16
+ action: 'token1155tx',
17
+ address,
18
+ startblock: startblock.toString(),
19
+ ...(endblock === undefined
20
+ ? {}
21
+ : {
22
+ endblock: endblock.toString(),
23
+ }),
24
+ page: page.toString(),
25
+ offset: offset.toString(),
26
+ sort,
27
+ },
28
+ resultSchema,
29
+ headers,
30
+ });
31
+ return result.map((v) => ({
32
+ blockNumber: v.blockNumber,
33
+ hash: v.hash,
34
+ timestamp: v.timeStamp * 1000,
35
+ }));
36
+ }
37
+ catch (error) {
38
+ if (error instanceof Error &&
39
+ (error.message === 'No transactions found' ||
40
+ error.message === 'Error! Missing Or invalid Action name' ||
41
+ error.message ===
42
+ 'Query Timeout occured. Please select a smaller result dataset')) {
43
+ return [];
44
+ }
45
+ throw error;
46
+ }
47
+ };
48
+ //# sourceMappingURL=getListOfErc1155TokenTransferEventsByAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getListOfErc1155TokenTransferEventsByAddress.js","sourceRoot":"","sources":["../../../explorer/etherscanV2/getListOfErc1155TokenTransferEventsByAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAetD,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;CACvD,CAAC,CAAA;AACF,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;AAE5C,mIAAmI;AACnI,MAAM,CAAC,MAAM,4CAA4C,GAAG,KAAK,EAAE,EACjE,MAAM,EACN,OAAO,EACP,UAAU,GAAG,CAAC,EACd,QAAQ,EACR,IAAI,GAAG,CAAC,EACR,MAAM,GAAG,MAAM,EACf,IAAI,GAAG,KAAK,EACZ,OAAO,GACgD,EAEvD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;YAC9B,IAAI,EAAE,EAAE;YACR,KAAK,EAAE;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,aAAa;gBACrB,OAAO;gBACP,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE;gBACjC,GAAG,CAAC,QAAQ,KAAK,SAAS;oBACxB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC;wBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;qBAC9B,CAAC;gBACN,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,IAAI;aACL;YACD,YAAY;YACZ,OAAO;SACR,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI;SAC9B,CAAC,CAAC,CAAA;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,KAAK,YAAY,KAAK;YACtB,CAAC,KAAK,CAAC,OAAO,KAAK,uBAAuB;gBACxC,KAAK,CAAC,OAAO,KAAK,uCAAuC;gBACzD,KAAK,CAAC,OAAO;oBACX,+DAA+D,CAAC,EACpE,CAAC;YACD,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,66 @@
1
+ import { z } from 'zod';
2
+ import { bigintTextSchema, lowerHexSchema } from '../../types/primitive';
3
+ const transferSchema = z.object({
4
+ blockNumber: z.string().regex(/^\d+$/).transform(Number),
5
+ hash: lowerHexSchema,
6
+ timeStamp: z.string().regex(/^\d+$/).transform(Number),
7
+ contractAddress: lowerHexSchema,
8
+ from: lowerHexSchema,
9
+ to: lowerHexSchema,
10
+ value: bigintTextSchema,
11
+ });
12
+ const resultSchema = z.array(transferSchema);
13
+ /** {@link https://docs.etherscan.io/etherscan-v2/api-endpoints/accounts#get-a-list-of-erc20-token-transfer-events-by-address} */
14
+ export const getListOfErc20TokenTransferEventsByAddress = async ({ client, address, startblock = 0, endblock, page = 1, offset = 10_000, sort = 'asc', headers, }) => {
15
+ try {
16
+ const result = await client.get({
17
+ path: '',
18
+ query: {
19
+ module: 'account',
20
+ action: 'tokentx',
21
+ address,
22
+ startblock: startblock.toString(),
23
+ ...(endblock === undefined
24
+ ? {}
25
+ : {
26
+ endblock: endblock.toString(),
27
+ }),
28
+ page: page.toString(),
29
+ offset: offset.toString(),
30
+ sort,
31
+ },
32
+ resultSchema,
33
+ headers,
34
+ });
35
+ const indexes = [];
36
+ const transfers = [];
37
+ for (const data of result) {
38
+ indexes.push({
39
+ blockNumber: data.blockNumber,
40
+ hash: data.hash,
41
+ timestamp: data.timeStamp * 1000,
42
+ });
43
+ transfers.push({
44
+ address: data.contractAddress,
45
+ from: data.from,
46
+ logIndex: 0,
47
+ to: data.to,
48
+ value: data.value,
49
+ });
50
+ }
51
+ return {
52
+ indexes,
53
+ erc20Transfers: transfers,
54
+ };
55
+ }
56
+ catch (error) {
57
+ if (error instanceof Error && error.message === 'No transactions found') {
58
+ return {
59
+ indexes: [],
60
+ erc20Transfers: [],
61
+ };
62
+ }
63
+ throw error;
64
+ }
65
+ };
66
+ //# sourceMappingURL=getListOfErc20TokenTransferEventsByAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getListOfErc20TokenTransferEventsByAddress.js","sourceRoot":"","sources":["../../../explorer/etherscanV2/getListOfErc20TokenTransferEventsByAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAexE,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACtD,eAAe,EAAE,cAAc;IAC/B,IAAI,EAAE,cAAc;IACpB,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,gBAAgB;CACxB,CAAC,CAAA;AACF,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;AAE5C,iIAAiI;AACjI,MAAM,CAAC,MAAM,0CAA0C,GAAG,KAAK,EAAE,EAC/D,MAAM,EACN,OAAO,EACP,UAAU,GAAG,CAAC,EACd,QAAQ,EACR,IAAI,GAAG,CAAC,EACR,MAAM,GAAG,MAAM,EACf,IAAI,GAAG,KAAK,EACZ,OAAO,GAC8C,EAGpD,EAAE;IACH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;YAC9B,IAAI,EAAE,EAAE;YACR,KAAK,EAAE;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;gBACjB,OAAO;gBACP,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE;gBACjC,GAAG,CAAC,QAAQ,KAAK,SAAS;oBACxB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC;wBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;qBAC9B,CAAC;gBACN,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,IAAI;aACL;YACD,YAAY;YACZ,OAAO;SACR,CAAC,CAAA;QACF,MAAM,OAAO,GAAuB,EAAE,CAAA;QACtC,MAAM,SAAS,GAAoB,EAAE,CAAA;QACrC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC;gBACX,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI;aACjC,CAAC,CAAA;YACF,SAAS,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE,IAAI,CAAC,eAAe;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,CAAC;gBACX,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAA;QACJ,CAAC;QACD,OAAO;YACL,OAAO;YACP,cAAc,EAAE,SAAS;SAC1B,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,uBAAuB,EAAE,CAAC;YACxE,OAAO;gBACL,OAAO,EAAE,EAAE;gBACX,cAAc,EAAE,EAAE;aACnB,CAAA;QACH,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,44 @@
1
+ import { z } from 'zod';
2
+ import { lowerHexSchema } from '../../types/primitive';
3
+ const transferSchema = z.object({
4
+ blockNumber: z.string().regex(/^\d+$/).transform(Number),
5
+ hash: lowerHexSchema,
6
+ timeStamp: z.string().regex(/^\d+$/).transform(Number),
7
+ });
8
+ const resultSchema = z.array(transferSchema);
9
+ /** {@link https://docs.etherscan.io/etherscan-v2/api-endpoints/accounts#get-a-list-of-erc721-token-transfer-events-by-address} */
10
+ export const getListOfErc721TokenTransferEventsByAddress = async ({ client, address, startblock = 0, endblock, page = 1, offset = 10_000, sort = 'asc', headers, }) => {
11
+ try {
12
+ const result = await client.get({
13
+ path: '',
14
+ query: {
15
+ module: 'account',
16
+ action: 'tokennfttx',
17
+ address,
18
+ startblock: startblock.toString(),
19
+ ...(endblock === undefined
20
+ ? {}
21
+ : {
22
+ endblock: endblock.toString(),
23
+ }),
24
+ page: page.toString(),
25
+ offset: offset.toString(),
26
+ sort,
27
+ },
28
+ resultSchema,
29
+ headers,
30
+ });
31
+ return result.map((v) => ({
32
+ blockNumber: v.blockNumber,
33
+ hash: v.hash,
34
+ timestamp: v.timeStamp * 1000,
35
+ }));
36
+ }
37
+ catch (error) {
38
+ if (error instanceof Error && error.message === 'No transactions found') {
39
+ return [];
40
+ }
41
+ throw error;
42
+ }
43
+ };
44
+ //# sourceMappingURL=getListOfErc721TokenTransferEventsByAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getListOfErc721TokenTransferEventsByAddress.js","sourceRoot":"","sources":["../../../explorer/etherscanV2/getListOfErc721TokenTransferEventsByAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAetD,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;CACvD,CAAC,CAAA;AACF,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;AAE5C,kIAAkI;AAClI,MAAM,CAAC,MAAM,2CAA2C,GAAG,KAAK,EAAE,EAChE,MAAM,EACN,OAAO,EACP,UAAU,GAAG,CAAC,EACd,QAAQ,EACR,IAAI,GAAG,CAAC,EACR,MAAM,GAAG,MAAM,EACf,IAAI,GAAG,KAAK,EACZ,OAAO,GAC+C,EAEtD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC;YAC9B,IAAI,EAAE,EAAE;YACR,KAAK,EAAE;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,YAAY;gBACpB,OAAO;gBACP,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE;gBACjC,GAAG,CAAC,QAAQ,KAAK,SAAS;oBACxB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC;wBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;qBAC9B,CAAC;gBACN,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,IAAI;aACL;YACD,YAAY;YACZ,OAAO;SACR,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI;SAC9B,CAAC,CAAC,CAAA;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,uBAAuB,EAAE,CAAC;YACxE,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}