essential-eth 0.4.8 → 0.4.9-beta.0

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 (477) hide show
  1. package/..eslintrc.js.un~ +0 -0
  2. package/..npmignore.un~ +0 -0
  3. package/.env +1 -0
  4. package/.eslintignore +4 -0
  5. package/.eslintrc.js +34 -0
  6. package/.gitattributes +1 -0
  7. package/.github/workflows/.test.yml.un~ +0 -0
  8. package/.github/workflows/test.yml +29 -0
  9. package/.package.json.un~ +0 -0
  10. package/.prettierignore +7 -0
  11. package/.travis.yml +5 -0
  12. package/jest.config.js +9 -0
  13. package/package.json +32 -18
  14. package/readme.md +1 -2
  15. package/scripts/build-website.sh +4 -0
  16. package/scripts/bump-minor.sh +4 -0
  17. package/scripts/bump-patch.sh +4 -0
  18. package/scripts/fetch-chains-info.ts +70 -0
  19. package/scripts/pre-commit.sh +5 -0
  20. package/src/classes/Contract.ts +161 -0
  21. package/src/classes/test/Contract/crv-abi.ts +488 -0
  22. package/src/classes/test/Contract/crv.test.ts +56 -0
  23. package/src/classes/test/Contract/ens-abi.ts +452 -0
  24. package/src/classes/test/Contract/ens.test.ts +39 -0
  25. package/src/classes/test/Contract/fei-abi.ts +526 -0
  26. package/src/classes/test/Contract/fei.test.ts +86 -0
  27. package/src/classes/test/Contract/foo-abi.ts +42 -0
  28. package/src/classes/test/Contract/foo.test.ts +33 -0
  29. package/src/classes/test/Contract/uni.test.ts +72 -0
  30. package/src/classes/test/Contract/uniswap-abi.ts +121 -0
  31. package/src/classes/utils/clean-block.ts +49 -0
  32. package/src/classes/utils/clean-transaction.ts +35 -0
  33. package/src/classes/utils/encode-decode-transaction.ts +126 -0
  34. package/src/classes/utils/fetchers.ts +27 -0
  35. package/{lib/cjs/classes/utils/hex-to-decimal.d.ts → src/classes/utils/hex-to-decimal.ts} +3 -1
  36. package/src/index.ts +27 -0
  37. package/src/providers/JsonRpcProvider.ts +94 -0
  38. package/src/providers/test/get-block.test.ts +63 -0
  39. package/src/providers/test/get-network.test.ts +34 -0
  40. package/src/providers/utils/chains-info.ts +1079 -0
  41. package/src/shared/tiny-big/helpers.test.ts +30 -0
  42. package/src/shared/tiny-big/helpers.ts +89 -0
  43. package/src/shared/tiny-big/tiny-big.test.ts +10 -0
  44. package/src/shared/tiny-big/tiny-big.ts +36 -0
  45. package/src/shared/validate-type.ts +20 -0
  46. package/src/types/.Contract.types.ts.un~ +0 -0
  47. package/src/types/Block.types.ts +50 -0
  48. package/src/types/Contract.types.ts +67 -0
  49. package/src/types/Network.types.ts +8 -0
  50. package/src/types/Transaction.types.ts +35 -0
  51. package/{lib/cjs/utils/ether-to-wei.d.ts → src/utils/ether-to-wei.ts} +10 -2
  52. package/src/utils/index.ts +6 -0
  53. package/src/utils/is-address.ts +16 -0
  54. package/src/utils/tests/ether-to-wei.test.ts +65 -0
  55. package/src/utils/tests/is-address.test.ts +52 -0
  56. package/src/utils/tests/to-checksum-address.test.ts +43 -0
  57. package/src/utils/tests/wei-to-ether.test.ts +72 -0
  58. package/src/utils/to-checksum-address.ts +47 -0
  59. package/{lib/cjs/utils/wei-to-ether.d.ts → src/utils/wei-to-ether.ts} +8 -1
  60. package/test/global-setup.js +8 -0
  61. package/test/global-teardown.js +5 -0
  62. package/test/jest.setup-after-env.js +1 -0
  63. package/test/server.js +24 -0
  64. package/tsconfig-cjs.json +8 -0
  65. package/tsconfig.json +25 -0
  66. package/typedoc/options-new-version.js +8 -0
  67. package/typedoc/options.js +9 -0
  68. package/types/just-omit.d.ts +1 -0
  69. package/website/.nojekyll +1 -0
  70. package/website/assets/highlight.css +71 -0
  71. package/website/assets/icons.css +1043 -0
  72. package/website/assets/icons.png +0 -0
  73. package/website/assets/icons@2x.png +0 -0
  74. package/website/assets/main.js +52 -0
  75. package/website/assets/search.js +1 -0
  76. package/website/assets/style.css +1413 -0
  77. package/website/assets/widgets.png +0 -0
  78. package/website/assets/widgets@2x.png +0 -0
  79. package/website/classes/Contract.html +13 -0
  80. package/website/classes/JsonRpcProvider.html +8 -0
  81. package/website/classes/TinyBig.html +161 -0
  82. package/website/index.html +207 -0
  83. package/website/interfaces/Block.html +1 -0
  84. package/website/interfaces/JSONABIArgument.html +1 -0
  85. package/website/interfaces/Network.html +3 -0
  86. package/website/interfaces/Transaction.html +1 -0
  87. package/website/modules.html +32 -0
  88. package/website/versions/0.1.2/assets/highlight.css +57 -0
  89. package/website/versions/0.1.2/assets/icons.css +1043 -0
  90. package/website/versions/0.1.2/assets/icons.png +0 -0
  91. package/website/versions/0.1.2/assets/icons@2x.png +0 -0
  92. package/website/versions/0.1.2/assets/main.js +52 -0
  93. package/website/versions/0.1.2/assets/search.js +1 -0
  94. package/website/versions/0.1.2/assets/style.css +1341 -0
  95. package/website/versions/0.1.2/assets/widgets.png +0 -0
  96. package/website/versions/0.1.2/assets/widgets@2x.png +0 -0
  97. package/website/versions/0.1.2/classes/TinyBig.html +4 -0
  98. package/website/versions/0.1.2/index.html +20 -0
  99. package/website/versions/0.1.2/modules.html +23 -0
  100. package/website/versions/0.1.3/assets/highlight.css +64 -0
  101. package/website/versions/0.1.3/assets/icons.css +1043 -0
  102. package/website/versions/0.1.3/assets/icons.png +0 -0
  103. package/website/versions/0.1.3/assets/icons@2x.png +0 -0
  104. package/website/versions/0.1.3/assets/main.js +52 -0
  105. package/website/versions/0.1.3/assets/search.js +1 -0
  106. package/website/versions/0.1.3/assets/style.css +1341 -0
  107. package/website/versions/0.1.3/assets/widgets.png +0 -0
  108. package/website/versions/0.1.3/assets/widgets@2x.png +0 -0
  109. package/website/versions/0.1.3/classes/TinyBig.html +4 -0
  110. package/website/versions/0.1.3/index.html +53 -0
  111. package/website/versions/0.1.3/modules.html +23 -0
  112. package/website/versions/0.1.4/assets/highlight.css +64 -0
  113. package/website/versions/0.1.4/assets/icons.css +1043 -0
  114. package/website/versions/0.1.4/assets/icons.png +0 -0
  115. package/website/versions/0.1.4/assets/icons@2x.png +0 -0
  116. package/website/versions/0.1.4/assets/main.js +52 -0
  117. package/website/versions/0.1.4/assets/search.js +1 -0
  118. package/website/versions/0.1.4/assets/style.css +1341 -0
  119. package/website/versions/0.1.4/assets/widgets.png +0 -0
  120. package/website/versions/0.1.4/assets/widgets@2x.png +0 -0
  121. package/website/versions/0.1.4/classes/EssentialEth.html +1 -0
  122. package/website/versions/0.1.4/classes/TinyBig.html +4 -0
  123. package/website/versions/0.1.4/index.html +58 -0
  124. package/website/versions/0.1.4/modules.html +23 -0
  125. package/website/versions/0.2.0/assets/highlight.css +64 -0
  126. package/website/versions/0.2.0/assets/icons.css +1043 -0
  127. package/website/versions/0.2.0/assets/icons.png +0 -0
  128. package/website/versions/0.2.0/assets/icons@2x.png +0 -0
  129. package/website/versions/0.2.0/assets/main.js +52 -0
  130. package/website/versions/0.2.0/assets/search.js +1 -0
  131. package/website/versions/0.2.0/assets/style.css +1341 -0
  132. package/website/versions/0.2.0/assets/widgets.png +0 -0
  133. package/website/versions/0.2.0/assets/widgets@2x.png +0 -0
  134. package/website/versions/0.2.0/classes/EssentialEth.html +5 -0
  135. package/website/versions/0.2.0/classes/TinyBig.html +146 -0
  136. package/website/versions/0.2.0/index.html +89 -0
  137. package/website/versions/0.2.0/modules.html +25 -0
  138. package/website/versions/0.2.1/assets/highlight.css +64 -0
  139. package/website/versions/0.2.1/assets/icons.css +1043 -0
  140. package/website/versions/0.2.1/assets/icons.png +0 -0
  141. package/website/versions/0.2.1/assets/icons@2x.png +0 -0
  142. package/website/versions/0.2.1/assets/main.js +52 -0
  143. package/website/versions/0.2.1/assets/search.js +1 -0
  144. package/website/versions/0.2.1/assets/style.css +1341 -0
  145. package/website/versions/0.2.1/assets/widgets.png +0 -0
  146. package/website/versions/0.2.1/assets/widgets@2x.png +0 -0
  147. package/website/versions/0.2.1/classes/EssentialEth.html +5 -0
  148. package/website/versions/0.2.1/classes/TinyBig.html +146 -0
  149. package/website/versions/0.2.1/index.html +96 -0
  150. package/website/versions/0.2.1/modules.html +29 -0
  151. package/website/versions/0.2.2/assets/highlight.css +64 -0
  152. package/website/versions/0.2.2/assets/icons.css +1043 -0
  153. package/website/versions/0.2.2/assets/icons.png +0 -0
  154. package/website/versions/0.2.2/assets/icons@2x.png +0 -0
  155. package/website/versions/0.2.2/assets/main.js +52 -0
  156. package/website/versions/0.2.2/assets/search.js +1 -0
  157. package/website/versions/0.2.2/assets/style.css +1341 -0
  158. package/website/versions/0.2.2/assets/widgets.png +0 -0
  159. package/website/versions/0.2.2/assets/widgets@2x.png +0 -0
  160. package/website/versions/0.2.2/classes/EssentialEth.html +5 -0
  161. package/website/versions/0.2.2/classes/TinyBig.html +146 -0
  162. package/website/versions/0.2.2/index.html +96 -0
  163. package/website/versions/0.2.2/modules.html +29 -0
  164. package/website/versions/0.3.0/.nojekyll +1 -0
  165. package/website/versions/0.3.0/assets/highlight.css +71 -0
  166. package/website/versions/0.3.0/assets/icons.css +1043 -0
  167. package/website/versions/0.3.0/assets/icons.png +0 -0
  168. package/website/versions/0.3.0/assets/icons@2x.png +0 -0
  169. package/website/versions/0.3.0/assets/main.js +52 -0
  170. package/website/versions/0.3.0/assets/search.js +1 -0
  171. package/website/versions/0.3.0/assets/style.css +1384 -0
  172. package/website/versions/0.3.0/assets/widgets.png +0 -0
  173. package/website/versions/0.3.0/assets/widgets@2x.png +0 -0
  174. package/website/versions/0.3.0/classes/Contract.html +15 -0
  175. package/website/versions/0.3.0/classes/TinyBig.html +156 -0
  176. package/website/versions/0.3.0/index.html +123 -0
  177. package/website/versions/0.3.0/modules.html +32 -0
  178. package/website/versions/0.3.1/.nojekyll +1 -0
  179. package/website/versions/0.3.1/assets/highlight.css +71 -0
  180. package/website/versions/0.3.1/assets/icons.css +1043 -0
  181. package/website/versions/0.3.1/assets/icons.png +0 -0
  182. package/website/versions/0.3.1/assets/icons@2x.png +0 -0
  183. package/website/versions/0.3.1/assets/main.js +52 -0
  184. package/website/versions/0.3.1/assets/search.js +1 -0
  185. package/website/versions/0.3.1/assets/style.css +1384 -0
  186. package/website/versions/0.3.1/assets/widgets.png +0 -0
  187. package/website/versions/0.3.1/assets/widgets@2x.png +0 -0
  188. package/website/versions/0.3.1/classes/Contract.html +15 -0
  189. package/website/versions/0.3.1/classes/TinyBig.html +156 -0
  190. package/website/versions/0.3.1/index.html +123 -0
  191. package/website/versions/0.3.1/modules.html +32 -0
  192. package/website/versions/0.3.2/.nojekyll +1 -0
  193. package/website/versions/0.3.2/assets/highlight.css +71 -0
  194. package/website/versions/0.3.2/assets/icons.css +1043 -0
  195. package/website/versions/0.3.2/assets/icons.png +0 -0
  196. package/website/versions/0.3.2/assets/icons@2x.png +0 -0
  197. package/website/versions/0.3.2/assets/main.js +52 -0
  198. package/website/versions/0.3.2/assets/search.js +1 -0
  199. package/website/versions/0.3.2/assets/style.css +1384 -0
  200. package/website/versions/0.3.2/assets/widgets.png +0 -0
  201. package/website/versions/0.3.2/assets/widgets@2x.png +0 -0
  202. package/website/versions/0.3.2/classes/Contract.html +15 -0
  203. package/website/versions/0.3.2/classes/JsonRpcProvider.html +5 -0
  204. package/website/versions/0.3.2/classes/TinyBig.html +156 -0
  205. package/website/versions/0.3.2/index.html +123 -0
  206. package/website/versions/0.3.2/modules.html +32 -0
  207. package/website/versions/0.3.3/.nojekyll +1 -0
  208. package/website/versions/0.3.3/assets/highlight.css +71 -0
  209. package/website/versions/0.3.3/assets/icons.css +1043 -0
  210. package/website/versions/0.3.3/assets/icons.png +0 -0
  211. package/website/versions/0.3.3/assets/icons@2x.png +0 -0
  212. package/website/versions/0.3.3/assets/main.js +52 -0
  213. package/website/versions/0.3.3/assets/search.js +1 -0
  214. package/website/versions/0.3.3/assets/style.css +1384 -0
  215. package/website/versions/0.3.3/assets/widgets.png +0 -0
  216. package/website/versions/0.3.3/assets/widgets@2x.png +0 -0
  217. package/website/versions/0.3.3/classes/Contract.html +15 -0
  218. package/website/versions/0.3.3/classes/JsonRpcProvider.html +5 -0
  219. package/website/versions/0.3.3/classes/TinyBig.html +156 -0
  220. package/website/versions/0.3.3/index.html +123 -0
  221. package/website/versions/0.3.3/interfaces/Block.html +1 -0
  222. package/website/versions/0.3.3/interfaces/Transaction.html +1 -0
  223. package/website/versions/0.3.3/modules.html +32 -0
  224. package/website/versions/0.4.0/.nojekyll +1 -0
  225. package/website/versions/0.4.0/assets/highlight.css +71 -0
  226. package/website/versions/0.4.0/assets/icons.css +1043 -0
  227. package/website/versions/0.4.0/assets/icons.png +0 -0
  228. package/website/versions/0.4.0/assets/icons@2x.png +0 -0
  229. package/website/versions/0.4.0/assets/main.js +52 -0
  230. package/website/versions/0.4.0/assets/search.js +1 -0
  231. package/website/versions/0.4.0/assets/style.css +1384 -0
  232. package/website/versions/0.4.0/assets/widgets.png +0 -0
  233. package/website/versions/0.4.0/assets/widgets@2x.png +0 -0
  234. package/website/versions/0.4.0/classes/Contract.html +15 -0
  235. package/website/versions/0.4.0/classes/JsonRpcProvider.html +6 -0
  236. package/website/versions/0.4.0/classes/TinyBig.html +156 -0
  237. package/website/versions/0.4.0/index.html +148 -0
  238. package/website/versions/0.4.0/interfaces/Block.html +1 -0
  239. package/website/versions/0.4.0/interfaces/Transaction.html +1 -0
  240. package/website/versions/0.4.0/modules.html +32 -0
  241. package/website/versions/0.4.1/.nojekyll +1 -0
  242. package/website/versions/0.4.1/assets/highlight.css +71 -0
  243. package/website/versions/0.4.1/assets/icons.css +1043 -0
  244. package/website/versions/0.4.1/assets/icons.png +0 -0
  245. package/website/versions/0.4.1/assets/icons@2x.png +0 -0
  246. package/website/versions/0.4.1/assets/main.js +52 -0
  247. package/website/versions/0.4.1/assets/search.js +1 -0
  248. package/website/versions/0.4.1/assets/style.css +1384 -0
  249. package/website/versions/0.4.1/assets/widgets.png +0 -0
  250. package/website/versions/0.4.1/assets/widgets@2x.png +0 -0
  251. package/website/versions/0.4.1/classes/Contract.html +15 -0
  252. package/website/versions/0.4.1/classes/JsonRpcProvider.html +6 -0
  253. package/website/versions/0.4.1/classes/TinyBig.html +156 -0
  254. package/website/versions/0.4.1/index.html +148 -0
  255. package/website/versions/0.4.1/interfaces/Block.html +1 -0
  256. package/website/versions/0.4.1/interfaces/Transaction.html +1 -0
  257. package/website/versions/0.4.1/modules.html +32 -0
  258. package/website/versions/0.4.2/.nojekyll +1 -0
  259. package/website/versions/0.4.2/assets/highlight.css +71 -0
  260. package/website/versions/0.4.2/assets/icons.css +1043 -0
  261. package/website/versions/0.4.2/assets/icons.png +0 -0
  262. package/website/versions/0.4.2/assets/icons@2x.png +0 -0
  263. package/website/versions/0.4.2/assets/main.js +52 -0
  264. package/website/versions/0.4.2/assets/search.js +1 -0
  265. package/website/versions/0.4.2/assets/style.css +1384 -0
  266. package/website/versions/0.4.2/assets/widgets.png +0 -0
  267. package/website/versions/0.4.2/assets/widgets@2x.png +0 -0
  268. package/website/versions/0.4.2/classes/Contract.html +15 -0
  269. package/website/versions/0.4.2/classes/JsonRpcProvider.html +8 -0
  270. package/website/versions/0.4.2/classes/TinyBig.html +156 -0
  271. package/website/versions/0.4.2/index.html +199 -0
  272. package/website/versions/0.4.2/interfaces/Block.html +1 -0
  273. package/website/versions/0.4.2/interfaces/Transaction.html +1 -0
  274. package/website/versions/0.4.2/modules.html +34 -0
  275. package/website/versions/0.4.3/.nojekyll +1 -0
  276. package/website/versions/0.4.3/assets/highlight.css +71 -0
  277. package/website/versions/0.4.3/assets/icons.css +1043 -0
  278. package/website/versions/0.4.3/assets/icons.png +0 -0
  279. package/website/versions/0.4.3/assets/icons@2x.png +0 -0
  280. package/website/versions/0.4.3/assets/main.js +52 -0
  281. package/website/versions/0.4.3/assets/search.js +1 -0
  282. package/website/versions/0.4.3/assets/style.css +1384 -0
  283. package/website/versions/0.4.3/assets/widgets.png +0 -0
  284. package/website/versions/0.4.3/assets/widgets@2x.png +0 -0
  285. package/website/versions/0.4.3/classes/Contract.html +15 -0
  286. package/website/versions/0.4.3/classes/JsonRpcProvider.html +8 -0
  287. package/website/versions/0.4.3/classes/TinyBig.html +159 -0
  288. package/website/versions/0.4.3/index.html +199 -0
  289. package/website/versions/0.4.3/interfaces/Block.html +1 -0
  290. package/website/versions/0.4.3/interfaces/Transaction.html +1 -0
  291. package/website/versions/0.4.3/modules.html +34 -0
  292. package/website/versions/0.4.6/.nojekyll +1 -0
  293. package/website/versions/0.4.6/assets/highlight.css +71 -0
  294. package/website/versions/0.4.6/assets/icons.css +1043 -0
  295. package/website/versions/0.4.6/assets/icons.png +0 -0
  296. package/website/versions/0.4.6/assets/icons@2x.png +0 -0
  297. package/website/versions/0.4.6/assets/main.js +52 -0
  298. package/website/versions/0.4.6/assets/search.js +1 -0
  299. package/website/versions/0.4.6/assets/style.css +1413 -0
  300. package/website/versions/0.4.6/assets/widgets.png +0 -0
  301. package/website/versions/0.4.6/assets/widgets@2x.png +0 -0
  302. package/website/versions/0.4.6/classes/Contract.html +15 -0
  303. package/website/versions/0.4.6/classes/JsonRpcProvider.html +8 -0
  304. package/website/versions/0.4.6/classes/TinyBig.html +159 -0
  305. package/website/versions/0.4.6/index.html +207 -0
  306. package/website/versions/0.4.6/interfaces/Block.html +1 -0
  307. package/website/versions/0.4.6/interfaces/Transaction.html +1 -0
  308. package/website/versions/0.4.6/modules.html +34 -0
  309. package/website/versions/0.4.8/.nojekyll +1 -0
  310. package/website/versions/0.4.8/assets/highlight.css +71 -0
  311. package/website/versions/0.4.8/assets/icons.css +1043 -0
  312. package/website/versions/0.4.8/assets/icons.png +0 -0
  313. package/website/versions/0.4.8/assets/icons@2x.png +0 -0
  314. package/website/versions/0.4.8/assets/main.js +52 -0
  315. package/website/versions/0.4.8/assets/search.js +1 -0
  316. package/website/versions/0.4.8/assets/style.css +1413 -0
  317. package/website/versions/0.4.8/assets/widgets.png +0 -0
  318. package/website/versions/0.4.8/assets/widgets@2x.png +0 -0
  319. package/website/versions/0.4.8/classes/Contract.html +15 -0
  320. package/website/versions/0.4.8/classes/JsonRpcProvider.html +8 -0
  321. package/website/versions/0.4.8/classes/TinyBig.html +161 -0
  322. package/website/versions/0.4.8/index.html +207 -0
  323. package/website/versions/0.4.8/interfaces/Block.html +1 -0
  324. package/website/versions/0.4.8/interfaces/Transaction.html +1 -0
  325. package/website/versions/0.4.8/modules.html +34 -0
  326. package/website/versions/0.4.9-beta.0/.nojekyll +1 -0
  327. package/website/versions/0.4.9-beta.0/assets/highlight.css +71 -0
  328. package/website/versions/0.4.9-beta.0/assets/icons.css +1043 -0
  329. package/website/versions/0.4.9-beta.0/assets/icons.png +0 -0
  330. package/website/versions/0.4.9-beta.0/assets/icons@2x.png +0 -0
  331. package/website/versions/0.4.9-beta.0/assets/main.js +52 -0
  332. package/website/versions/0.4.9-beta.0/assets/search.js +1 -0
  333. package/website/versions/0.4.9-beta.0/assets/style.css +1413 -0
  334. package/website/versions/0.4.9-beta.0/assets/widgets.png +0 -0
  335. package/website/versions/0.4.9-beta.0/assets/widgets@2x.png +0 -0
  336. package/website/versions/0.4.9-beta.0/classes/Contract.html +13 -0
  337. package/website/versions/0.4.9-beta.0/classes/JsonRpcProvider.html +8 -0
  338. package/website/versions/0.4.9-beta.0/classes/TinyBig.html +161 -0
  339. package/website/versions/0.4.9-beta.0/index.html +207 -0
  340. package/website/versions/0.4.9-beta.0/interfaces/Block.html +1 -0
  341. package/website/versions/0.4.9-beta.0/interfaces/JSONABIArgument.html +1 -0
  342. package/website/versions/0.4.9-beta.0/interfaces/Network.html +3 -0
  343. package/website/versions/0.4.9-beta.0/interfaces/Transaction.html +1 -0
  344. package/website/versions/0.4.9-beta.0/modules.html +32 -0
  345. package/website/versions/versions/0.1.2/assets/highlight.css +57 -0
  346. package/website/versions/versions/0.1.2/assets/icons.css +1043 -0
  347. package/website/versions/versions/0.1.2/assets/icons.png +0 -0
  348. package/website/versions/versions/0.1.2/assets/icons@2x.png +0 -0
  349. package/website/versions/versions/0.1.2/assets/main.js +52 -0
  350. package/website/versions/versions/0.1.2/assets/search.js +1 -0
  351. package/website/versions/versions/0.1.2/assets/style.css +1341 -0
  352. package/website/versions/versions/0.1.2/assets/widgets.png +0 -0
  353. package/website/versions/versions/0.1.2/assets/widgets@2x.png +0 -0
  354. package/website/versions/versions/0.1.2/classes/TinyBig.html +4 -0
  355. package/website/versions/versions/0.1.2/index.html +20 -0
  356. package/website/versions/versions/0.1.2/modules.html +23 -0
  357. package/website/versions/versions/0.1.3/assets/highlight.css +64 -0
  358. package/website/versions/versions/0.1.3/assets/icons.css +1043 -0
  359. package/website/versions/versions/0.1.3/assets/icons.png +0 -0
  360. package/website/versions/versions/0.1.3/assets/icons@2x.png +0 -0
  361. package/website/versions/versions/0.1.3/assets/main.js +52 -0
  362. package/website/versions/versions/0.1.3/assets/search.js +1 -0
  363. package/website/versions/versions/0.1.3/assets/style.css +1341 -0
  364. package/website/versions/versions/0.1.3/assets/widgets.png +0 -0
  365. package/website/versions/versions/0.1.3/assets/widgets@2x.png +0 -0
  366. package/website/versions/versions/0.1.3/classes/TinyBig.html +4 -0
  367. package/website/versions/versions/0.1.3/index.html +53 -0
  368. package/website/versions/versions/0.1.3/modules.html +23 -0
  369. package/website/versions/versions/0.1.4/assets/highlight.css +64 -0
  370. package/website/versions/versions/0.1.4/assets/icons.css +1043 -0
  371. package/website/versions/versions/0.1.4/assets/icons.png +0 -0
  372. package/website/versions/versions/0.1.4/assets/icons@2x.png +0 -0
  373. package/website/versions/versions/0.1.4/assets/main.js +52 -0
  374. package/website/versions/versions/0.1.4/assets/search.js +1 -0
  375. package/website/versions/versions/0.1.4/assets/style.css +1341 -0
  376. package/website/versions/versions/0.1.4/assets/widgets.png +0 -0
  377. package/website/versions/versions/0.1.4/assets/widgets@2x.png +0 -0
  378. package/website/versions/versions/0.1.4/classes/TinyBig.html +4 -0
  379. package/website/versions/versions/0.1.4/index.html +58 -0
  380. package/website/versions/versions/0.1.4/modules.html +23 -0
  381. package/lib/cjs/classes/Contract.d.ts +0 -72
  382. package/lib/cjs/classes/Contract.js +0 -126
  383. package/lib/cjs/classes/test/Contract/crv-abi.d.ts +0 -2
  384. package/lib/cjs/classes/test/Contract/crv-abi.js +0 -488
  385. package/lib/cjs/classes/test/Contract/ens-abi.d.ts +0 -2
  386. package/lib/cjs/classes/test/Contract/ens-abi.js +0 -453
  387. package/lib/cjs/classes/test/Contract/fei-abi.d.ts +0 -2
  388. package/lib/cjs/classes/test/Contract/fei-abi.js +0 -526
  389. package/lib/cjs/classes/test/Contract/foo-abi.d.ts +0 -2
  390. package/lib/cjs/classes/test/Contract/foo-abi.js +0 -42
  391. package/lib/cjs/classes/test/Contract/uniswap-abi.d.ts +0 -2
  392. package/lib/cjs/classes/test/Contract/uniswap-abi.js +0 -121
  393. package/lib/cjs/classes/utils/clean-block.d.ts +0 -6
  394. package/lib/cjs/classes/utils/clean-block.js +0 -46
  395. package/lib/cjs/classes/utils/clean-transaction.d.ts +0 -5
  396. package/lib/cjs/classes/utils/clean-transaction.js +0 -38
  397. package/lib/cjs/classes/utils/encode-decode-transaction.d.ts +0 -3
  398. package/lib/cjs/classes/utils/encode-decode-transaction.js +0 -113
  399. package/lib/cjs/classes/utils/fetchers.d.ts +0 -9
  400. package/lib/cjs/classes/utils/fetchers.js +0 -33
  401. package/lib/cjs/classes/utils/hex-to-decimal.js +0 -11
  402. package/lib/cjs/index.d.ts +0 -12
  403. package/lib/cjs/index.js +0 -19
  404. package/lib/cjs/providers/JsonRpcProvider.d.ts +0 -22
  405. package/lib/cjs/providers/JsonRpcProvider.js +0 -69
  406. package/lib/cjs/providers/utils/chains-info.d.ts +0 -340
  407. package/lib/cjs/providers/utils/chains-info.js +0 -1021
  408. package/lib/cjs/shared/tiny-big/helpers.d.ts +0 -1
  409. package/lib/cjs/shared/tiny-big/helpers.js +0 -71
  410. package/lib/cjs/shared/tiny-big/tiny-big.d.ts +0 -19
  411. package/lib/cjs/shared/tiny-big/tiny-big.js +0 -41
  412. package/lib/cjs/shared/validate-type.d.ts +0 -3
  413. package/lib/cjs/shared/validate-type.js +0 -9
  414. package/lib/cjs/types/Block.types.d.ts +0 -47
  415. package/lib/cjs/types/Block.types.js +0 -2
  416. package/lib/cjs/types/Contract.types.d.ts +0 -24
  417. package/lib/cjs/types/Contract.types.js +0 -2
  418. package/lib/cjs/types/Network.types.d.ts +0 -8
  419. package/lib/cjs/types/Network.types.js +0 -2
  420. package/lib/cjs/types/Transaction.types.d.ts +0 -34
  421. package/lib/cjs/types/Transaction.types.js +0 -2
  422. package/lib/cjs/utils/ether-to-wei.js +0 -32
  423. package/lib/cjs/utils/is-address.d.ts +0 -5
  424. package/lib/cjs/utils/is-address.js +0 -20
  425. package/lib/cjs/utils/to-checksum-address.d.ts +0 -17
  426. package/lib/cjs/utils/to-checksum-address.js +0 -46
  427. package/lib/cjs/utils/wei-to-ether.js +0 -34
  428. package/lib/esm/classes/Contract.d.ts +0 -12
  429. package/lib/esm/classes/Contract.js +0 -63
  430. package/lib/esm/classes/test/Contract/crv-abi.d.ts +0 -2
  431. package/lib/esm/classes/test/Contract/crv-abi.js +0 -470
  432. package/lib/esm/classes/test/Contract/ens-abi.d.ts +0 -2
  433. package/lib/esm/classes/test/Contract/ens-abi.js +0 -435
  434. package/lib/esm/classes/test/Contract/fei-abi.d.ts +0 -2
  435. package/lib/esm/classes/test/Contract/fei-abi.js +0 -521
  436. package/lib/esm/classes/test/Contract/foo-abi.d.ts +0 -2
  437. package/lib/esm/classes/test/Contract/foo-abi.js +0 -33
  438. package/lib/esm/classes/test/Contract/uniswap-abi.d.ts +0 -2
  439. package/lib/esm/classes/test/Contract/uniswap-abi.js +0 -116
  440. package/lib/esm/classes/utils/clean-block.d.ts +0 -3
  441. package/lib/esm/classes/utils/clean-block.js +0 -35
  442. package/lib/esm/classes/utils/clean-transaction.d.ts +0 -2
  443. package/lib/esm/classes/utils/clean-transaction.js +0 -29
  444. package/lib/esm/classes/utils/encode-decode-transaction.d.ts +0 -3
  445. package/lib/esm/classes/utils/encode-decode-transaction.js +0 -98
  446. package/lib/esm/classes/utils/fetchers.d.ts +0 -9
  447. package/lib/esm/classes/utils/fetchers.js +0 -25
  448. package/lib/esm/classes/utils/hex-to-decimal.d.ts +0 -1
  449. package/lib/esm/classes/utils/hex-to-decimal.js +0 -3
  450. package/lib/esm/index.d.ts +0 -12
  451. package/lib/esm/index.js +0 -8
  452. package/lib/esm/providers/JsonRpcProvider.d.ts +0 -9
  453. package/lib/esm/providers/JsonRpcProvider.js +0 -49
  454. package/lib/esm/providers/utils/chains-info.d.ts +0 -340
  455. package/lib/esm/providers/utils/chains-info.js +0 -1017
  456. package/lib/esm/shared/tiny-big/helpers.d.ts +0 -1
  457. package/lib/esm/shared/tiny-big/helpers.js +0 -58
  458. package/lib/esm/shared/tiny-big/tiny-big.d.ts +0 -8
  459. package/lib/esm/shared/tiny-big/tiny-big.js +0 -22
  460. package/lib/esm/shared/validate-type.d.ts +0 -3
  461. package/lib/esm/shared/validate-type.js +0 -5
  462. package/lib/esm/types/Block.types.d.ts +0 -47
  463. package/lib/esm/types/Block.types.js +0 -1
  464. package/lib/esm/types/Contract.types.d.ts +0 -24
  465. package/lib/esm/types/Contract.types.js +0 -1
  466. package/lib/esm/types/Network.types.d.ts +0 -5
  467. package/lib/esm/types/Network.types.js +0 -1
  468. package/lib/esm/types/Transaction.types.d.ts +0 -34
  469. package/lib/esm/types/Transaction.types.js +0 -1
  470. package/lib/esm/utils/ether-to-wei.d.ts +0 -3
  471. package/lib/esm/utils/ether-to-wei.js +0 -7
  472. package/lib/esm/utils/is-address.d.ts +0 -1
  473. package/lib/esm/utils/is-address.js +0 -12
  474. package/lib/esm/utils/to-checksum-address.d.ts +0 -1
  475. package/lib/esm/utils/to-checksum-address.js +0 -25
  476. package/lib/esm/utils/wei-to-ether.d.ts +0 -3
  477. package/lib/esm/utils/wei-to-ether.js +0 -7
