type-plus 6.8.0 → 7.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 (539) hide show
  1. package/README.md +1053 -356
  2. package/cjs/array/{array.d.ts → array.at.d.ts} +4 -14
  3. package/cjs/array/array.at.d.ts.map +1 -0
  4. package/cjs/array/{pad_left.js → array.at.js} +1 -1
  5. package/cjs/array/array.at.js.map +1 -0
  6. package/cjs/array/array.concat.d.ts +13 -0
  7. package/cjs/array/array.concat.d.ts.map +1 -0
  8. package/cjs/array/array.concat.js +3 -0
  9. package/cjs/array/array.concat.js.map +1 -0
  10. package/cjs/array/array.entries.d.ts +17 -0
  11. package/cjs/array/array.entries.d.ts.map +1 -0
  12. package/cjs/array/array.entries.js +3 -0
  13. package/cjs/array/array.entries.js.map +1 -0
  14. package/cjs/array/array.find.d.ts +21 -0
  15. package/cjs/array/array.find.d.ts.map +1 -0
  16. package/cjs/array/{find_first.js → array.find.js} +1 -1
  17. package/cjs/array/array.find.js.map +1 -0
  18. package/cjs/array/array.find_last.d.ts +17 -0
  19. package/cjs/array/array.find_last.d.ts.map +1 -0
  20. package/cjs/array/array.find_last.js +3 -0
  21. package/cjs/array/array.find_last.js.map +1 -0
  22. package/cjs/array/array.reverse.d.ts +2 -0
  23. package/cjs/array/array.reverse.d.ts.map +1 -0
  24. package/cjs/array/array.reverse.js +3 -0
  25. package/cjs/array/array.reverse.js.map +1 -0
  26. package/cjs/array/array.some.d.ts +29 -0
  27. package/cjs/array/array.some.d.ts.map +1 -0
  28. package/cjs/array/array.some.js +3 -0
  29. package/cjs/array/array.some.js.map +1 -0
  30. package/cjs/array/array_index.d.ts +8 -8
  31. package/cjs/array/array_index.d.ts.map +1 -1
  32. package/cjs/array/array_plus.d.ts +9 -1
  33. package/cjs/array/array_plus.d.ts.map +1 -1
  34. package/cjs/array/array_plus.split_at.d.ts +30 -0
  35. package/cjs/array/array_plus.split_at.d.ts.map +1 -0
  36. package/cjs/array/array_plus.split_at.js +3 -0
  37. package/cjs/array/array_plus.split_at.js.map +1 -0
  38. package/cjs/array/drop.d.ts +2 -2
  39. package/cjs/array/drop.d.ts.map +1 -1
  40. package/cjs/array/index.d.ts +4 -5
  41. package/cjs/array/index.d.ts.map +1 -1
  42. package/cjs/array/index.js +4 -5
  43. package/cjs/array/index.js.map +1 -1
  44. package/cjs/array/pad_start.d.ts +32 -0
  45. package/cjs/array/pad_start.d.ts.map +1 -0
  46. package/cjs/array/{find_last.js → pad_start.js} +1 -1
  47. package/cjs/array/pad_start.js.map +1 -0
  48. package/cjs/assertion/assert_type.d.ts +3 -0
  49. package/cjs/assertion/assert_type.d.ts.map +1 -1
  50. package/cjs/assertion/assert_type.js +3 -0
  51. package/cjs/assertion/assert_type.js.map +1 -1
  52. package/cjs/bigint/cast.d.ts +10 -0
  53. package/cjs/bigint/cast.d.ts.map +1 -0
  54. package/cjs/{array/some.js → bigint/cast.js} +1 -1
  55. package/cjs/bigint/cast.js.map +1 -0
  56. package/cjs/equal/equal.d.ts +51 -3
  57. package/cjs/equal/equal.d.ts.map +1 -1
  58. package/cjs/functional/Maybe.d.ts +2 -2
  59. package/cjs/functional/Maybe.d.ts.map +1 -1
  60. package/cjs/index.d.ts +16 -7
  61. package/cjs/index.d.ts.map +1 -1
  62. package/cjs/index.js +6 -1
  63. package/cjs/index.js.map +1 -1
  64. package/cjs/math/abs.d.ts +6 -0
  65. package/cjs/math/abs.d.ts.map +1 -0
  66. package/cjs/math/{Add.js → abs.js} +1 -1
  67. package/cjs/math/abs.js.map +1 -0
  68. package/cjs/math/add.d.ts +7 -0
  69. package/cjs/math/add.d.ts.map +1 -0
  70. package/cjs/math/{Max.js → add.js} +1 -1
  71. package/cjs/math/add.js.map +1 -0
  72. package/cjs/math/greater_than.d.ts +4 -0
  73. package/cjs/math/greater_than.d.ts.map +1 -0
  74. package/cjs/math/greater_than.js +3 -0
  75. package/cjs/math/greater_than.js.map +1 -0
  76. package/cjs/math/index.d.ts +6 -6
  77. package/cjs/math/index.d.ts.map +1 -1
  78. package/cjs/math/math_plus.d.ts +5 -0
  79. package/cjs/math/math_plus.d.ts.map +1 -0
  80. package/cjs/math/math_plus.js +3 -0
  81. package/cjs/math/math_plus.js.map +1 -0
  82. package/cjs/math/math_plus.to_negative.d.ts +13 -0
  83. package/cjs/math/math_plus.to_negative.d.ts.map +1 -0
  84. package/cjs/math/math_plus.to_negative.js +3 -0
  85. package/cjs/math/math_plus.to_negative.js.map +1 -0
  86. package/cjs/math/max.d.ts +4 -0
  87. package/cjs/math/max.d.ts.map +1 -0
  88. package/cjs/math/{Abs.js → max.js} +1 -1
  89. package/cjs/math/max.js.map +1 -0
  90. package/cjs/math/multiply.d.ts +6 -0
  91. package/cjs/math/multiply.d.ts.map +1 -0
  92. package/cjs/{array/array.js → math/multiply.js} +1 -1
  93. package/cjs/math/multiply.js.map +1 -0
  94. package/cjs/math/numeric_struct.d.ts +1469 -0
  95. package/cjs/math/numeric_struct.d.ts.map +1 -0
  96. package/cjs/math/numeric_struct.js +3 -0
  97. package/cjs/math/numeric_struct.js.map +1 -0
  98. package/cjs/math/subtract.d.ts +7 -0
  99. package/cjs/math/subtract.d.ts.map +1 -0
  100. package/cjs/math/subtract.js +3 -0
  101. package/cjs/math/subtract.js.map +1 -0
  102. package/cjs/nominal/brand.js +2 -2
  103. package/cjs/nominal/brand.js.map +1 -1
  104. package/cjs/nominal/flavor.js +2 -2
  105. package/cjs/nominal/flavor.js.map +1 -1
  106. package/cjs/number/cast.d.ts +10 -0
  107. package/cjs/number/cast.d.ts.map +1 -0
  108. package/cjs/number/cast.js +3 -0
  109. package/cjs/number/cast.js.map +1 -0
  110. package/cjs/number/number_array.d.ts +0 -2
  111. package/cjs/number/number_array.d.ts.map +1 -1
  112. package/cjs/number/number_array.js +14 -1
  113. package/cjs/number/number_array.js.map +1 -1
  114. package/cjs/number/number_plus.d.ts +4 -5
  115. package/cjs/number/number_plus.d.ts.map +1 -1
  116. package/cjs/number/strict_number_type.d.ts +12 -0
  117. package/cjs/number/strict_number_type.d.ts.map +1 -1
  118. package/cjs/numeric/cast.d.ts +27 -0
  119. package/cjs/numeric/cast.d.ts.map +1 -0
  120. package/cjs/numeric/cast.js +3 -0
  121. package/cjs/numeric/cast.js.map +1 -0
  122. package/{esm/number → cjs/numeric}/integer.d.ts +2 -0
  123. package/cjs/numeric/integer.d.ts.map +1 -0
  124. package/cjs/{number → numeric}/integer.js.map +1 -1
  125. package/cjs/numeric/negative.d.ts.map +1 -0
  126. package/cjs/{number → numeric}/negative.js.map +1 -1
  127. package/cjs/numeric/numeric_plus.d.ts +5 -0
  128. package/cjs/numeric/numeric_plus.d.ts.map +1 -0
  129. package/cjs/numeric/numeric_plus.js +3 -0
  130. package/cjs/numeric/numeric_plus.js.map +1 -0
  131. package/cjs/numeric/numeric_type.d.ts.map +1 -0
  132. package/cjs/{number → numeric}/numeric_type.js.map +1 -1
  133. package/cjs/{number → numeric}/positive.d.ts +2 -2
  134. package/cjs/numeric/positive.d.ts.map +1 -0
  135. package/cjs/{number → numeric}/positive.js.map +1 -1
  136. package/cjs/object/ANotB.d.ts +3 -3
  137. package/cjs/object/ANotB.d.ts.map +1 -1
  138. package/cjs/object/Partial.d.ts +6 -0
  139. package/cjs/object/Partial.d.ts.map +1 -1
  140. package/cjs/object/Required.d.ts +4 -0
  141. package/cjs/object/Required.d.ts.map +1 -1
  142. package/cjs/object/index.d.ts +1 -1
  143. package/cjs/object/index.d.ts.map +1 -1
  144. package/cjs/object/object_type.d.ts +1 -1
  145. package/cjs/object/split.d.ts +3 -1
  146. package/cjs/object/split.d.ts.map +1 -1
  147. package/cjs/object/split.js.map +1 -1
  148. package/cjs/predicates/CanAssign.d.ts +35 -0
  149. package/cjs/predicates/CanAssign.d.ts.map +1 -1
  150. package/cjs/predicates/CanAssign.js.map +1 -1
  151. package/cjs/predicates/Extends.d.ts +2 -2
  152. package/cjs/predicates/Extends.d.ts.map +1 -1
  153. package/cjs/predicates/index.d.ts +0 -1
  154. package/cjs/predicates/index.d.ts.map +1 -1
  155. package/cjs/predicates/index.js +0 -1
  156. package/cjs/predicates/index.js.map +1 -1
  157. package/cjs/testing/stub.d.ts.map +1 -1
  158. package/cjs/testing/stub.js +4 -3
  159. package/cjs/testing/stub.js.map +1 -1
  160. package/cjs/testing/test_type.d.ts +125 -50
  161. package/cjs/testing/test_type.d.ts.map +1 -1
  162. package/cjs/testing/test_type.js +4 -141
  163. package/cjs/testing/test_type.js.map +1 -1
  164. package/cjs/tuple/create_tuple.d.ts +28 -0
  165. package/cjs/tuple/create_tuple.d.ts.map +1 -0
  166. package/cjs/{array → tuple}/create_tuple.js.map +1 -1
  167. package/cjs/tuple/tuple_plus.d.ts +2 -0
  168. package/cjs/tuple/tuple_plus.d.ts.map +1 -0
  169. package/cjs/tuple/tuple_plus.js +18 -0
  170. package/cjs/tuple/tuple_plus.js.map +1 -0
  171. package/cjs/tuple/tuple_plus.pad_start.d.ts +22 -0
  172. package/cjs/tuple/tuple_plus.pad_start.d.ts.map +1 -0
  173. package/cjs/tuple/tuple_plus.pad_start.js +3 -0
  174. package/cjs/tuple/tuple_plus.pad_start.js.map +1 -0
  175. package/cjs/{predicates/isType.d.ts → type-guard/is_type.d.ts} +5 -3
  176. package/cjs/type-guard/is_type.d.ts.map +1 -0
  177. package/cjs/{predicates/isType.js → type-guard/is_type.js} +8 -2
  178. package/cjs/type-guard/is_type.js.map +1 -0
  179. package/esm/array/{array.d.ts → array.at.d.ts} +4 -14
  180. package/esm/array/array.at.d.ts.map +1 -0
  181. package/esm/array/array.at.js +2 -0
  182. package/esm/array/array.at.js.map +1 -0
  183. package/esm/array/array.concat.d.ts +13 -0
  184. package/esm/array/array.concat.d.ts.map +1 -0
  185. package/esm/array/array.concat.js +2 -0
  186. package/esm/array/array.concat.js.map +1 -0
  187. package/esm/array/array.entries.d.ts +17 -0
  188. package/esm/array/array.entries.d.ts.map +1 -0
  189. package/esm/array/array.entries.js +2 -0
  190. package/esm/array/array.entries.js.map +1 -0
  191. package/esm/array/array.find.d.ts +21 -0
  192. package/esm/array/array.find.d.ts.map +1 -0
  193. package/esm/array/array.find.js +2 -0
  194. package/esm/array/array.find.js.map +1 -0
  195. package/esm/array/array.find_last.d.ts +17 -0
  196. package/esm/array/array.find_last.d.ts.map +1 -0
  197. package/esm/array/array.find_last.js +2 -0
  198. package/esm/array/array.find_last.js.map +1 -0
  199. package/esm/array/array.reverse.d.ts +2 -0
  200. package/esm/array/array.reverse.d.ts.map +1 -0
  201. package/esm/array/array.reverse.js +2 -0
  202. package/esm/array/array.reverse.js.map +1 -0
  203. package/esm/array/array.some.d.ts +29 -0
  204. package/esm/array/array.some.d.ts.map +1 -0
  205. package/esm/array/array.some.js +2 -0
  206. package/esm/array/array.some.js.map +1 -0
  207. package/esm/array/array_index.d.ts +8 -8
  208. package/esm/array/array_index.d.ts.map +1 -1
  209. package/esm/array/array_plus.d.ts +9 -1
  210. package/esm/array/array_plus.d.ts.map +1 -1
  211. package/esm/array/array_plus.split_at.d.ts +30 -0
  212. package/esm/array/array_plus.split_at.d.ts.map +1 -0
  213. package/esm/array/array_plus.split_at.js +2 -0
  214. package/esm/array/array_plus.split_at.js.map +1 -0
  215. package/esm/array/drop.d.ts +2 -2
  216. package/esm/array/drop.d.ts.map +1 -1
  217. package/esm/array/index.d.ts +4 -5
  218. package/esm/array/index.d.ts.map +1 -1
  219. package/esm/array/index.js +4 -5
  220. package/esm/array/index.js.map +1 -1
  221. package/esm/array/pad_start.d.ts +32 -0
  222. package/esm/array/pad_start.d.ts.map +1 -0
  223. package/esm/array/pad_start.js +2 -0
  224. package/esm/array/pad_start.js.map +1 -0
  225. package/esm/assertion/assert_type.d.ts +3 -0
  226. package/esm/assertion/assert_type.d.ts.map +1 -1
  227. package/esm/assertion/assert_type.js +3 -0
  228. package/esm/assertion/assert_type.js.map +1 -1
  229. package/esm/bigint/cast.d.ts +10 -0
  230. package/esm/bigint/cast.d.ts.map +1 -0
  231. package/esm/bigint/cast.js +2 -0
  232. package/esm/bigint/cast.js.map +1 -0
  233. package/esm/equal/equal.d.ts +51 -3
  234. package/esm/equal/equal.d.ts.map +1 -1
  235. package/esm/functional/Maybe.d.ts +2 -2
  236. package/esm/functional/Maybe.d.ts.map +1 -1
  237. package/esm/index.d.ts +16 -7
  238. package/esm/index.d.ts.map +1 -1
  239. package/esm/index.js +5 -0
  240. package/esm/index.js.map +1 -1
  241. package/esm/math/abs.d.ts +6 -0
  242. package/esm/math/abs.d.ts.map +1 -0
  243. package/esm/math/abs.js +2 -0
  244. package/esm/math/abs.js.map +1 -0
  245. package/esm/math/add.d.ts +7 -0
  246. package/esm/math/add.d.ts.map +1 -0
  247. package/esm/math/add.js +2 -0
  248. package/esm/math/add.js.map +1 -0
  249. package/esm/math/greater_than.d.ts +4 -0
  250. package/esm/math/greater_than.d.ts.map +1 -0
  251. package/esm/math/greater_than.js +2 -0
  252. package/esm/math/greater_than.js.map +1 -0
  253. package/esm/math/index.d.ts +6 -6
  254. package/esm/math/index.d.ts.map +1 -1
  255. package/esm/math/math_plus.d.ts +5 -0
  256. package/esm/math/math_plus.d.ts.map +1 -0
  257. package/esm/math/math_plus.js +2 -0
  258. package/esm/math/math_plus.js.map +1 -0
  259. package/esm/math/math_plus.to_negative.d.ts +13 -0
  260. package/esm/math/math_plus.to_negative.d.ts.map +1 -0
  261. package/esm/math/math_plus.to_negative.js +2 -0
  262. package/esm/math/math_plus.to_negative.js.map +1 -0
  263. package/esm/math/max.d.ts +4 -0
  264. package/esm/math/max.d.ts.map +1 -0
  265. package/esm/math/max.js +2 -0
  266. package/esm/math/max.js.map +1 -0
  267. package/esm/math/multiply.d.ts +6 -0
  268. package/esm/math/multiply.d.ts.map +1 -0
  269. package/esm/math/multiply.js +2 -0
  270. package/esm/math/multiply.js.map +1 -0
  271. package/esm/math/numeric_struct.d.ts +1469 -0
  272. package/esm/math/numeric_struct.d.ts.map +1 -0
  273. package/esm/math/numeric_struct.js +2 -0
  274. package/esm/math/numeric_struct.js.map +1 -0
  275. package/esm/math/subtract.d.ts +7 -0
  276. package/esm/math/subtract.d.ts.map +1 -0
  277. package/esm/math/subtract.js +2 -0
  278. package/esm/math/subtract.js.map +1 -0
  279. package/esm/nominal/brand.js +1 -1
  280. package/esm/nominal/brand.js.map +1 -1
  281. package/esm/nominal/flavor.js +1 -1
  282. package/esm/nominal/flavor.js.map +1 -1
  283. package/esm/number/cast.d.ts +10 -0
  284. package/esm/number/cast.d.ts.map +1 -0
  285. package/esm/number/cast.js +2 -0
  286. package/esm/number/cast.js.map +1 -0
  287. package/esm/number/number_array.d.ts +1 -2
  288. package/esm/number/number_array.d.ts.map +1 -1
  289. package/esm/number/number_array.js +14 -0
  290. package/esm/number/number_array.js.map +1 -1
  291. package/esm/number/number_plus.d.ts +4 -5
  292. package/esm/number/number_plus.d.ts.map +1 -1
  293. package/esm/number/strict_number_type.d.ts +12 -0
  294. package/esm/number/strict_number_type.d.ts.map +1 -1
  295. package/esm/numeric/cast.d.ts +27 -0
  296. package/esm/numeric/cast.d.ts.map +1 -0
  297. package/esm/numeric/cast.js +2 -0
  298. package/esm/numeric/cast.js.map +1 -0
  299. package/{cjs/number → esm/numeric}/integer.d.ts +2 -0
  300. package/esm/numeric/integer.d.ts.map +1 -0
  301. package/esm/{number → numeric}/integer.js.map +1 -1
  302. package/esm/numeric/negative.d.ts.map +1 -0
  303. package/esm/{number → numeric}/negative.js.map +1 -1
  304. package/esm/numeric/numeric_plus.d.ts +5 -0
  305. package/esm/numeric/numeric_plus.d.ts.map +1 -0
  306. package/esm/numeric/numeric_plus.js +2 -0
  307. package/esm/numeric/numeric_plus.js.map +1 -0
  308. package/esm/numeric/numeric_type.d.ts.map +1 -0
  309. package/esm/{number → numeric}/numeric_type.js.map +1 -1
  310. package/esm/{number → numeric}/positive.d.ts +2 -2
  311. package/esm/numeric/positive.d.ts.map +1 -0
  312. package/esm/{number → numeric}/positive.js.map +1 -1
  313. package/esm/object/ANotB.d.ts +3 -3
  314. package/esm/object/ANotB.d.ts.map +1 -1
  315. package/esm/object/Partial.d.ts +6 -0
  316. package/esm/object/Partial.d.ts.map +1 -1
  317. package/esm/object/Required.d.ts +4 -0
  318. package/esm/object/Required.d.ts.map +1 -1
  319. package/esm/object/index.d.ts +1 -1
  320. package/esm/object/index.d.ts.map +1 -1
  321. package/esm/object/object_type.d.ts +1 -1
  322. package/esm/object/split.d.ts +3 -1
  323. package/esm/object/split.d.ts.map +1 -1
  324. package/esm/object/split.js.map +1 -1
  325. package/esm/predicates/CanAssign.d.ts +35 -0
  326. package/esm/predicates/CanAssign.d.ts.map +1 -1
  327. package/esm/predicates/CanAssign.js.map +1 -1
  328. package/esm/predicates/Extends.d.ts +2 -2
  329. package/esm/predicates/Extends.d.ts.map +1 -1
  330. package/esm/predicates/index.d.ts +0 -1
  331. package/esm/predicates/index.d.ts.map +1 -1
  332. package/esm/predicates/index.js +0 -1
  333. package/esm/predicates/index.js.map +1 -1
  334. package/esm/testing/stub.d.ts.map +1 -1
  335. package/esm/testing/stub.js +4 -3
  336. package/esm/testing/stub.js.map +1 -1
  337. package/esm/testing/test_type.d.ts +125 -50
  338. package/esm/testing/test_type.d.ts.map +1 -1
  339. package/esm/testing/test_type.js +4 -141
  340. package/esm/testing/test_type.js.map +1 -1
  341. package/esm/tuple/create_tuple.d.ts +28 -0
  342. package/esm/tuple/create_tuple.d.ts.map +1 -0
  343. package/esm/{array → tuple}/create_tuple.js.map +1 -1
  344. package/esm/tuple/tuple_plus.d.ts +2 -0
  345. package/esm/tuple/tuple_plus.d.ts.map +1 -0
  346. package/esm/tuple/tuple_plus.js +2 -0
  347. package/esm/tuple/tuple_plus.js.map +1 -0
  348. package/esm/tuple/tuple_plus.pad_start.d.ts +22 -0
  349. package/esm/tuple/tuple_plus.pad_start.d.ts.map +1 -0
  350. package/esm/tuple/tuple_plus.pad_start.js +2 -0
  351. package/esm/tuple/tuple_plus.pad_start.js.map +1 -0
  352. package/esm/{predicates/isType.d.ts → type-guard/is_type.d.ts} +5 -3
  353. package/esm/type-guard/is_type.d.ts.map +1 -0
  354. package/esm/{predicates/isType.js → type-guard/is_type.js} +8 -2
  355. package/esm/type-guard/is_type.js.map +1 -0
  356. package/package.json +3 -3
  357. package/ts/array/{array.ts → array.at.ts} +10 -15
  358. package/ts/array/array.concat.ts +12 -0
  359. package/ts/array/array.entries.ts +24 -0
  360. package/ts/array/array.find.ts +32 -0
  361. package/ts/array/array.find_last.ts +27 -0
  362. package/ts/array/array.reverse.ts +16 -0
  363. package/ts/array/array.some.ts +53 -0
  364. package/ts/array/array_index.ts +16 -10
  365. package/ts/array/array_plus.split_at.ts +47 -0
  366. package/ts/array/array_plus.ts +9 -1
  367. package/ts/array/drop.ts +2 -2
  368. package/ts/array/index.ts +4 -5
  369. package/ts/array/pad_start.ts +43 -0
  370. package/ts/array/readme.md +184 -4
  371. package/ts/assertion/assert_type.ts +6 -0
  372. package/ts/assertion/readme.md +132 -1
  373. package/ts/bigint/cast.ts +13 -0
  374. package/ts/bigint/readme.md +17 -17
  375. package/ts/equal/equal.ts +53 -3
  376. package/ts/equal/readme.md +30 -16
  377. package/ts/functional/Maybe.ts +2 -2
  378. package/ts/index.ts +22 -24
  379. package/ts/math/README.md +97 -7
  380. package/ts/math/abs.ts +18 -0
  381. package/ts/math/add.ts +14 -0
  382. package/ts/math/greater_than.ts +12 -0
  383. package/ts/math/index.ts +7 -6
  384. package/ts/math/math_plus.to_negative.ts +22 -0
  385. package/ts/math/math_plus.ts +4 -0
  386. package/ts/math/max.ts +13 -0
  387. package/ts/math/multiply.ts +12 -0
  388. package/ts/math/numeric_struct.ts +658 -0
  389. package/ts/math/subtract.ts +14 -0
  390. package/ts/nominal/brand.ts +1 -1
  391. package/ts/nominal/flavor.ts +1 -1
  392. package/ts/number/cast.ts +17 -0
  393. package/ts/number/number_array.ts +14 -14
  394. package/ts/number/number_plus.ts +6 -6
  395. package/ts/number/readme.md +0 -108
  396. package/ts/number/strict_number_type.ts +12 -0
  397. package/ts/numeric/cast.ts +28 -0
  398. package/ts/{number → numeric}/integer.ts +2 -0
  399. package/ts/numeric/numeric_plus.ts +12 -0
  400. package/ts/{number → numeric}/positive.ts +2 -2
  401. package/ts/numeric/readme.md +115 -0
  402. package/ts/object/ANotB.ts +3 -3
  403. package/ts/object/Partial.ts +5 -0
  404. package/ts/object/Required.ts +4 -0
  405. package/ts/object/index.ts +1 -1
  406. package/ts/object/object_type.ts +1 -1
  407. package/ts/object/split.ts +3 -1
  408. package/ts/predicates/CanAssign.ts +46 -0
  409. package/ts/predicates/Extends.ts +2 -2
  410. package/ts/predicates/index.ts +0 -1
  411. package/ts/testing/stub.ts +7 -4
  412. package/ts/testing/test_type.ts +131 -88
  413. package/ts/tuple/create_tuple.ts +42 -0
  414. package/ts/tuple/readme.md +11 -10
  415. package/ts/tuple/tuple_plus.pad_start.ts +42 -0
  416. package/ts/tuple/tuple_plus.ts +1 -0
  417. package/ts/{predicates/isType.ts → type-guard/is_type.ts} +11 -3
  418. package/ts/type-guard/readme.md +37 -0
  419. package/cjs/array/array.d.ts.map +0 -1
  420. package/cjs/array/array.js.map +0 -1
  421. package/cjs/array/create_tuple.d.ts +0 -11
  422. package/cjs/array/create_tuple.d.ts.map +0 -1
  423. package/cjs/array/find_first.d.ts +0 -6
  424. package/cjs/array/find_first.d.ts.map +0 -1
  425. package/cjs/array/find_first.js.map +0 -1
  426. package/cjs/array/find_last.d.ts +0 -2
  427. package/cjs/array/find_last.d.ts.map +0 -1
  428. package/cjs/array/find_last.js.map +0 -1
  429. package/cjs/array/pad_left.d.ts +0 -6
  430. package/cjs/array/pad_left.d.ts.map +0 -1
  431. package/cjs/array/pad_left.js.map +0 -1
  432. package/cjs/array/some.d.ts +0 -8
  433. package/cjs/array/some.d.ts.map +0 -1
  434. package/cjs/array/some.js.map +0 -1
  435. package/cjs/math/Abs.d.ts +0 -3
  436. package/cjs/math/Abs.d.ts.map +0 -1
  437. package/cjs/math/Abs.js.map +0 -1
  438. package/cjs/math/Add.d.ts +0 -19
  439. package/cjs/math/Add.d.ts.map +0 -1
  440. package/cjs/math/Add.js.map +0 -1
  441. package/cjs/math/Digit.d.ts +0 -100
  442. package/cjs/math/Digit.d.ts.map +0 -1
  443. package/cjs/math/Digit.js +0 -3
  444. package/cjs/math/Digit.js.map +0 -1
  445. package/cjs/math/GreaterThan.d.ts +0 -13
  446. package/cjs/math/GreaterThan.d.ts.map +0 -1
  447. package/cjs/math/GreaterThan.js +0 -3
  448. package/cjs/math/GreaterThan.js.map +0 -1
  449. package/cjs/math/Max.d.ts +0 -4
  450. package/cjs/math/Max.d.ts.map +0 -1
  451. package/cjs/math/Max.js.map +0 -1
  452. package/cjs/math/Subtract.d.ts +0 -19
  453. package/cjs/math/Subtract.d.ts.map +0 -1
  454. package/cjs/math/Subtract.js +0 -3
  455. package/cjs/math/Subtract.js.map +0 -1
  456. package/cjs/number/integer.d.ts.map +0 -1
  457. package/cjs/number/negative.d.ts.map +0 -1
  458. package/cjs/number/numeric_type.d.ts.map +0 -1
  459. package/cjs/number/positive.d.ts.map +0 -1
  460. package/cjs/predicates/isType.d.ts.map +0 -1
  461. package/cjs/predicates/isType.js.map +0 -1
  462. package/esm/array/array.d.ts.map +0 -1
  463. package/esm/array/array.js +0 -2
  464. package/esm/array/array.js.map +0 -1
  465. package/esm/array/create_tuple.d.ts +0 -11
  466. package/esm/array/create_tuple.d.ts.map +0 -1
  467. package/esm/array/find_first.d.ts +0 -6
  468. package/esm/array/find_first.d.ts.map +0 -1
  469. package/esm/array/find_first.js +0 -2
  470. package/esm/array/find_first.js.map +0 -1
  471. package/esm/array/find_last.d.ts +0 -2
  472. package/esm/array/find_last.d.ts.map +0 -1
  473. package/esm/array/find_last.js +0 -2
  474. package/esm/array/find_last.js.map +0 -1
  475. package/esm/array/pad_left.d.ts +0 -6
  476. package/esm/array/pad_left.d.ts.map +0 -1
  477. package/esm/array/pad_left.js +0 -2
  478. package/esm/array/pad_left.js.map +0 -1
  479. package/esm/array/some.d.ts +0 -8
  480. package/esm/array/some.d.ts.map +0 -1
  481. package/esm/array/some.js +0 -2
  482. package/esm/array/some.js.map +0 -1
  483. package/esm/math/Abs.d.ts +0 -3
  484. package/esm/math/Abs.d.ts.map +0 -1
  485. package/esm/math/Abs.js +0 -2
  486. package/esm/math/Abs.js.map +0 -1
  487. package/esm/math/Add.d.ts +0 -19
  488. package/esm/math/Add.d.ts.map +0 -1
  489. package/esm/math/Add.js +0 -2
  490. package/esm/math/Add.js.map +0 -1
  491. package/esm/math/Digit.d.ts +0 -100
  492. package/esm/math/Digit.d.ts.map +0 -1
  493. package/esm/math/Digit.js +0 -2
  494. package/esm/math/Digit.js.map +0 -1
  495. package/esm/math/GreaterThan.d.ts +0 -13
  496. package/esm/math/GreaterThan.d.ts.map +0 -1
  497. package/esm/math/GreaterThan.js +0 -2
  498. package/esm/math/GreaterThan.js.map +0 -1
  499. package/esm/math/Max.d.ts +0 -4
  500. package/esm/math/Max.d.ts.map +0 -1
  501. package/esm/math/Max.js +0 -2
  502. package/esm/math/Max.js.map +0 -1
  503. package/esm/math/Subtract.d.ts +0 -19
  504. package/esm/math/Subtract.d.ts.map +0 -1
  505. package/esm/math/Subtract.js +0 -2
  506. package/esm/math/Subtract.js.map +0 -1
  507. package/esm/number/integer.d.ts.map +0 -1
  508. package/esm/number/negative.d.ts.map +0 -1
  509. package/esm/number/numeric_type.d.ts.map +0 -1
  510. package/esm/number/positive.d.ts.map +0 -1
  511. package/esm/predicates/isType.d.ts.map +0 -1
  512. package/esm/predicates/isType.js.map +0 -1
  513. package/ts/array/create_tuple.ts +0 -17
  514. package/ts/array/find_first.ts +0 -16
  515. package/ts/array/find_last.ts +0 -11
  516. package/ts/array/pad_left.ts +0 -16
  517. package/ts/array/some.ts +0 -33
  518. package/ts/math/Abs.ts +0 -7
  519. package/ts/math/Add.ts +0 -58
  520. package/ts/math/Digit.ts +0 -152
  521. package/ts/math/GreaterThan.ts +0 -55
  522. package/ts/math/Max.ts +0 -10
  523. package/ts/math/Subtract.ts +0 -57
  524. /package/cjs/{number → numeric}/integer.js +0 -0
  525. /package/cjs/{number → numeric}/negative.d.ts +0 -0
  526. /package/cjs/{number → numeric}/negative.js +0 -0
  527. /package/cjs/{number → numeric}/numeric_type.d.ts +0 -0
  528. /package/cjs/{number → numeric}/numeric_type.js +0 -0
  529. /package/cjs/{number → numeric}/positive.js +0 -0
  530. /package/cjs/{array → tuple}/create_tuple.js +0 -0
  531. /package/esm/{number → numeric}/integer.js +0 -0
  532. /package/esm/{number → numeric}/negative.d.ts +0 -0
  533. /package/esm/{number → numeric}/negative.js +0 -0
  534. /package/esm/{number → numeric}/numeric_type.d.ts +0 -0
  535. /package/esm/{number → numeric}/numeric_type.js +0 -0
  536. /package/esm/{number → numeric}/positive.js +0 -0
  537. /package/esm/{array → tuple}/create_tuple.js +0 -0
  538. /package/ts/{number → numeric}/negative.ts +0 -0
  539. /package/ts/{number → numeric}/numeric_type.ts +0 -0
