quantumcoin 7.0.14 → 8.0.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 (414) hide show
  1. package/README-SDK.md +46 -0
  2. package/README.md +1 -1
  3. package/generate-sdk.js +8 -6
  4. package/package.json +22 -4
  5. package/src/abi/interface.d.ts +133 -128
  6. package/src/abi/js-abi-coder.d.ts +8 -8
  7. package/src/constants.d.ts +61 -61
  8. package/src/contract/contract-factory.d.ts +28 -28
  9. package/src/contract/contract.d.ts +121 -113
  10. package/src/contract/index.d.ts +1 -0
  11. package/src/errors/index.d.ts +10 -2
  12. package/src/errors/index.js +1 -1
  13. package/src/generator/index.d.ts +109 -81
  14. package/src/index.d.ts +126 -122
  15. package/src/internal/event-emitter.d.ts +76 -0
  16. package/src/internal/event-emitter.js +144 -0
  17. package/src/internal/hex.d.ts +27 -4
  18. package/src/internal/hex.js +7 -3
  19. package/src/providers/extra-providers.d.ts +141 -139
  20. package/src/providers/extra-providers.js +15 -1
  21. package/src/providers/index.d.ts +18 -17
  22. package/src/providers/json-rpc-provider.d.ts +1 -0
  23. package/src/providers/provider.d.ts +233 -206
  24. package/src/providers/provider.js +41 -1
  25. package/src/utils/encoding.js +16 -4
  26. package/src/utils/fixednumber.d.ts +57 -57
  27. package/src/utils/hashing.d.ts +79 -76
  28. package/src/utils/hashing.js +68 -177
  29. package/src/utils/index.d.ts +1 -1
  30. package/src/utils/rlp.js +1 -1
  31. package/src/wallet/wallet.d.ts +54 -19
  32. package/src/wallet/wallet.js +48 -10
  33. package/.github/workflows/publish-npmjs.yaml +0 -22
  34. package/.gitignore +0 -15
  35. package/examples/AllSolidityTypes.sol +0 -184
  36. package/examples/SimpleIERC20.sol +0 -74
  37. package/examples/events.js +0 -41
  38. package/examples/events.ts +0 -35
  39. package/examples/example-generated-sdk-js/README.md +0 -65
  40. package/examples/example-generated-sdk-js/examples/_test-wallet.js +0 -17
  41. package/examples/example-generated-sdk-js/examples/deploy.js +0 -41
  42. package/examples/example-generated-sdk-js/examples/events.js +0 -36
  43. package/examples/example-generated-sdk-js/examples/read-operations.js +0 -46
  44. package/examples/example-generated-sdk-js/examples/write-operations.js +0 -44
  45. package/examples/example-generated-sdk-js/index.d.ts +0 -1
  46. package/examples/example-generated-sdk-js/index.js +0 -15
  47. package/examples/example-generated-sdk-js/package-lock.json +0 -59
  48. package/examples/example-generated-sdk-js/package.json +0 -22
  49. package/examples/example-generated-sdk-js/src/SimpleERC20.d.ts +0 -19
  50. package/examples/example-generated-sdk-js/src/SimpleERC20.js +0 -353
  51. package/examples/example-generated-sdk-js/src/SimpleERC20__factory.d.ts +0 -10
  52. package/examples/example-generated-sdk-js/src/SimpleERC20__factory.js +0 -29
  53. package/examples/example-generated-sdk-js/src/index.d.ts +0 -4
  54. package/examples/example-generated-sdk-js/src/index.js +0 -5
  55. package/examples/example-generated-sdk-js/src/quantumcoin-shims.d.ts +0 -23
  56. package/examples/example-generated-sdk-js/src/types.d.ts +0 -3
  57. package/examples/example-generated-sdk-js/src/types.js +0 -3
  58. package/examples/example-generated-sdk-js/test/e2e/SimpleERC20.e2e.test.js +0 -78
  59. package/examples/example-generated-sdk-ts/README.md +0 -65
  60. package/examples/example-generated-sdk-ts/examples/_test-wallet.js +0 -17
  61. package/examples/example-generated-sdk-ts/examples/deploy.js +0 -41
  62. package/examples/example-generated-sdk-ts/examples/events.js +0 -36
  63. package/examples/example-generated-sdk-ts/examples/read-operations.js +0 -46
  64. package/examples/example-generated-sdk-ts/examples/write-operations.js +0 -44
  65. package/examples/example-generated-sdk-ts/index.d.ts +0 -1
  66. package/examples/example-generated-sdk-ts/index.js +0 -15
  67. package/examples/example-generated-sdk-ts/package-lock.json +0 -59
  68. package/examples/example-generated-sdk-ts/package.json +0 -23
  69. package/examples/example-generated-sdk-ts/src/SimpleERC20.ts +0 -334
  70. package/examples/example-generated-sdk-ts/src/SimpleERC20__factory.ts +0 -28
  71. package/examples/example-generated-sdk-ts/src/index.ts +0 -4
  72. package/examples/example-generated-sdk-ts/src/quantumcoin-shims.d.ts +0 -23
  73. package/examples/example-generated-sdk-ts/src/types.ts +0 -4
  74. package/examples/example-generated-sdk-ts/test/e2e/SimpleERC20.e2e.test.js +0 -78
  75. package/examples/example-generated-sdk-ts/tsconfig.json +0 -14
  76. package/examples/example-generator-sdk-js.js +0 -100
  77. package/examples/example-generator-sdk-js.ts +0 -77
  78. package/examples/example-generator-sdk-ts.js +0 -100
  79. package/examples/example-generator-sdk-ts.ts +0 -77
  80. package/examples/example.js +0 -67
  81. package/examples/example.ts +0 -56
  82. package/examples/node_modules/.bin/esbuild +0 -16
  83. package/examples/node_modules/.bin/esbuild.cmd +0 -17
  84. package/examples/node_modules/.bin/esbuild.ps1 +0 -28
  85. package/examples/node_modules/.bin/sdkgen +0 -16
  86. package/examples/node_modules/.bin/sdkgen.cmd +0 -17
  87. package/examples/node_modules/.bin/sdkgen.ps1 +0 -28
  88. package/examples/node_modules/.bin/tsx +0 -16
  89. package/examples/node_modules/.bin/tsx.cmd +0 -17
  90. package/examples/node_modules/.bin/tsx.ps1 +0 -28
  91. package/examples/node_modules/.package-lock.json +0 -144
  92. package/examples/node_modules/@esbuild/win32-x64/README.md +0 -3
  93. package/examples/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
  94. package/examples/node_modules/@esbuild/win32-x64/package.json +0 -20
  95. package/examples/node_modules/esbuild/LICENSE.md +0 -21
  96. package/examples/node_modules/esbuild/README.md +0 -3
  97. package/examples/node_modules/esbuild/bin/esbuild +0 -223
  98. package/examples/node_modules/esbuild/install.js +0 -289
  99. package/examples/node_modules/esbuild/lib/main.d.ts +0 -716
  100. package/examples/node_modules/esbuild/lib/main.js +0 -2532
  101. package/examples/node_modules/esbuild/package.json +0 -49
  102. package/examples/node_modules/get-tsconfig/LICENSE +0 -21
  103. package/examples/node_modules/get-tsconfig/README.md +0 -235
  104. package/examples/node_modules/get-tsconfig/dist/index.cjs +0 -7
  105. package/examples/node_modules/get-tsconfig/dist/index.d.cts +0 -2088
  106. package/examples/node_modules/get-tsconfig/dist/index.d.mts +0 -2088
  107. package/examples/node_modules/get-tsconfig/dist/index.mjs +0 -7
  108. package/examples/node_modules/get-tsconfig/package.json +0 -46
  109. package/examples/node_modules/quantum-coin-js-sdk/LICENSE +0 -21
  110. package/examples/node_modules/quantum-coin-js-sdk/LICENSE-wasm_exec.js.txt +0 -30
  111. package/examples/node_modules/quantum-coin-js-sdk/README.md +0 -1675
  112. package/examples/node_modules/quantum-coin-js-sdk/example/README.md +0 -14
  113. package/examples/node_modules/quantum-coin-js-sdk/example/conversion-example.js +0 -19
  114. package/examples/node_modules/quantum-coin-js-sdk/example/example-create-contract.js +0 -396
  115. package/examples/node_modules/quantum-coin-js-sdk/example/example-encode-decode-rlp.js +0 -225
  116. package/examples/node_modules/quantum-coin-js-sdk/example/example-event-pack-unpack.js +0 -391
  117. package/examples/node_modules/quantum-coin-js-sdk/example/example-misc.js +0 -101
  118. package/examples/node_modules/quantum-coin-js-sdk/example/example-rpc-send-signRawTransaction.js +0 -318
  119. package/examples/node_modules/quantum-coin-js-sdk/example/example-rpc-send.js +0 -116
  120. package/examples/node_modules/quantum-coin-js-sdk/example/example-send.js +0 -70
  121. package/examples/node_modules/quantum-coin-js-sdk/example/example-token-pack-unpack.js +0 -961
  122. package/examples/node_modules/quantum-coin-js-sdk/example/example-wallet-version4.js +0 -35
  123. package/examples/node_modules/quantum-coin-js-sdk/example/example-wallet.js +0 -43
  124. package/examples/node_modules/quantum-coin-js-sdk/example/example.js +0 -405
  125. package/examples/node_modules/quantum-coin-js-sdk/example/package-lock.json +0 -134
  126. package/examples/node_modules/quantum-coin-js-sdk/example/package.json +0 -15
  127. package/examples/node_modules/quantum-coin-js-sdk/index.d.ts +0 -1031
  128. package/examples/node_modules/quantum-coin-js-sdk/index.js +0 -3144
  129. package/examples/node_modules/quantum-coin-js-sdk/package.json +0 -34
  130. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-32.json +0 -1
  131. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-36.json +0 -1
  132. package/examples/node_modules/quantum-coin-js-sdk/tests/encrypted-48.json +0 -1
  133. package/examples/node_modules/quantum-coin-js-sdk/tests/generate-verify-vectors.js +0 -91
  134. package/examples/node_modules/quantum-coin-js-sdk/tests/non-transactional.preinit.test.js +0 -41
  135. package/examples/node_modules/quantum-coin-js-sdk/tests/non-transactional.test.js +0 -1389
  136. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-raw-keytype5-context-null.test.js +0 -107
  137. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-raw-transaction.test.js +0 -196
  138. package/examples/node_modules/quantum-coin-js-sdk/tests/sign-verify.test.js +0 -311
  139. package/examples/node_modules/quantum-coin-js-sdk/tests/transactional.relay.test.js +0 -131
  140. package/examples/node_modules/quantum-coin-js-sdk/tests/transactional.rpc.test.js +0 -103
  141. package/examples/node_modules/quantum-coin-js-sdk/tests/verify-vectors.json +0 -95035
  142. package/examples/node_modules/quantum-coin-js-sdk/wasmBase64.d.ts +0 -9
  143. package/examples/node_modules/quantum-coin-js-sdk/wasmBase64.js +0 -16
  144. package/examples/node_modules/quantum-coin-js-sdk/wasm_exec.d.ts +0 -0
  145. package/examples/node_modules/quantum-coin-js-sdk/wasm_exec.js +0 -587
  146. package/examples/node_modules/resolve-pkg-maps/LICENSE +0 -21
  147. package/examples/node_modules/resolve-pkg-maps/README.md +0 -216
  148. package/examples/node_modules/resolve-pkg-maps/dist/index.cjs +0 -1
  149. package/examples/node_modules/resolve-pkg-maps/dist/index.d.cts +0 -11
  150. package/examples/node_modules/resolve-pkg-maps/dist/index.d.mts +0 -11
  151. package/examples/node_modules/resolve-pkg-maps/dist/index.mjs +0 -1
  152. package/examples/node_modules/resolve-pkg-maps/package.json +0 -42
  153. package/examples/node_modules/seed-words/.github/workflows/publish-npmjs.yaml +0 -22
  154. package/examples/node_modules/seed-words/BUILD.md +0 -7
  155. package/examples/node_modules/seed-words/LICENSE +0 -121
  156. package/examples/node_modules/seed-words/README.md +0 -67
  157. package/examples/node_modules/seed-words/dist/seedwords.d.ts +0 -39
  158. package/examples/node_modules/seed-words/package.json +0 -27
  159. package/examples/node_modules/seed-words/seedwords.js +0 -315
  160. package/examples/node_modules/seed-words/seedwords.txt +0 -65536
  161. package/examples/node_modules/seed-words/tsconfig.json +0 -21
  162. package/examples/node_modules/tsx/LICENSE +0 -21
  163. package/examples/node_modules/tsx/README.md +0 -32
  164. package/examples/node_modules/tsx/dist/cjs/api/index.cjs +0 -1
  165. package/examples/node_modules/tsx/dist/cjs/api/index.d.cts +0 -35
  166. package/examples/node_modules/tsx/dist/cjs/api/index.d.mts +0 -35
  167. package/examples/node_modules/tsx/dist/cjs/api/index.mjs +0 -1
  168. package/examples/node_modules/tsx/dist/cjs/index.cjs +0 -1
  169. package/examples/node_modules/tsx/dist/cjs/index.mjs +0 -1
  170. package/examples/node_modules/tsx/dist/cli.cjs +0 -54
  171. package/examples/node_modules/tsx/dist/cli.mjs +0 -55
  172. package/examples/node_modules/tsx/dist/client-BQVF1NaW.mjs +0 -1
  173. package/examples/node_modules/tsx/dist/client-D6NvIMSC.cjs +0 -1
  174. package/examples/node_modules/tsx/dist/esm/api/index.cjs +0 -1
  175. package/examples/node_modules/tsx/dist/esm/api/index.d.cts +0 -35
  176. package/examples/node_modules/tsx/dist/esm/api/index.d.mts +0 -35
  177. package/examples/node_modules/tsx/dist/esm/api/index.mjs +0 -1
  178. package/examples/node_modules/tsx/dist/esm/index.cjs +0 -2
  179. package/examples/node_modules/tsx/dist/esm/index.mjs +0 -2
  180. package/examples/node_modules/tsx/dist/get-pipe-path-BHW2eJdv.mjs +0 -1
  181. package/examples/node_modules/tsx/dist/get-pipe-path-BoR10qr8.cjs +0 -1
  182. package/examples/node_modules/tsx/dist/index-7AaEi15b.mjs +0 -14
  183. package/examples/node_modules/tsx/dist/index-BWFBUo6r.cjs +0 -1
  184. package/examples/node_modules/tsx/dist/index-gbaejti9.mjs +0 -1
  185. package/examples/node_modules/tsx/dist/index-gckBtVBf.cjs +0 -14
  186. package/examples/node_modules/tsx/dist/lexer-DQCqS3nf.mjs +0 -3
  187. package/examples/node_modules/tsx/dist/lexer-DgIbo0BU.cjs +0 -3
  188. package/examples/node_modules/tsx/dist/loader.cjs +0 -1
  189. package/examples/node_modules/tsx/dist/loader.mjs +0 -1
  190. package/examples/node_modules/tsx/dist/node-features-_8ZFwP_x.mjs +0 -1
  191. package/examples/node_modules/tsx/dist/node-features-roYmp9jK.cjs +0 -1
  192. package/examples/node_modules/tsx/dist/package-CeBgXWuR.mjs +0 -1
  193. package/examples/node_modules/tsx/dist/package-Dxt5kIHw.cjs +0 -1
  194. package/examples/node_modules/tsx/dist/patch-repl.cjs +0 -1
  195. package/examples/node_modules/tsx/dist/patch-repl.mjs +0 -1
  196. package/examples/node_modules/tsx/dist/preflight.cjs +0 -1
  197. package/examples/node_modules/tsx/dist/preflight.mjs +0 -1
  198. package/examples/node_modules/tsx/dist/register-2sWVXuRQ.cjs +0 -1
  199. package/examples/node_modules/tsx/dist/register-B7jrtLTO.mjs +0 -1
  200. package/examples/node_modules/tsx/dist/register-CFH5oNdT.mjs +0 -4
  201. package/examples/node_modules/tsx/dist/register-D46fvsV_.cjs +0 -4
  202. package/examples/node_modules/tsx/dist/repl.cjs +0 -3
  203. package/examples/node_modules/tsx/dist/repl.mjs +0 -3
  204. package/examples/node_modules/tsx/dist/require-D4F1Lv60.cjs +0 -1
  205. package/examples/node_modules/tsx/dist/require-DQxpCAr4.mjs +0 -1
  206. package/examples/node_modules/tsx/dist/suppress-warnings.cjs +0 -1
  207. package/examples/node_modules/tsx/dist/suppress-warnings.mjs +0 -1
  208. package/examples/node_modules/tsx/dist/temporary-directory-B83uKxJF.cjs +0 -1
  209. package/examples/node_modules/tsx/dist/temporary-directory-CwHp0_NW.mjs +0 -1
  210. package/examples/node_modules/tsx/dist/types-Cxp8y2TL.d.ts +0 -5
  211. package/examples/node_modules/tsx/package.json +0 -68
  212. package/examples/offline-signing.js +0 -77
  213. package/examples/offline-signing.ts +0 -65
  214. package/examples/package-lock.json +0 -596
  215. package/examples/package.json +0 -32
  216. package/examples/read-operations.js +0 -32
  217. package/examples/read-operations.ts +0 -31
  218. package/examples/sdk-generator-erc20.inline.json +0 -251
  219. package/examples/solidity-types.ts +0 -43
  220. package/examples/wallet-offline.js +0 -36
  221. package/examples/wallet-offline.ts +0 -26
  222. package/scripts/copy-declarations.js +0 -31
  223. package/scripts/run-all-one-by-one.js +0 -151
  224. package/test/e2e/all-solidity-types.dynamic.test.js +0 -207
  225. package/test/e2e/all-solidity-types.dynamic.test.ts +0 -191
  226. package/test/e2e/all-solidity-types.fixtures.js +0 -231
  227. package/test/e2e/all-solidity-types.generated-sdks.e2e.test.js +0 -387
  228. package/test/e2e/all-solidity-types.generated-sdks.e2e.test.ts +0 -350
  229. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/README.md +0 -83
  230. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/artifacts/AllSolidityTypes.abi.json +0 -12544
  231. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/artifacts/AllSolidityTypes.bin +0 -1
  232. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.js +0 -17
  233. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/_test-wallet.ts +0 -10
  234. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.js +0 -41
  235. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/deploy.ts +0 -41
  236. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/events.js +0 -36
  237. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/events.ts +0 -36
  238. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.js +0 -82
  239. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/offline-signing.ts +0 -80
  240. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/read-operations.js +0 -46
  241. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/read-operations.ts +0 -44
  242. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.js +0 -44
  243. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/examples/write-operations.ts +0 -44
  244. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/index.d.ts +0 -1
  245. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/index.js +0 -21
  246. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package-lock.json +0 -597
  247. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/package.json +0 -25
  248. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes.d.ts +0 -1280
  249. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes.js +0 -14021
  250. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes__factory.d.ts +0 -11
  251. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/AllSolidityTypes__factory.js +0 -31
  252. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/index.d.ts +0 -4
  253. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/index.js +0 -5
  254. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/quantumcoin-shims.d.ts +0 -25
  255. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/types.d.ts +0 -3
  256. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/src/types.js +0 -3
  257. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/test/e2e/AllSolidityTypes.e2e.test.js +0 -77
  258. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-js/test/e2e/AllSolidityTypes.extra.test.js +0 -195
  259. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/README.md +0 -83
  260. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/artifacts/AllSolidityTypes.abi.json +0 -12544
  261. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/artifacts/AllSolidityTypes.bin +0 -1
  262. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.js +0 -17
  263. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/_test-wallet.ts +0 -10
  264. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.js +0 -41
  265. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/deploy.ts +0 -41
  266. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/events.js +0 -36
  267. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/events.ts +0 -36
  268. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.js +0 -82
  269. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/offline-signing.ts +0 -80
  270. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/read-operations.js +0 -46
  271. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/read-operations.ts +0 -44
  272. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.js +0 -44
  273. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/examples/write-operations.ts +0 -44
  274. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/index.d.ts +0 -1
  275. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/index.js +0 -21
  276. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package-lock.json +0 -597
  277. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/package.json +0 -26
  278. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/AllSolidityTypes.ts +0 -13940
  279. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/AllSolidityTypes__factory.ts +0 -31
  280. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/index.ts +0 -4
  281. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/quantumcoin-shims.d.ts +0 -25
  282. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/src/types.ts +0 -4
  283. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/test/e2e/AllSolidityTypes.e2e.test.js +0 -77
  284. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/test/e2e/AllSolidityTypes.extra.test.js +0 -195
  285. package/test/e2e/generated-sdks/all-solidity-types/all-solidity-types-ts/tsconfig.json +0 -18
  286. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/README.md +0 -74
  287. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/artifacts/SimpleERC20.abi.json +0 -245
  288. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/artifacts/SimpleERC20.bin +0 -1
  289. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.js +0 -17
  290. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/_test-wallet.ts +0 -10
  291. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.js +0 -41
  292. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/deploy.ts +0 -41
  293. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/events.js +0 -36
  294. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/events.ts +0 -36
  295. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.js +0 -82
  296. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/offline-signing.ts +0 -80
  297. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/read-operations.js +0 -46
  298. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/read-operations.ts +0 -44
  299. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.js +0 -44
  300. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/examples/write-operations.ts +0 -44
  301. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/index.d.ts +0 -1
  302. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/index.js +0 -16
  303. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package-lock.json +0 -597
  304. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/package.json +0 -25
  305. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20.d.ts +0 -24
  306. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20.js +0 -378
  307. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20__factory.d.ts +0 -10
  308. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/SimpleERC20__factory.js +0 -31
  309. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/index.d.ts +0 -4
  310. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/index.js +0 -5
  311. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/quantumcoin-shims.d.ts +0 -25
  312. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/types.d.ts +0 -3
  313. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/src/types.js +0 -3
  314. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-js/test/e2e/SimpleERC20.e2e.test.js +0 -90
  315. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/README.md +0 -74
  316. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/artifacts/SimpleERC20.abi.json +0 -245
  317. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/artifacts/SimpleERC20.bin +0 -1
  318. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.js +0 -17
  319. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/_test-wallet.ts +0 -10
  320. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.js +0 -41
  321. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/deploy.ts +0 -41
  322. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/events.js +0 -36
  323. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/events.ts +0 -36
  324. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.js +0 -82
  325. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/offline-signing.ts +0 -80
  326. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/read-operations.js +0 -46
  327. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/read-operations.ts +0 -44
  328. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.js +0 -44
  329. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/examples/write-operations.ts +0 -44
  330. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/index.d.ts +0 -1
  331. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/index.js +0 -16
  332. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package-lock.json +0 -597
  333. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/package.json +0 -26
  334. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20.ts +0 -361
  335. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/SimpleERC20__factory.ts +0 -30
  336. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/index.ts +0 -4
  337. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/quantumcoin-shims.d.ts +0 -25
  338. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/src/types.ts +0 -4
  339. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/test/e2e/SimpleERC20.e2e.test.js +0 -90
  340. package/test/e2e/generated-sdks/simple-erc20/simple-erc20-ts/tsconfig.json +0 -18
  341. package/test/e2e/generator-interface.e2e.test.js +0 -165
  342. package/test/e2e/generator-interface.e2e.test.ts +0 -160
  343. package/test/e2e/helpers.js +0 -59
  344. package/test/e2e/signing-context-and-fee.e2e.test.js +0 -141
  345. package/test/e2e/signing-context-and-fee.e2e.test.ts +0 -128
  346. package/test/e2e/simple-erc20.generated-sdks.e2e.test.js +0 -168
  347. package/test/e2e/simple-erc20.generated-sdks.e2e.test.ts +0 -141
  348. package/test/e2e/transactional.test.js +0 -245
  349. package/test/e2e/transactional.test.ts +0 -208
  350. package/test/e2e/typed-generator.e2e.test.js +0 -407
  351. package/test/e2e/typed-generator.e2e.test.ts +0 -337
  352. package/test/fixtures/ConstructorParam.sol +0 -23
  353. package/test/fixtures/MultiContracts.sol +0 -37
  354. package/test/fixtures/SimpleStorage.sol +0 -18
  355. package/test/fixtures/StakingContract.abi.json +0 -1
  356. package/test/integration/ipc-provider.test.js +0 -49
  357. package/test/integration/ipc-provider.test.ts +0 -44
  358. package/test/integration/provider.test.js +0 -88
  359. package/test/integration/provider.test.ts +0 -85
  360. package/test/integration/ws-provider.test.js +0 -41
  361. package/test/integration/ws-provider.test.ts +0 -38
  362. package/test/security/abi-decoder-bounds.test.js +0 -122
  363. package/test/security/contract-overrides.test.js +0 -112
  364. package/test/security/generator-injection.test.js +0 -195
  365. package/test/security/malformed-input.test.js +0 -330
  366. package/test/security/malformed-input.test.ts +0 -35
  367. package/test/security/rpc-numeric-bounds.test.js +0 -81
  368. package/test/security/rpc-trust.test.js +0 -202
  369. package/test/unit/_encrypted-output.txt +0 -6
  370. package/test/unit/_log-encrypted-jsons.js +0 -45
  371. package/test/unit/_write-keystore-fixture.js +0 -16
  372. package/test/unit/abi-interface.test.js +0 -110
  373. package/test/unit/abi-interface.test.ts +0 -109
  374. package/test/unit/address-wallet.test.js +0 -923
  375. package/test/unit/address-wallet.test.ts +0 -877
  376. package/test/unit/browser-provider.test.js +0 -85
  377. package/test/unit/browser-provider.test.ts +0 -79
  378. package/test/unit/contract.test.js +0 -85
  379. package/test/unit/contract.test.ts +0 -83
  380. package/test/unit/encoding-units-rlp.test.js +0 -127
  381. package/test/unit/encoding-units-rlp.test.ts +0 -91
  382. package/test/unit/errors.test.js +0 -77
  383. package/test/unit/errors.test.ts +0 -76
  384. package/test/unit/filter-by-blockhash.test.js +0 -55
  385. package/test/unit/filter-by-blockhash.test.ts +0 -54
  386. package/test/unit/fixednumber.test.js +0 -656
  387. package/test/unit/fixednumber.test.ts +0 -660
  388. package/test/unit/fixtures/encrypted-keystores-48-32-36.js +0 -9
  389. package/test/unit/generate-contract-cli.test.js +0 -42
  390. package/test/unit/generate-contract-cli.test.ts +0 -41
  391. package/test/unit/generate-sdk-artifacts-json.test.js +0 -113
  392. package/test/unit/generate-sdk-artifacts-json.test.ts +0 -110
  393. package/test/unit/generator.test.js +0 -149
  394. package/test/unit/generator.test.ts +0 -148
  395. package/test/unit/hashing.test.js +0 -64
  396. package/test/unit/hashing.test.ts +0 -63
  397. package/test/unit/init.test.js +0 -39
  398. package/test/unit/init.test.ts +0 -38
  399. package/test/unit/interface.test.js +0 -56
  400. package/test/unit/interface.test.ts +0 -54
  401. package/test/unit/internal-hex.test.js +0 -81
  402. package/test/unit/internal-hex.test.ts +0 -80
  403. package/test/unit/populate-transaction.test.js +0 -98
  404. package/test/unit/populate-transaction.test.ts +0 -64
  405. package/test/unit/providers.test.js +0 -252
  406. package/test/unit/providers.test.ts +0 -251
  407. package/test/unit/result.test.js +0 -80
  408. package/test/unit/result.test.ts +0 -79
  409. package/test/unit/solidity-types.test.js +0 -49
  410. package/test/unit/solidity-types.test.ts +0 -39
  411. package/test/unit/utils.test.js +0 -57
  412. package/test/unit/utils.test.ts +0 -56
  413. package/test/verbose-logger.js +0 -74
  414. package/tsconfig.build.json +0 -14