Binary file
Binary file
package/.env ADDED
@@ -0,0 +1 @@
1
+ RPC_ORIGIN=https://free-eth-node.com
package/.eslintignore ADDED
@@ -0,0 +1,4 @@
1
+ website
2
+ dist
3
+ lib
4
+ typedoc
package/.eslintrc.js ADDED
@@ -0,0 +1,34 @@
1
+ module.exports = {
2
+ ignorePatterns: ['scripts/calculate-bundle-size.js', 'test/*.js'],
3
+ env: {
4
+ browser: true,
5
+ es2021: true,
6
+ node: true,
7
+ },
8
+ extends: [
9
+ 'eslint:recommended',
10
+ 'plugin:@typescript-eslint/recommended',
11
+ 'plugin:jest/all',
12
+ ],
13
+ parser: '@typescript-eslint/parser',
14
+ parserOptions: {
15
+ ecmaVersion: 12,
16
+ sourceType: 'module',
17
+ },
18
+ plugins: ['@typescript-eslint', 'jest'],
19
+ rules: {
20
+ 'no-empty': 'warn',
21
+ 'no-console': 'warn',
22
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
23
+ 'jest/prefer-expect-assertions': 'off',
24
+ 'jest/require-to-throw-message': 'off',
25
+ 'jest/expect-expect': 'off',
26
+ 'jest/lowercase-name': 'off',
27
+ 'jest/no-disabled-tests': 'warn',
28
+ 'jest/no-commented-out-tests': 'warn',
29
+ 'jest/require-hook': 'warn',
30
+ 'jest/no-conditional-expect': 'error',
31
+ '@typescript-eslint/ban-ts-comment': 'warn',
32
+ '@typescript-eslint/consistent-type-definitions': ['error', 'interface'],
33
+ },
34
+ };
package/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ website/** linguist-generated
Binary file
@@ -0,0 +1,29 @@
1
+ # This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
2
+ # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
3
+
4
+ name: 🧪 npm test
5
+
6
+ on:
7
+ pull_request:
8
+ branches: [master]
9
+ # push:
10
+ # branches: [master]
11
+
12
+ jobs:
13
+ build:
14
+ runs-on: ubuntu-latest
15
+
16
+ strategy:
17
+ matrix:
18
+ node-version: ['17', '16', '14', '12']
19
+ # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
20
+
21
+ steps:
22
+ - uses: actions/checkout@v3
23
+ - name: Use Node.js ${{ matrix.node-version }}
24
+ uses: actions/setup-node@v3
25
+ with:
26
+ node-version: ${{ matrix.node-version }}
27
+ cache: 'npm'
28
+ - run: npm ci
29
+ - run: npm test
Binary file
@@ -0,0 +1,7 @@
1
+ website
2
+ lib
3
+ dist
4
+ coverage
5
+
6
+ # Autogenerated
7
+ src/providers/utils/chains-info.ts
package/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: node_js
2
+ node_js:
3
+ - '14'
4
+ - '12'
5
+ - '10'
package/jest.config.js ADDED
@@ -0,0 +1,9 @@
1
+ module.exports = {
2
+ roots: ['<rootDir>/test', '<rootDir>/src'],
3
+ testMatch: ['**/*.test.*'],
4
+ transform: {
5
+ '^.+\\.(ts|tsx)$': 'ts-jest',
6
+ },
7
+ setupFiles: ['dotenv/config'],
8
+ setupFilesAfterEnv: ['./test/jest.setup-after-env.js'],
9
+ };
package/package.json CHANGED
@@ -1,14 +1,29 @@
1
1
  {
2
2
  "name": "essential-eth",
3
3
  "description": "Ultralight JS library for Ethereum utilities",
4
- "version": "0.4.8",
4
+ "version": "0.4.9-beta.0",
5
5
  "license": "MIT",
6
6
  "sideEffects": false,
7
- "main": "./lib/cjs/index.js",
8
- "module": "./lib/esm/index.js",
9
- "files": [
10
- "lib/"
11
- ],
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/esm/index.js",
10
+ "require": "./dist/cjs/index.js"
11
+ },
12
+ "./utils": {
13
+ "import": "./dist/esm/utils/index.js",
14
+ "require": "./dist/cjs/utils/index.js"
15
+ }
16
+ },
17
+ "typesVersions": {
18
+ "*": {
19
+ "*": [
20
+ "./dist/cjs/index.d.ts"
21
+ ],
22
+ "utils": [
23
+ "./dist/cjs/utils/index.d.ts"
24
+ ]
25
+ }
26
+ },
12
27
  "bugs": {
13
28
  "url": "https://github.com/dawsbot/essential-eth/issues"
14
29
  },
