@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,554 @@
1
+ import {
2
+ actionCrossTypeUnionSchema,
3
+ actionTypeUnionSchema,
4
+ } from '@0xtorch/core'
5
+ import { z } from 'zod'
6
+
7
+ const addressSchema = z.string().regex(/^0x[\da-f]{40}$/)
8
+
9
+ const logSignatureSchema = z.string().regex(/^0x[\da-f]{64}$/)
10
+
11
+ const bigIntTextSchema = z
12
+ .string()
13
+ .regex(/^\d+$/)
14
+ .transform((v) => BigInt(v))
15
+
16
+ export const betweenBigIntSchema = z.object({
17
+ type: z.literal('between'),
18
+ min: bigIntTextSchema.optional(),
19
+ max: bigIntTextSchema.optional(),
20
+ })
21
+
22
+ const indexSchema = z.number().int().nonnegative()
23
+
24
+ export const addressInSchema = z.object({
25
+ type: z.literal('address-in'),
26
+ not: z.boolean().optional(),
27
+ values: z
28
+ .array(
29
+ z.union([
30
+ z.literal('related'),
31
+ z.literal('from'),
32
+ z.literal('to'),
33
+ addressSchema,
34
+ ]),
35
+ )
36
+ .min(1),
37
+ })
38
+
39
+ const fromValueSchema = z.object({
40
+ type: z.literal('from'),
41
+ })
42
+
43
+ const toValueSchema = z.object({
44
+ type: z.literal('to'),
45
+ })
46
+
47
+ const valueValueSchema = z.object({
48
+ type: z.literal('value'),
49
+ })
50
+
51
+ const functionValueSchema = z.object({
52
+ type: z.literal('function'),
53
+ index: indexSchema,
54
+ })
55
+
56
+ const logValueSchema = z.object({
57
+ type: z.literal('log'),
58
+ address: addressInSchema.optional(),
59
+ signature: logSignatureSchema.optional(),
60
+ indexedCount: indexSchema.optional(),
61
+ args: z
62
+ .array(
63
+ z.object({
64
+ index: indexSchema,
65
+ value: z.union([addressInSchema, z.string()]),
66
+ }),
67
+ )
68
+ .min(1)
69
+ .optional(),
70
+ index: indexSchema,
71
+ value: z.union([z.literal('address'), indexSchema]),
72
+ })
73
+
74
+ const erc20ValueSchema = z.object({
75
+ type: z.literal('erc20'),
76
+ address: addressInSchema.optional(),
77
+ from: addressInSchema.optional(),
78
+ to: addressInSchema.optional(),
79
+ amount: betweenBigIntSchema.optional(),
80
+ index: indexSchema,
81
+ value: z.union([
82
+ z.literal('address'),
83
+ z.literal('from'),
84
+ z.literal('to'),
85
+ z.literal('amount'),
86
+ z.literal('amount-decimal'),
87
+ z.literal('currency-id'),
88
+ z.literal('currency-name'),
89
+ z.literal('currency-symbol'),
90
+ ]),
91
+ })
92
+
93
+ const erc721ValueSchema = z.object({
94
+ type: z.literal('erc721'),
95
+ address: addressInSchema.optional(),
96
+ from: addressInSchema.optional(),
97
+ to: addressInSchema.optional(),
98
+ id: bigIntTextSchema.optional(),
99
+ index: indexSchema,
100
+ value: z.union([
101
+ z.literal('address'),
102
+ z.literal('from'),
103
+ z.literal('to'),
104
+ z.literal('id'),
105
+ z.literal('nft-id'),
106
+ z.literal('nft-name'),
107
+ ]),
108
+ })
109
+
110
+ const erc1155ValueSchema = z.object({
111
+ type: z.literal('erc1155'),
112
+ address: addressInSchema.optional(),
113
+ from: addressInSchema.optional(),
114
+ to: addressInSchema.optional(),
115
+ id: bigIntTextSchema.optional(),
116
+ amount: betweenBigIntSchema.optional(),
117
+ index: indexSchema,
118
+ value: z.union([
119
+ z.literal('address'),
120
+ z.literal('from'),
121
+ z.literal('to'),
122
+ z.literal('id'),
123
+ z.literal('amount'),
124
+ z.literal('nft-id'),
125
+ z.literal('nft-name'),
126
+ ]),
127
+ })
128
+
129
+ export const simpleValueSchema = z.union([
130
+ z.string(),
131
+ fromValueSchema,
132
+ toValueSchema,
133
+ valueValueSchema,
134
+ functionValueSchema,
135
+ logValueSchema,
136
+ erc20ValueSchema,
137
+ erc721ValueSchema,
138
+ erc1155ValueSchema,
139
+ ])
140
+
141
+ export const mathValueSchema = z.object({
142
+ type: z.literal('math'),
143
+ values: z
144
+ .array(
145
+ z.union([
146
+ z.literal('+'),
147
+ z.literal('-'),
148
+ z.literal('*'),
149
+ z.literal('/'),
150
+ simpleValueSchema,
151
+ ]),
152
+ )
153
+ .min(3),
154
+ })
155
+
156
+ export const sliceValueSchema = z.object({
157
+ type: z.literal('slice'),
158
+ value: simpleValueSchema,
159
+ start: z.number().int().optional(),
160
+ end: z.number().int().optional(),
161
+ })
162
+
163
+ export const joinValueSchema = z.object({
164
+ type: z.literal('join'),
165
+ values: z
166
+ .array(z.union([mathValueSchema, sliceValueSchema, simpleValueSchema]))
167
+ .min(1),
168
+ })
169
+
170
+ export const allValueSchema = z.union([
171
+ simpleValueSchema,
172
+ mathValueSchema,
173
+ sliceValueSchema,
174
+ joinValueSchema,
175
+ ])
176
+
177
+ export const arrayInSchema = z.object({
178
+ type: z.literal('array-in'),
179
+ not: z.boolean().optional(),
180
+ values: z.array(z.union([z.literal('related'), allValueSchema])).min(1),
181
+ })
182
+
183
+ const logPatternSchema = z.object({
184
+ address: arrayInSchema.optional(),
185
+ signature: logSignatureSchema,
186
+ indexedCount: indexSchema,
187
+ args: z
188
+ .array(
189
+ z.object({
190
+ index: indexSchema,
191
+ value: z.union([arrayInSchema, allValueSchema, betweenBigIntSchema]),
192
+ }),
193
+ )
194
+ .min(1)
195
+ .optional(),
196
+ })
197
+
198
+ export const exactLogsConditionSchema = z.object({
199
+ type: z.literal('exact'),
200
+ patterns: z.array(logPatternSchema),
201
+ })
202
+
203
+ export const someLogsConditionSchema = z.object({
204
+ type: z.literal('some'),
205
+ patterns: z.array(
206
+ logPatternSchema.extend({
207
+ count: betweenBigIntSchema,
208
+ }),
209
+ ),
210
+ })
211
+
212
+ export const erc20TransferPatternSchema = z.object({
213
+ address: arrayInSchema.optional(),
214
+ from: arrayInSchema.optional(),
215
+ to: arrayInSchema.optional(),
216
+ amount: z.union([allValueSchema, betweenBigIntSchema]).optional(),
217
+ })
218
+
219
+ export const exactErc20TransfersConditionSchema = z.object({
220
+ type: z.literal('exact'),
221
+ patterns: z.array(erc20TransferPatternSchema),
222
+ })
223
+
224
+ export const someErc20TransfersConditionSchema = z.object({
225
+ type: z.literal('some'),
226
+ patterns: z.array(
227
+ erc20TransferPatternSchema.extend({
228
+ count: betweenBigIntSchema,
229
+ }),
230
+ ),
231
+ })
232
+
233
+ export const erc721TransferPatternSchema = z.object({
234
+ address: arrayInSchema.optional(),
235
+ from: arrayInSchema.optional(),
236
+ to: arrayInSchema.optional(),
237
+ id: allValueSchema.optional(),
238
+ })
239
+
240
+ export const exactErc721TransfersConditionSchema = z.object({
241
+ type: z.literal('exact'),
242
+ patterns: z.array(erc721TransferPatternSchema),
243
+ })
244
+
245
+ export const someErc721TransfersConditionSchema = z.object({
246
+ type: z.literal('some'),
247
+ patterns: z.array(
248
+ erc721TransferPatternSchema.extend({
249
+ count: betweenBigIntSchema,
250
+ }),
251
+ ),
252
+ })
253
+
254
+ export const erc1155TransferPatternSchema = z.object({
255
+ address: arrayInSchema.optional(),
256
+ from: arrayInSchema.optional(),
257
+ to: arrayInSchema.optional(),
258
+ id: allValueSchema.optional(),
259
+ amount: z.union([allValueSchema, betweenBigIntSchema]).optional(),
260
+ })
261
+
262
+ export const exactErc1155TransfersConditionSchema = z.object({
263
+ type: z.literal('exact'),
264
+ patterns: z.array(erc1155TransferPatternSchema),
265
+ })
266
+
267
+ export const someErc1155TransfersConditionSchema = z.object({
268
+ type: z.literal('some'),
269
+ patterns: z.array(
270
+ erc1155TransferPatternSchema.extend({
271
+ count: betweenBigIntSchema,
272
+ }),
273
+ ),
274
+ })
275
+
276
+ const functionArgConditionSchema = z.object({
277
+ index: indexSchema,
278
+ value: z.union([arrayInSchema, allValueSchema, betweenBigIntSchema]),
279
+ })
280
+
281
+ const functionConditionSchema = z.object({
282
+ id: z.string().regex(/^0x[\da-f]{8}$/),
283
+ interface: z.string().optional(),
284
+ args: z.array(functionArgConditionSchema).min(1).optional(),
285
+ })
286
+
287
+ export const conditionSchema: z.ZodObject<{
288
+ related: z.ZodOptional<typeof arrayInSchema>
289
+ chainId: z.ZodOptional<z.ZodArray<z.ZodNumber>>
290
+ from: z.ZodOptional<typeof arrayInSchema>
291
+ to: z.ZodOptional<typeof arrayInSchema>
292
+ value: z.ZodOptional<typeof betweenBigIntSchema>
293
+ function: typeof functionConditionSchema
294
+ logs: z.ZodOptional<
295
+ z.ZodUnion<
296
+ [typeof exactLogsConditionSchema, typeof someLogsConditionSchema]
297
+ >
298
+ >
299
+ erc20Transfers: z.ZodOptional<
300
+ z.ZodUnion<
301
+ [
302
+ typeof exactErc20TransfersConditionSchema,
303
+ typeof someErc20TransfersConditionSchema,
304
+ ]
305
+ >
306
+ >
307
+ erc721Transfers: z.ZodOptional<
308
+ z.ZodUnion<
309
+ [
310
+ typeof exactErc721TransfersConditionSchema,
311
+ typeof someErc721TransfersConditionSchema,
312
+ ]
313
+ >
314
+ >
315
+ erc1155Transfers: z.ZodOptional<
316
+ z.ZodUnion<
317
+ [
318
+ typeof exactErc1155TransfersConditionSchema,
319
+ typeof someErc1155TransfersConditionSchema,
320
+ ]
321
+ >
322
+ >
323
+ }> = z.object({
324
+ related: arrayInSchema.optional(),
325
+ chainId: z.array(z.number().int().positive()).min(1).optional(),
326
+ from: arrayInSchema.optional(),
327
+ to: arrayInSchema.optional(),
328
+ value: betweenBigIntSchema.optional(),
329
+ function: functionConditionSchema,
330
+ logs: z.union([exactLogsConditionSchema, someLogsConditionSchema]).optional(),
331
+ erc20Transfers: z
332
+ .union([
333
+ exactErc20TransfersConditionSchema,
334
+ someErc20TransfersConditionSchema,
335
+ ])
336
+ .optional(),
337
+ erc721Transfers: z
338
+ .union([
339
+ exactErc721TransfersConditionSchema,
340
+ someErc721TransfersConditionSchema,
341
+ ])
342
+ .optional(),
343
+ erc1155Transfers: z
344
+ .union([
345
+ exactErc1155TransfersConditionSchema,
346
+ someErc1155TransfersConditionSchema,
347
+ ])
348
+ .optional(),
349
+ })
350
+
351
+ const transferDirectionSchema = z.union([
352
+ z.literal('in'),
353
+ z.literal('out'),
354
+ z.literal('none'),
355
+ ])
356
+
357
+ export const erc20TransferGeneratorSchema = erc20TransferPatternSchema.extend({
358
+ type: z.literal('erc20'),
359
+ direction: transferDirectionSchema,
360
+ index: indexSchema.optional(),
361
+ })
362
+
363
+ export const erc721TransferGeneratorSchema = erc721TransferPatternSchema.extend(
364
+ {
365
+ type: z.literal('erc721'),
366
+ direction: transferDirectionSchema,
367
+ index: indexSchema.optional(),
368
+ },
369
+ )
370
+
371
+ export const erc1155TransferGeneratorSchema =
372
+ erc1155TransferPatternSchema.extend({
373
+ type: z.literal('erc1155'),
374
+ direction: transferDirectionSchema,
375
+ index: indexSchema.optional(),
376
+ })
377
+
378
+ export const internalTransferGeneratorSchema = z.object({
379
+ type: z.literal('internal'),
380
+ direction: transferDirectionSchema,
381
+ from: arrayInSchema.optional(),
382
+ to: arrayInSchema.optional(),
383
+ value: z.union([allValueSchema, betweenBigIntSchema]).optional(),
384
+ index: indexSchema.optional(),
385
+ })
386
+
387
+ const customTransferErc20AssetSchema = erc20TransferPatternSchema.extend({
388
+ type: z.literal('erc20'),
389
+ index: indexSchema,
390
+ })
391
+
392
+ const customTransferErc721AssetSchema = erc721TransferPatternSchema.extend({
393
+ type: z.literal('erc721'),
394
+ index: indexSchema,
395
+ })
396
+
397
+ const customTransferErc1155AssetSchema = erc1155TransferPatternSchema.extend({
398
+ type: z.literal('erc1155'),
399
+ index: indexSchema,
400
+ })
401
+
402
+ const customTransferAssetSchema: z.ZodUnion<
403
+ [
404
+ z.ZodObject<{
405
+ type: z.ZodLiteral<'native'>
406
+ }>,
407
+ typeof customTransferErc20AssetSchema,
408
+ typeof customTransferErc721AssetSchema,
409
+ typeof customTransferErc1155AssetSchema,
410
+ ]
411
+ > = z.union([
412
+ z.object({
413
+ type: z.literal('native'),
414
+ }),
415
+ customTransferErc20AssetSchema,
416
+ customTransferErc721AssetSchema,
417
+ customTransferErc1155AssetSchema,
418
+ ])
419
+
420
+ export const customTransferGeneratorSchema: z.ZodObject<{
421
+ type: z.ZodLiteral<'custom'>
422
+ direction: typeof transferDirectionSchema
423
+ from: z.ZodOptional<typeof allValueSchema>
424
+ to: z.ZodOptional<typeof allValueSchema>
425
+ asset: typeof customTransferAssetSchema
426
+ amount: typeof allValueSchema
427
+ }> = z.object({
428
+ type: z.literal('custom'),
429
+ direction: transferDirectionSchema,
430
+ from: allValueSchema.optional(),
431
+ to: allValueSchema.optional(),
432
+ asset: customTransferAssetSchema,
433
+ amount: allValueSchema,
434
+ })
435
+
436
+ const valueTransferGeneratorSchema = z.object({
437
+ type: z.literal('value'),
438
+ direction: transferDirectionSchema,
439
+ from: arrayInSchema.optional(),
440
+ to: arrayInSchema.optional(),
441
+ value: z.union([allValueSchema, betweenBigIntSchema]).optional(),
442
+ })
443
+
444
+ const targetTransferGeneratorSchema = z.object({
445
+ type: z.literal('target'),
446
+ direction: transferDirectionSchema,
447
+ })
448
+
449
+ export const transferGeneratorSchema: z.ZodUnion<
450
+ [
451
+ typeof valueTransferGeneratorSchema,
452
+ typeof internalTransferGeneratorSchema,
453
+ typeof erc20TransferGeneratorSchema,
454
+ typeof erc721TransferGeneratorSchema,
455
+ typeof erc1155TransferGeneratorSchema,
456
+ typeof targetTransferGeneratorSchema,
457
+ typeof customTransferGeneratorSchema,
458
+ ]
459
+ > = z.union([
460
+ // value を指定して自動生成
461
+ valueTransferGeneratorSchema,
462
+ // internal transaction を指定して自動生成
463
+ internalTransferGeneratorSchema,
464
+ // erc20 transfer を指定して自動生成
465
+ erc20TransferGeneratorSchema,
466
+ // erc721 transfer を指定して自動生成
467
+ erc721TransferGeneratorSchema,
468
+ // erc1155 transfer を指定して自動生成
469
+ erc1155TransferGeneratorSchema,
470
+ // target で抽出した transfer 毎に自動生成
471
+ targetTransferGeneratorSchema,
472
+ // 各 parameter を個別指定して生成
473
+ customTransferGeneratorSchema,
474
+ ])
475
+
476
+ const targetErc20GeneratorSchema = erc20TransferPatternSchema.extend({
477
+ type: z.literal('erc20'),
478
+ })
479
+
480
+ const targetErc721GeneratorSchema = erc721TransferPatternSchema.extend({
481
+ type: z.literal('erc721'),
482
+ })
483
+
484
+ const targetErc1155GeneratorSchema = erc1155TransferPatternSchema.extend({
485
+ type: z.literal('erc1155'),
486
+ })
487
+
488
+ const targetGeneratorSchema: z.ZodUnion<
489
+ [
490
+ typeof targetErc20GeneratorSchema,
491
+ typeof targetErc721GeneratorSchema,
492
+ typeof targetErc1155GeneratorSchema,
493
+ ]
494
+ > = z.union([
495
+ targetErc20GeneratorSchema,
496
+ targetErc721GeneratorSchema,
497
+ targetErc1155GeneratorSchema,
498
+ ])
499
+
500
+ const valueTargetErc721GeneratorSchema = erc721TransferPatternSchema.extend({
501
+ type: z.literal('erc721'),
502
+ index: indexSchema,
503
+ })
504
+
505
+ const valueTargetErc1155GeneratorSchema = erc1155TransferPatternSchema.extend({
506
+ type: z.literal('erc1155'),
507
+ index: indexSchema,
508
+ })
509
+
510
+ const valueTargetGeneratorSchema: z.ZodUnion<
511
+ [
512
+ typeof valueTargetErc721GeneratorSchema,
513
+ typeof valueTargetErc1155GeneratorSchema,
514
+ ]
515
+ > = z.union([
516
+ valueTargetErc721GeneratorSchema,
517
+ valueTargetErc1155GeneratorSchema,
518
+ ])
519
+
520
+ export const generatorSchema: z.ZodObject<{
521
+ target: z.ZodOptional<typeof targetGeneratorSchema>
522
+ type: typeof actionTypeUnionSchema
523
+ comment: z.ZodOptional<typeof allValueSchema>
524
+ crossId: z.ZodOptional<typeof allValueSchema>
525
+ crossType: z.ZodOptional<typeof actionCrossTypeUnionSchema>
526
+ loanId: z.ZodOptional<typeof allValueSchema>
527
+ valueTarget: z.ZodOptional<typeof valueTargetGeneratorSchema>
528
+ transfers: z.ZodArray<typeof transferGeneratorSchema>
529
+ }> = z.object({
530
+ target: targetGeneratorSchema.optional(),
531
+ type: actionTypeUnionSchema,
532
+ comment: allValueSchema.optional(),
533
+ crossId: allValueSchema.optional(),
534
+ crossType: actionCrossTypeUnionSchema.optional(),
535
+ loanId: allValueSchema.optional(),
536
+ valueTarget: valueTargetGeneratorSchema.optional(),
537
+ transfers: z.array(transferGeneratorSchema),
538
+ })
539
+
540
+ const exampleSchema = z.object({
541
+ chainId: z.number().int().positive(),
542
+ hash: z.string().regex(/^0x[\da-f]{64}$/),
543
+ addresses: z.array(addressSchema),
544
+ })
545
+
546
+ export const analyzerSchema: z.ZodObject<{
547
+ example: z.ZodOptional<typeof exampleSchema>
548
+ condition: typeof conditionSchema
549
+ generators: z.ZodArray<typeof generatorSchema>
550
+ }> = z.object({
551
+ example: exampleSchema.optional(),
552
+ condition: conditionSchema,
553
+ generators: z.array(generatorSchema).min(1),
554
+ })