@@ -0,0 +1,1469 @@
1
+ import type { Tail } from '../array/tail.js';
2
+ import type { PadStart } from '../tuple/tuple_plus.pad_start.js';
3
+ import type { Add as NumericAdd } from './add.js';
4
+ import type { ToNegative } from './math_plus.to_negative.js';
5
+ /**
6
+ * Internal numeric representation to perform math operations.
7
+ *
8
+ * NumericStruct: `[Type, DigitsStruct]`
9
+ * DigitsStruct: `[Sign, Digits, Exponent]`
10
+ *
11
+ * It is similar to the floating point representation with some minor differences.
12
+ *
13
+ * @template Type Type of the value, either `number` or `bigint`.
14
+ * It captures the original type of the value,
15
+ * so that at the end of the operation,
16
+ * the value can be adjusted accordingly.
17
+ *
18
+ * @template Sign Sign of the value, either `+` or `-`.
19
+ *
20
+ * @template Digits Digits of the value.
21
+ * It is a tuple of digits,
22
+ * where each digits can range from 0 to 9 during input,
23
+ * and range from -10 to 89 during operation.
24
+ * The max 89 comes from multiplication:
25
+ *
26
+ * ```
27
+ * 99 * 9
28
+ * => [[ 9, 9], 0]
29
+ * * [ [9], 0]
30
+ * => [[ 81, 81], 0]
31
+ * => [[ 89, 1], 0]
32
+ * => [[ 8, 9, 1], 0]
33
+ * ```
34
+ *
35
+ * While -10 comes from subtraction:
36
+ *
37
+ * ```
38
+ * 100 - 99 = 1
39
+ * => [[ 1, 0, 0], 0]
40
+ * - [[ 9, 9], 0]
41
+ * => [[ 1, -9, -9], 0]
42
+ * => [[ 1,-10, 1], 0] // here, as in intermediate step
43
+ * => [[ 0, 0, 1], 0]
44
+ * => [[1], 0]
45
+ * => 1
46
+ * ```
47
+ *
48
+ *
49
+ * Unlike floating point numbers, the digits length is not limited.
50
+ *
51
+ * @template Exponent Exponent is the negative exponent of the number.
52
+ *
53
+ * ```
54
+ * 1.23 = 123e^-2 = [[1, 2, 3], 2]
55
+ * 0.0123 = 123e^-4 = [[1, 2, 3], 4]
56
+ * ```
57
+ *
58
+ * There are 2 kinds of `NumericStruct`:
59
+ * - Normalized: The `NumericStruct` is clean and can be converted to/from `number` or `bigint`
60
+ * - Not normalized: The `DigitsStruct` within the `NumericStruct` is normalized,
61
+ * but may need to convert between `number` and `bigint`.\
62
+ * e.g. bigint + float => float (if possible), number + number => bigint (too big)
63
+ *
64
+ * During operations, the `DigitsStruct` can be not normalized,
65
+ * but each operation should always normalize the `DigitsStruct` before returning.
66
+ * Each operations assume the input `DigitsStruct` is normalized.
67
+ *
68
+ * All operations are performed in similar way:
69
+ *
70
+ * value -> NormalizedNumericStruct -> operation(NormalizedDigitsStruct) -> NormalizedNumericStruct -> Value
71
+ *
72
+ * This allows the operations to be composable.
73
+ * */
74
+ export type NumericStruct = ['bigint' | 'number', DigitsStruct];
75
+ export type TYPE = 0;
76
+ export type DIGITS_STRUCT = 1;
77
+ export declare namespace NumericStruct {
78
+ /**
79
+ * Creates a `NumericStruct` from number or bigint `N`.
80
+ */
81
+ type FromNumeric<N extends number | bigint, Fail = never> = N extends number ? number extends N ? Fail : ['number', DigitsStruct.FromNumber<N>] : N extends bigint ? bigint extends N ? Fail : ['bigint', DigitsStruct.FromBigint<N>] : never;
82
+ /**
83
+ * Converts a `NumericStruct` to a number or bigint.
84
+ *
85
+ * It includes the normalization of the `NumericStruct`.
86
+ */
87
+ type ToNumeric<M extends NumericStruct> = DigitsStruct.ToString<M[DIGITS_STRUCT]> extends infer S extends string ? M[TYPE] extends 'bigint' ? StringToBigint<S, StringToNumber<S, `The value '${S}' cannot be represented as bigint or number`>> : StringToNumber<S, StringToBigint<S, `The value '${S}' cannot be represented as bigint or number`>> : never;
88
+ type Add<A extends NumericStruct, B extends NumericStruct> = [
89
+ A[TYPE],
90
+ DigitsStruct.Add<A[DIGITS_STRUCT], B[DIGITS_STRUCT]>
91
+ ];
92
+ type Subtract<A extends NumericStruct, B extends NumericStruct> = [
93
+ A[TYPE],
94
+ DigitsStruct.Subtract<A[DIGITS_STRUCT], B[DIGITS_STRUCT]>
95
+ ];
96
+ type Multiply<A extends NumericStruct, B extends NumericStruct> = [
97
+ A[TYPE],
98
+ DigitsStruct.Multiply<A[DIGITS_STRUCT], B[DIGITS_STRUCT]>
99
+ ];
100
+ }
101
+ type StringToBigint<S extends string, Fail> = S extends `${infer N extends bigint}` ? N : Fail;
102
+ export type StringToNumber<S extends string, Fail> = S extends `${infer N extends number}` ? number extends N ? Fail : N : Fail;
103
+ export type DigitsStruct = [Sign: '+' | '-', Digits: number[], Exponent: number];
104
+ export type SIGN = 0;
105
+ export type DIGITS = 1;
106
+ export type EXPONENT = 2;
107
+ export declare namespace DigitsStruct {
108
+ /**
109
+ * Creates a `DigitsStruct` from number `N`.
110
+ *
111
+ * @template N Number to create `DigitsStruct` from.
112
+ */
113
+ export type FromNumber<N extends number> = `${N}` extends `-${infer R}` ? R extends `${infer W}.${infer F}` ? [DigitArray.FromString<W>, DigitArray.FromString<F>] extends [
114
+ infer WA extends number[],
115
+ infer FA extends number[]
116
+ ] ? ['-', DigitArray.TrimLeadingZeros<[...WA, ...FA]>, FA['length']] : never : ['-', DigitArray.FromString<R>, 0] : `${N}` extends `${infer W}.${infer F}` ? [DigitArray.FromString<W>, DigitArray.FromString<F>] extends [
117
+ infer WA extends number[],
118
+ infer FA extends number[]
119
+ ] ? ['+', DigitArray.TrimLeadingZeros<[...WA, ...FA]>, FA['length']] : never : ['+', DigitArray.FromString<`${N}`>, 0];
120
+ /**
121
+ * Creates a `DigitsStruct` from bigint `N`.
122
+ *
123
+ * @template N Number to create `DigitsStruct` from.
124
+ */
125
+ export type FromBigint<N extends bigint> = `${N}` extends `-${infer R}` ? ['-', DigitArray.FromString<R>, 0] : ['+', DigitArray.FromString<`${N}`>, 0];
126
+ /**
127
+ * Converts a `DigitsStruct` to string.
128
+ *
129
+ * @template D A normalized `DigitsStruct`.
130
+ */
131
+ export type ToString<D extends DigitsStruct> = (PadStart<D[DIGITS], D[EXPONENT], 0> extends infer Padded extends number[] ? Padded['length'] extends D[EXPONENT] ? DigitArray.ToString<[0, '.', ...DigitArray.TrimTrailingZeros<Padded>]> : SplitFloat<Padded, D[EXPONENT]> extends [infer W extends number[], infer F extends number[]] ? F extends [] ? DigitArray.ToString<W> : DigitArray.ToString<[...W, '.', ...DigitArray.TrimTrailingZeros<F>]> : never : never) extends infer R ? R extends '0' ? R : R extends string ? D[SIGN] extends '-' ? `-${R}` : R : never : never;
132
+ /**
133
+ * Splits DigitArray into the whole number and the fractional part.
134
+ *
135
+ * @note cannot use `ArrayPlus.SplitAt` as it causes infinite loop.
136
+ */
137
+ type SplitFloat<A extends number[], I extends number, F extends number[] = []> = I extends 0 ? [A, []] : F['length'] extends I ? [A, F] : A extends [...infer H extends number[], infer T extends number] ? SplitFloat<H, I, [T, ...F]> : never;
138
+ /**
139
+ * Normalizes a `DigitsStruct`.
140
+ *
141
+ * The normalization two two things:
142
+ *
143
+ * - if the first digit is negative, it will flip the sign.
144
+ * - carry digits if the digit is negative or greater than 9.
145
+ */
146
+ export type Normalize<N extends DigitsStruct, R extends DigitsStruct = ['+', [], 0]> = `${N[DIGITS][0]}` extends `-${number}` ? Normalize<FlipSign<N>, R> : [N[SIGN], DigitArray.CarryDigits<N[DIGITS]>, N[EXPONENT]];
147
+ type FlipSign<D extends DigitsStruct, I extends number[] = D[DIGITS], R extends number[] = []> = I extends [] ? D[SIGN] extends '-' ? ['+', R, D[EXPONENT]] : ['-', R, D[EXPONENT]] : I extends [infer H extends number, ...infer T extends number[]] ? FlipSign<D, T, [...R, Digit.FlipSign<H>]> : never;
148
+ /**
149
+ * Add `A` and `B`.
150
+ *
151
+ * @template A A normalized `DigitsStruct`.
152
+ * @template B B normalized `DigitsStruct`.
153
+ */
154
+ export type Add<A extends DigitsStruct, B extends DigitsStruct> = Balance<A, B> extends [
155
+ infer BA extends DigitsStruct,
156
+ infer BB extends DigitsStruct
157
+ ] ? [BA[SIGN], BB[SIGN]] extends ['+', '+'] ? Normalize<['+', DigitArray.Add<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]> : [BA[SIGN], BB[SIGN]] extends ['+', '-'] ? Normalize<['+', DigitArray.Subtract<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]> : [BA[SIGN], BB[SIGN]] extends ['-', '+'] ? Normalize<['+', DigitArray.Subtract<BB[DIGITS], BA[DIGITS]>, BB[EXPONENT]]> : [BA[SIGN], BB[SIGN]] extends ['-', '-'] ? Normalize<['-', DigitArray.Add<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]> : never : never;
158
+ export type Subtract<A extends DigitsStruct, B extends DigitsStruct> = Balance<A, B> extends [
159
+ infer BA extends DigitsStruct,
160
+ infer BB extends DigitsStruct
161
+ ] ? [BA[SIGN], BB[SIGN]] extends ['+', '+'] ? Normalize<['+', DigitArray.Subtract<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]> : [BA[SIGN], BB[SIGN]] extends ['+', '-'] ? Normalize<['+', DigitArray.Add<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]> : [BA[SIGN], BB[SIGN]] extends ['-', '+'] ? Normalize<['-', DigitArray.Add<BB[DIGITS], BA[DIGITS]>, BA[EXPONENT]]> : [BA[SIGN], BB[SIGN]] extends ['-', '-'] ? Normalize<['-', DigitArray.Subtract<BA[DIGITS], BB[DIGITS]>, BA[EXPONENT]]> : never : never;
162
+ export type Multiply<A extends DigitsStruct, B extends DigitsStruct> = NumericAdd<A[EXPONENT], B[EXPONENT]> extends infer Exp extends number ? [A[SIGN], B[SIGN]] extends ['+', '+'] ? Normalize<['+', DigitArray.Multiply<A[DIGITS], B[DIGITS]>, Exp]> : [A[SIGN], B[SIGN]] extends ['+', '-'] ? Normalize<['-', DigitArray.Multiply<A[DIGITS], B[DIGITS]>, Exp]> : [A[SIGN], B[SIGN]] extends ['-', '+'] ? Normalize<['-', DigitArray.Multiply<B[DIGITS], A[DIGITS]>, Exp]> : [A[SIGN], B[SIGN]] extends ['-', '-'] ? Normalize<['+', DigitArray.Multiply<A[DIGITS], B[DIGITS]>, Exp]> : never : never;
163
+ /**
164
+ * Balance the two structs for add/subtract.
165
+ */
166
+ export type Balance<A extends DigitsStruct, B extends DigitsStruct> = GetBalancePadding<A[EXPONENT], B[EXPONENT]> extends [infer Pads extends number[], infer Longer] ? Longer extends 'A' ? [A, [B[SIGN], DigitArray.TrimLeadingZeros<[...B[DIGITS], ...Pads]>, A[EXPONENT]]] : [[A[SIGN], DigitArray.TrimLeadingZeros<[...A[DIGITS], ...Pads]>, B[EXPONENT]], B] : never;
167
+ type GetBalancePadding<A extends number, B extends number, C extends number[] = [], R extends number[] = []> = A extends B ? [[], 'A'] : R extends [] ? C['length'] extends A ? GetBalancePadding<A, B, [0, ...C], [0]> : C['length'] extends B ? GetBalancePadding<A, B, [0, ...C], [0, ...R]> : GetBalancePadding<A, B, [0, ...C], []> : C['length'] extends A ? [R, 'A'] : C['length'] extends B ? [R, 'B'] : GetBalancePadding<A, B, [0, ...C], [0, ...R]>;
168
+ export {};
169
+ }
170
+ export declare namespace DigitArray {
171
+ export type FromString<S extends string> = S extends `1${infer L}` ? [1, ...FromString<L>] : S extends `2${infer L}` ? [2, ...FromString<L>] : S extends `3${infer L}` ? [3, ...FromString<L>] : S extends `4${infer L}` ? [4, ...FromString<L>] : S extends `5${infer L}` ? [5, ...FromString<L>] : S extends `6${infer L}` ? [6, ...FromString<L>] : S extends `7${infer L}` ? [7, ...FromString<L>] : S extends `8${infer L}` ? [8, ...FromString<L>] : S extends `9${infer L}` ? [9, ...FromString<L>] : S extends `0${infer L}` ? [0, ...FromString<L>] : S extends `-1${infer L}` ? [-1, ...FromString<L>] : S extends `-2${infer L}` ? [-2, ...FromString<L>] : S extends `-3${infer L}` ? [-3, ...FromString<L>] : S extends `-4${infer L}` ? [-4, ...FromString<L>] : S extends `-5${infer L}` ? [-5, ...FromString<L>] : S extends `-6${infer L}` ? [-6, ...FromString<L>] : S extends `-7${infer L}` ? [-7, ...FromString<L>] : S extends `-8${infer L}` ? [-8, ...FromString<L>] : S extends `-9${infer L}` ? [-9, ...FromString<L>] : S extends `-0${infer L}` ? [-0, ...FromString<L>] : [];
172
+ export type ToString<A extends Array<number | string>> = number extends A['length'] ? '' : A['length'] extends 0 ? '' : `${A[0]}${ToString<Tail<A>>}`;
173
+ export type TrimTrailingZeros<T extends number[]> = T extends [0] ? T : T extends [...infer Tail extends number[], 0] ? TrimTrailingZeros<Tail> : T;
174
+ export type Add<A extends number[], B extends number[], R extends number[] = []> = A extends [] ? B extends [] ? R : B extends [...infer BH extends number[], infer BL extends number] ? Add<[], BH, [BL, ...R]> : never : B extends [] ? A extends [...infer AH extends number[], infer AL extends number] ? Add<AH, [], [AL, ...R]> : never : [A, B] extends [
175
+ [
176
+ ...infer AH extends number[],
177
+ infer AL extends number
178
+ ],
179
+ [
180
+ ...infer BH extends number[],
181
+ infer BL extends number
182
+ ]
183
+ ] ? Add<AH, BH, [Digit.Add<AL, BL>, ...R]> : never;
184
+ export type Subtract<A extends number[], B extends number[], R extends number[] = []> = A extends [] ? B extends [] ? TrimLeadingZeros<R> : B extends [...infer BH extends number[], infer BL extends number] ? Subtract<[], BH, [ToNegative<BL>, ...R]> : never : B extends [] ? A extends [...infer AH extends number[], infer AL extends number] ? Subtract<AH, [], [AL, ...R]> : never : [A, B] extends [
185
+ [
186
+ ...infer AH extends number[],
187
+ infer AL extends number
188
+ ],
189
+ [
190
+ ...infer BH extends number[],
191
+ infer BL extends number
192
+ ]
193
+ ] ? Subtract<AH, BH, [Digit.Subtract<AL, BL>, ...R]> : never;
194
+ export type Multiply<A extends number[], B extends number[], R extends number[][] = []> = B extends [] ? RecursiveAdd<R> : B extends [infer Head extends number, ...infer Tail extends number[]] ? Multiply<A, Tail, [...R, CarryDigits<MultiplyArray<A, Head, Zeros<Tail['length']>>>]> : never;
195
+ type Zeros<N extends number, R extends number[] = []> = R['length'] extends N ? R : Zeros<N, [0, ...R]>;
196
+ type MultiplyArray<A extends number[], B extends number, Pad extends number[], R extends number[] = []> = B extends 0 ? [0] : B extends 1 ? [...A, ...Pad] : A extends [] ? [...R, ...Pad] : A extends [infer H extends number, ...infer T extends number[]] ? MultiplyArray<T, B, Pad, [...R, Digit.Multiply<H, B>]> : never;
197
+ /**
198
+ * Recursively add digit arrays.
199
+ *
200
+ * This is used in multiplication.
201
+ */
202
+ type RecursiveAdd<E extends number[][], R extends number[] = []> = E extends [] ? R : E extends [infer H extends number[], ...infer T extends number[][]] ? RecursiveAdd<T, CarryDigits<Add<R, H>>> : never;
203
+ export type CarryDigits<N extends number[], R extends number[] = []> = N extends [] ? TrimLeadingZeros<R> : N extends [infer Tail extends number] ? `${Tail}` extends `${infer T1 extends number}${infer T2 extends number}` ? CarryDigits<[], [T1, T2, ...R]> : `${Tail}` extends `-${infer T1 extends number}${infer T2 extends number}` ? `-${T1}` extends `${infer NT extends number}` ? CarryDigits<[], [NT, T2, ...R]> : never : CarryDigits<[], [Tail, ...R]> : N extends [infer Head extends number, infer Tail extends number] ? `${Tail}` extends `${infer T1 extends number}${infer T2 extends number}` ? CarryDigits<[Digit.Add<Head, T1>], [T2, ...R]> : `${Tail}` extends `-${infer T1 extends number}${infer T2 extends number}` ? `-${T1}` extends `${infer NT extends number}` ? CarryDigits<[Digit.Add<Head, NT>], [T2, ...R]> : never : `${Tail}` extends `-${number}` ? CarryDigits<[Digit.Add<Head, -1>], [Digit.Plus10[Tail], ...R]> : CarryDigits<[Head], [Tail, ...R]> : N extends [...infer Heads extends number[], infer Head extends number, infer Tail extends number] ? `${Tail}` extends `${infer T1 extends number}${infer T2 extends number}` ? CarryDigits<[...Heads, Digit.Add<Head, T1>], [T2, ...R]> : `${Tail}` extends `-${infer T1 extends number}${infer T2 extends number}` ? `-${T1}` extends `${infer NT extends number}` ? CarryDigits<[...Heads, Digit.Add<Head, NT>], [T2, ...R]> : never : `${Tail}` extends `-${number}` ? CarryDigits<[...Heads, Digit.Add<Head, -1>], [Digit.Plus10[Tail], ...R]> : CarryDigits<[...Heads, Head], [Tail, ...R]> : never;
204
+ export {};
205
+ }
206
+ export declare namespace Digit {
207
+ /**
208
+ * Adds two `Digit`.
209
+ *
210
+ * add: A: 0 - 9, B: 0 - 9
211
+ * normalize: [81, 81] -> [81 + 8, 1]
212
+ */
213
+ export type Add<A extends number, B extends number> = `${A}` extends `-${infer AD extends number}` ? `${B}` extends `-${infer BD extends number}` ? ToNegative<PositiveEntryAdd<AD, BD>> : Subtract<B, AD> : `${B}` extends `-${infer BD extends number}` ? Subtract<A, BD> : PositiveEntryAdd<A, B>;
214
+ export type FlipSign<T extends number> = T extends 0 ? 0 : `${T}` extends `-${infer R extends number}` ? R : `-${T}` extends `${infer R extends number}` ? R : never;
215
+ type PositiveEntryAdd<A extends number, B extends number> = [
216
+ [
217
+ 0,
218
+ 1,
219
+ 2,
220
+ 3,
221
+ 4,
222
+ 5,
223
+ 6,
224
+ 7,
225
+ 8,
226
+ 9
227
+ ],
228
+ [
229
+ 1,
230
+ 2,
231
+ 3,
232
+ 4,
233
+ 5,
234
+ 6,
235
+ 7,
236
+ 8,
237
+ 9,
238
+ 10
239
+ ],
240
+ [
241
+ 2,
242
+ 3,
243
+ 4,
244
+ 5,
245
+ 6,
246
+ 7,
247
+ 8,
248
+ 9,
249
+ 10,
250
+ 11
251
+ ],
252
+ [
253
+ 3,
254
+ 4,
255
+ 5,
256
+ 6,
257
+ 7,
258
+ 8,
259
+ 9,
260
+ 10,
261
+ 11,
262
+ 12
263
+ ],
264
+ [
265
+ 4,
266
+ 5,
267
+ 6,
268
+ 7,
269
+ 8,
270
+ 9,
271
+ 10,
272
+ 11,
273
+ 12,
274
+ 13
275
+ ],
276
+ [
277
+ 5,
278
+ 6,
279
+ 7,
280
+ 8,
281
+ 9,
282
+ 10,
283
+ 11,
284
+ 12,
285
+ 13,
286
+ 14
287
+ ],
288
+ [
289
+ 6,
290
+ 7,
291
+ 8,
292
+ 9,
293
+ 10,
294
+ 11,
295
+ 12,
296
+ 13,
297
+ 14,
298
+ 15
299
+ ],
300
+ [
301
+ 7,
302
+ 8,
303
+ 9,
304
+ 10,
305
+ 11,
306
+ 12,
307
+ 13,
308
+ 14,
309
+ 15,
310
+ 16
311
+ ],
312
+ [
313
+ 8,
314
+ 9,
315
+ 10,
316
+ 11,
317
+ 12,
318
+ 13,
319
+ 14,
320
+ 15,
321
+ 16,
322
+ 17
323
+ ],
324
+ [
325
+ 9,
326
+ 10,
327
+ 11,
328
+ 12,
329
+ 13,
330
+ 14,
331
+ 15,
332
+ 16,
333
+ 17,
334
+ 18
335
+ ],
336
+ [
337
+ 10,
338
+ 11,
339
+ 12,
340
+ 13,
341
+ 14,
342
+ 15,
343
+ 16,
344
+ 17,
345
+ 18,
346
+ 19
347
+ ],
348
+ [
349
+ 11,
350
+ 12,
351
+ 13,
352
+ 14,
353
+ 15,
354
+ 16,
355
+ 17,
356
+ 18,
357
+ 19,
358
+ 20
359
+ ],
360
+ [
361
+ 12,
362
+ 13,
363
+ 14,
364
+ 15,
365
+ 16,
366
+ 17,
367
+ 18,
368
+ 19,
369
+ 20,
370
+ 21
371
+ ],
372
+ [
373
+ 13,
374
+ 14,
375
+ 15,
376
+ 16,
377
+ 17,
378
+ 18,
379
+ 19,
380
+ 20,
381
+ 21,
382
+ 22
383
+ ],
384
+ [
385
+ 14,
386
+ 15,
387
+ 16,
388
+ 17,
389
+ 18,
390
+ 19,
391
+ 20,
392
+ 21,
393
+ 22,
394
+ 23
395
+ ],
396
+ [
397
+ 15,
398
+ 16,
399
+ 17,
400
+ 18,
401
+ 19,
402
+ 20,
403
+ 21,
404
+ 22,
405
+ 23,
406
+ 24
407
+ ],
408
+ [
409
+ 16,
410
+ 17,
411
+ 18,
412
+ 19,
413
+ 20,
414
+ 21,
415
+ 22,
416
+ 23,
417
+ 24,
418
+ 25
419
+ ],
420
+ [
421
+ 17,
422
+ 18,
423
+ 19,
424
+ 20,
425
+ 21,
426
+ 22,
427
+ 23,
428
+ 24,
429
+ 25,
430
+ 26
431
+ ],
432
+ [
433
+ 18,
434
+ 19,
435
+ 20,
436
+ 21,
437
+ 22,
438
+ 23,
439
+ 24,
440
+ 25,
441
+ 26,
442
+ 27
443
+ ],
444
+ [
445
+ 19,
446
+ 20,
447
+ 21,
448
+ 22,
449
+ 23,
450
+ 24,
451
+ 25,
452
+ 26,
453
+ 27,
454
+ 28
455
+ ],
456
+ [
457
+ 20,
458
+ 21,
459
+ 22,
460
+ 23,
461
+ 24,
462
+ 25,
463
+ 26,
464
+ 27,
465
+ 28,
466
+ 29
467
+ ],
468
+ [
469
+ 21,
470
+ 22,
471
+ 23,
472
+ 24,
473
+ 25,
474
+ 26,
475
+ 27,
476
+ 28,
477
+ 29,
478
+ 30
479
+ ],
480
+ [
481
+ 22,
482
+ 23,
483
+ 24,
484
+ 25,
485
+ 26,
486
+ 27,
487
+ 28,
488
+ 29,
489
+ 30,
490
+ 31
491
+ ],
492
+ [
493
+ 23,
494
+ 24,
495
+ 25,
496
+ 26,
497
+ 27,
498
+ 28,
499
+ 29,
500
+ 30,
501
+ 31,
502
+ 32
503
+ ],
504
+ [
505
+ 24,
506
+ 25,
507
+ 26,
508
+ 27,
509
+ 28,
510
+ 29,
511
+ 30,
512
+ 31,
513
+ 32,
514
+ 33
515
+ ],
516
+ [
517
+ 25,
518
+ 26,
519
+ 27,
520
+ 28,
521
+ 29,
522
+ 30,
523
+ 31,
524
+ 32,
525
+ 33,
526
+ 34
527
+ ],
528
+ [
529
+ 26,
530
+ 27,
531
+ 28,
532
+ 29,
533
+ 30,
534
+ 31,
535
+ 32,
536
+ 33,
537
+ 34,
538
+ 35
539
+ ],
540
+ [
541
+ 27,
542
+ 28,
543
+ 29,
544
+ 30,
545
+ 31,
546
+ 32,
547
+ 33,
548
+ 34,
549
+ 35,
550
+ 36
551
+ ],
552
+ [
553
+ 28,
554
+ 29,
555
+ 30,
556
+ 31,
557
+ 32,
558
+ 33,
559
+ 34,
560
+ 35,
561
+ 36,
562
+ 37
563
+ ],
564
+ [
565
+ 29,
566
+ 30,
567
+ 31,
568
+ 32,
569
+ 33,
570
+ 34,
571
+ 35,
572
+ 36,
573
+ 37,
574
+ 38
575
+ ],
576
+ [
577
+ 30,
578
+ 31,
579
+ 32,
580
+ 33,
581
+ 34,
582
+ 35,
583
+ 36,
584
+ 37,
585
+ 38,
586
+ 39
587
+ ],
588
+ [
589
+ 31,
590
+ 32,
591
+ 33,
592
+ 34,
593
+ 35,
594
+ 36,
595
+ 37,
596
+ 38,
597
+ 39,
598
+ 40
599
+ ],
600
+ [
601
+ 32,
602
+ 33,
603
+ 34,
604
+ 35,
605
+ 36,
606
+ 37,
607
+ 38,
608
+ 39,
609
+ 40,
610
+ 41
611
+ ],
612
+ [
613
+ 33,
614
+ 34,
615
+ 35,
616
+ 36,
617
+ 37,
618
+ 38,
619
+ 39,
620
+ 40,
621
+ 41,
622
+ 42
623
+ ],
624
+ [
625
+ 34,
626
+ 35,
627
+ 36,
628
+ 37,
629
+ 38,
630
+ 39,
631
+ 40,
632
+ 41,
633
+ 42,
634
+ 43
635
+ ],
636
+ [
637
+ 35,
638
+ 36,
639
+ 37,
640
+ 38,
641
+ 39,
642
+ 40,
643
+ 41,
644
+ 42,
645
+ 43,
646
+ 44
647
+ ],
648
+ [
649
+ 36,
650
+ 37,
651
+ 38,
652
+ 39,
653
+ 40,
654
+ 41,
655
+ 42,
656
+ 43,
657
+ 44,
658
+ 45
659
+ ],
660
+ [
661
+ 37,
662
+ 38,
663
+ 39,
664
+ 40,
665
+ 41,
666
+ 42,
667
+ 43,
668
+ 44,
669
+ 45,
670
+ 46
671
+ ],
672
+ [
673
+ 38,
674
+ 39,
675
+ 40,
676
+ 41,
677
+ 42,
678
+ 43,
679
+ 44,
680
+ 45,
681
+ 46,
682
+ 47
683
+ ],
684
+ [
685
+ 39,
686
+ 40,
687
+ 41,
688
+ 42,
689
+ 43,
690
+ 44,
691
+ 45,
692
+ 46,
693
+ 47,
694
+ 48
695
+ ],
696
+ [
697
+ 40,
698
+ 41,
699
+ 42,
700
+ 43,
701
+ 44,
702
+ 45,
703
+ 46,
704
+ 47,
705
+ 48,
706
+ 49
707
+ ],
708
+ [
709
+ 41,
710
+ 42,
711
+ 43,
712
+ 44,
713
+ 45,
714
+ 46,
715
+ 47,
716
+ 48,
717
+ 49,
718
+ 50
719
+ ],
720
+ [
721
+ 42,
722
+ 43,
723
+ 44,
724
+ 45,
725
+ 46,
726
+ 47,
727
+ 48,
728
+ 49,
729
+ 50,
730
+ 51
731
+ ],
732
+ [
733
+ 43,
734
+ 44,
735
+ 45,
736
+ 46,
737
+ 47,
738
+ 48,
739
+ 49,
740
+ 50,
741
+ 51,
742
+ 52
743
+ ],
744
+ [
745
+ 44,
746
+ 45,
747
+ 46,
748
+ 47,
749
+ 48,
750
+ 49,
751
+ 50,
752
+ 51,
753
+ 52,
754
+ 53
755
+ ],
756
+ [
757
+ 45,
758
+ 46,
759
+ 47,
760
+ 48,
761
+ 49,
762
+ 50,
763
+ 51,
764
+ 52,
765
+ 53,
766
+ 54
767
+ ],
768
+ [
769
+ 46,
770
+ 47,
771
+ 48,
772
+ 49,
773
+ 50,
774
+ 51,
775
+ 52,
776
+ 53,
777
+ 54,
778
+ 55
779
+ ],
780
+ [
781
+ 47,
782
+ 48,
783
+ 49,
784
+ 50,
785
+ 51,
786
+ 52,
787
+ 53,
788
+ 54,
789
+ 55,
790
+ 56
791
+ ],
792
+ [
793
+ 48,
794
+ 49,
795
+ 50,
796
+ 51,
797
+ 52,
798
+ 53,
799
+ 54,
800
+ 55,
801
+ 56,
802
+ 57
803
+ ],
804
+ [
805
+ 49,
806
+ 50,
807
+ 51,
808
+ 52,
809
+ 53,
810
+ 54,
811
+ 55,
812
+ 56,
813
+ 57,
814
+ 58
815
+ ],
816
+ [
817
+ 50,
818
+ 51,
819
+ 52,
820
+ 53,
821
+ 54,
822
+ 55,
823
+ 56,
824
+ 57,
825
+ 58,
826
+ 59
827
+ ],
828
+ [
829
+ 51,
830
+ 52,
831
+ 53,
832
+ 54,
833
+ 55,
834
+ 56,
835
+ 57,
836
+ 58,
837
+ 59,
838
+ 60
839
+ ],
840
+ [
841
+ 52,
842
+ 53,
843
+ 54,
844
+ 55,
845
+ 56,
846
+ 57,
847
+ 58,
848
+ 59,
849
+ 60,
850
+ 61
851
+ ],
852
+ [
853
+ 53,
854
+ 54,
855
+ 55,
856
+ 56,
857
+ 57,
858
+ 58,
859
+ 59,
860
+ 60,
861
+ 61,
862
+ 62
863
+ ],
864
+ [
865
+ 54,
866
+ 55,
867
+ 56,
868
+ 57,
869
+ 58,
870
+ 59,
871
+ 60,
872
+ 61,
873
+ 62,
874
+ 63
875
+ ],
876
+ [
877
+ 55,
878
+ 56,
879
+ 57,
880
+ 58,
881
+ 59,
882
+ 60,
883
+ 61,
884
+ 62,
885
+ 63,
886
+ 64
887
+ ],
888
+ [
889
+ 56,
890
+ 57,
891
+ 58,
892
+ 59,
893
+ 60,
894
+ 61,
895
+ 62,
896
+ 63,
897
+ 64,
898
+ 65
899
+ ],
900
+ [
901
+ 57,
902
+ 58,
903
+ 59,
904
+ 60,
905
+ 61,
906
+ 62,
907
+ 63,
908
+ 64,
909
+ 65,
910
+ 66
911
+ ],
912
+ [
913
+ 58,
914
+ 59,
915
+ 60,
916
+ 61,
917
+ 62,
918
+ 63,
919
+ 64,
920
+ 65,
921
+ 66,
922
+ 67
923
+ ],
924
+ [
925
+ 59,
926
+ 60,
927
+ 61,
928
+ 62,
929
+ 63,
930
+ 64,
931
+ 65,
932
+ 66,
933
+ 67,
934
+ 68
935
+ ],
936
+ [
937
+ 60,
938
+ 61,
939
+ 62,
940
+ 63,
941
+ 64,
942
+ 65,
943
+ 66,
944
+ 67,
945
+ 68,
946
+ 69
947
+ ],
948
+ [
949
+ 61,
950
+ 62,
951
+ 63,
952
+ 64,
953
+ 65,
954
+ 66,
955
+ 67,
956
+ 68,
957
+ 69,
958
+ 70
959
+ ],
960
+ [
961
+ 62,
962
+ 63,
963
+ 64,
964
+ 65,
965
+ 66,
966
+ 67,
967
+ 68,
968
+ 69,
969
+ 70,
970
+ 71
971
+ ],
972
+ [
973
+ 63,
974
+ 64,
975
+ 65,
976
+ 66,
977
+ 67,
978
+ 68,
979
+ 69,
980
+ 70,
981
+ 71,
982
+ 72
983
+ ],
984
+ [
985
+ 64,
986
+ 65,
987
+ 66,
988
+ 67,
989
+ 68,
990
+ 69,
991
+ 70,
992
+ 71,
993
+ 72,
994
+ 73
995
+ ],
996
+ [
997
+ 65,
998
+ 66,
999
+ 67,
1000
+ 68,
1001
+ 69,
1002
+ 70,
1003
+ 71,
1004
+ 72,
1005
+ 73,
1006
+ 74
1007
+ ],
1008
+ [
1009
+ 66,
1010
+ 67,
1011
+ 68,
1012
+ 69,
1013
+ 70,
1014
+ 71,
1015
+ 72,
1016
+ 73,
1017
+ 74,
1018
+ 75
1019
+ ],
1020
+ [
1021
+ 67,
1022
+ 68,
1023
+ 69,
1024
+ 70,
1025
+ 71,
1026
+ 72,
1027
+ 73,
1028
+ 74,
1029
+ 75,
1030
+ 76
1031
+ ],
1032
+ [
1033
+ 68,
1034
+ 69,
1035
+ 70,
1036
+ 71,
1037
+ 72,
1038
+ 73,
1039
+ 74,
1040
+ 75,
1041
+ 76,
1042
+ 77
1043
+ ],
1044
+ [
1045
+ 69,
1046
+ 70,
1047
+ 71,
1048
+ 72,
1049
+ 73,
1050
+ 74,
1051
+ 75,
1052
+ 76,
1053
+ 77,
1054
+ 78
1055
+ ],
1056
+ [
1057
+ 70,
1058
+ 71,
1059
+ 72,
1060
+ 73,
1061
+ 74,
1062
+ 75,
1063
+ 76,
1064
+ 77,
1065
+ 78,
1066
+ 79
1067
+ ],
1068
+ [
1069
+ 71,
1070
+ 72,
1071
+ 73,
1072
+ 74,
1073
+ 75,
1074
+ 76,
1075
+ 77,
1076
+ 78,
1077
+ 79,
1078
+ 80
1079
+ ],
1080
+ [
1081
+ 72,
1082
+ 73,
1083
+ 74,
1084
+ 75,
1085
+ 76,
1086
+ 77,
1087
+ 78,
1088
+ 79,
1089
+ 80,
1090
+ 81
1091
+ ],
1092
+ [
1093
+ 73,
1094
+ 74,
1095
+ 75,
1096
+ 76,
1097
+ 77,
1098
+ 78,
1099
+ 79,
1100
+ 80,
1101
+ 81,
1102
+ 82
1103
+ ],
1104
+ [
1105
+ 74,
1106
+ 75,
1107
+ 76,
1108
+ 77,
1109
+ 78,
1110
+ 79,
1111
+ 80,
1112
+ 81,
1113
+ 82,
1114
+ 83
1115
+ ],
1116
+ [
1117
+ 75,
1118
+ 76,
1119
+ 77,
1120
+ 78,
1121
+ 79,
1122
+ 80,
1123
+ 81,
1124
+ 82,
1125
+ 83,
1126
+ 84
1127
+ ],
1128
+ [
1129
+ 76,
1130
+ 77,
1131
+ 78,
1132
+ 79,
1133
+ 80,
1134
+ 81,
1135
+ 82,
1136
+ 83,
1137
+ 84,
1138
+ 85
1139
+ ],
1140
+ [
1141
+ 77,
1142
+ 78,
1143
+ 79,
1144
+ 80,
1145
+ 81,
1146
+ 82,
1147
+ 83,
1148
+ 84,
1149
+ 85,
1150
+ 86
1151
+ ],
1152
+ [
1153
+ 78,
1154
+ 79,
1155
+ 80,
1156
+ 81,
1157
+ 82,
1158
+ 83,
1159
+ 84,
1160
+ 85,
1161
+ 86,
1162
+ 87
1163
+ ],
1164
+ [
1165
+ 79,
1166
+ 80,
1167
+ 81,
1168
+ 82,
1169
+ 83,
1170
+ 84,
1171
+ 85,
1172
+ 86,
1173
+ 87,
1174
+ 88
1175
+ ],
1176
+ [
1177
+ 80,
1178
+ 81,
1179
+ 82,
1180
+ 83,
1181
+ 84,
1182
+ 85,
1183
+ 86,
1184
+ 87,
1185
+ 88,
1186
+ 89
1187
+ ],
1188
+ [
1189
+ 81,
1190
+ 82,
1191
+ 83,
1192
+ 84,
1193
+ 85,
1194
+ 86,
1195
+ 87,
1196
+ 88,
1197
+ 89,
1198
+ 90
1199
+ ]
1200
+ ][A][B];
1201
+ /**
1202
+ * Subtract two positive numbers.
1203
+ * The number range from 0 to 81.
1204
+ */
1205
+ export type Subtract<A extends number, B extends number> = [`${A}`, `${B}`] extends [
1206
+ `${number}${infer A2 extends number}`,
1207
+ `${number}${infer B2 extends number}`
1208
+ ] ? Subtract<A2, B2> : `${A}` extends `${number}${infer A2 extends number}` ? Subtract<A2, B> : `${B}` extends `${number}${infer B2 extends number}` ? Subtract<A, B2> : SingleDigitSubtract<A, B>;
1209
+ export type SingleDigitSubtract<A extends number, B extends number> = [
1210
+ [
1211
+ 0,
1212
+ -1,
1213
+ -2,
1214
+ -3,
1215
+ -4,
1216
+ -5,
1217
+ -6,
1218
+ -7,
1219
+ -8,
1220
+ -9
1221
+ ],
1222
+ [
1223
+ 1,
1224
+ 0,
1225
+ -1,
1226
+ -2,
1227
+ -3,
1228
+ -4,
1229
+ -5,
1230
+ -6,
1231
+ -7,
1232
+ -8
1233
+ ],
1234
+ [
1235
+ 2,
1236
+ 1,
1237
+ 0,
1238
+ -1,
1239
+ -2,
1240
+ -3,
1241
+ -4,
1242
+ -5,
1243
+ -6,
1244
+ -7
1245
+ ],
1246
+ [
1247
+ 3,
1248
+ 2,
1249
+ 1,
1250
+ 0,
1251
+ -1,
1252
+ -2,
1253
+ -3,
1254
+ -4,
1255
+ -5,
1256
+ -6
1257
+ ],
1258
+ [
1259
+ 4,
1260
+ 3,
1261
+ 2,
1262
+ 1,
1263
+ 0,
1264
+ -1,
1265
+ -2,
1266
+ -3,
1267
+ -4,
1268
+ -5
1269
+ ],
1270
+ [
1271
+ 5,
1272
+ 4,
1273
+ 3,
1274
+ 2,
1275
+ 1,
1276
+ 0,
1277
+ -1,
1278
+ -2,
1279
+ -3,
1280
+ -4
1281
+ ],
1282
+ [
1283
+ 6,
1284
+ 5,
1285
+ 4,
1286
+ 3,
1287
+ 2,
1288
+ 1,
1289
+ 0,
1290
+ -1,
1291
+ -2,
1292
+ -3
1293
+ ],
1294
+ [
1295
+ 7,
1296
+ 6,
1297
+ 5,
1298
+ 4,
1299
+ 3,
1300
+ 2,
1301
+ 1,
1302
+ 0,
1303
+ -1,
1304
+ -2
1305
+ ],
1306
+ [
1307
+ 8,
1308
+ 7,
1309
+ 6,
1310
+ 5,
1311
+ 4,
1312
+ 3,
1313
+ 2,
1314
+ 1,
1315
+ 0,
1316
+ -1
1317
+ ],
1318
+ [
1319
+ 9,
1320
+ 8,
1321
+ 7,
1322
+ 6,
1323
+ 5,
1324
+ 4,
1325
+ 3,
1326
+ 2,
1327
+ 1,
1328
+ 0
1329
+ ]
1330
+ ][A][B];
1331
+ export type Plus10 = {
1332
+ [k in number]: number;
1333
+ } & {
1334
+ '-1': 9;
1335
+ '-2': 8;
1336
+ '-3': 7;
1337
+ '-4': 6;
1338
+ '-5': 5;
1339
+ '-6': 4;
1340
+ '-7': 3;
1341
+ '-8': 2;
1342
+ '-9': 1;
1343
+ };
1344
+ export type Multiply<A extends number, B extends number> = [
1345
+ [
1346
+ 0,
1347
+ 0,
1348
+ 0,
1349
+ 0,
1350
+ 0,
1351
+ 0,
1352
+ 0,
1353
+ 0,
1354
+ 0,
1355
+ 0
1356
+ ],
1357
+ [
1358
+ 0,
1359
+ 1,
1360
+ 2,
1361
+ 3,
1362
+ 4,
1363
+ 5,
1364
+ 6,
1365
+ 7,
1366
+ 8,
1367
+ 9
1368
+ ],
1369
+ [
1370
+ 0,
1371
+ 2,
1372
+ 4,
1373
+ 6,
1374
+ 8,
1375
+ 10,
1376
+ 12,
1377
+ 14,
1378
+ 16,
1379
+ 18
1380
+ ],
1381
+ [
1382
+ 0,
1383
+ 3,
1384
+ 6,
1385
+ 9,
1386
+ 12,
1387
+ 15,
1388
+ 18,
1389
+ 21,
1390
+ 24,
1391
+ 27
1392
+ ],
1393
+ [
1394
+ 0,
1395
+ 4,
1396
+ 8,
1397
+ 12,
1398
+ 16,
1399
+ 20,
1400
+ 24,
1401
+ 28,
1402
+ 32,
1403
+ 36
1404
+ ],
1405
+ [
1406
+ 0,
1407
+ 5,
1408
+ 10,
1409
+ 15,
1410
+ 20,
1411
+ 25,
1412
+ 30,
1413
+ 35,
1414
+ 40,
1415
+ 45
1416
+ ],
1417
+ [
1418
+ 0,
1419
+ 6,
1420
+ 12,
1421
+ 18,
1422
+ 24,
1423
+ 30,
1424
+ 36,
1425
+ 42,
1426
+ 48,
1427
+ 54
1428
+ ],
1429
+ [
1430
+ 0,
1431
+ 7,
1432
+ 14,
1433
+ 21,
1434
+ 28,
1435
+ 35,
1436
+ 42,
1437
+ 49,
1438
+ 56,
1439
+ 63
1440
+ ],
1441
+ [
1442
+ 0,
1443
+ 8,
1444
+ 16,
1445
+ 24,
1446
+ 32,
1447
+ 40,
1448
+ 48,
1449
+ 56,
1450
+ 64,
1451
+ 72
1452
+ ],
1453
+ [
1454
+ 0,
1455
+ 9,
1456
+ 18,
1457
+ 27,
1458
+ 36,
1459
+ 45,
1460
+ 54,
1461
+ 63,
1462
+ 72,
1463
+ 81
1464
+ ]
1465
+ ][A][B];
1466
+ export {};
1467
+ }
1468
+ export {};
1469
+ //# sourceMappingURL=numeric_struct.d.ts.map