quantumcoin 7.0.12 → 7.0.14

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 (214) hide show
  1. package/README-SDK.md +828 -823
  2. package/README.md +4 -0
  3. package/config.d.ts +50 -50
  4. package/examples/example-generated-sdk-js/README.md +65 -0
  5. package/examples/example-generated-sdk-js/examples/_test-wallet.js +17 -0
  6. package/examples/example-generated-sdk-js/examples/deploy.js +41 -0
  7. package/examples/example-generated-sdk-js/examples/events.js +36 -0
  8. package/examples/example-generated-sdk-js/examples/read-operations.js +46 -0
  9. package/examples/example-generated-sdk-js/examples/write-operations.js +44 -0
  10. package/examples/example-generated-sdk-js/index.d.ts +1 -0
  11. package/examples/example-generated-sdk-js/index.js +15 -0
  12. package/examples/example-generated-sdk-js/package-lock.json +59 -0
  13. package/examples/example-generated-sdk-js/package.json +22 -0
  14. package/examples/example-generated-sdk-js/src/SimpleERC20.d.ts +19 -0
  15. package/examples/example-generated-sdk-js/src/SimpleERC20.js +353 -0
  16. package/examples/example-generated-sdk-js/src/SimpleERC20__factory.d.ts +10 -0
  17. package/examples/example-generated-sdk-js/src/SimpleERC20__factory.js +29 -0
  18. package/examples/example-generated-sdk-js/src/index.d.ts +4 -0
  19. package/examples/example-generated-sdk-js/src/index.js +5 -0
  20. package/examples/example-generated-sdk-js/src/quantumcoin-shims.d.ts +23 -0
  21. package/examples/example-generated-sdk-js/src/types.d.ts +3 -0
  22. package/examples/example-generated-sdk-js/src/types.js +3 -0
  23. package/examples/example-generated-sdk-js/test/e2e/SimpleERC20.e2e.test.js +78 -0
  24. package/examples/example-generated-sdk-ts/README.md +65 -0
  25. package/examples/example-generated-sdk-ts/examples/_test-wallet.js +17 -0
  26. package/examples/example-generated-sdk-ts/examples/deploy.js +41 -0
  27. package/examples/example-generated-sdk-ts/examples/events.js +36 -0
  28. package/examples/example-generated-sdk-ts/examples/read-operations.js +46 -0
  29. package/examples/example-generated-sdk-ts/examples/write-operations.js +44 -0
  30. package/examples/example-generated-sdk-ts/index.d.ts +1 -0
  31. package/examples/example-generated-sdk-ts/index.js +15 -0
  32. package/examples/example-generated-sdk-ts/package-lock.json +59 -0
  33. package/examples/example-generated-sdk-ts/package.json +23 -0
  34. package/examples/example-generated-sdk-ts/src/SimpleERC20.ts +334 -0
  35. package/examples/example-generated-sdk-ts/src/SimpleERC20__factory.ts +28 -0
  36. package/examples/example-generated-sdk-ts/src/index.ts +4 -0
  37. package/examples/example-generated-sdk-ts/src/quantumcoin-shims.d.ts +23 -0
  38. package/examples/example-generated-sdk-ts/src/types.ts +4 -0
  39. package/examples/example-generated-sdk-ts/test/e2e/SimpleERC20.e2e.test.js +78 -0
  40. package/examples/example-generated-sdk-ts/tsconfig.json +14 -0
  41. package/examples/node_modules/.package-lock.json +5 -5
  42. package/examples/node_modules/quantum-coin-js-sdk/README.md +5 -5
  43. package/examples/node_modules/quantum-coin-js-sdk/example/package-lock.json +1 -1
  44. package/examples/node_modules/quantum-coin-js-sdk/index.d.ts +1031 -1031
  45. package/examples/node_modules/quantum-coin-js-sdk/index.js +15 -15
  46. package/examples/node_modules/quantum-coin-js-sdk/package.json +1 -1
  47. package/examples/node_modules/quantum-coin-js-sdk/wasmBase64.js +2 -2
  48. package/examples/package-lock.json +6 -6
  49. package/examples/package.json +1 -1
  50. package/examples/sdk-generator-erc20.inline.json +251 -251
  51. package/generate-sdk.js +1845 -1822
  52. package/package.json +2 -2
  53. package/src/abi/fragments.d.ts +42 -42
  54. package/src/abi/index.d.ts +13 -13
  55. package/src/abi/interface.js +11 -2
  56. package/src/abi/js-abi-coder.js +61 -2
  57. package/src/contract/contract.js +53 -5
  58. package/src/contract/index.d.ts +9 -9
  59. package/src/errors/index.d.ts +92 -92
  60. package/src/generator/index.d.ts +11 -4
  61. package/src/generator/index.js +185 -18
  62. package/src/internal/hex.d.ts +68 -61
  63. package/src/internal/hex.js +36 -0
  64. package/src/providers/json-rpc-provider.d.ts +12 -12
  65. package/src/providers/provider.js +141 -8
  66. package/src/utils/address.d.ts +58 -58
  67. package/src/utils/encoding.d.ts +120 -120
  68. package/src/utils/hashing.js +298 -298
  69. package/src/utils/index.d.ts +63 -63
  70. package/src/utils/index.js +14 -14
  71. package/src/utils/result.d.ts +57 -57
  72. package/src/utils/rlp.d.ts +12 -12
  73. package/src/utils/rlp.js +13 -1
  74. package/src/utils/units.d.ts +29 -29
  75. package/src/wallet/index.d.ts +10 -10
  76. package/src/wallet/wallet.d.ts +192 -192
  77. package/src/wallet/wallet.js +713 -630
  78. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/README.md +83 -0
  79. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/artifacts/AllSolidityTypes.abi.json +12544 -0
  80. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/artifacts/AllSolidityTypes.bin +1 -0
  81. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.js +17 -0
  82. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.ts +10 -0
  83. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.js +41 -0
  84. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.ts +41 -0
  85. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/events.js +36 -0
  86. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/events.ts +36 -0
  87. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.js +82 -0
  88. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.ts +80 -0
  89. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/read-operations.js +46 -0
  90. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/read-operations.ts +44 -0
  91. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.js +44 -0
  92. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.ts +44 -0
  93. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/index.d.ts +1 -0
  94. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/index.js +21 -0
  95. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package-lock.json +597 -0
  96. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package.json +25 -0
  97. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes.d.ts +1280 -0
  98. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes.js +14021 -0
  99. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes__factory.d.ts +11 -0
  100. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes__factory.js +31 -0
  101. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/index.d.ts +4 -0
  102. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/index.js +5 -0
  103. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/quantumcoin-shims.d.ts +25 -0
  104. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/types.d.ts +3 -0
  105. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/types.js +3 -0
  106. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/test/e2e/AllSolidityTypes.e2e.test.js +77 -0
  107. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/test/e2e/AllSolidityTypes.extra.test.js +195 -0
  108. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/README.md +83 -0
  109. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/artifacts/AllSolidityTypes.abi.json +12544 -0
  110. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/artifacts/AllSolidityTypes.bin +1 -0
  111. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.js +17 -0
  112. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.ts +10 -0
  113. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.js +41 -0
  114. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.ts +41 -0
  115. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/events.js +36 -0
  116. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/events.ts +36 -0
  117. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.js +82 -0
  118. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.ts +80 -0
  119. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/read-operations.js +46 -0
  120. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/read-operations.ts +44 -0
  121. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.js +44 -0
  122. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.ts +44 -0
  123. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/index.d.ts +1 -0
  124. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/index.js +21 -0
  125. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package-lock.json +597 -0
  126. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package.json +26 -0
  127. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/AllSolidityTypes.ts +13940 -0
  128. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/AllSolidityTypes__factory.ts +31 -0
  129. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/index.ts +4 -0
  130. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/quantumcoin-shims.d.ts +25 -0
  131. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/types.ts +4 -0
  132. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/test/e2e/AllSolidityTypes.e2e.test.js +77 -0
  133. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/test/e2e/AllSolidityTypes.extra.test.js +195 -0
  134. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/tsconfig.json +18 -0
  135. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/README.md +74 -0
  136. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/artifacts/SimpleERC20.abi.json +245 -0
  137. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/artifacts/SimpleERC20.bin +1 -0
  138. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.js +17 -0
  139. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.ts +10 -0
  140. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.js +41 -0
  141. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.ts +41 -0
  142. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/events.js +36 -0
  143. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/events.ts +36 -0
  144. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.js +82 -0
  145. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.ts +80 -0
  146. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/read-operations.js +46 -0
  147. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/read-operations.ts +44 -0
  148. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.js +44 -0
  149. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.ts +44 -0
  150. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/index.d.ts +1 -0
  151. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/index.js +16 -0
  152. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package-lock.json +597 -0
  153. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package.json +25 -0
  154. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20.d.ts +24 -0
  155. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20.js +378 -0
  156. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20__factory.d.ts +10 -0
  157. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20__factory.js +31 -0
  158. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/index.d.ts +4 -0
  159. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/index.js +5 -0
  160. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/quantumcoin-shims.d.ts +25 -0
  161. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/types.d.ts +3 -0
  162. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/types.js +3 -0
  163. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/test/e2e/SimpleERC20.e2e.test.js +90 -0
  164. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/README.md +74 -0
  165. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/artifacts/SimpleERC20.abi.json +245 -0
  166. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/artifacts/SimpleERC20.bin +1 -0
  167. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.js +17 -0
  168. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.ts +10 -0
  169. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.js +41 -0
  170. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.ts +41 -0
  171. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/events.js +36 -0
  172. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/events.ts +36 -0
  173. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.js +82 -0
  174. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.ts +80 -0
  175. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/read-operations.js +46 -0
  176. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/read-operations.ts +44 -0
  177. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.js +44 -0
  178. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.ts +44 -0
  179. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/index.d.ts +1 -0
  180. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/index.js +16 -0
  181. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package-lock.json +597 -0
  182. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package.json +26 -0
  183. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20.ts +361 -0
  184. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20__factory.ts +30 -0
  185. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/index.ts +4 -0
  186. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/quantumcoin-shims.d.ts +25 -0
  187. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/types.ts +4 -0
  188. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/test/e2e/SimpleERC20.e2e.test.js +90 -0
  189. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/tsconfig.json +18 -0
  190. package/test/e2e/generator-interface.e2e.test.js +165 -0
  191. package/test/e2e/generator-interface.e2e.test.ts +160 -0
  192. package/test/e2e/signing-context-and-fee.e2e.test.js +141 -141
  193. package/test/e2e/signing-context-and-fee.e2e.test.ts +128 -128
  194. package/test/integration/provider.test.js +88 -88
  195. package/test/security/abi-decoder-bounds.test.js +122 -0
  196. package/test/security/contract-overrides.test.js +112 -0
  197. package/test/security/generator-injection.test.js +195 -0
  198. package/test/security/malformed-input.test.js +26 -27
  199. package/test/security/rpc-numeric-bounds.test.js +81 -0
  200. package/test/security/rpc-trust.test.js +202 -0
  201. package/test/unit/abi-interface.test.js +12 -5
  202. package/test/unit/abi-interface.test.ts +8 -1
  203. package/test/unit/address-wallet.test.js +923 -892
  204. package/test/unit/address-wallet.test.ts +877 -877
  205. package/test/unit/encoding-units-rlp.test.js +35 -0
  206. package/test/unit/generator.test.js +48 -1
  207. package/test/unit/generator.test.ts +48 -1
  208. package/test/unit/hashing.test.js +64 -64
  209. package/test/unit/hashing.test.ts +63 -63
  210. package/test/unit/internal-hex.test.js +32 -1
  211. package/test/unit/internal-hex.test.ts +32 -1
  212. package/test/unit/populate-transaction.test.js +33 -0
  213. package/test/unit/providers.test.js +51 -1
  214. package/test/unit/providers.test.ts +53 -0
