@0xtorch/evm 0.0.74 → 0.0.76

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 (246) hide show
  1. package/.DS_Store +0 -0
  2. package/_cjs/index.js +6 -2
  3. package/_cjs/index.js.map +1 -1
  4. package/_cjs/logic/analyzeTransaction/createActions/fail.js +2 -7
  5. package/_cjs/logic/analyzeTransaction/createActions/fail.js.map +1 -1
  6. package/_cjs/logic/analyzeTransaction/createActions/gas.js +4 -4
  7. package/_cjs/logic/analyzeTransaction/createActions/gas.js.map +1 -1
  8. package/_cjs/logic/analyzeTransaction/createActions/index.js +27 -4
  9. package/_cjs/logic/analyzeTransaction/createActions/index.js.map +1 -1
  10. package/_cjs/logic/analyzeTransaction/createActions/json/addressIn.js +37 -0
  11. package/_cjs/logic/analyzeTransaction/createActions/json/addressIn.js.map +1 -0
  12. package/_cjs/logic/analyzeTransaction/createActions/json/allValue.js +28 -0
  13. package/_cjs/logic/analyzeTransaction/createActions/json/allValue.js.map +1 -0
  14. package/_cjs/logic/analyzeTransaction/createActions/json/arrayIn.js +30 -0
  15. package/_cjs/logic/analyzeTransaction/createActions/json/arrayIn.js.map +1 -0
  16. package/_cjs/logic/analyzeTransaction/createActions/json/betweenBigInt.js +14 -0
  17. package/_cjs/logic/analyzeTransaction/createActions/json/betweenBigInt.js.map +1 -0
  18. package/_cjs/logic/analyzeTransaction/createActions/json/customTransferGenerator.js +132 -0
  19. package/_cjs/logic/analyzeTransaction/createActions/json/customTransferGenerator.js.map +1 -0
  20. package/_cjs/logic/analyzeTransaction/createActions/json/erc1155Pattern.js +76 -0
  21. package/_cjs/logic/analyzeTransaction/createActions/json/erc1155Pattern.js.map +1 -0
  22. package/_cjs/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js +45 -0
  23. package/_cjs/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js.map +1 -0
  24. package/_cjs/logic/analyzeTransaction/createActions/json/erc20Pattern.js +68 -0
  25. package/_cjs/logic/analyzeTransaction/createActions/json/erc20Pattern.js.map +1 -0
  26. package/_cjs/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js +45 -0
  27. package/_cjs/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js.map +1 -0
  28. package/_cjs/logic/analyzeTransaction/createActions/json/erc721Pattern.js +45 -0
  29. package/_cjs/logic/analyzeTransaction/createActions/json/erc721Pattern.js.map +1 -0
  30. package/_cjs/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js +45 -0
  31. package/_cjs/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js.map +1 -0
  32. package/_cjs/logic/analyzeTransaction/createActions/json/generateActions.js +179 -0
  33. package/_cjs/logic/analyzeTransaction/createActions/json/generateActions.js.map +1 -0
  34. package/_cjs/logic/analyzeTransaction/createActions/json/index.js +41 -0
  35. package/_cjs/logic/analyzeTransaction/createActions/json/index.js.map +1 -0
  36. package/_cjs/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js +100 -0
  37. package/_cjs/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js.map +1 -0
  38. package/_cjs/logic/analyzeTransaction/createActions/json/join.js +44 -0
  39. package/_cjs/logic/analyzeTransaction/createActions/json/join.js.map +1 -0
  40. package/_cjs/logic/analyzeTransaction/createActions/json/math.js +80 -0
  41. package/_cjs/logic/analyzeTransaction/createActions/json/math.js.map +1 -0
  42. package/_cjs/logic/analyzeTransaction/createActions/json/schema.js +385 -0
  43. package/_cjs/logic/analyzeTransaction/createActions/json/schema.js.map +1 -0
  44. package/_cjs/logic/analyzeTransaction/createActions/json/simpleValue.js +253 -0
  45. package/_cjs/logic/analyzeTransaction/createActions/json/simpleValue.js.map +1 -0
  46. package/_cjs/logic/analyzeTransaction/createActions/json/slice.js +14 -0
  47. package/_cjs/logic/analyzeTransaction/createActions/json/slice.js.map +1 -0
  48. package/_cjs/logic/analyzeTransaction/createActions/json/transferGenerator.js +179 -0
  49. package/_cjs/logic/analyzeTransaction/createActions/json/transferGenerator.js.map +1 -0
  50. package/_cjs/logic/analyzeTransaction/createActions/json/type.js +3 -0
  51. package/_cjs/logic/analyzeTransaction/createActions/json/type.js.map +1 -0
  52. package/_cjs/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js +492 -0
  53. package/_cjs/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js.map +1 -0
  54. package/_cjs/logic/analyzeTransaction/createActions/spam.js +2 -2
  55. package/_cjs/logic/analyzeTransaction/createActions/spam.js.map +1 -1
  56. package/_cjs/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js +0 -1
  57. package/_cjs/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js.map +1 -1
  58. package/_cjs/logic/analyzeTransaction/createActions/utils/createDirection.js +5 -5
  59. package/_cjs/logic/analyzeTransaction/createActions/utils/createDirection.js.map +1 -1
  60. package/_cjs/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js +82 -65
  61. package/_cjs/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js.map +1 -1
  62. package/_cjs/logic/analyzeTransaction/decodeTransaction/decodeLog.js +2 -2
  63. package/_cjs/logic/analyzeTransaction/decodeTransaction/decodeLog.js.map +1 -1
  64. package/_cjs/logic/analyzeTransaction/getDataFromDatasource.js +3 -5
  65. package/_cjs/logic/analyzeTransaction/getDataFromDatasource.js.map +1 -1
  66. package/_cjs/logic/analyzeTransaction/index.js +4 -4
  67. package/_cjs/logic/analyzeTransaction/index.js.map +1 -1
  68. package/_esm/index.js +1 -0
  69. package/_esm/index.js.map +1 -1
  70. package/_esm/logic/analyzeTransaction/createActions/fail.js +2 -7
  71. package/_esm/logic/analyzeTransaction/createActions/fail.js.map +1 -1
  72. package/_esm/logic/analyzeTransaction/createActions/gas.js +5 -5
  73. package/_esm/logic/analyzeTransaction/createActions/gas.js.map +1 -1
  74. package/_esm/logic/analyzeTransaction/createActions/index.js +28 -6
  75. package/_esm/logic/analyzeTransaction/createActions/index.js.map +1 -1
  76. package/_esm/logic/analyzeTransaction/createActions/json/addressIn.js +33 -0
  77. package/_esm/logic/analyzeTransaction/createActions/json/addressIn.js.map +1 -0
  78. package/_esm/logic/analyzeTransaction/createActions/json/allValue.js +29 -0
  79. package/_esm/logic/analyzeTransaction/createActions/json/allValue.js.map +1 -0
  80. package/_esm/logic/analyzeTransaction/createActions/json/arrayIn.js +28 -0
  81. package/_esm/logic/analyzeTransaction/createActions/json/arrayIn.js.map +1 -0
  82. package/_esm/logic/analyzeTransaction/createActions/json/betweenBigInt.js +10 -0
  83. package/_esm/logic/analyzeTransaction/createActions/json/betweenBigInt.js.map +1 -0
  84. package/_esm/logic/analyzeTransaction/createActions/json/customTransferGenerator.js +128 -0
  85. package/_esm/logic/analyzeTransaction/createActions/json/customTransferGenerator.js.map +1 -0
  86. package/_esm/logic/analyzeTransaction/createActions/json/erc1155Pattern.js +77 -0
  87. package/_esm/logic/analyzeTransaction/createActions/json/erc1155Pattern.js.map +1 -0
  88. package/_esm/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js +41 -0
  89. package/_esm/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.js.map +1 -0
  90. package/_esm/logic/analyzeTransaction/createActions/json/erc20Pattern.js +68 -0
  91. package/_esm/logic/analyzeTransaction/createActions/json/erc20Pattern.js.map +1 -0
  92. package/_esm/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js +41 -0
  93. package/_esm/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.js.map +1 -0
  94. package/_esm/logic/analyzeTransaction/createActions/json/erc721Pattern.js +45 -0
  95. package/_esm/logic/analyzeTransaction/createActions/json/erc721Pattern.js.map +1 -0
  96. package/_esm/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js +41 -0
  97. package/_esm/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.js.map +1 -0
  98. package/_esm/logic/analyzeTransaction/createActions/json/generateActions.js +177 -0
  99. package/_esm/logic/analyzeTransaction/createActions/json/generateActions.js.map +1 -0
  100. package/_esm/logic/analyzeTransaction/createActions/json/index.js +43 -0
  101. package/_esm/logic/analyzeTransaction/createActions/json/index.js.map +1 -0
  102. package/_esm/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js +99 -0
  103. package/_esm/logic/analyzeTransaction/createActions/json/internalTransferGenerator.js.map +1 -0
  104. package/_esm/logic/analyzeTransaction/createActions/json/join.js +43 -0
  105. package/_esm/logic/analyzeTransaction/createActions/json/join.js.map +1 -0
  106. package/_esm/logic/analyzeTransaction/createActions/json/math.js +76 -0
  107. package/_esm/logic/analyzeTransaction/createActions/json/math.js.map +1 -0
  108. package/_esm/logic/analyzeTransaction/createActions/json/schema.js +389 -0
  109. package/_esm/logic/analyzeTransaction/createActions/json/schema.js.map +1 -0
  110. package/_esm/logic/analyzeTransaction/createActions/json/simpleValue.js +266 -0
  111. package/_esm/logic/analyzeTransaction/createActions/json/simpleValue.js.map +1 -0
  112. package/_esm/logic/analyzeTransaction/createActions/json/slice.js +10 -0
  113. package/_esm/logic/analyzeTransaction/createActions/json/slice.js.map +1 -0
  114. package/_esm/logic/analyzeTransaction/createActions/json/transferGenerator.js +178 -0
  115. package/_esm/logic/analyzeTransaction/createActions/json/transferGenerator.js.map +1 -0
  116. package/_esm/logic/analyzeTransaction/createActions/json/type.js +2 -0
  117. package/_esm/logic/analyzeTransaction/createActions/json/type.js.map +1 -0
  118. package/_esm/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js +511 -0
  119. package/_esm/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.js.map +1 -0
  120. package/_esm/logic/analyzeTransaction/createActions/spam.js +3 -3
  121. package/_esm/logic/analyzeTransaction/createActions/spam.js.map +1 -1
  122. package/_esm/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js +0 -1
  123. package/_esm/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.js.map +1 -1
  124. package/_esm/logic/analyzeTransaction/createActions/utils/createDirection.js +5 -5
  125. package/_esm/logic/analyzeTransaction/createActions/utils/createDirection.js.map +1 -1
  126. package/_esm/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js +82 -65
  127. package/_esm/logic/analyzeTransaction/createActions/utils/createTokenTransfers.js.map +1 -1
  128. package/_esm/logic/analyzeTransaction/decodeTransaction/decodeLog.js +2 -2
  129. package/_esm/logic/analyzeTransaction/decodeTransaction/decodeLog.js.map +1 -1
  130. package/_esm/logic/analyzeTransaction/getDataFromDatasource.js +4 -6
  131. package/_esm/logic/analyzeTransaction/getDataFromDatasource.js.map +1 -1
  132. package/_esm/logic/analyzeTransaction/index.js +4 -4
  133. package/_esm/logic/analyzeTransaction/index.js.map +1 -1
  134. package/_types/index.d.ts +2 -0
  135. package/_types/index.d.ts.map +1 -1
  136. package/_types/logic/analyzeTransaction/createActions/fail.d.ts +3 -2
  137. package/_types/logic/analyzeTransaction/createActions/fail.d.ts.map +1 -1
  138. package/_types/logic/analyzeTransaction/createActions/gas.d.ts +3 -2
  139. package/_types/logic/analyzeTransaction/createActions/gas.d.ts.map +1 -1
  140. package/_types/logic/analyzeTransaction/createActions/general.d.ts +4 -4
  141. package/_types/logic/analyzeTransaction/createActions/general.d.ts.map +1 -1
  142. package/_types/logic/analyzeTransaction/createActions/index.d.ts +5 -3
  143. package/_types/logic/analyzeTransaction/createActions/index.d.ts.map +1 -1
  144. package/_types/logic/analyzeTransaction/createActions/json/addressIn.d.ts +10 -0
  145. package/_types/logic/analyzeTransaction/createActions/json/addressIn.d.ts.map +1 -0
  146. package/_types/logic/analyzeTransaction/createActions/json/allValue.d.ts +9 -0
  147. package/_types/logic/analyzeTransaction/createActions/json/allValue.d.ts.map +1 -0
  148. package/_types/logic/analyzeTransaction/createActions/json/arrayIn.d.ts +10 -0
  149. package/_types/logic/analyzeTransaction/createActions/json/arrayIn.d.ts.map +1 -0
  150. package/_types/logic/analyzeTransaction/createActions/json/betweenBigInt.d.ts +7 -0
  151. package/_types/logic/analyzeTransaction/createActions/json/betweenBigInt.d.ts.map +1 -0
  152. package/_types/logic/analyzeTransaction/createActions/json/customTransferGenerator.d.ts +12 -0
  153. package/_types/logic/analyzeTransaction/createActions/json/customTransferGenerator.d.ts.map +1 -0
  154. package/_types/logic/analyzeTransaction/createActions/json/erc1155Pattern.d.ts +10 -0
  155. package/_types/logic/analyzeTransaction/createActions/json/erc1155Pattern.d.ts.map +1 -0
  156. package/_types/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.d.ts +10 -0
  157. package/_types/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.d.ts.map +1 -0
  158. package/_types/logic/analyzeTransaction/createActions/json/erc20Pattern.d.ts +10 -0
  159. package/_types/logic/analyzeTransaction/createActions/json/erc20Pattern.d.ts.map +1 -0
  160. package/_types/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.d.ts +10 -0
  161. package/_types/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.d.ts.map +1 -0
  162. package/_types/logic/analyzeTransaction/createActions/json/erc721Pattern.d.ts +10 -0
  163. package/_types/logic/analyzeTransaction/createActions/json/erc721Pattern.d.ts.map +1 -0
  164. package/_types/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.d.ts +10 -0
  165. package/_types/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.d.ts.map +1 -0
  166. package/_types/logic/analyzeTransaction/createActions/json/generateActions.d.ts +14 -0
  167. package/_types/logic/analyzeTransaction/createActions/json/generateActions.d.ts.map +1 -0
  168. package/_types/logic/analyzeTransaction/createActions/json/index.d.ts +16 -0
  169. package/_types/logic/analyzeTransaction/createActions/json/index.d.ts.map +1 -0
  170. package/_types/logic/analyzeTransaction/createActions/json/internalTransferGenerator.d.ts +12 -0
  171. package/_types/logic/analyzeTransaction/createActions/json/internalTransferGenerator.d.ts.map +1 -0
  172. package/_types/logic/analyzeTransaction/createActions/json/join.d.ts +9 -0
  173. package/_types/logic/analyzeTransaction/createActions/json/join.d.ts.map +1 -0
  174. package/_types/logic/analyzeTransaction/createActions/json/math.d.ts +9 -0
  175. package/_types/logic/analyzeTransaction/createActions/json/math.d.ts.map +1 -0
  176. package/_types/logic/analyzeTransaction/createActions/json/schema.d.ts +658268 -0
  177. package/_types/logic/analyzeTransaction/createActions/json/schema.d.ts.map +1 -0
  178. package/_types/logic/analyzeTransaction/createActions/json/simpleValue.d.ts +9 -0
  179. package/_types/logic/analyzeTransaction/createActions/json/simpleValue.d.ts.map +1 -0
  180. package/_types/logic/analyzeTransaction/createActions/json/slice.d.ts +9 -0
  181. package/_types/logic/analyzeTransaction/createActions/json/slice.d.ts.map +1 -0
  182. package/_types/logic/analyzeTransaction/createActions/json/transferGenerator.d.ts +15 -0
  183. package/_types/logic/analyzeTransaction/createActions/json/transferGenerator.d.ts.map +1 -0
  184. package/_types/logic/analyzeTransaction/createActions/json/type.d.ts +6 -0
  185. package/_types/logic/analyzeTransaction/createActions/json/type.d.ts.map +1 -0
  186. package/_types/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.d.ts +10 -0
  187. package/_types/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.d.ts.map +1 -0
  188. package/_types/logic/analyzeTransaction/createActions/spam.d.ts +7 -5
  189. package/_types/logic/analyzeTransaction/createActions/spam.d.ts.map +1 -1
  190. package/_types/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.d.ts.map +1 -1
  191. package/_types/logic/analyzeTransaction/createActions/utils/createDirection.d.ts +5 -4
  192. package/_types/logic/analyzeTransaction/createActions/utils/createDirection.d.ts.map +1 -1
  193. package/_types/logic/analyzeTransaction/createActions/utils/createTokenTransfers.d.ts +3 -2
  194. package/_types/logic/analyzeTransaction/createActions/utils/createTokenTransfers.d.ts.map +1 -1
  195. package/_types/logic/analyzeTransaction/getDataFromDatasource.d.ts +11 -10
  196. package/_types/logic/analyzeTransaction/getDataFromDatasource.d.ts.map +1 -1
  197. package/_types/logic/analyzeTransaction/index.d.ts +8 -7
  198. package/_types/logic/analyzeTransaction/index.d.ts.map +1 -1
  199. package/_types/types/analyzeDataSource.d.ts +2 -3
  200. package/_types/types/analyzeDataSource.d.ts.map +1 -1
  201. package/_types/types/log.d.ts +2 -2
  202. package/_types/types/transactionDecoded.d.ts +38 -38
  203. package/_types/types/transactionDecoded.d.ts.map +1 -1
  204. package/_types/types/transactionDetail.d.ts +36 -36
  205. package/_types/types/transactionIndex.d.ts +5 -5
  206. package/analyzer/.DS_Store +0 -0
  207. package/chain/.DS_Store +0 -0
  208. package/client/.DS_Store +0 -0
  209. package/explorer/.DS_Store +0 -0
  210. package/index.ts +10 -0
  211. package/logic/analyzeTransaction/createActions/fail.ts +4 -8
  212. package/logic/analyzeTransaction/createActions/gas.ts +7 -6
  213. package/logic/analyzeTransaction/createActions/general.ts +4 -4
  214. package/logic/analyzeTransaction/createActions/index.ts +37 -9
  215. package/logic/analyzeTransaction/createActions/json/addressIn.ts +57 -0
  216. package/logic/analyzeTransaction/createActions/json/allValue.ts +41 -0
  217. package/logic/analyzeTransaction/createActions/json/arrayIn.ts +51 -0
  218. package/logic/analyzeTransaction/createActions/json/betweenBigInt.ts +18 -0
  219. package/logic/analyzeTransaction/createActions/json/customTransferGenerator.ts +166 -0
  220. package/logic/analyzeTransaction/createActions/json/erc1155Pattern.ts +108 -0
  221. package/logic/analyzeTransaction/createActions/json/erc1155TransferGenerator.ts +53 -0
  222. package/logic/analyzeTransaction/createActions/json/erc20Pattern.ts +96 -0
  223. package/logic/analyzeTransaction/createActions/json/erc20TransferGenerator.ts +53 -0
  224. package/logic/analyzeTransaction/createActions/json/erc721Pattern.ts +74 -0
  225. package/logic/analyzeTransaction/createActions/json/erc721TransferGenerator.ts +53 -0
  226. package/logic/analyzeTransaction/createActions/json/generateActions.ts +248 -0
  227. package/logic/analyzeTransaction/createActions/json/index.ts +72 -0
  228. package/logic/analyzeTransaction/createActions/json/internalTransferGenerator.ts +141 -0
  229. package/logic/analyzeTransaction/createActions/json/join.ts +54 -0
  230. package/logic/analyzeTransaction/createActions/json/math.ts +96 -0
  231. package/logic/analyzeTransaction/createActions/json/schema.ts +554 -0
  232. package/logic/analyzeTransaction/createActions/json/simpleValue.ts +339 -0
  233. package/logic/analyzeTransaction/createActions/json/slice.ts +21 -0
  234. package/logic/analyzeTransaction/createActions/json/transferGenerator.ts +220 -0
  235. package/logic/analyzeTransaction/createActions/json/type.ts +8 -0
  236. package/logic/analyzeTransaction/createActions/json/verifyTxSatisfiesCondition.ts +731 -0
  237. package/logic/analyzeTransaction/createActions/spam.ts +9 -6
  238. package/logic/analyzeTransaction/createActions/tests/tx-1-0x5c1345e9b83106f657de5a20d75de3e9f56725697b4ef47cafd019c1fa944128.json +383 -0
  239. package/logic/analyzeTransaction/createActions/utils/containsUrlOrDomain.ts +0 -1
  240. package/logic/analyzeTransaction/createActions/utils/createDirection.ts +10 -8
  241. package/logic/analyzeTransaction/createActions/utils/createTokenTransfers.ts +96 -68
  242. package/logic/analyzeTransaction/decodeTransaction/decodeLog.ts +6 -3
  243. package/logic/analyzeTransaction/getDataFromDatasource.ts +14 -28
  244. package/logic/analyzeTransaction/index.ts +11 -10
  245. package/package.json +2 -2
  246. package/types/analyzeDataSource.ts +2 -2
