@kontor/kontor-sdk 1.0.0-alpha.39 → 1.0.0-alpha.40

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 (270) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/sdk/actions/kontor/public/call-view.js.map +1 -1
  3. package/dist/cjs/sdk/chains/definitions/signet.js +2 -2
  4. package/dist/cjs/sdk/test/e2e.test-deprecated.js +2 -0
  5. package/dist/cjs/sdk/test/e2e.test-deprecated.js.map +1 -0
  6. package/dist/cjs/sdk/utils/wit/codecs/bool.js +9 -21
  7. package/dist/cjs/sdk/utils/wit/codecs/bool.js.map +1 -1
  8. package/dist/cjs/sdk/utils/wit/codecs/contract-address.js +92 -0
  9. package/dist/cjs/sdk/utils/wit/codecs/contract-address.js.map +1 -0
  10. package/dist/cjs/sdk/utils/wit/codecs/index.js +29 -0
  11. package/dist/cjs/sdk/utils/wit/codecs/index.js.map +1 -0
  12. package/dist/cjs/sdk/utils/wit/codecs/list.js +21 -95
  13. package/dist/cjs/sdk/utils/wit/codecs/list.js.map +1 -1
  14. package/dist/cjs/sdk/utils/wit/codecs/numerics.js +228 -0
  15. package/dist/cjs/sdk/utils/wit/codecs/numerics.js.map +1 -0
  16. package/dist/cjs/sdk/utils/wit/codecs/option.js +21 -72
  17. package/dist/cjs/sdk/utils/wit/codecs/option.js.map +1 -1
  18. package/dist/cjs/sdk/utils/wit/codecs/result.js +32 -0
  19. package/dist/cjs/sdk/utils/wit/codecs/result.js.map +1 -0
  20. package/dist/cjs/sdk/utils/wit/codecs/string.js +16 -21
  21. package/dist/cjs/sdk/utils/wit/codecs/string.js.map +1 -1
  22. package/dist/cjs/sdk/utils/wit/codecs/unit.js +11 -19
  23. package/dist/cjs/sdk/utils/wit/codecs/unit.js.map +1 -1
  24. package/dist/cjs/sdk/utils/wit/codecs/util.js +185 -0
  25. package/dist/cjs/sdk/utils/wit/codecs/util.js.map +1 -0
  26. package/dist/cjs/sdk/utils/wit/decode-wit-parameter.js +297 -163
  27. package/dist/cjs/sdk/utils/wit/decode-wit-parameter.js.map +1 -1
  28. package/dist/cjs/sdk/utils/wit/encode-wit-parameters.js +214 -221
  29. package/dist/cjs/sdk/utils/wit/encode-wit-parameters.js.map +1 -1
  30. package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
  31. package/dist/cjs/wit/built-ins.js +19 -0
  32. package/dist/cjs/wit/built-ins.js.map +1 -0
  33. package/dist/cjs/wit/regex.js +1 -1
  34. package/dist/cjs/wit/regex.js.map +1 -1
  35. package/dist/cjs/wit/wit-parser/core/errors/signature.js +17 -2
  36. package/dist/cjs/wit/wit-parser/core/errors/signature.js.map +1 -1
  37. package/dist/cjs/wit/wit-parser/core/signatures.js +18 -0
  38. package/dist/cjs/wit/wit-parser/core/signatures.js.map +1 -1
  39. package/dist/cjs/wit/wit-parser/core/types/{records.js → user-defined.js} +1 -1
  40. package/dist/cjs/wit/wit-parser/core/types/user-defined.js.map +1 -0
  41. package/dist/cjs/wit/wit-parser/core/user-defined.js +271 -0
  42. package/dist/cjs/wit/wit-parser/core/user-defined.js.map +1 -0
  43. package/dist/cjs/wit/wit-parser/core/utils.js +29 -7
  44. package/dist/cjs/wit/wit-parser/core/utils.js.map +1 -1
  45. package/dist/cjs/wit/wit-parser/parse-wit-parameter.js +9 -3
  46. package/dist/cjs/wit/wit-parser/parse-wit-parameter.js.map +1 -1
  47. package/dist/cjs/wit/wit-parser/parse-wit.js +7 -3
  48. package/dist/cjs/wit/wit-parser/parse-wit.js.map +1 -1
  49. package/dist/esm/sdk/actions/kontor/public/call-view.js.map +1 -1
  50. package/dist/esm/sdk/chains/definitions/signet.js +2 -2
  51. package/dist/esm/sdk/test/e2e.test-deprecated.js +197 -0
  52. package/dist/esm/sdk/test/e2e.test-deprecated.js.map +1 -0
  53. package/dist/esm/sdk/utils/wit/codecs/bool.js +9 -21
  54. package/dist/esm/sdk/utils/wit/codecs/bool.js.map +1 -1
  55. package/dist/esm/sdk/utils/wit/codecs/contract-address.js +92 -0
  56. package/dist/esm/sdk/utils/wit/codecs/contract-address.js.map +1 -0
  57. package/dist/esm/sdk/utils/wit/codecs/index.js +9 -0
  58. package/dist/esm/sdk/utils/wit/codecs/index.js.map +1 -0
  59. package/dist/esm/sdk/utils/wit/codecs/list.js +20 -114
  60. package/dist/esm/sdk/utils/wit/codecs/list.js.map +1 -1
  61. package/dist/esm/sdk/utils/wit/codecs/numerics.js +234 -0
  62. package/dist/esm/sdk/utils/wit/codecs/numerics.js.map +1 -0
  63. package/dist/esm/sdk/utils/wit/codecs/option.js +21 -88
  64. package/dist/esm/sdk/utils/wit/codecs/option.js.map +1 -1
  65. package/dist/esm/sdk/utils/wit/codecs/result.js +29 -0
  66. package/dist/esm/sdk/utils/wit/codecs/result.js.map +1 -0
  67. package/dist/esm/sdk/utils/wit/codecs/string.js +22 -22
  68. package/dist/esm/sdk/utils/wit/codecs/string.js.map +1 -1
  69. package/dist/esm/sdk/utils/wit/codecs/unit.js +12 -21
  70. package/dist/esm/sdk/utils/wit/codecs/unit.js.map +1 -1
  71. package/dist/esm/sdk/utils/wit/codecs/util.js +181 -0
  72. package/dist/esm/sdk/utils/wit/codecs/util.js.map +1 -0
  73. package/dist/esm/sdk/utils/wit/decode-wit-parameter.js +322 -188
  74. package/dist/esm/sdk/utils/wit/decode-wit-parameter.js.map +1 -1
  75. package/dist/esm/sdk/utils/wit/encode-wit-parameters.js +230 -233
  76. package/dist/esm/sdk/utils/wit/encode-wit-parameters.js.map +1 -1
  77. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  78. package/dist/esm/wit/built-ins.js +16 -0
  79. package/dist/esm/wit/built-ins.js.map +1 -0
  80. package/dist/esm/wit/regex.js +1 -1
  81. package/dist/esm/wit/regex.js.map +1 -1
  82. package/dist/esm/wit/wit-parser/core/errors/signature.js +15 -1
  83. package/dist/esm/wit/wit-parser/core/errors/signature.js.map +1 -1
  84. package/dist/esm/wit/wit-parser/core/signatures.js +14 -0
  85. package/dist/esm/wit/wit-parser/core/signatures.js.map +1 -1
  86. package/dist/esm/wit/wit-parser/core/types/signatures.js.map +1 -1
  87. package/dist/esm/wit/wit-parser/core/types/user-defined.js +2 -0
  88. package/dist/esm/wit/wit-parser/core/types/user-defined.js.map +1 -0
  89. package/dist/esm/wit/wit-parser/core/types/utils.js +25 -0
  90. package/dist/esm/wit/wit-parser/core/types/utils.js.map +1 -1
  91. package/dist/esm/wit/wit-parser/core/user-defined.js +280 -0
  92. package/dist/esm/wit/wit-parser/core/user-defined.js.map +1 -0
  93. package/dist/esm/wit/wit-parser/core/utils.js +33 -36
  94. package/dist/esm/wit/wit-parser/core/utils.js.map +1 -1
  95. package/dist/esm/wit/wit-parser/parse-wit-parameter.js +10 -4
  96. package/dist/esm/wit/wit-parser/parse-wit-parameter.js.map +1 -1
  97. package/dist/esm/wit/wit-parser/parse-wit.js +8 -4
  98. package/dist/esm/wit/wit-parser/parse-wit.js.map +1 -1
  99. package/dist/types/sdk/actions/kontor/public/call-view.d.ts +2 -1
  100. package/dist/types/sdk/actions/kontor/public/call-view.d.ts.map +1 -1
  101. package/dist/types/sdk/chains/definitions/signet.d.ts +2 -2
  102. package/dist/types/sdk/test/e2e.test-deprecated.d.ts +2 -0
  103. package/dist/types/sdk/test/e2e.test-deprecated.d.ts.map +1 -0
  104. package/dist/types/sdk/types/contract.d.ts +5 -5
  105. package/dist/types/sdk/types/contract.d.ts.map +1 -1
  106. package/dist/types/sdk/utils/wit/codecs/bool.d.ts +2 -2
  107. package/dist/types/sdk/utils/wit/codecs/bool.d.ts.map +1 -1
  108. package/dist/types/sdk/utils/wit/codecs/contract-address.d.ts +5 -0
  109. package/dist/types/sdk/utils/wit/codecs/contract-address.d.ts.map +1 -0
  110. package/dist/types/sdk/utils/wit/codecs/index.d.ts +9 -0
  111. package/dist/types/sdk/utils/wit/codecs/index.d.ts.map +1 -0
  112. package/dist/types/sdk/utils/wit/codecs/list.d.ts +2 -16
  113. package/dist/types/sdk/utils/wit/codecs/list.d.ts.map +1 -1
  114. package/dist/types/sdk/utils/wit/codecs/numerics.d.ts +14 -0
  115. package/dist/types/sdk/utils/wit/codecs/numerics.d.ts.map +1 -0
  116. package/dist/types/sdk/utils/wit/codecs/option.d.ts +3 -23
  117. package/dist/types/sdk/utils/wit/codecs/option.d.ts.map +1 -1
  118. package/dist/types/sdk/utils/wit/codecs/result.d.ts +4 -0
  119. package/dist/types/sdk/utils/wit/codecs/result.d.ts.map +1 -0
  120. package/dist/types/sdk/utils/wit/codecs/string.d.ts +6 -2
  121. package/dist/types/sdk/utils/wit/codecs/string.d.ts.map +1 -1
  122. package/dist/types/sdk/utils/wit/codecs/types.d.ts +4 -0
  123. package/dist/types/sdk/utils/wit/codecs/types.d.ts.map +1 -1
  124. package/dist/types/sdk/utils/wit/codecs/unit.d.ts +2 -11
  125. package/dist/types/sdk/utils/wit/codecs/unit.d.ts.map +1 -1
  126. package/dist/types/sdk/utils/wit/codecs/util.d.ts +12 -0
  127. package/dist/types/sdk/utils/wit/codecs/util.d.ts.map +1 -0
  128. package/dist/types/sdk/utils/wit/decode-wit-parameter.d.ts +9 -31
  129. package/dist/types/sdk/utils/wit/decode-wit-parameter.d.ts.map +1 -1
  130. package/dist/types/sdk/utils/wit/encode-wit-parameters.d.ts +9 -1
  131. package/dist/types/sdk/utils/wit/encode-wit-parameters.d.ts.map +1 -1
  132. package/dist/types/wit/built-ins.d.ts +6 -0
  133. package/dist/types/wit/built-ins.d.ts.map +1 -0
  134. package/dist/types/wit/regex.d.ts.map +1 -1
  135. package/dist/types/wit/utils.d.ts +53 -33
  136. package/dist/types/wit/utils.d.ts.map +1 -1
  137. package/dist/types/wit/wit-parser/core/errors/signature.d.ts +7 -1
  138. package/dist/types/wit/wit-parser/core/errors/signature.d.ts.map +1 -1
  139. package/dist/types/wit/wit-parser/core/signatures.d.ts +10 -0
  140. package/dist/types/wit/wit-parser/core/signatures.d.ts.map +1 -1
  141. package/dist/types/wit/wit-parser/core/types/signatures.d.ts +6 -2
  142. package/dist/types/wit/wit-parser/core/types/signatures.d.ts.map +1 -1
  143. package/dist/types/wit/wit-parser/core/types/user-defined.d.ts +134 -0
  144. package/dist/types/wit/wit-parser/core/types/user-defined.d.ts.map +1 -0
  145. package/dist/types/wit/wit-parser/core/types/utils.d.ts +86 -11
  146. package/dist/types/wit/wit-parser/core/types/utils.d.ts.map +1 -1
  147. package/dist/types/wit/wit-parser/core/user-defined.d.ts +19 -0
  148. package/dist/types/wit/wit-parser/core/user-defined.d.ts.map +1 -0
  149. package/dist/types/wit/wit-parser/core/utils.d.ts +8 -4
  150. package/dist/types/wit/wit-parser/core/utils.d.ts.map +1 -1
  151. package/dist/types/wit/wit-parser/parse-wit-parameter.d.ts +11 -5
  152. package/dist/types/wit/wit-parser/parse-wit-parameter.d.ts.map +1 -1
  153. package/dist/types/wit/wit-parser/parse-wit.d.ts +7 -3
  154. package/dist/types/wit/wit-parser/parse-wit.d.ts.map +1 -1
  155. package/dist/types/wit/wit.d.ts +20 -12
  156. package/dist/types/wit/wit.d.ts.map +1 -1
  157. package/package.json +1 -1
  158. package/src/sdk/actions/get-contract.test-d.ts +430 -50
  159. package/src/sdk/actions/get-contract.test.ts +324 -24
  160. package/src/sdk/actions/kontor/public/call-view.ts +2 -1
  161. package/src/sdk/actions/kontor/public/proc-contract.test-d.ts +107 -0
  162. package/src/sdk/actions/kontor/public/proc-contract.test.ts +234 -21
  163. package/src/sdk/actions/kontor/public/view-contract.test-d.ts +240 -0
  164. package/src/sdk/actions/kontor/public/view-contract.test.ts +613 -18
  165. package/src/sdk/chains/definitions/signet.ts +2 -2
  166. package/src/sdk/clients/base/create-rpc-client.test.ts +2 -2
  167. package/src/sdk/clients/create-public-client.test.ts +2 -2
  168. package/src/sdk/clients/kontor/create-public-client.test.ts +2 -2
  169. package/src/sdk/clients/transports/http-rpc.test.ts +0 -24
  170. package/src/sdk/test/e2e.test-deprecated.ts +195 -0
  171. package/src/sdk/types/contract.test-d.ts +489 -55
  172. package/src/sdk/types/contract.ts +6 -7
  173. package/src/sdk/utils/wit/codecs/bool.test.ts +29 -0
  174. package/src/sdk/utils/wit/codecs/bool.ts +10 -25
  175. package/src/sdk/utils/wit/codecs/contract-address.test.ts +37 -0
  176. package/src/sdk/utils/wit/codecs/contract-address.ts +114 -0
  177. package/src/sdk/utils/wit/codecs/index.ts +20 -0
  178. package/src/sdk/utils/wit/codecs/list.test-d.ts +13 -0
  179. package/src/sdk/utils/wit/codecs/list.test.ts +55 -0
  180. package/src/sdk/utils/wit/codecs/list.ts +21 -150
  181. package/src/sdk/utils/wit/codecs/numerics.test.ts +399 -0
  182. package/src/sdk/utils/wit/codecs/numerics.ts +304 -0
  183. package/src/sdk/utils/wit/codecs/option.test.ts +71 -0
  184. package/src/sdk/utils/wit/codecs/option.ts +21 -120
  185. package/src/sdk/utils/wit/codecs/result.test.ts +82 -0
  186. package/src/sdk/utils/wit/codecs/result.ts +37 -0
  187. package/src/sdk/utils/wit/codecs/string.test.ts +62 -0
  188. package/src/sdk/utils/wit/codecs/string.ts +23 -25
  189. package/src/sdk/utils/wit/codecs/types.ts +5 -0
  190. package/src/sdk/utils/wit/codecs/unit.test.ts +27 -0
  191. package/src/sdk/utils/wit/codecs/unit.ts +14 -38
  192. package/src/sdk/utils/wit/codecs/util.test.ts +221 -0
  193. package/src/sdk/utils/wit/codecs/util.ts +193 -0
  194. package/src/sdk/utils/wit/decode-wit-parameter.test.ts +1264 -32
  195. package/src/sdk/utils/wit/decode-wit-parameter.ts +508 -211
  196. package/src/sdk/utils/wit/encode-wit-parameters.test.ts +955 -91
  197. package/src/sdk/utils/wit/encode-wit-parameters.ts +277 -274
  198. package/src/sdk/utils/wit/get-wit-item.test.ts +1 -1
  199. package/src/wit/built-ins.ts +23 -0
  200. package/src/wit/regex.ts +1 -1
  201. package/src/wit/utils.ts +120 -74
  202. package/src/wit/wit-parser/core/errors/signature.ts +13 -2
  203. package/src/wit/wit-parser/core/signatures.ts +28 -0
  204. package/src/wit/wit-parser/core/types/signatures.test-d.ts +21 -0
  205. package/src/wit/wit-parser/core/types/signatures.ts +19 -2
  206. package/src/wit/wit-parser/core/types/user-defined.test-d.ts +1308 -0
  207. package/src/wit/wit-parser/core/types/user-defined.ts +412 -0
  208. package/src/wit/wit-parser/core/types/utils.test-d.ts +43 -2
  209. package/src/wit/wit-parser/core/types/utils.ts +143 -14
  210. package/src/wit/wit-parser/core/user-defined.test.ts +609 -0
  211. package/src/wit/wit-parser/core/user-defined.ts +392 -0
  212. package/src/wit/wit-parser/core/utils.test.ts +334 -115
  213. package/src/wit/wit-parser/core/utils.ts +54 -38
  214. package/src/wit/wit-parser/parse-wit-parameter.test.ts +282 -4
  215. package/src/wit/wit-parser/parse-wit-parameter.ts +37 -11
  216. package/src/wit/wit-parser/parse-wit.test.ts +738 -12
  217. package/src/wit/wit-parser/parse-wit.ts +25 -10
  218. package/src/wit/wit.ts +37 -16
  219. package/vitest.config.ts +5 -0
  220. package/dist/cjs/sdk/utils/wit/codecs/decimal.js +0 -148
  221. package/dist/cjs/sdk/utils/wit/codecs/decimal.js.map +0 -1
  222. package/dist/cjs/sdk/utils/wit/codecs/enum.js +0 -94
  223. package/dist/cjs/sdk/utils/wit/codecs/enum.js.map +0 -1
  224. package/dist/cjs/sdk/utils/wit/codecs/integer.js +0 -125
  225. package/dist/cjs/sdk/utils/wit/codecs/integer.js.map +0 -1
  226. package/dist/cjs/sdk/utils/wit/codecs/s64.js +0 -57
  227. package/dist/cjs/sdk/utils/wit/codecs/s64.js.map +0 -1
  228. package/dist/cjs/sdk/utils/wit/codecs/u64.js +0 -56
  229. package/dist/cjs/sdk/utils/wit/codecs/u64.js.map +0 -1
  230. package/dist/cjs/wit/wit-parser/core/records.js +0 -70
  231. package/dist/cjs/wit/wit-parser/core/records.js.map +0 -1
  232. package/dist/cjs/wit/wit-parser/core/types/records.js.map +0 -1
  233. package/dist/esm/sdk/utils/wit/codecs/decimal.js +0 -165
  234. package/dist/esm/sdk/utils/wit/codecs/decimal.js.map +0 -1
  235. package/dist/esm/sdk/utils/wit/codecs/enum.js +0 -104
  236. package/dist/esm/sdk/utils/wit/codecs/enum.js.map +0 -1
  237. package/dist/esm/sdk/utils/wit/codecs/integer.js +0 -167
  238. package/dist/esm/sdk/utils/wit/codecs/integer.js.map +0 -1
  239. package/dist/esm/sdk/utils/wit/codecs/s64.js +0 -65
  240. package/dist/esm/sdk/utils/wit/codecs/s64.js.map +0 -1
  241. package/dist/esm/sdk/utils/wit/codecs/u64.js +0 -63
  242. package/dist/esm/sdk/utils/wit/codecs/u64.js.map +0 -1
  243. package/dist/esm/wit/wit-parser/core/records.js +0 -73
  244. package/dist/esm/wit/wit-parser/core/records.js.map +0 -1
  245. package/dist/esm/wit/wit-parser/core/types/records.js +0 -2
  246. package/dist/esm/wit/wit-parser/core/types/records.js.map +0 -1
  247. package/dist/types/sdk/utils/wit/codecs/decimal.d.ts +0 -42
  248. package/dist/types/sdk/utils/wit/codecs/decimal.d.ts.map +0 -1
  249. package/dist/types/sdk/utils/wit/codecs/enum.d.ts +0 -49
  250. package/dist/types/sdk/utils/wit/codecs/enum.d.ts.map +0 -1
  251. package/dist/types/sdk/utils/wit/codecs/integer.d.ts +0 -36
  252. package/dist/types/sdk/utils/wit/codecs/integer.d.ts.map +0 -1
  253. package/dist/types/sdk/utils/wit/codecs/s64.d.ts +0 -23
  254. package/dist/types/sdk/utils/wit/codecs/s64.d.ts.map +0 -1
  255. package/dist/types/sdk/utils/wit/codecs/u64.d.ts +0 -23
  256. package/dist/types/sdk/utils/wit/codecs/u64.d.ts.map +0 -1
  257. package/dist/types/wit/wit-parser/core/records.d.ts +0 -4
  258. package/dist/types/wit/wit-parser/core/records.d.ts.map +0 -1
  259. package/dist/types/wit/wit-parser/core/types/records.d.ts +0 -51
  260. package/dist/types/wit/wit-parser/core/types/records.d.ts.map +0 -1
  261. package/src/sdk/test/e2e.test.ts +0 -194
  262. package/src/sdk/utils/wit/codecs/decimal.ts +0 -215
  263. package/src/sdk/utils/wit/codecs/enum.ts +0 -114
  264. package/src/sdk/utils/wit/codecs/integer.ts +0 -193
  265. package/src/sdk/utils/wit/codecs/s64.ts +0 -76
  266. package/src/sdk/utils/wit/codecs/u64.ts +0 -73
  267. package/src/wit/wit-parser/core/records.test.ts +0 -69
  268. package/src/wit/wit-parser/core/records.ts +0 -101
  269. package/src/wit/wit-parser/core/types/records.test-d.ts +0 -331
  270. package/src/wit/wit-parser/core/types/records.ts +0 -91