@@ -16,12 +31,11 @@
16
31
  "author": "@dawsbot",
17
32
  "scripts": {
18
33
  "test": "npm-run-all --parallel jest compile lint",
19
- "test:all-node-versions": "npx trevor",
20
34
  "lint": "eslint .",
21
35
  "compile": "npm-run-all --parallel tsc:esm tsc:cjs",
22
36
  "tsc:esm": "tsc -p tsconfig.json",
23
37
  "tsc:cjs": "tsc -p tsconfig-cjs.json",
24
- "build": "rm -rf lib && npm run compile",
38
+ "build": "rm -rf dist && npm run compile",
25
39
  "prepublishOnly": "npm run build && npm run build:website && npm run build:website:new-version",
26
40
  "jest": "jest",
27
41
  "build:chains-info": "npx ts-node scripts/fetch-chains-info.ts # used in getNetwork()",
@@ -37,29 +51,29 @@
37
51
  "@types/jest": "^27.4.1",
38
52
  "@types/jest-dev-server": "^5.0.0",
39
53
  "@types/node": "^16.10.1",
40
- "@types/prettier": "^2.4.0",
54
+ "@types/prettier": "^2.4.4",
41
55
  "@types/supertest": "^2.0.11",
42
- "@typescript-eslint/eslint-plugin": "^5.13.0",
43
- "@typescript-eslint/parser": "^5.13.0",
56
+ "@typescript-eslint/eslint-plugin": "^5.17.0",
57
+ "@typescript-eslint/parser": "^5.17.0",
44
58
  "body-parser": "^1.19.0",
45
59
  "dotenv": "^16.0.0",
46
- "eslint": "^8.10.0",
47
- "eslint-plugin-jest": "^26.1.1",
48
- "ethers": "^5.5.4",
60
+ "eslint": "^8.12.0",
61
+ "eslint-plugin-jest": "^26.1.3",
62
+ "ethers": "^5.6.2",
49
63
  "express": "^4.17.1",
50
64
  "husky": "^4.3.0",
51
65
  "jest": "^27.5.1",
52
66
  "jest-dev-server": "^6.0.3",
53
67
  "just-omit": "^1.2.0",
54
- "lint-staged": "^12.3.4",
68
+ "lint-staged": "^12.3.7",
55
69
  "npm-run-all": "^4.1.5",
56
- "prettier": "^2.5.1",
70
+ "prettier": "^2.6.1",
57
71
  "prettier-plugin-organize-imports": "^2.3.4",
58
72
  "supertest": "^6.1.6",
59
- "ts-jest": "^27.1.3",
73
+ "ts-jest": "^27.1.4",
60
74
  "ts-node": "^10.2.1",
61
75
  "typedoc": "^0.22.12",
62
- "typescript": "^4.6.2",
76
+ "typescript": "^4.6.3",
63
77
  "web3": "^1.7.1"
64
78
  },