@@ -0,0 +1,339 @@
1
+ import { createBigDecimal, toStringBigDecimal } from '@0xtorch/big-decimal'
2
+ import { stringify } from '@0xtorch/core'
3
+ import type { z } from 'zod'
4
+ import type {
5
+ Erc20TokenTransfer,
6
+ Erc721TokenTransfer,
7
+ Erc1155TokenTransfer,
8
+ Log,
9
+ LowerHex,
10
+ TransactionDecoded,
11
+ } from '../../../../types'
12
+ import { checkValueIsAddressIn } from './addressIn'
13
+ import { checkValueIsBetweenBigInt } from './betweenBigInt'
14
+ import type { simpleValueSchema } from './schema'
15
+
16
+ export const getSimpleValue = ({
17
+ schema,
18
+ transaction,
19
+ relatedAddresses,
20
+ }: {
21
+ readonly schema: z.infer<typeof simpleValueSchema>
22
+ readonly transaction: TransactionDecoded
23
+ readonly relatedAddresses: Set<LowerHex>
24
+ }): string => {
25
+ if (typeof schema === 'string') {
26
+ return schema
27
+ }
28
+
29
+ switch (schema.type) {
30
+ case 'from': {
31
+ return transaction.from.address
32
+ }
33
+ case 'to': {
34
+ return transaction.to?.address ?? ''
35
+ }
36
+ case 'value': {
37
+ return transaction.value.toString()
38
+ }
39
+ case 'function': {
40
+ return stringify(transaction.function?.args[schema.index].value) ?? ''
41
+ }
42
+ case 'log': {
43
+ const targetLogs: Log[] = []
44
+ for (const log of transaction.logs) {
45
+ // address
46
+ if (
47
+ schema.address !== undefined &&
48
+ !checkValueIsAddressIn({
49
+ value: log.address,
50
+ schema: schema.address,
51
+ transaction,
52
+ relatedAddresses,
53
+ })
54
+ ) {
55
+ continue
56
+ }
57
+
58
+ // signature
59
+ if (
60
+ schema.signature !== undefined &&
61
+ log.topics[0] !== schema.signature
62
+ ) {
63
+ continue
64
+ }
65
+
66
+ // indexedCount
67
+ if (
68
+ schema.indexedCount !== undefined &&
69
+ log.topics.length - 1 !== schema.indexedCount
70
+ ) {
71
+ continue
72
+ }
73
+
74
+ // args
75
+ if (schema.args !== undefined) {
76
+ continue
77
+ }
78
+
79
+ targetLogs.push(log)
80
+ }
81
+
82
+ const log = targetLogs[schema.index]
83
+ if (schema.value === 'address') {
84
+ return log.address
85
+ }
86
+ return log.args === undefined ? '' : stringify(log.args[schema.value])
87
+ }
88
+ case 'erc20': {
89
+ const targetTransfers: Erc20TokenTransfer[] = []
90
+ for (const transfer of transaction.erc20Transfers) {
91
+ // address
92
+ if (
93
+ schema.address !== undefined &&
94
+ !checkValueIsAddressIn({
95
+ value: transfer.address,
96
+ schema: schema.address,
97
+ transaction,
98
+ relatedAddresses,
99
+ })
100
+ ) {
101
+ continue
102
+ }
103
+
104
+ // from
105
+ if (
106
+ schema.from !== undefined &&
107
+ !checkValueIsAddressIn({
108
+ value: transfer.from,
109
+ schema: schema.from,
110
+ transaction,
111
+ relatedAddresses,
112
+ })
113
+ ) {
114
+ continue
115
+ }
116
+
117
+ // to
118
+ if (
119
+ schema.to !== undefined &&
120
+ !checkValueIsAddressIn({
121
+ value: transfer.to,
122
+ schema: schema.to,
123
+ transaction,
124
+ relatedAddresses,
125
+ })
126
+ ) {
127
+ continue
128
+ }
129
+
130
+ // amount
131
+ if (
132
+ schema.amount !== undefined &&
133
+ !checkValueIsBetweenBigInt({
134
+ value: transfer.value,
135
+ schema: schema.amount,
136
+ })
137
+ ) {
138
+ continue
139
+ }
140
+
141
+ targetTransfers.push(transfer)
142
+ }
143
+
144
+ const transfer = targetTransfers[schema.index]
145
+
146
+ switch (schema.value) {
147
+ case 'address': {
148
+ return transfer.address
149
+ }
150
+ case 'from': {
151
+ return transfer.from
152
+ }
153
+ case 'to': {
154
+ return transfer.to
155
+ }
156
+ case 'amount': {
157
+ return transfer.value.toString()
158
+ }
159
+ case 'amount-decimal': {
160
+ return toStringBigDecimal(
161
+ createBigDecimal(transfer.value, transfer.token.decimals),
162
+ )
163
+ }
164
+ case 'currency-id': {
165
+ return transfer.token.currency.id
166
+ }
167
+ case 'currency-name': {
168
+ return transfer.token.currency.name
169
+ }
170
+ case 'currency-symbol': {
171
+ return transfer.token.currency.symbol
172
+ }
173
+ }
174
+ throw new Error('Unexpected error')
175
+ }
176
+ case 'erc721': {
177
+ const targetTransfers: Erc721TokenTransfer[] = []
178
+ for (const transfer of transaction.erc721Transfers) {
179
+ // address
180
+ if (
181
+ schema.address !== undefined &&
182
+ !checkValueIsAddressIn({
183
+ value: transfer.address,
184
+ schema: schema.address,
185
+ transaction,
186
+ relatedAddresses,
187
+ })
188
+ ) {
189
+ continue
190
+ }
191
+
192
+ // from
193
+ if (
194
+ schema.from !== undefined &&
195
+ !checkValueIsAddressIn({
196
+ value: transfer.from,
197
+ schema: schema.from,
198
+ transaction,
199
+ relatedAddresses,
200
+ })
201
+ ) {
202
+ continue
203
+ }
204
+
205
+ // to
206
+ if (
207
+ schema.to !== undefined &&
208
+ !checkValueIsAddressIn({
209
+ value: transfer.to,
210
+ schema: schema.to,
211
+ transaction,
212
+ relatedAddresses,
213
+ })
214
+ ) {
215
+ continue
216
+ }
217
+
218
+ // id
219
+ if (schema.id !== undefined && transfer.tokenId !== schema.id) {
220
+ continue
221
+ }
222
+
223
+ targetTransfers.push(transfer)
224
+ }
225
+
226
+ const transfer = targetTransfers[schema.index]
227
+
228
+ switch (schema.value) {
229
+ case 'address': {
230
+ return transfer.address
231
+ }
232
+ case 'from': {
233
+ return transfer.from
234
+ }
235
+ case 'to': {
236
+ return transfer.to
237
+ }
238
+ case 'id': {
239
+ return transfer.tokenId.toString()
240
+ }
241
+ case 'nft-id': {
242
+ return transfer.token.id
243
+ }
244
+ case 'nft-name': {
245
+ return transfer.token.name ?? ''
246
+ }
247
+ }
248
+ throw new Error('Unexpected error')
249
+ }
250
+ case 'erc1155': {
251
+ const targetTransfers: Erc1155TokenTransfer[] = []
252
+ for (const transfer of transaction.erc1155Transfers) {
253
+ // address
254
+ if (
255
+ schema.address !== undefined &&
256
+ !checkValueIsAddressIn({
257
+ value: transfer.address,
258
+ schema: schema.address,
259
+ transaction,
260
+ relatedAddresses,
261
+ })
262
+ ) {
263
+ continue
264
+ }
265
+
266
+ // from
267
+ if (
268
+ schema.from !== undefined &&
269
+ !checkValueIsAddressIn({
270
+ value: transfer.from,
271
+ schema: schema.from,
272
+ transaction,
273
+ relatedAddresses,
274
+ })
275
+ ) {
276
+ continue
277
+ }
278
+
279
+ // to
280
+ if (
281
+ schema.to !== undefined &&
282
+ !checkValueIsAddressIn({
283
+ value: transfer.to,
284
+ schema: schema.to,
285
+ transaction,
286
+ relatedAddresses,
287
+ })
288
+ ) {
289
+ continue
290
+ }
291
+
292
+ // id
293
+ if (schema.id !== undefined && transfer.tokenId !== schema.id) {
294
+ continue
295
+ }
296
+
297
+ // amount
298
+ if (
299
+ schema.amount !== undefined &&
300
+ !checkValueIsBetweenBigInt({
301
+ value: transfer.value,
302
+ schema: schema.amount,
303
+ })
304
+ ) {
305
+ continue
306
+ }
307
+
308
+ targetTransfers.push(transfer)
309
+ }
310
+
311
+ const transfer = targetTransfers[schema.index]
312
+
313
+ switch (schema.value) {
314
+ case 'address': {
315
+ return transfer.address
316
+ }
317
+ case 'from': {
318
+ return transfer.from
319
+ }
320
+ case 'to': {
321
+ return transfer.to
322
+ }
323
+ case 'id': {
324
+ return transfer.tokenId.toString()
325
+ }
326
+ case 'amount': {
327
+ return transfer.value.toString()
328
+ }
329
+ case 'nft-id': {
330
+ return transfer.token.id
331
+ }
332
+ case 'nft-name': {
333
+ return transfer.token.name ?? ''
334
+ }
335
+ }
336
+ throw new Error('Unexpected error')
337
+ }
338
+ }
339
+ }
@@ -0,0 +1,21 @@
1
+ import type { z } from 'zod'
2
+ import type { LowerHex, TransactionDecoded } from '../../../../types'
3
+ import type { sliceValueSchema } from './schema'
4
+ import { getSimpleValue } from './simpleValue'
5
+
6
+ export const getSliceValue = ({
7
+ schema,
8
+ transaction,
9
+ relatedAddresses,
10
+ }: {
11
+ readonly schema: z.infer<typeof sliceValueSchema>
12
+ readonly transaction: TransactionDecoded
13
+ readonly relatedAddresses: Set<LowerHex>
14
+ }): string => {
15
+ const value = getSimpleValue({
16
+ schema: schema.value,
17
+ transaction,
18
+ relatedAddresses,
19
+ })
20
+ return value.slice(schema.start, schema.end)
21
+ }
@@ -0,0 +1,220 @@
1
+ import { createBigDecimal } from '@0xtorch/big-decimal'
2
+ import type { Transfer } from '@0xtorch/core'
3
+ import type { z } from 'zod'
4
+ import type { Chain } from '../../../../chain'
5
+ import type {
6
+ Erc20TokenTransfer,
7
+ Erc721TokenTransfer,
8
+ Erc1155TokenTransfer,
9
+ LowerHex,
10
+ TransactionDecoded,
11
+ } from '../../../../types'
12
+ import { createEvmAddressId } from '../../../../utils'
13
+ import { getAllValue } from './allValue'
14
+ import { checkValueIsArrayIn } from './arrayIn'
15
+ import { checkValueIsBetweenBigInt } from './betweenBigInt'
16
+ import { generateCustomTransfer } from './customTransferGenerator'
17
+ import { generateTransfersByErc20Transfer } from './erc20TransferGenerator'
18
+ import { generateTransfersByErc721Transfer } from './erc721TransferGenerator'
19
+ import { generateTransfersByErc1155Transfer } from './erc1155TransferGenerator'
20
+ import { generateTransfersByInternalTransactions } from './internalTransferGenerator'
21
+ import type { transferGeneratorSchema } from './schema'
22
+
23
+ export const generateTransfers = ({
24
+ schema,
25
+ chain,
26
+ transaction,
27
+ relatedAddresses,
28
+ erc20Target,
29
+ erc721Target,
30
+ erc1155Target,
31
+ }: {
32
+ readonly schema: z.infer<typeof transferGeneratorSchema>
33
+ readonly chain: Chain
34
+ readonly transaction: TransactionDecoded
35
+ readonly relatedAddresses: Set<LowerHex>
36
+ readonly erc20Target?: Erc20TokenTransfer
37
+ readonly erc721Target?: Erc721TokenTransfer
38
+ readonly erc1155Target?: Erc1155TokenTransfer
39
+ }): readonly Transfer[] => {
40
+ switch (schema.type) {
41
+ case 'value': {
42
+ // from
43
+ if (
44
+ schema.from !== undefined &&
45
+ !checkValueIsArrayIn({
46
+ value: transaction.from.address,
47
+ schema: schema.from,
48
+ transaction,
49
+ relatedAddresses,
50
+ })
51
+ ) {
52
+ return []
53
+ }
54
+
55
+ // to
56
+ if (
57
+ schema.to !== undefined &&
58
+ !checkValueIsArrayIn({
59
+ value: transaction.to?.address ?? '',
60
+ schema: schema.to,
61
+ transaction,
62
+ relatedAddresses,
63
+ })
64
+ ) {
65
+ return []
66
+ }
67
+
68
+ // value
69
+ if (schema.value !== undefined) {
70
+ if (typeof schema.value === 'string') {
71
+ if (transaction.value.toString() !== schema.value) {
72
+ return []
73
+ }
74
+ } else {
75
+ switch (schema.value.type) {
76
+ case 'between': {
77
+ if (
78
+ !checkValueIsBetweenBigInt({
79
+ value: transaction.value,
80
+ schema: schema.value,
81
+ })
82
+ ) {
83
+ return []
84
+ }
85
+ break
86
+ }
87
+ default: {
88
+ const value = getAllValue({
89
+ schema: schema.value,
90
+ transaction,
91
+ relatedAddresses,
92
+ })
93
+ if (transaction.value.toString() !== value) {
94
+ return []
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+
101
+ return [
102
+ {
103
+ direction: schema.direction,
104
+ from: createEvmAddressId({
105
+ chainId: transaction.chainId,
106
+ address: transaction.from.address,
107
+ }),
108
+ to:
109
+ transaction.to === undefined
110
+ ? undefined
111
+ : createEvmAddressId({
112
+ chainId: transaction.chainId,
113
+ address: transaction.to.address,
114
+ }),
115
+ asset: chain.nativeToken.currency,
116
+ amount: createBigDecimal(
117
+ transaction.value,
118
+ chain.nativeToken.decimals,
119
+ ),
120
+ },
121
+ ]
122
+ }
123
+ case 'internal': {
124
+ return generateTransfersByInternalTransactions({
125
+ schema,
126
+ chain,
127
+ transaction,
128
+ relatedAddresses,
129
+ })
130
+ }
131
+ case 'erc20': {
132
+ return generateTransfersByErc20Transfer({
133
+ schema,
134
+ transaction,
135
+ relatedAddresses,
136
+ })
137
+ }
138
+ case 'erc721': {
139
+ return generateTransfersByErc721Transfer({
140
+ schema,
141
+ transaction,
142
+ relatedAddresses,
143
+ })
144
+ }
145
+ case 'erc1155': {
146
+ return generateTransfersByErc1155Transfer({
147
+ schema,
148
+ transaction,
149
+ relatedAddresses,
150
+ })
151
+ }
152
+ case 'target': {
153
+ if (erc20Target !== undefined) {
154
+ return [
155
+ {
156
+ direction: schema.direction,
157
+ from: createEvmAddressId({
158
+ chainId: transaction.chainId,
159
+ address: erc20Target.from,
160
+ }),
161
+ to: createEvmAddressId({
162
+ chainId: transaction.chainId,
163
+ address: erc20Target.to,
164
+ }),
165
+ asset: erc20Target.token.currency,
166
+ amount: createBigDecimal(
167
+ erc20Target.value,
168
+ erc20Target.token.decimals,
169
+ ),
170
+ },
171
+ ]
172
+ }
173
+ if (erc721Target !== undefined) {
174
+ return [
175
+ {
176
+ direction: schema.direction,
177
+ from: createEvmAddressId({
178
+ chainId: transaction.chainId,
179
+ address: erc721Target.from,
180
+ }),
181
+ to: createEvmAddressId({
182
+ chainId: transaction.chainId,
183
+ address: erc721Target.to,
184
+ }),
185
+ asset: erc721Target.token,
186
+ amount: createBigDecimal(1n),
187
+ },
188
+ ]
189
+ }
190
+ if (erc1155Target !== undefined) {
191
+ return [
192
+ {
193
+ direction: schema.direction,
194
+ from: createEvmAddressId({
195
+ chainId: transaction.chainId,
196
+ address: erc1155Target.from,
197
+ }),
198
+ to: createEvmAddressId({
199
+ chainId: transaction.chainId,
200
+ address: erc1155Target.to,
201
+ }),
202
+ asset: erc1155Target.token,
203
+ amount: createBigDecimal(erc1155Target.value),
204
+ },
205
+ ]
206
+ }
207
+ throw new Error('Target is not found')
208
+ }
209
+ case 'custom': {
210
+ return [
211
+ generateCustomTransfer({
212
+ schema,
213
+ chain,
214
+ transaction,
215
+ relatedAddresses,
216
+ }),
217
+ ]
218
+ }
219
+ }
220
+ }
@@ -0,0 +1,8 @@
1
+ import type { z } from 'zod'
2
+ import type { analyzerSchema, conditionSchema, generatorSchema } from './schema'
3
+
4
+ export type Condition = z.infer<typeof conditionSchema>
5
+
6
+ export type Generator = z.infer<typeof generatorSchema>
7
+
8
+ export type JsonAnalyzer = z.infer<typeof analyzerSchema>