@@ -1,72 +1,452 @@
1
- import { expectTypeOf, test } from "vitest";
1
+ import { expectTypeOf, test, assertType } from "vitest";
2
2
  import { parseWit } from "../../wit/wit-parser/parse-wit.js";
3
3
  import {
4
- // getContract,
5
4
  type GetContractReturnType,
6
5
  type KebabToCamel,
7
6
  type GetViewFunction,
8
- // getContract,
7
+ type GetProcFunction,
8
+ getContract,
9
9
  } from "./get-contract.js";
10
+ import type { KontorIndexerClient } from "../clients/kontor/create-public-client.js";
11
+ import type { Chain } from "../types/chain.js";
12
+ import type { UtxoId } from "../types/misc.js";
13
+ import type { Account } from "../accounts/types.js";
10
14
 
11
- const input = [
12
- // TODO: build in record defs should be defined under the hood
13
- // "record tool { name: string, isHammer: bool }",
14
- "export fib: func(ctx: borrow<proc-context>, arith-address: contract-address, n: u64) -> u64;",
15
- "export fib-of-sub: func(ctx: borrow<proc-context>, arith-address: contract-address, x: string, y: string) -> result<u64, error>;",
16
- "export cached-values: func(ctx: borrow<view-context>) -> list<u64>;",
17
- "export fib-as-view: func(ctx: borrow<view-context>, n: u64) -> u64;",
18
- "export read-with-record-arg: func(ctx: borrow<view-context>, contract-address: contract-address) -> u64;",
19
- // "export read-tools: func(ctx: borrow<view-context>) -> list<tool>;",
15
+ const nativeTokenRaw = [
16
+ "record balance { acc: string, amt: decimal }",
17
+ "record transfer { src: string, dst: string, amt: decimal }",
18
+ "record burn { src: string, amt: decimal }",
19
+ "record mint { dst: string, amt: decimal }",
20
+ "export mint: func(ctx: borrow<proc-context>, amt: decimal) -> result<mint, error>;",
21
+ "export burn: func(ctx: borrow<proc-context>, amt: decimal) -> result<burn, error>;",
22
+ "export transfer: func(ctx: borrow<proc-context>, dst: string, amt: decimal) -> result<transfer, error>;",
23
+ "export balance: func(ctx: borrow<view-context>, acc: string) -> option<decimal>;",
24
+ "export balances: func(ctx: borrow<view-context>) -> list<balance>;",
25
+ "export total-supply: func(ctx: borrow<view-context>) -> decimal;",
26
+ "export attach: func(ctx: borrow<proc-context>, vout: u64, amt: decimal) -> result<transfer, error>;",
27
+ "export detach: func(ctx: borrow<proc-context>) -> result<transfer, error>;",
20
28
  ] as const;
21
29
 
22
- const wit = parseWit(input);
30
+ const nativeToken = parseWit(nativeTokenRaw);
23
31
 
24
32
  test("KebabToCamel basic mapping", () => {
25
- type A = KebabToCamel<"cached-values">;
26
- type B = KebabToCamel<"fib-of-sub">;
27
- type C = KebabToCamel<"fib">;
28
-
29
- expectTypeOf<A>().toEqualTypeOf<"cachedValues">();
30
- expectTypeOf<B>().toEqualTypeOf<"fibOfSub">();
31
- expectTypeOf<C>().toEqualTypeOf<"fib">();
32
- });
33
-
34
- test("GetContractReturnType", () => {
35
- // expectTypeOf<GetContractReturnType<typeof wit>>().toEqualTypeOf<{
36
- // view: {
37
- // cachedValues: never;
38
- // fibAsView: never;
39
- // readWithRecordArg: never;
40
- // readTools: never;
41
- // };
42
- // proc: {}
43
- // }>;
33
+ type A = KebabToCamel<"total-supply">;
34
+ type B = KebabToCamel<"balance">;
35
+ expectTypeOf<A>().toEqualTypeOf<"totalSupply">();
36
+ expectTypeOf<B>().toEqualTypeOf<"balance">();
44
37
  });
38
+
39
+ test("GetContractReturnType has view and proc", () => {
40
+ type Contract = GetContractReturnType<typeof nativeToken>;
41
+
42
+ expectTypeOf<Contract>().toHaveProperty("view");
43
+ expectTypeOf<Contract>().toHaveProperty("proc");
44
+ expectTypeOf<Contract>().toHaveProperty("wit");
45
+ expectTypeOf<Contract>().toHaveProperty("contractAddress");
46
+ });
47
+
45
48
  test("GetContractReturnType view keys are camelCased", () => {
46
- type ViewKeys = keyof GetContractReturnType<typeof wit>["view"];
49
+ type ViewKeys = keyof GetContractReturnType<typeof nativeToken>["view"];
50
+
51
+ expectTypeOf<ViewKeys>().toEqualTypeOf<
52
+ "balance" | "balances" | "totalSupply"
53
+ >();
54
+ });
55
+
56
+ test("GetContractReturnType proc keys are camelCased", () => {
57
+ type ProcKeys = keyof GetContractReturnType<typeof nativeToken>["proc"];
58
+
59
+ expectTypeOf<ProcKeys>().toEqualTypeOf<
60
+ "mint" | "burn" | "transfer" | "attach" | "detach"
61
+ >();
62
+ });
63
+
64
+ test("GetViewFunction for balance - function signature", () => {
65
+ type BalanceFn = GetViewFunction<
66
+ true,
67
+ undefined,
68
+ typeof nativeToken,
69
+ "balance"
70
+ >;
71
+
72
+ // Test that it accepts the right parameters
73
+ type Params = Parameters<BalanceFn>;
74
+
75
+ // Should accept args array with string
76
+ expectTypeOf<Params[0]>().toEqualTypeOf<readonly [string]>();
77
+
78
+ // Return type should be Promise<option<decimal>>
79
+ type Return = Awaited<ReturnType<BalanceFn>>;
80
+ expectTypeOf<Return>().toEqualTypeOf<["none"] | ["some", [bigint, number]]>();
81
+ });
82
+
83
+ test("GetViewFunction for balances - no args function signature", () => {
84
+ type BalancesFn = GetViewFunction<
85
+ true,
86
+ undefined,
87
+ typeof nativeToken,
88
+ "balances"
89
+ >;
90
+
91
+ // Test that it accepts optional empty args
92
+ type Params = Parameters<BalancesFn>;
93
+
94
+ // Should accept optional args
95
+ expectTypeOf<Params[0]>().toEqualTypeOf<{
96
+ chain: Chain | null | undefined;
97
+ }>();
98
+
99
+ // Return type should be Promise<list<balance>>
100
+ type Return = Awaited<ReturnType<BalancesFn>>;
101
+ expectTypeOf<Return>().toEqualTypeOf<
102
+ readonly {
103
+ acc: string;
104
+ amt: [bigint, number];
105
+ }[]
106
+ >();
107
+ });
108
+
109
+ test("GetViewFunction for totalSupply - return type", () => {
110
+ type TotalSupplyFn = GetViewFunction<
111
+ true,
112
+ undefined,
113
+ typeof nativeToken,
114
+ "total-supply"
115
+ >;
116
+
117
+ type Return = Awaited<ReturnType<TotalSupplyFn>>;
118
+ expectTypeOf<Return>().toEqualTypeOf<[bigint, number]>();
119
+ });
120
+
121
+ test("GetProcFunction for mint - function signature", () => {
122
+ type MintFn = GetProcFunction<
123
+ true,
124
+ undefined,
125
+ undefined,
126
+ typeof nativeToken,
127
+ "mint"
128
+ >;
129
+
130
+ // Test parameters
131
+ type Params = Parameters<MintFn>;
132
+
133
+ expectTypeOf<Params[0]>().toEqualTypeOf<readonly [[bigint, number]]>();
134
+ });
135
+
136
+ test("GetProcFunction for transfer - multiple args", () => {
137
+ type TransferFn = GetProcFunction<
138
+ true,
139
+ undefined,
140
+ undefined,
141
+ typeof nativeToken,
142
+ "transfer"
143
+ >;
144
+
145
+ type Params = Parameters<TransferFn>;
146
+
147
+ // Should accept dst string and decimal amount
148
+ assertType<Params[0]>(["recipient_address", [75n, 18]]);
149
+
150
+ expectTypeOf<Params[1]>().toEqualTypeOf<{
151
+ account: [string, string] | Account | null;
152
+ chain: Chain | null | undefined;
153
+ utxos: UtxoId[];
154
+ gas: bigint;
155
+ satsPerVByte: number;
156
+ }>();
157
+ });
158
+
159
+ test("GetProcFunction for detach - no args function", () => {
160
+ type DetachFn = GetProcFunction<
161
+ true,
162
+ undefined,
163
+ undefined,
164
+ typeof nativeToken,
165
+ "detach"
166
+ >;
167
+
168
+ type Params = Parameters<DetachFn>;
169
+
170
+ expectTypeOf<Params[0]>().toEqualTypeOf<{
171
+ account: [string, string] | Account | null;
172
+ chain: Chain | null | undefined;
173
+ utxos: UtxoId[];
174
+ gas: bigint;
175
+ satsPerVByte: number;
176
+ }>();
177
+ });
178
+
179
+ test("GetContractReturnType - actual function types on contract object", () => {
180
+ type Contract = GetContractReturnType<typeof nativeToken>;
181
+
182
+ // Test view functions
183
+ type BalanceFunc = Contract["view"]["balance"];
184
+ type BalancesFunc = Contract["view"]["balances"];
185
+ type TotalSupplyFunc = Contract["view"]["totalSupply"];
186
+
187
+ // Balance should be a function
188
+ expectTypeOf<BalanceFunc>().toBeFunction();
189
+ expectTypeOf<BalancesFunc>().toBeFunction();
190
+ expectTypeOf<TotalSupplyFunc>().toBeFunction();
191
+
192
+ // Test proc functions
193
+ type MintFunc = Contract["proc"]["mint"];
194
+ type BurnFunc = Contract["proc"]["burn"];
195
+ type TransferFunc = Contract["proc"]["transfer"];
196
+ type AttachFunc = Contract["proc"]["attach"];
197
+ type DetachFunc = Contract["proc"]["detach"];
198
+
199
+ expectTypeOf<MintFunc>().toBeFunction();
200
+ expectTypeOf<BurnFunc>().toBeFunction();
201
+ expectTypeOf<TransferFunc>().toBeFunction();
202
+ expectTypeOf<AttachFunc>().toBeFunction();
203
+ expectTypeOf<DetachFunc>().toBeFunction();
204
+ });
205
+
206
+ test("getContract runtime - contract structure", () => {
207
+ const mockClient = {} as KontorIndexerClient;
208
+
209
+ const contract = getContract({
210
+ wit: nativeToken,
211
+ contractAddress: "token_0_0",
212
+ client: mockClient,
213
+ });
214
+
215
+ // Test that properties exist at type level
216
+ expectTypeOf(contract).toHaveProperty("view");
217
+ expectTypeOf(contract).toHaveProperty("proc");
218
+ expectTypeOf(contract).toHaveProperty("wit");
219
+ expectTypeOf(contract).toHaveProperty("contractAddress");
220
+
221
+ // Test that view functions have correct names
222
+ expectTypeOf(contract.view).toHaveProperty("balance");
223
+ expectTypeOf(contract.view).toHaveProperty("balances");
224
+ expectTypeOf(contract.view).toHaveProperty("totalSupply");
225
+
226
+ // Test that proc functions have correct names
227
+ expectTypeOf(contract.proc).toHaveProperty("mint");
228
+ expectTypeOf(contract.proc).toHaveProperty("burn");
229
+ expectTypeOf(contract.proc).toHaveProperty("transfer");
230
+ expectTypeOf(contract.proc).toHaveProperty("attach");
231
+ expectTypeOf(contract.proc).toHaveProperty("detach");
232
+ });
233
+
234
+ // ─────────────────────────────────────────────────────────────────
235
+ // Storage Agreement Contract Tests
236
+ // ─────────────────────────────────────────────────────────────────
237
+
238
+ const storageAgreementRaw = [
239
+ "record agreement-data { agreement-id: string, file-id: string, root: list<u8>, depth: u64, active: bool }",
240
+ "record create-agreement-result { agreement-id: string }",
241
+ "record join-agreement-result { agreement-id: string, node-id: string, activated: bool }",
242
+ "record leave-agreement-result { agreement-id: string, node-id: string }",
243
+ "export init: func(ctx: borrow<proc-context>);",
244
+ "export create-agreement: func(ctx: borrow<proc-context>, descriptor: raw-file-descriptor) -> result<create-agreement-result, error>;",
245
+ "export get-agreement: func(ctx: borrow<view-context>, agreement-id: string) -> option<agreement-data>;",
246
+ "export agreement-count: func(ctx: borrow<view-context>) -> u64;",
247
+ "export join-agreement: func(ctx: borrow<proc-context>, agreement-id: string, node-id: string) -> result<join-agreement-result, error>;",
248
+ "export leave-agreement: func(ctx: borrow<proc-context>, agreement-id: string, node-id: string) -> result<leave-agreement-result, error>;",
249
+ "export get-agreement-nodes: func(ctx: borrow<view-context>, agreement-id: string) -> option<list<string>>;",
250
+ "export is-node-in-agreement: func(ctx: borrow<view-context>, agreement-id: string, node-id: string) -> bool;",
251
+ "export get-min-nodes: func(ctx: borrow<view-context>) -> u64;",
252
+ ] as const;
253
+
254
+ const storageAgreement = parseWit(storageAgreementRaw);
255
+
256
+ test("Storage Agreement - view keys are camelCased", () => {
257
+ type ViewKeys = keyof GetContractReturnType<typeof storageAgreement>["view"];
47
258
 
48
- // For FibAbi, the only view fn is "cached-values", so this should be just "cachedValues"
49
259
  expectTypeOf<ViewKeys>().toEqualTypeOf<
50
- "cachedValues" | "fibAsView" | "readWithRecordArg"
260
+ | "getAgreement"
261
+ | "agreementCount"
262
+ | "getAgreementNodes"
263
+ | "isNodeInAgreement"
264
+ | "getMinNodes"
265
+ >();
266
+ });
267
+
268
+ test("Storage Agreement - proc keys are camelCased", () => {
269
+ type ProcKeys = keyof GetContractReturnType<typeof storageAgreement>["proc"];
270
+
271
+ expectTypeOf<ProcKeys>().toEqualTypeOf<
272
+ "createAgreement" | "joinAgreement" | "leaveAgreement"
273
+ >();
274
+ });
275
+
276
+ test("Storage Agreement - get-agreement view function", () => {
277
+ type GetAgreementFn = GetViewFunction<
278
+ true,
279
+ undefined,
280
+ typeof storageAgreement,
281
+ "get-agreement"
282
+ >;
283
+
284
+ type Params = Parameters<GetAgreementFn>;
285
+ expectTypeOf<Params[0]>().toEqualTypeOf<readonly [string]>();
286
+
287
+ type Return = Awaited<ReturnType<GetAgreementFn>>;
288
+
289
+ expectTypeOf<Return>().toEqualTypeOf<
290
+ | [
291
+ "some",
292
+ {
293
+ ["agreement-id"]: string;
294
+ ["file-id"]: string;
295
+ root: readonly number[];
296
+ depth: bigint;
297
+ active: boolean;
298
+ },
299
+ ]
300
+ | ["none"]
51
301
  >();
52
302
  });
53
303
 
54
- test("getContract", async () => {
55
- // const contract = getContract({
56
- // wit: wit,
57
- // });
58
- // const res0 = contract.view.readWithRecordArg(["token_10_11"]);
59
- //
60
- // const res = contract.view.cachedValues();
61
- //
62
- // const res_2 = contract.view.fibAsView([10n]);
63
- // const re3 = contract.view.readTools();
304
+ test("Storage Agreement - agreement-count view function", () => {
305
+ type AgreementCountFn = GetViewFunction<
306
+ true,
307
+ undefined,
308
+ typeof storageAgreement,
309
+ "agreement-count"
310
+ >;
311
+
312
+ type Params = Parameters<AgreementCountFn>;
313
+ expectTypeOf<Params[0]>().toEqualTypeOf<{
314
+ chain: Chain | null | undefined;
315
+ }>();
316
+
317
+ type Return = Awaited<ReturnType<AgreementCountFn>>;
318
+ expectTypeOf<Return>().toEqualTypeOf<bigint>();
64
319
  });
65
320
 
66
- test("GetViewFunction for cached-values (no inputs)", () => {
67
- type Fn = GetViewFunction<true, undefined, typeof wit, "cached-values">;
321
+ test("Storage Agreement - get-agreement-nodes view function", () => {
322
+ type GetAgreementNodesFn = GetViewFunction<
323
+ true,
324
+ undefined,
325
+ typeof storageAgreement,
326
+ "get-agreement-nodes"
327
+ >;
328
+
329
+ type Params = Parameters<GetAgreementNodesFn>;
330
+ expectTypeOf<Params[0]>().toEqualTypeOf<readonly [string]>();
331
+
332
+ type Return = Awaited<ReturnType<GetAgreementNodesFn>>;
333
+ expectTypeOf<Return>().toEqualTypeOf<
334
+ ["some", readonly string[]] | ["none"]
335
+ >();
336
+ });
337
+
338
+ test("Storage Agreement - is-node-in-agreement view function", () => {
339
+ type IsNodeInAgreementFn = GetViewFunction<
340
+ true,
341
+ undefined,
342
+ typeof storageAgreement,
343
+ "is-node-in-agreement"
344
+ >;
345
+
346
+ type Params = Parameters<IsNodeInAgreementFn>;
347
+ expectTypeOf<Params[0]>().toEqualTypeOf<readonly [string, string]>();
348
+
349
+ type Return = Awaited<ReturnType<IsNodeInAgreementFn>>;
350
+ expectTypeOf<Return>().toEqualTypeOf<boolean>();
351
+ });
352
+
353
+ test("Storage Agreement - get-min-nodes view function", () => {
354
+ type GetMinNodesFn = GetViewFunction<
355
+ true,
356
+ undefined,
357
+ typeof storageAgreement,
358
+ "get-min-nodes"
359
+ >;
360
+
361
+ type Params = Parameters<GetMinNodesFn>;
362
+ expectTypeOf<Params[0]>().toEqualTypeOf<{
363
+ chain: Chain | null | undefined;
364
+ }>();
365
+
366
+ type Return = Awaited<ReturnType<GetMinNodesFn>>;
367
+ expectTypeOf<Return>().toEqualTypeOf<bigint>();
368
+ });
369
+
370
+ test("Storage Agreement - create-agreement proc function", () => {
371
+ type CreateAgreementFn = GetProcFunction<
372
+ true,
373
+ undefined,
374
+ undefined,
375
+ typeof storageAgreement,
376
+ "create-agreement"
377
+ >;
378
+
379
+ type Params = Parameters<CreateAgreementFn>;
380
+ // raw-file-descriptor is an unknown type
381
+ expectTypeOf<Params[0]>().toEqualTypeOf<readonly [unknown]>();
382
+ expectTypeOf<Params[1]>().toEqualTypeOf<{
383
+ account: [string, string] | Account | null;
384
+ chain: Chain | null | undefined;
385
+ utxos: UtxoId[];
386
+ gas: bigint;
387
+ satsPerVByte: number;
388
+ }>();
389
+ });
390
+
391
+ test("Storage Agreement - join-agreement proc function", () => {
392
+ type JoinAgreementFn = GetProcFunction<
393
+ true,
394
+ undefined,
395
+ undefined,
396
+ typeof storageAgreement,
397
+ "join-agreement"
398
+ >;
399
+
400
+ type Params = Parameters<JoinAgreementFn>;
401
+ assertType<Params[0]>(["agreement-123", "node-456"]);
402
+
403
+ expectTypeOf<Params[1]>().toEqualTypeOf<{
404
+ account: [string, string] | Account | null;
405
+ chain: Chain | null | undefined;
406
+ utxos: UtxoId[];
407
+ gas: bigint;
408
+ satsPerVByte: number;
409
+ }>();
410
+ });
411
+
412
+ test("Storage Agreement - leave-agreement proc function", () => {
413
+ type LeaveAgreementFn = GetProcFunction<
414
+ true,
415
+ undefined,
416
+ undefined,
417
+ typeof storageAgreement,
418
+ "leave-agreement"
419
+ >;
420
+
421
+ type Params = Parameters<LeaveAgreementFn>;
422
+ assertType<Params[0]>(["agreement-123", "node-456"]);
423
+
424
+ expectTypeOf<Params[1]>().toEqualTypeOf<{
425
+ account: [string, string] | Account | null;
426
+ chain: Chain | null | undefined;
427
+ utxos: UtxoId[];
428
+ gas: bigint;
429
+ satsPerVByte: number;
430
+ }>();
431
+ });
432
+
433
+ test("Storage Agreement - getContract runtime structure", () => {
434
+ const mockClient = {} as KontorIndexerClient;
435
+
436
+ const contract = getContract({
437
+ wit: storageAgreement,
438
+ contractAddress: "agreement_0_0",
439
+ client: mockClient,
440
+ });
441
+
442
+ // Test view functions
443
+ expectTypeOf(contract.view).toHaveProperty("getAgreement");
444
+ expectTypeOf(contract.view).toHaveProperty("agreementCount");
445
+ expectTypeOf(contract.view).toHaveProperty("getAgreementNodes");
446
+ expectTypeOf(contract.view).toHaveProperty("isNodeInAgreement");
447
+ expectTypeOf(contract.view).toHaveProperty("getMinNodes");
68
448
 
69
- // return type: Promise<ViewContractReturnType<...>>
70
- // kay
71
- expectTypeOf<Awaited<ReturnType<Fn>>>().toEqualTypeOf<readonly bigint[]>();
449
+ expectTypeOf(contract.proc).toHaveProperty("createAgreement");
450
+ expectTypeOf(contract.proc).toHaveProperty("joinAgreement");
451
+ expectTypeOf(contract.proc).toHaveProperty("leaveAgreement");
72
452
  });