@@ -1,656 +0,0 @@
1
- /**
2
- * @testCategory unit
3
- * @blockchainRequired false
4
- * @transactional false
5
- * @description FixedNumber: creation, arithmetic, comparison, rounding, conversion, and error handling
6
- */
7
-
8
- const { describe, it } = require("node:test");
9
- const assert = require("node:assert/strict");
10
- const qc = require("../../index");
11
-
12
- const { FixedNumber } = qc;
13
-
14
- // ---------------------------------------------------------------------------
15
- // Ported from ethers.js v5 test-utils.ts (FixedNumber section)
16
- // ---------------------------------------------------------------------------
17
-
18
- describe("FixedNumber (ethers v5 ported)", () => {
19
- describe("Creation from value", () => {
20
- const tests = [
21
- { value: "0.0", expected: "0.0" },
22
- { value: "-0.0", expected: "0.0" },
23
- { value: "1.0", expected: "1.0" },
24
- { value: "1.00", expected: "1.0" },
25
- { value: "01.00", expected: "1.0" },
26
- { value: 1, expected: "1.0" },
27
- { value: "-1.0", expected: "-1.0" },
28
- { value: "-1.00", expected: "-1.0" },
29
- { value: "-01.00", expected: "-1.0" },
30
- { value: -1, expected: "-1.0" },
31
- ];
32
-
33
- for (const test of tests) {
34
- it(`from(${test.value}) => "${test.expected}"`, () => {
35
- const value = FixedNumber.from(test.value);
36
- assert.equal(value.toString(), test.expected);
37
- });
38
- }
39
- });
40
-
41
- describe("Rounding", () => {
42
- const tests = [
43
- { value: "1.0", round: 1, expected: "1.0" },
44
- { value: "1.4", round: 1, expected: "1.4" },
45
- { value: "1.4", round: 2, expected: "1.4" },
46
- { value: "1.4", round: 0, expected: "1.0" },
47
- { value: "1.5", round: 0, expected: "2.0" },
48
- { value: "1.6", round: 0, expected: "2.0" },
49
- { value: "-1.0", round: 1, expected: "-1.0" },
50
- { value: "-1.4", round: 1, expected: "-1.4" },
51
- { value: "-1.4", round: 2, expected: "-1.4" },
52
- { value: "-1.4", round: 0, expected: "-1.0" },
53
- { value: "-1.5", round: 0, expected: "-2.0" },
54
- { value: "-1.6", round: 0, expected: "-2.0" },
55
- { value: "1.51", round: 1, expected: "1.5" },
56
- { value: "1.55", round: 1, expected: "1.6" },
57
- ];
58
-
59
- for (const test of tests) {
60
- it(`round(${test.value}, ${test.round}) => "${test.expected}"`, () => {
61
- const value = FixedNumber.from(test.value).round(test.round);
62
- assert.equal(value.toString(), test.expected);
63
- });
64
- }
65
- });
66
-
67
- describe("Floor / Ceiling", () => {
68
- const tests = [
69
- { value: "1.0", ceiling: "1.0", floor: "1.0" },
70
- { value: "1.1", ceiling: "2.0", floor: "1.0" },
71
- { value: "1.9", ceiling: "2.0", floor: "1.0" },
72
- { value: "-1.0", ceiling: "-1.0", floor: "-1.0" },
73
- { value: "-1.1", ceiling: "-1.0", floor: "-2.0" },
74
- { value: "-1.9", ceiling: "-1.0", floor: "-2.0" },
75
- ];
76
-
77
- for (const test of tests) {
78
- it(`floor/ceiling(${test.value})`, () => {
79
- const value = FixedNumber.from(test.value);
80
- assert.equal(value.floor().toString(), test.floor);
81
- assert.equal(value.ceiling().toString(), test.ceiling);
82
- });
83
- }
84
- });
85
- });
86
-
87
- // ---------------------------------------------------------------------------
88
- // New v6 API tests
89
- // ---------------------------------------------------------------------------
90
-
91
- describe("FixedNumber (v6 API)", () => {
92
- describe("Properties", () => {
93
- it("exposes format, signed, width, decimals, value", () => {
94
- const f = FixedNumber.fromString("1.5");
95
- assert.equal(f.format, "fixed128x18");
96
- assert.equal(f.signed, true);
97
- assert.equal(f.width, 128);
98
- assert.equal(f.decimals, 18);
99
- assert.equal(typeof f.value, "bigint");
100
- assert.equal(f.value, 1500000000000000000n);
101
- });
102
-
103
- it("unsigned format properties", () => {
104
- const f = FixedNumber.fromString("10", "ufixed32x0");
105
- assert.equal(f.format, "ufixed32x0");
106
- assert.equal(f.signed, false);
107
- assert.equal(f.width, 32);
108
- assert.equal(f.decimals, 0);
109
- });
110
- });
111
-
112
- describe("fromString", () => {
113
- it("parses with custom format", () => {
114
- const f = FixedNumber.fromString("3.14", "fixed128x2");
115
- assert.equal(f.toString(), "3.14");
116
- assert.equal(f.value, 314n);
117
- });
118
-
119
- it("parses zero-decimal format", () => {
120
- const f = FixedNumber.fromString("42", "fixed128x0");
121
- assert.equal(f.toString(), "42");
122
- assert.equal(f.value, 42n);
123
- });
124
-
125
- it("parses unsigned format", () => {
126
- const f = FixedNumber.fromString("255", "ufixed8x0");
127
- assert.equal(f.toString(), "255");
128
- });
129
- });
130
-
131
- describe("fromValue", () => {
132
- it("creates from bigint with decimals", () => {
133
- const f = FixedNumber.fromValue(1500000000000000000n, 18);
134
- assert.equal(f.toString(), "1.5");
135
- });
136
-
137
- it("creates from number", () => {
138
- const f = FixedNumber.fromValue(100, 2, "fixed128x2");
139
- assert.equal(f.toString(), "1.0");
140
- });
141
- });
142
-
143
- describe("fromBytes round-trip", () => {
144
- it("roundtrips through hex bytes", () => {
145
- const f1 = FixedNumber.fromString("42", "ufixed32x0");
146
- const hex = f1.toHexString();
147
- const bytes = Buffer.from(hex.replace(/^0x/, ""), "hex");
148
- const f2 = FixedNumber.fromBytes(bytes, "ufixed32x0");
149
- assert.equal(f2.toString(), "42");
150
- });
151
- });
152
-
153
- describe("from() dispatch", () => {
154
- it("from string", () => {
155
- assert.equal(FixedNumber.from("2.5").toString(), "2.5");
156
- });
157
-
158
- it("from number", () => {
159
- assert.equal(FixedNumber.from(3).toString(), "3.0");
160
- });
161
-
162
- it("from bigint", () => {
163
- assert.equal(FixedNumber.from(5n).toString(), "5.0");
164
- });
165
- });
166
-
167
- describe("Safe arithmetic", () => {
168
- it("add", () => {
169
- const a = FixedNumber.fromString("1.5");
170
- const b = FixedNumber.fromString("2.3");
171
- assert.equal(a.add(b).toString(), "3.8");
172
- });
173
-
174
- it("sub", () => {
175
- const a = FixedNumber.fromString("5.0");
176
- const b = FixedNumber.fromString("2.3");
177
- assert.equal(a.sub(b).toString(), "2.7");
178
- });
179
-
180
- it("mul", () => {
181
- const a = FixedNumber.fromString("2.0");
182
- const b = FixedNumber.fromString("3.5");
183
- assert.equal(a.mul(b).toString(), "7.0");
184
- });
185
-
186
- it("div", () => {
187
- const a = FixedNumber.fromString("7.0");
188
- const b = FixedNumber.fromString("2.0");
189
- assert.equal(a.div(b).toString(), "3.5");
190
- });
191
- });
192
-
193
- describe("Unsafe arithmetic (silent overflow)", () => {
194
- it("addUnsafe wraps on overflow in fixed8x0", () => {
195
- const a = FixedNumber.fromString("127", "fixed8x0");
196
- const b = FixedNumber.fromString("1", "fixed8x0");
197
- const result = a.addUnsafe(b);
198
- assert.equal(typeof result.toString(), "string");
199
- });
200
-
201
- it("subUnsafe wraps on underflow in fixed8x0", () => {
202
- const a = FixedNumber.fromString("-128", "fixed8x0");
203
- const b = FixedNumber.fromString("1", "fixed8x0");
204
- const result = a.subUnsafe(b);
205
- assert.equal(typeof result.toString(), "string");
206
- });
207
- });
208
-
209
- describe("Comparison", () => {
210
- it("cmp returns -1, 0, 1", () => {
211
- const a = FixedNumber.fromString("1.0");
212
- const b = FixedNumber.fromString("2.0");
213
- const c = FixedNumber.fromString("1.0");
214
- assert.equal(a.cmp(b), -1);
215
- assert.equal(b.cmp(a), 1);
216
- assert.equal(a.cmp(c), 0);
217
- });
218
-
219
- it("eq, lt, lte, gt, gte", () => {
220
- const a = FixedNumber.fromString("1.0");
221
- const b = FixedNumber.fromString("2.0");
222
- assert.equal(a.eq(a), true);
223
- assert.equal(a.eq(b), false);
224
- assert.equal(a.lt(b), true);
225
- assert.equal(a.lte(b), true);
226
- assert.equal(a.lte(a), true);
227
- assert.equal(b.gt(a), true);
228
- assert.equal(b.gte(a), true);
229
- assert.equal(b.gte(b), true);
230
- });
231
-
232
- it("cmp across different decimal formats", () => {
233
- const a = FixedNumber.fromString("1.5", "fixed128x2");
234
- const b = FixedNumber.fromString("1.5", "fixed128x18");
235
- assert.equal(a.cmp(b), 0);
236
- });
237
- });
238
-
239
- describe("isZero / isNegative", () => {
240
- it("isZero", () => {
241
- assert.equal(FixedNumber.fromString("0.0").isZero(), true);
242
- assert.equal(FixedNumber.fromString("1.0").isZero(), false);
243
- });
244
-
245
- it("isNegative", () => {
246
- assert.equal(FixedNumber.fromString("-1.0").isNegative(), true);
247
- assert.equal(FixedNumber.fromString("0.0").isNegative(), false);
248
- assert.equal(FixedNumber.fromString("1.0").isNegative(), false);
249
- });
250
- });
251
-
252
- describe("toUnsafeFloat", () => {
253
- it("returns approximate float", () => {
254
- const f = FixedNumber.fromString("3.14");
255
- assert.ok(Math.abs(f.toUnsafeFloat() - 3.14) < 0.001);
256
- });
257
- });
258
-
259
- describe("toFormat", () => {
260
- it("converts between formats", () => {
261
- const f = FixedNumber.fromString("1.5", "fixed128x18");
262
- const g = f.toFormat("fixed128x2");
263
- assert.equal(g.toString(), "1.5");
264
- assert.equal(g.format, "fixed128x2");
265
- });
266
- });
267
-
268
- describe("isFixedNumber", () => {
269
- it("returns true for FixedNumber", () => {
270
- assert.equal(FixedNumber.isFixedNumber(FixedNumber.from("1.0")), true);
271
- });
272
-
273
- it("returns false for non-FixedNumber", () => {
274
- assert.equal(FixedNumber.isFixedNumber("1.0"), false);
275
- assert.equal(FixedNumber.isFixedNumber(1), false);
276
- assert.equal(FixedNumber.isFixedNumber({}), false);
277
- assert.equal(FixedNumber.isFixedNumber(null), false);
278
- });
279
- });
280
-
281
- describe("toHexString", () => {
282
- it("returns hex for unsigned value", () => {
283
- const f = FixedNumber.fromString("255", "ufixed8x0");
284
- assert.equal(f.toHexString(), "0xff");
285
- });
286
-
287
- it("returns hex for positive signed value", () => {
288
- const f = FixedNumber.fromString("1", "fixed8x0");
289
- assert.equal(f.toHexString(), "0x01");
290
- });
291
- });
292
- });
293
-
294
- // ---------------------------------------------------------------------------
295
- // Negative tests -- invalid inputs
296
- // ---------------------------------------------------------------------------
297
-
298
- describe("FixedNumber negative tests -- invalid inputs", () => {
299
- it("fromString rejects empty string", () => {
300
- assert.throws(() => FixedNumber.fromString(""), /invalid/);
301
- });
302
-
303
- it("fromString rejects non-numeric string", () => {
304
- assert.throws(() => FixedNumber.fromString("abc"), /invalid/);
305
- });
306
-
307
- it("fromString rejects multiple decimal points", () => {
308
- assert.throws(() => FixedNumber.fromString("1.2.3"), /invalid/);
309
- });
310
-
311
- it("fromString rejects whitespace-only string", () => {
312
- assert.throws(() => FixedNumber.fromString(" "), /invalid/);
313
- });
314
-
315
- it("fromString rejects too many decimals for format", () => {
316
- assert.throws(() => FixedNumber.fromString("1.123", "fixed128x2"), /too many decimals/i);
317
- });
318
-
319
- it("fromValue rejects NaN", () => {
320
- assert.throws(() => FixedNumber.fromValue(NaN, 0), /invalid/);
321
- });
322
-
323
- it("fromValue rejects Infinity", () => {
324
- assert.throws(() => FixedNumber.fromValue(Infinity, 0), /invalid/);
325
- });
326
-
327
- it("fromValue rejects object", () => {
328
- assert.throws(() => FixedNumber.fromValue({}, 0), /invalid/);
329
- });
330
-
331
- it("from() rejects boolean", () => {
332
- assert.throws(() => FixedNumber.from(true), /invalid/);
333
- });
334
-
335
- it("from() rejects function", () => {
336
- assert.throws(() => FixedNumber.from(() => {}), /invalid/);
337
- });
338
-
339
- it("constructor is guarded", () => {
340
- assert.throws(() => new FixedNumber({}, 0n, {}), /cannot use FixedNumber constructor/);
341
- });
342
- });
343
-
344
- // ---------------------------------------------------------------------------
345
- // Negative tests -- overflow
346
- // ---------------------------------------------------------------------------
347
-
348
- describe("FixedNumber negative tests -- overflow", () => {
349
- it("add throws on signed overflow (127 + 1 in fixed8x0)", () => {
350
- const a = FixedNumber.fromString("127", "fixed8x0");
351
- const b = FixedNumber.fromString("1", "fixed8x0");
352
- assert.throws(() => a.add(b), (e) => e.code === "NUMERIC_FAULT" && e.fault === "overflow");
353
- });
354
-
355
- it("sub throws on signed underflow (-128 - 1 in fixed8x0)", () => {
356
- const a = FixedNumber.fromString("-128", "fixed8x0");
357
- const b = FixedNumber.fromString("1", "fixed8x0");
358
- assert.throws(() => a.sub(b), (e) => e.code === "NUMERIC_FAULT" && e.fault === "overflow");
359
- });
360
-
361
- it("mul throws on overflow", () => {
362
- const a = FixedNumber.fromString("127", "fixed8x0");
363
- const b = FixedNumber.fromString("2", "fixed8x0");
364
- assert.throws(() => a.mul(b), (e) => e.code === "NUMERIC_FAULT" && e.fault === "overflow");
365
- });
366
-
367
- it("unsigned sub throws on 0 - 1 (ufixed8x0)", () => {
368
- const a = FixedNumber.fromString("0", "ufixed8x0");
369
- const b = FixedNumber.fromString("1", "ufixed8x0");
370
- assert.throws(() => a.sub(b), (e) => e.code === "NUMERIC_FAULT" && e.fault === "overflow");
371
- });
372
-
373
- it("fromString throws overflow for 256 in ufixed8x0", () => {
374
- assert.throws(
375
- () => FixedNumber.fromString("256", "ufixed8x0"),
376
- (e) => e.code === "NUMERIC_FAULT" && e.fault === "overflow",
377
- );
378
- });
379
-
380
- it("fromString throws overflow for 128 in fixed8x0", () => {
381
- assert.throws(
382
- () => FixedNumber.fromString("128", "fixed8x0"),
383
- (e) => e.code === "NUMERIC_FAULT" && e.fault === "overflow",
384
- );
385
- });
386
-
387
- it("fromValue throws overflow when scaled value exceeds range", () => {
388
- assert.throws(
389
- () => FixedNumber.fromValue(256n, 0, "ufixed8x0"),
390
- (e) => e.code === "NUMERIC_FAULT" && e.fault === "overflow",
391
- );
392
- });
393
- });
394
-
395
- // ---------------------------------------------------------------------------
396
- // Negative tests -- underflow (precision loss)
397
- // ---------------------------------------------------------------------------
398
-
399
- describe("FixedNumber negative tests -- underflow", () => {
400
- it("mulSignal throws on precision loss", () => {
401
- const a = FixedNumber.fromString("0.1", "fixed128x1");
402
- const b = FixedNumber.fromString("0.1", "fixed128x1");
403
- assert.throws(() => a.mulSignal(b), (e) => e.code === "NUMERIC_FAULT" && e.fault === "underflow");
404
- });
405
-
406
- it("divSignal throws when division is not exact", () => {
407
- const a = FixedNumber.fromString("1.0");
408
- const b = FixedNumber.fromString("3.0");
409
- assert.throws(() => a.divSignal(b), (e) => e.code === "NUMERIC_FAULT" && e.fault === "underflow");
410
- });
411
-
412
- it("mul (non-signal) silently truncates", () => {
413
- const a = FixedNumber.fromString("0.1", "fixed128x1");
414
- const b = FixedNumber.fromString("0.1", "fixed128x1");
415
- const result = a.mul(b);
416
- assert.equal(result.toString(), "0.0");
417
- });
418
-
419
- it("div (non-signal) silently truncates", () => {
420
- const a = FixedNumber.fromString("1.0");
421
- const b = FixedNumber.fromString("3.0");
422
- const result = a.div(b);
423
- assert.equal(typeof result.toString(), "string");
424
- });
425
- });
426
-
427
- // ---------------------------------------------------------------------------
428
- // Negative tests -- division by zero
429
- // ---------------------------------------------------------------------------
430
-
431
- describe("FixedNumber negative tests -- division by zero", () => {
432
- it("div throws on zero divisor", () => {
433
- const a = FixedNumber.fromString("1.0");
434
- const b = FixedNumber.fromString("0.0");
435
- assert.throws(() => a.div(b), (e) => e.code === "NUMERIC_FAULT" && e.fault === "divide-by-zero");
436
- });
437
-
438
- it("divUnsafe throws on zero divisor", () => {
439
- const a = FixedNumber.fromString("1.0");
440
- const b = FixedNumber.fromString("0.0");
441
- assert.throws(() => a.divUnsafe(b), (e) => e.code === "NUMERIC_FAULT" && e.fault === "divide-by-zero");
442
- });
443
-
444
- it("divSignal throws on zero divisor", () => {
445
- const a = FixedNumber.fromString("1.0");
446
- const b = FixedNumber.fromString("0.0");
447
- assert.throws(() => a.divSignal(b), (e) => e.code === "NUMERIC_FAULT" && e.fault === "divide-by-zero");
448
- });
449
- });
450
-
451
- // ---------------------------------------------------------------------------
452
- // Negative tests -- unsigned format rejects negatives
453
- // ---------------------------------------------------------------------------
454
-
455
- describe("FixedNumber negative tests -- unsigned rejects negatives", () => {
456
- it("fromString rejects negative in unsigned format", () => {
457
- assert.throws(
458
- () => FixedNumber.fromString("-1", "ufixed128x18"),
459
- (e) => e.code === "NUMERIC_FAULT" && e.fault === "overflow",
460
- );
461
- });
462
-
463
- it("fromValue rejects negative in unsigned format", () => {
464
- assert.throws(
465
- () => FixedNumber.fromValue(-1n, 0, "ufixed128x18"),
466
- (e) => e.code === "NUMERIC_FAULT" && e.fault === "overflow",
467
- );
468
- });
469
- });
470
-
471
- // ---------------------------------------------------------------------------
472
- // Negative tests -- format parsing
473
- // ---------------------------------------------------------------------------
474
-
475
- describe("FixedNumber negative tests -- format parsing", () => {
476
- it("rejects invalid format string", () => {
477
- assert.throws(() => FixedNumber.fromString("1", "fixd128x18"), /invalid fixed format/);
478
- });
479
-
480
- it("rejects non-byte-aligned width", () => {
481
- assert.throws(() => FixedNumber.fromString("1", "fixed7x0"), /not byte aligned/);
482
- });
483
-
484
- it("rejects decimals > 80", () => {
485
- assert.throws(() => FixedNumber.fromString("1", "fixed128x81"), /too large/);
486
- });
487
-
488
- it("rejects invalid format object (wrong type for signed)", () => {
489
- assert.throws(() => FixedNumber.fromString("1", { signed: "yes" }), /not boolean/);
490
- });
491
-
492
- it("rejects invalid format object (non-byte-aligned width)", () => {
493
- assert.throws(() => FixedNumber.fromString("1", { width: 7 }), /not byte aligned/);
494
- });
495
-
496
- it("rejects invalid format object (decimals too large)", () => {
497
- assert.throws(() => FixedNumber.fromString("1", { decimals: 81 }), /too large/);
498
- });
499
- });
500
-
501
- // ---------------------------------------------------------------------------
502
- // Negative tests -- incompatible format arithmetic
503
- // ---------------------------------------------------------------------------
504
-
505
- describe("FixedNumber negative tests -- incompatible formats", () => {
506
- it("add throws with different formats", () => {
507
- const a = FixedNumber.fromString("1.0", "fixed128x18");
508
- const b = FixedNumber.fromString("1.0", "fixed128x2");
509
- assert.throws(() => a.add(b), /incompatible format/);
510
- });
511
-
512
- it("sub throws with different formats", () => {
513
- const a = FixedNumber.fromString("1.0", "fixed128x18");
514
- const b = FixedNumber.fromString("1.0", "fixed128x2");
515
- assert.throws(() => a.sub(b), /incompatible format/);
516
- });
517
-
518
- it("mul throws with different formats", () => {
519
- const a = FixedNumber.fromString("1.0", "fixed128x18");
520
- const b = FixedNumber.fromString("1.0", "fixed128x2");
521
- assert.throws(() => a.mul(b), /incompatible format/);
522
- });
523
-
524
- it("div throws with different formats", () => {
525
- const a = FixedNumber.fromString("1.0", "fixed128x18");
526
- const b = FixedNumber.fromString("1.0", "fixed128x2");
527
- assert.throws(() => a.div(b), /incompatible format/);
528
- });
529
- });
530
-
531
- // ---------------------------------------------------------------------------
532
- // Boundary condition tests
533
- // ---------------------------------------------------------------------------
534
-
535
- describe("FixedNumber boundary conditions", () => {
536
- describe("fixed8x0 range [-128, 127]", () => {
537
- it("accepts min value -128", () => {
538
- const f = FixedNumber.fromString("-128", "fixed8x0");
539
- assert.equal(f.toString(), "-128");
540
- });
541
-
542
- it("accepts max value 127", () => {
543
- const f = FixedNumber.fromString("127", "fixed8x0");
544
- assert.equal(f.toString(), "127");
545
- });
546
-
547
- it("rejects 128", () => {
548
- assert.throws(() => FixedNumber.fromString("128", "fixed8x0"),
549
- (e) => e.code === "NUMERIC_FAULT");
550
- });
551
-
552
- it("rejects -129", () => {
553
- assert.throws(() => FixedNumber.fromString("-129", "fixed8x0"),
554
- (e) => e.code === "NUMERIC_FAULT");
555
- });
556
- });
557
-
558
- describe("ufixed8x0 range [0, 255]", () => {
559
- it("accepts 0", () => {
560
- assert.equal(FixedNumber.fromString("0", "ufixed8x0").toString(), "0");
561
- });
562
-
563
- it("accepts 255", () => {
564
- assert.equal(FixedNumber.fromString("255", "ufixed8x0").toString(), "255");
565
- });
566
-
567
- it("rejects 256", () => {
568
- assert.throws(() => FixedNumber.fromString("256", "ufixed8x0"),
569
- (e) => e.code === "NUMERIC_FAULT");
570
- });
571
-
572
- it("rejects -1", () => {
573
- assert.throws(() => FixedNumber.fromString("-1", "ufixed8x0"),
574
- (e) => e.code === "NUMERIC_FAULT");
575
- });
576
- });
577
-
578
- describe("fixed16x2 range [-327.68, 327.67]", () => {
579
- it("accepts 327.67", () => {
580
- assert.equal(FixedNumber.fromString("327.67", "fixed16x2").toString(), "327.67");
581
- });
582
-
583
- it("accepts -327.68", () => {
584
- assert.equal(FixedNumber.fromString("-327.68", "fixed16x2").toString(), "-327.68");
585
- });
586
-
587
- it("rejects 327.68", () => {
588
- assert.throws(() => FixedNumber.fromString("327.68", "fixed16x2"),
589
- (e) => e.code === "NUMERIC_FAULT");
590
- });
591
-
592
- it("arithmetic at edges: 327.67 + 0.01 overflows", () => {
593
- const a = FixedNumber.fromString("327.67", "fixed16x2");
594
- const b = FixedNumber.fromString("0.01", "fixed16x2");
595
- assert.throws(() => a.add(b), (e) => e.code === "NUMERIC_FAULT");
596
- });
597
- });
598
-
599
- describe("zero-decimal format (fixed128x0)", () => {
600
- it("toString does not append .0", () => {
601
- const f = FixedNumber.fromString("42", "fixed128x0");
602
- assert.equal(f.toString(), "42");
603
- });
604
- });
605
-
606
- describe("high decimals (fixed256x40)", () => {
607
- it("construction works", () => {
608
- const f = FixedNumber.fromString("1.0", "fixed256x40");
609
- assert.equal(f.decimals, 40);
610
- assert.ok(f.toString().startsWith("1.0"));
611
- });
612
- });
613
-
614
- describe("rounding edge cases", () => {
615
- it("round(0) on 0.5 rounds up", () => {
616
- assert.equal(FixedNumber.from("0.5").round(0).toString(), "1.0");
617
- });
618
-
619
- it("round(0) on -0.5 rounds away from zero", () => {
620
- assert.equal(FixedNumber.from("-0.5").round(0).toString(), "-1.0");
621
- });
622
- });
623
-
624
- describe("floor/ceiling at exact integers", () => {
625
- it("floor of integer returns same value", () => {
626
- const f = FixedNumber.from("5.0");
627
- assert.equal(f.floor().toString(), "5.0");
628
- });
629
-
630
- it("ceiling of integer returns same value", () => {
631
- const f = FixedNumber.from("5.0");
632
- assert.equal(f.ceiling().toString(), "5.0");
633
- });
634
- });
635
-
636
- describe("toFormat precision loss", () => {
637
- it("throws when converting to lower precision with data loss", () => {
638
- const f = FixedNumber.fromString("1.23", "fixed128x18");
639
- assert.throws(() => f.toFormat("fixed128x1"), /too many decimals/i);
640
- });
641
- });
642
-
643
- describe("large values near 2^127 - 1 for fixed128x0", () => {
644
- it("accepts 2^127 - 1", () => {
645
- const maxVal = (2n ** 127n - 1n).toString();
646
- const f = FixedNumber.fromString(maxVal, "fixed128x0");
647
- assert.equal(f.toString(), maxVal);
648
- });
649
-
650
- it("rejects 2^127", () => {
651
- const overVal = (2n ** 127n).toString();
652
- assert.throws(() => FixedNumber.fromString(overVal, "fixed128x0"),
653
- (e) => e.code === "NUMERIC_FAULT");
654
- });
655
- });
656
- });