65
79
  "dependencies": {
package/readme.md CHANGED
@@ -12,7 +12,6 @@
12
12
 
13
13
  ---
14
14
 
15
-
16
15
  <br>
17
16
 
18
17
  ## Why you should replace Ethers.js and web3
@@ -35,7 +34,7 @@
35
34
  - 🧪 Tested to match both `web3` and `ethers`
36
35
  - 🌲 Tree-shaking and no side-effects
37
36
  - 🙌 Supports multiple JS versions (CommonJS and ESM)
38
- - ✅ Node 16, 14, 12, & 10
37
+ - ✅ Node 17, 16, 14, & 12
39
38
  - ✅ Web
40
39
 
41
40
  <br/>
@@ -0,0 +1,4 @@
1
+ # Necessary to not override website/versions
2
+ mv website/versions .versions
3
+ typedoc --options typedoc/options.js
4
+ mv .versions website/versions
@@ -0,0 +1,4 @@
1
+ npm version minor -m "📦 %s"
2
+ npm run build:website
3
+ npm run build:website:new-version
4
+ git push --follow-tags
@@ -0,0 +1,4 @@
1
+ npm version patch -m "📦 %s"
2
+ npm run build:website
3
+ npm run build:website:new-version
4
+ git push --follow-tags
@@ -0,0 +1,70 @@
1
+ import fs from 'fs';
2
+ import unfetch from 'isomorphic-unfetch';
3
+ import path from 'path';
4
+
5
+ const outputFilePath = path.join(
6
+ __dirname,
7
+ '..',
8
+ 'src',
9
+ 'providers',
10
+ 'utils',
11
+ 'chains-info.ts',
12
+ );
13
+ (async () => {
14
+ const toReturn: any = {};
15
+ await unfetch('https://chainid.network/chains.json')
16
+ .then((res) => res.json())
17
+ .then((data: ChainsData) => {
18
+ data.forEach((networkInfo) => {
19
+ const writeableInfo = [networkInfo.shortName];
20
+
21
+ const registry = networkInfo?.ens?.registry;
22
+ if (registry) {
23
+ writeableInfo.push(registry);
24
+ }
25
+ toReturn[networkInfo.chainId] = writeableInfo;
26
+ });
27
+ });
28
+ fs.writeFileSync(
29
+ outputFilePath,
30
+ `// autogenerated in "fetch-chains-info.ts"\n// Do not edit directly\nexport default ${JSON.stringify(
31
+ toReturn,
32
+ null,
33
+ 2,
34
+ )}`,
35
+ );
36
+ })();
37
+
38
+ type ChainsData = {
39
+ name: 'Ethereum Mainnet';
40
+ chain: 'ETH';
41
+ network: string; // 'mainnet';
42
+ icon: 'ethereum';
43
+ rpc: [
44
+ 'https://mainnet.infura.io/v3/${INFURA_API_KEY}',
45
+ 'wss://mainnet.infura.io/ws/v3/${INFURA_API_KEY}',
46
+ 'https://api.mycryptoapi.com/eth',
47
+ 'https://cloudflare-eth.com',
48
+ ];
49
+ faucets: [];
50
+ nativeCurrency: {
51
+ name: 'Ether';
52
+ symbol: 'ETH';
53
+ decimals: 18;
54
+ };
55
+ infoURL: 'https://ethereum.org';
56
+ shortName: string; //'eth';
57
+ chainId: 1;
58
+ networkId: 1;
59
+ slip44: 60;
60
+ ens: {
61
+ registry: string; //'0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e';
62
+ };
63
+ explorers: [
64
+ {
65
+ name: 'etherscan';
66
+ url: 'https://etherscan.io';
67
+ standard: 'EIP3091';
68
+ },
69
+ ];
70
+ }[];
@@ -0,0 +1,5 @@
1
+ npx npm-check-updates -u "/.*lint.*$/"
2
+ npx npm-check-updates -u "/.*jest.*$/"
3
+ npx npm-check-updates -u ethers typescript web3 prettier
4
+ npm install
5
+
@@ -0,0 +1,161 @@
1
+ import { JsonRpcProvider } from '../providers/JsonRpcProvider';
2
+ import { ContractInterface } from '../types/Contract.types';
3
+ import {
4
+ decodeRPCResponse,
5
+ encodeData,
6
+ } from './utils/encode-decode-transaction';
7
+ import { buildRPCPostBody, post } from './utils/fetchers';
8
+ function estimateGas(txnData: string) {
9
+ // https://ethereum.stackexchange.com/questions/1570/what-does-intrinsic-gas-too-low-mean/1694
10
+ txnData.split('').reduce((previousValue, currentValue) => {
11
+ // 0 characters are 4 gwei, all others are 48 gwei
12
+ const characterCost = currentValue === '0' ? 4 : 68;
13
+ return previousValue + characterCost;
14
+ }, 0);
15
+ }
16
+ interface Options {
17
+ gasLimit?: number;
18
+ }
19
+ export class BaseContract {
20
+ /**
21
+ * The URL to your Eth node. Consider POKT or Infura
22
+ */
23
+ private readonly _address: string;
24
+ private readonly _provider: JsonRpcProvider;
25
+
26
+ /**
27
+ * @param addressOrName - The ethereum address of the smart-contract
28
+ * @param contractInterface - The JSON ABI of the smart-contract (like http://api.etherscan.io/api?module=contract&action=getabi&address=0x090d4613473dee047c3f2706764f49e0821d256e&format=raw)
29
+ * @param signerOrProvider - An instantiated essential-eth provider
30
+ */
31
+ constructor(
32
+ addressOrName: string,
33
+ contractInterface: ContractInterface,
34
+ signerOrProvider: JsonRpcProvider,
35
+ ) {
36
+ this._address = addressOrName;
37
+ this._provider = signerOrProvider;
38
+ contractInterface
39
+ .filter((jsonABIArgument) => jsonABIArgument.type === 'function')
40
+ .forEach((jsonABIArgument) => {
41
+ if (
42
+ 'name' in jsonABIArgument &&
43
+ typeof jsonABIArgument.name === 'string'
44
+ ) {
45
+ defineReadOnly(
46
+ this,
47
+ jsonABIArgument.name,
48
+ async (..._args: any[]) => {
49
+ let functionArguments = _args;
50
+ let options: Options = {};
51
+ // remove options from encoding
52
+ const lastArg = _args[_args.length - 1];
53
+ if (!Array.isArray(lastArg) && typeof lastArg === 'object') {
54
+ options = lastArg;
55
+ functionArguments = _args.slice(0, _args.length - 1);
56
+ }
57
+
58
+ const data = encodeData(jsonABIArgument, functionArguments);
59
+
60
+ const decimalGas =
61
+ typeof options.gasLimit === 'number'
62
+ ? options.gasLimit /* user passed in "gasLimit" directly */
63
+ : typeof jsonABIArgument?.gas ===
64
+ 'number' /* ABI specified "gas". */
65
+ ? estimateGas(data)
66
+ : null;
67
+ const req = async (): Promise<string> => {
68
+ return await post(
69
+ this._provider._rpcUrl[this._provider._rpcUrlCounter],
70
+ buildRPCPostBody('eth_call', [
71
+ {
72
+ to: this._address.toLowerCase(),
73
+ data: data,
74
+ // sometimes gas is defined in the ABI
75
+ ...(decimalGas
76
+ ? { gas: `0x${decimalGas.toString(16)}` }
77
+ : {}),
78
+ },
79
+ 'latest',
80
+ ]),
81
+ ).catch((e) => {
82
+ if (e.code === 'ENOTFOUND') {
83
+ this._provider._rpcUrlCounter++;
84
+ return req();
85
+ }
86
+ });
87
+ };
88
+ const nodeResponse = await req();
89
+ return decodeRPCResponse(jsonABIArgument, nodeResponse);
90
+ },
91
+ );
92
+ }
93
+ });
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Applies the unique contract's methods to the instantiated Contract in the constructor based-upon the provided ABI
99
+ */
100
+ export function defineReadOnly<T>(object: T, name: string, value: any): void {
101
+ Object.defineProperty(object, name, {
102
+ enumerable: true,
103
+ value: value,
104
+ writable: false,
105
+ });
106
+ }
107
+
108
+ /**
109
+ * Only accepts ABIS in JSON format. This allows for stronger typing and assurances of data-types
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * import { Contract, JsonRpcProvider } from 'essential-eth';
114
+ * // UNI airdrop contract
115
+ * const contractAddress = '0x090D4613473dEE047c3f2706764f49E0821D256e';
116
+ * const provider = new JsonRpcProvider();
117
+ *
118
+ * const JSONABI = [
119
+ * {
120
+ * inputs: [
121
+ * {
122
+ * internalType: 'uint256',
123
+ * name: 'index',
124
+ * type: 'uint256',
125
+ * },
126
+ * ],
127
+ * name: 'isClaimed',
128
+ * outputs: [
129
+ * {
130
+ * internalType: 'bool',
131
+ * name: '',
132
+ * type: 'bool',
133
+ * },
134
+ * ],
135
+ * stateMutability: 'view',
136
+ * type: 'function',
137
+ * },
138
+ * ]
139
+ *
140
+ * const contract = new Contract(
141
+ * contractAddress,
142
+ * JSONABI,
143
+ * provider,
144
+ * );
145
+ *
146
+ * (async () => {
147
+ * // prints boolean as to whether index 0 has claimed airdrop or not
148
+ * console.log(await contract.isClaimed(0));
149
+ * })()
150
+ *
151
+ *
152
+ * ```
153
+ */
154
+ export class Contract extends BaseContract {
155
+ // The dynamic function names within a given smart-contract
156
+ /**
157
+ * The dynamic contract calls on any given contract. Like "isClaimed", "merkleRoot", etc.
158
+ */
159
+ readonly [key: string]: any;
160
+ // readonly [key: string]: ContractFunction | any;
161
+ }