@@ -1,63 +1,63 @@
1
- declare const _exports: {
2
- formatUnits(value: import("./units").BigNumberish, decimals?: number | undefined): string;
3
- parseUnits(value: string, decimals?: number | undefined): bigint;
4
- formatEther(value: import("./units").BigNumberish): string;
5
- parseEther(value: string): bigint;
6
- WeiPerEther: bigint;
7
- checkResultErrors(result: any): Array<{
8
- error: Error;
9
- path: Array<string | number>;
10
- }>;
11
- Result: typeof import("./result").Result;
12
- encodeRlp(value: any): string;
13
- decodeRlp(data: string): any;
14
- keccak256(data: string | Uint8Array): string;
15
- sha256(data: string | Uint8Array): string;
16
- sha512(data: string | Uint8Array): string;
17
- ripemd160(data: string | Uint8Array): string;
18
- id(text: string): string;
19
- randomBytes(length: number): Uint8Array;
20
- computeHmac(algorithm: string, key: string | Uint8Array, data: string | Uint8Array): string;
21
- pbkdf2(password: string | Uint8Array, salt: string | Uint8Array, iterations: number, keylen: number, algorithm?: string | undefined): string;
22
- scrypt(password: string | Uint8Array, salt: string | Uint8Array, N: number, r: number, p: number, dkLen: number): Promise<string>;
23
- scryptSync(password: string | Uint8Array, salt: string | Uint8Array, N: number, r: number, p: number, dkLen: number): string;
24
- toUtf8String(data: import("./encoding").BytesLike): string;
25
- toUtf8Bytes(str: string): Uint8Array;
26
- toHex(data: import("./encoding").BytesLike): string;
27
- hexlify(data: import("./encoding").BytesLike): string;
28
- arrayify(data: import("./encoding").BytesLike): Uint8Array;
29
- concat(items: import("./encoding").BytesLike[]): string;
30
- stripZerosLeft(data: import("./encoding").BytesLike): string;
31
- encodeBytes32String(text: string): string;
32
- decodeBytes32String(bytes: import("./encoding").BytesLike): string;
33
- decodeBase58(data: string): Uint8Array;
34
- decodeBase64(data: string): Uint8Array;
35
- encodeBase58(data: import("./encoding").BytesLike): string;
36
- encodeBase64(data: import("./encoding").BytesLike): string;
37
- toUtf8CodePoints(str: string): number[];
38
- isBytesLike(value: any): boolean;
39
- zeroPad(value: import("./encoding").BytesLike, length: number): string;
40
- zeroPadValue(value: import("./encoding").BytesLike, length: number): string;
41
- solidityPacked(): void;
42
- solidityPackedKeccak256(): void;
43
- solidityPackedSha256(): void;
44
- isHexString: typeof import("./encoding").isHexString;
45
- bytesToHex: typeof import("./encoding").bytesToHex;
46
- hexToBytes: typeof import("./encoding").hexToBytes;
47
- isAddress(address: string): boolean;
48
- getAddress(address: string): string;
49
- isAddressable(value: any): boolean;
50
- resolveAddress(target: any): string | Promise<string>;
51
- getContractAddress(tx: {
52
- from: string;
53
- nonce: number;
54
- }): string;
55
- getCreateAddress(tx: {
56
- from: string;
57
- nonce: number;
58
- }): string;
59
- getCreate2Address(from: string, salt: string, initCodeHash: string): string;
60
- computeAddress(key: string | Uint8Array): string;
61
- FixedNumber: typeof import("./fixednumber").FixedNumber;
62
- };
63
- export = _exports;
1
+ declare const _exports: {
2
+ formatUnits(value: import("./units").BigNumberish, decimals?: number | undefined): string;
3
+ parseUnits(value: string, decimals?: number | undefined): bigint;
4
+ formatEther(value: import("./units").BigNumberish): string;
5
+ parseEther(value: string): bigint;
6
+ WeiPerEther: bigint;
7
+ checkResultErrors(result: any): Array<{
8
+ error: Error;
9
+ path: Array<string | number>;
10
+ }>;
11
+ Result: typeof import("./result").Result;
12
+ encodeRlp(value: any): string;
13
+ decodeRlp(data: string): any;
14
+ keccak256(data: string | Uint8Array): string;
15
+ sha256(data: string | Uint8Array): string;
16
+ sha512(data: string | Uint8Array): string;
17
+ ripemd160(data: string | Uint8Array): string;
18
+ id(text: string): string;
19
+ randomBytes(length: number): Uint8Array;
20
+ computeHmac(algorithm: string, key: string | Uint8Array, data: string | Uint8Array): string;
21
+ pbkdf2(password: string | Uint8Array, salt: string | Uint8Array, iterations: number, keylen: number, algorithm?: string | undefined): string;
22
+ scrypt(password: string | Uint8Array, salt: string | Uint8Array, N: number, r: number, p: number, dkLen: number): Promise<string>;
23
+ scryptSync(password: string | Uint8Array, salt: string | Uint8Array, N: number, r: number, p: number, dkLen: number): string;
24
+ toUtf8String(data: import("./encoding").BytesLike): string;
25
+ toUtf8Bytes(str: string): Uint8Array;
26
+ toHex(data: import("./encoding").BytesLike): string;
27
+ hexlify(data: import("./encoding").BytesLike): string;
28
+ arrayify(data: import("./encoding").BytesLike): Uint8Array;
29
+ concat(items: import("./encoding").BytesLike[]): string;
30
+ stripZerosLeft(data: import("./encoding").BytesLike): string;
31
+ encodeBytes32String(text: string): string;
32
+ decodeBytes32String(bytes: import("./encoding").BytesLike): string;
33
+ decodeBase58(data: string): Uint8Array;
34
+ decodeBase64(data: string): Uint8Array;
35
+ encodeBase58(data: import("./encoding").BytesLike): string;
36
+ encodeBase64(data: import("./encoding").BytesLike): string;
37
+ toUtf8CodePoints(str: string): number[];
38
+ isBytesLike(value: any): boolean;
39
+ zeroPad(value: import("./encoding").BytesLike, length: number): string;
40
+ zeroPadValue(value: import("./encoding").BytesLike, length: number): string;
41
+ solidityPacked(): void;
42
+ solidityPackedKeccak256(): void;
43
+ solidityPackedSha256(): void;
44
+ isHexString: typeof import("./encoding").isHexString;
45
+ bytesToHex: typeof import("./encoding").bytesToHex;
46
+ hexToBytes: typeof import("./encoding").hexToBytes;
47
+ isAddress(address: string): boolean;
48
+ getAddress(address: string): string;
49
+ isAddressable(value: any): boolean;
50
+ resolveAddress(target: any): string | Promise<string>;
51
+ getContractAddress(tx: {
52
+ from: string;
53
+ nonce: number;
54
+ }): string;
55
+ getCreateAddress(tx: {
56
+ from: string;
57
+ nonce: number;
58
+ }): string;
59
+ getCreate2Address(from: string, salt: string, initCodeHash: string): string;
60
+ computeAddress(key: string | Uint8Array): string;
61
+ FixedNumber: typeof import("./fixednumber").FixedNumber;
62
+ };
63
+ export = _exports;
@@ -1,14 +1,14 @@
1
- /**
2
- * @fileoverview Utilities export barrel.
3
- */
4
-
5
- module.exports = {
6
- ...require("./address"),
7
- ...require("./encoding"),
8
- ...require("./hashing"),
9
- ...require("./rlp"),
10
- ...require("./result"),
11
- ...require("./units"),
12
- ...require("./fixednumber"),
13
- };
14
-
1
+ /**
2
+ * @fileoverview Utilities export barrel.
3
+ */
4
+
5
+ module.exports = {
6
+ ...require("./address"),
7
+ ...require("./encoding"),
8
+ ...require("./hashing"),
9
+ ...require("./rlp"),
10
+ ...require("./result"),
11
+ ...require("./units"),
12
+ ...require("./fixednumber"),
13
+ };
14
+
@@ -1,57 +1,57 @@
1
- /**
2
- * @fileoverview Result utility (ethers.js v6 compatible).
3
- *
4
- * ethers.js Result is an Array-like with optional named keys.
5
- * This simplified implementation covers the common patterns used in this SDK.
6
- */
7
- export class Result extends Array<any> {
8
- /**
9
- * @param {Array<any>} items
10
- * @param {Array<null|string>=} keys
11
- * @returns {Result}
12
- */
13
- static fromItems(items: Array<any>, keys?: Array<null | string> | undefined): Result;
14
- /**
15
- * @param {any[]=} items
16
- * @param {(null|string)[]=} keys
17
- */
18
- constructor(items?: any[] | undefined, keys?: (null | string)[] | undefined);
19
- /** @type {(null|string)[]|null} */
20
- _keys: (null | string)[] | null;
21
- /**
22
- * Get a value by key.
23
- * @param {string} name
24
- * @returns {any}
25
- */
26
- getValue(name: string): any;
27
- /**
28
- * Convert to array (optionally deep).
29
- * @param {boolean=} deep
30
- * @returns {any[]}
31
- */
32
- toArray(deep?: boolean | undefined): any[];
33
- /**
34
- * Convert to object (optionally deep).
35
- * @param {boolean=} deep
36
- * @returns {Record<string, any>}
37
- */
38
- toObject(deep?: boolean | undefined): Record<string, any>;
39
- }
40
- /**
41
- * Scan a decoded Result (or nested structure) for embedded Error objects.
42
- *
43
- * ethers.js uses this to surface nested decode errors (especially for tuples
44
- * and structs). This lightweight implementation walks:
45
- * - Result instances (by index; prefers named keys in the path when available)
46
- * - Arrays
47
- * - Plain objects (for struct-like outputs)
48
- *
49
- * It is cycle-safe.
50
- *
51
- * @param {any} result
52
- * @returns {Array<{ error: Error, path: Array<string|number> }>}
53
- */
54
- export function checkResultErrors(result: any): Array<{
55
- error: Error;
56
- path: Array<string | number>;
57
- }>;
1
+ /**
2
+ * @fileoverview Result utility (ethers.js v6 compatible).
3
+ *
4
+ * ethers.js Result is an Array-like with optional named keys.
5
+ * This simplified implementation covers the common patterns used in this SDK.
6
+ */
7
+ export class Result extends Array<any> {
8
+ /**
9
+ * @param {Array<any>} items
10
+ * @param {Array<null|string>=} keys
11
+ * @returns {Result}
12
+ */
13
+ static fromItems(items: Array<any>, keys?: Array<null | string> | undefined): Result;
14
+ /**
15
+ * @param {any[]=} items
16
+ * @param {(null|string)[]=} keys
17
+ */
18
+ constructor(items?: any[] | undefined, keys?: (null | string)[] | undefined);
19
+ /** @type {(null|string)[]|null} */
20
+ _keys: (null | string)[] | null;
21
+ /**
22
+ * Get a value by key.
23
+ * @param {string} name
24
+ * @returns {any}
25
+ */
26
+ getValue(name: string): any;
27
+ /**
28
+ * Convert to array (optionally deep).
29
+ * @param {boolean=} deep
30
+ * @returns {any[]}
31
+ */
32
+ toArray(deep?: boolean | undefined): any[];
33
+ /**
34
+ * Convert to object (optionally deep).
35
+ * @param {boolean=} deep
36
+ * @returns {Record<string, any>}
37
+ */
38
+ toObject(deep?: boolean | undefined): Record<string, any>;
39
+ }
40
+ /**
41
+ * Scan a decoded Result (or nested structure) for embedded Error objects.
42
+ *
43
+ * ethers.js uses this to surface nested decode errors (especially for tuples
44
+ * and structs). This lightweight implementation walks:
45
+ * - Result instances (by index; prefers named keys in the path when available)
46
+ * - Arrays
47
+ * - Plain objects (for struct-like outputs)
48
+ *
49
+ * It is cycle-safe.
50
+ *
51
+ * @param {any} result
52
+ * @returns {Array<{ error: Error, path: Array<string|number> }>}
53
+ */
54
+ export function checkResultErrors(result: any): Array<{
55
+ error: Error;
56
+ path: Array<string | number>;
57
+ }>;
@@ -1,12 +1,12 @@
1
- /**
2
- * RLP-encode a value.
3
- * @param {any} value
4
- * @returns {string}
5
- */
6
- export function encodeRlp(value: any): string;
7
- /**
8
- * RLP-decode a hex string.
9
- * @param {string} data
10
- * @returns {any}
11
- */
12
- export function decodeRlp(data: string): any;
1
+ /**
2
+ * RLP-encode a value.
3
+ * @param {any} value
4
+ * @returns {string}
5
+ */
6
+ export function encodeRlp(value: any): string;
7
+ /**
8
+ * RLP-decode a hex string.
9
+ * @param {string} data
10
+ * @returns {any}
11
+ */
12
+ export function decodeRlp(data: string): any;
package/src/utils/rlp.js CHANGED
@@ -103,9 +103,14 @@ function _encode(value) {
103
103
  function _readLen(bytes, offset, lenOfLen) {
104
104
  if (lenOfLen === 0) return 0;
105
105
  if (offset + lenOfLen > bytes.length) throw new Error("RLP: insufficient data for length");
106
+ // Canonical encoding forbids a leading zero byte in the length field.
107
+ if (bytes[offset] === 0) throw new Error("RLP: non-canonical length (leading zero byte)");
108
+ // Accumulate with multiplication (not `<< 8`, which is a signed 32-bit op
109
+ // that overflows/wraps for 4+ byte lengths) and reject impossibly large lengths.
106
110
  let len = 0;
107
111
  for (let i = 0; i < lenOfLen; i++) {
108
- len = (len << 8) | bytes[offset + i];
112
+ len = len * 256 + bytes[offset + i];
113
+ if (len > Number.MAX_SAFE_INTEGER) throw new Error("RLP: length exceeds maximum safe integer");
109
114
  }
110
115
  return len;
111
116
  }
@@ -128,6 +133,9 @@ function _decode(bytes, start, end, depth) {
128
133
  const dataStart = start + 1;
129
134
  const dataEnd = dataStart + len;
130
135
  if (dataEnd > end) throw new Error("RLP: out of bounds");
136
+ // Canonical encoding requires a single byte < 0x80 to be encoded as
137
+ // itself, never as a 1-byte string.
138
+ if (len === 1 && bytes[dataStart] < 0x80) throw new Error("RLP: non-canonical single byte encoding");
131
139
  const out = bytesToHex(bytes.slice(dataStart, dataEnd));
132
140
  return { value: out, next: dataEnd };
133
141
  }
@@ -136,6 +144,8 @@ function _decode(bytes, start, end, depth) {
136
144
  if (prefix <= 0xbf) {
137
145
  const lenOfLen = prefix - 0xb7;
138
146
  const len = _readLen(bytes, start + 1, lenOfLen);
147
+ // Lengths <= 55 must use the short-string form.
148
+ if (len <= 55) throw new Error("RLP: non-canonical long string (length fits short form)");
139
149
  const dataStart = start + 1 + lenOfLen;
140
150
  const dataEnd = dataStart + len;
141
151
  if (dataEnd > end) throw new Error("RLP: out of bounds");
@@ -163,6 +173,8 @@ function _decode(bytes, start, end, depth) {
163
173
  // Long list
164
174
  const lenOfLen = prefix - 0xf7;
165
175
  const len = _readLen(bytes, start + 1, lenOfLen);
176
+ // Lengths <= 55 must use the short-list form.
177
+ if (len <= 55) throw new Error("RLP: non-canonical long list (length fits short form)");
166
178
  const dataStart = start + 1 + lenOfLen;
167
179
  const dataEnd = dataStart + len;
168
180
  if (dataEnd > end) throw new Error("RLP: out of bounds");
@@ -1,29 +1,29 @@
1
- export type BigNumberish = string | number | bigint;
2
- /**
3
- * Format a BigNumberish into a decimal string with `decimals` places.
4
- * @param {BigNumberish} value
5
- * @param {number=} decimals
6
- * @returns {string}
7
- */
8
- export function formatUnits(value: BigNumberish, decimals?: number | undefined): string;
9
- /**
10
- * Parse a decimal string into bigint with `decimals` places.
11
- * @param {string} value
12
- * @param {number=} decimals
13
- * @returns {bigint}
14
- */
15
- export function parseUnits(value: string, decimals?: number | undefined): bigint;
16
- /**
17
- * Format wei as coin string.
18
- * @param {BigNumberish} value
19
- * @returns {string}
20
- */
21
- export function formatEther(value: BigNumberish): string;
22
- /**
23
- * Parse coin string to wei.
24
- * @param {string} value
25
- * @returns {bigint}
26
- */
27
- export function parseEther(value: string): bigint;
28
- import { WeiPerEther } from "../constants";
29
- export { WeiPerEther };
1
+ export type BigNumberish = string | number | bigint;
2
+ /**
3
+ * Format a BigNumberish into a decimal string with `decimals` places.
4
+ * @param {BigNumberish} value
5
+ * @param {number=} decimals
6
+ * @returns {string}
7
+ */
8
+ export function formatUnits(value: BigNumberish, decimals?: number | undefined): string;
9
+ /**
10
+ * Parse a decimal string into bigint with `decimals` places.
11
+ * @param {string} value
12
+ * @param {number=} decimals
13
+ * @returns {bigint}
14
+ */
15
+ export function parseUnits(value: string, decimals?: number | undefined): bigint;
16
+ /**
17
+ * Format wei as coin string.
18
+ * @param {BigNumberish} value
19
+ * @returns {string}
20
+ */
21
+ export function formatEther(value: BigNumberish): string;
22
+ /**
23
+ * Parse coin string to wei.
24
+ * @param {string} value
25
+ * @returns {bigint}
26
+ */
27
+ export function parseEther(value: string): bigint;
28
+ import { WeiPerEther } from "../constants";
29
+ export { WeiPerEther };
@@ -1,10 +1,10 @@
1
- declare const _exports: {
2
- SigningKey: typeof import("./wallet").SigningKey;
3
- AbstractSigner: typeof import("./wallet").AbstractSigner;
4
- BaseWallet: typeof import("./wallet").BaseWallet;
5
- Wallet: typeof import("./wallet").Wallet;
6
- NonceManager: typeof import("./wallet").NonceManager;
7
- JsonRpcSigner: typeof import("./wallet").JsonRpcSigner;
8
- VoidSigner: typeof import("./wallet").VoidSigner;
9
- };
10
- export = _exports;
1
+ declare const _exports: {
2
+ SigningKey: typeof import("./wallet").SigningKey;
3
+ AbstractSigner: typeof import("./wallet").AbstractSigner;
4
+ BaseWallet: typeof import("./wallet").BaseWallet;
5
+ Wallet: typeof import("./wallet").Wallet;
6
+ NonceManager: typeof import("./wallet").NonceManager;
7
+ JsonRpcSigner: typeof import("./wallet").JsonRpcSigner;
8
+ VoidSigner: typeof import("./wallet").VoidSigner;
9
+ };
10
+ export = _exports;