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