@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,17 +1,12 @@
1
- import { test } from "vitest";
2
- // import { procContract } from "./proc-contract.js";
1
+ import { test, vi, expect } from "vitest";
3
2
  import { parseWit } from "../../../../wit/wit-parser/parse-wit.js";
4
3
  import { createPublicClient } from "../../../clients/kontor/create-public-client.js";
5
- import { http } from "../../../clients/transports/http.js";
6
- import { signet } from "../../../../exports/index.js";
4
+ import { createHttpTransport } from "../../../../sdk/clients/transports/create-http-transport.js";
5
+ import { signet } from "../../../chains/definitions/signet.js";
7
6
 
8
- // define the wit
9
- const input = [
7
+ // Token Contract WIT
8
+ const tokenWit = [
10
9
  "record balance { key: string, value: decimal }",
11
- // TODO: barfing on core-context
12
- // "export issuance: func(ctx: borrow<core-context>, n: decimal) -> result<_, error>;",
13
- // "export hold: func(ctx: borrow<core-context>, n: decimal) -> result<_, error>;",
14
- // "export burn-and-release: func(ctx: borrow<core-context>, n: decimal) -> result<_, error>;",
15
10
  "export init: func(ctx: borrow<proc-context>);",
16
11
  "export mint: func(ctx: borrow<proc-context>, n: decimal) -> result<_, error>;",
17
12
  "export burn: func(ctx: borrow<proc-context>, n: decimal) -> result<_, error>;",
@@ -21,28 +16,221 @@ const input = [
21
16
  "export total-supply: func(ctx: borrow<view-context>) -> decimal;",
22
17
  ] as const;
23
18
 
24
- const wit = parseWit(input);
19
+ const wit = parseWit(tokenWit);
20
+
21
+ test("mint", async () => {
22
+ const transportRequestMock = vi.fn(async (_request) => {
23
+ return { result: {} };
24
+ });
25
+
26
+ const mockTransport = () =>
27
+ createHttpTransport({
28
+ key: "mock",
29
+ name: "Mock Transport",
30
+ request: transportRequestMock,
31
+ type: "mock",
32
+ });
33
+
34
+ const client = createPublicClient({
35
+ transport: mockTransport,
36
+ chain: signet,
37
+ account: [
38
+ "tb1pj2wrjsg0ksmmflec0myf3j7qnqm9myvk2pesqn7y8cqn6sgdg9ls9u6tar",
39
+ "2c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f",
40
+ ],
41
+ });
42
+
43
+ await client.procContract({
44
+ wit: wit,
45
+ functionName: "mint",
46
+ contractAddress: "token_0_0",
47
+ args: [[100n, 0]], // decimal is [bigint, number] tuple
48
+ satsPerVByte: 1,
49
+ utxos: [
50
+ "57f1f46857ab12e20f32ecaac780b4096b0951458e15ab08e2ce0992f0521323:0",
51
+ ],
52
+ gas: 10n,
53
+ });
54
+
55
+ expect(transportRequestMock).toHaveBeenCalledWith({
56
+ route: "/transactions/compose",
57
+ method: "POST",
58
+ body: {
59
+ envelope: null,
60
+ instructions: [
61
+ {
62
+ address:
63
+ "tb1pj2wrjsg0ksmmflec0myf3j7qnqm9myvk2pesqn7y8cqn6sgdg9ls9u6tar",
64
+ chained_instruction: null,
65
+ funding_utxo_ids:
66
+ "57f1f46857ab12e20f32ecaac780b4096b0951458e15ab08e2ce0992f0521323:0",
67
+ instruction: {
68
+ Call: {
69
+ contract: "token_0_0",
70
+ expr: "mint({r0: 7766279631452241920, r1: 5, r2: 0, r3: 0, sign: plus})",
71
+ gas_limit: 10,
72
+ },
73
+ },
74
+ x_only_public_key:
75
+ "2c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f",
76
+ },
77
+ ],
78
+ sat_per_vbyte: 1,
79
+ },
80
+ });
81
+ });
82
+
83
+ test("burn", async () => {
84
+ const transportRequestMock = vi.fn(async (_request) => {
85
+ return { result: {} };
86
+ });
87
+
88
+ const mockTransport = () =>
89
+ createHttpTransport({
90
+ key: "mock",
91
+ name: "Mock Transport",
92
+ request: transportRequestMock,
93
+ type: "mock",
94
+ });
25
95
 
26
- test.skip("e2e", async () => {
27
96
  const client = createPublicClient({
28
- transport: http("https://signet.kontor.network:35000/api"),
29
- // optional parameter
97
+ transport: mockTransport,
98
+ chain: signet,
30
99
  account: [
31
100
  "tb1pj2wrjsg0ksmmflec0myf3j7qnqm9myvk2pesqn7y8cqn6sgdg9ls9u6tar",
32
101
  "2c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f",
33
102
  ],
103
+ });
104
+
105
+ await client.procContract({
106
+ wit: wit,
107
+ functionName: "burn",
108
+ contractAddress: "token_0_0",
109
+ args: [[50n, 0]],
110
+ satsPerVByte: 1,
111
+ utxos: [
112
+ "57f1f46857ab12e20f32ecaac780b4096b0951458e15ab08e2ce0992f0521323:0",
113
+ ],
114
+ gas: 10n,
115
+ });
116
+
117
+ expect(transportRequestMock).toHaveBeenCalledWith({
118
+ route: "/transactions/compose",
119
+ method: "POST",
120
+ body: {
121
+ envelope: null,
122
+ instructions: [
123
+ {
124
+ address:
125
+ "tb1pj2wrjsg0ksmmflec0myf3j7qnqm9myvk2pesqn7y8cqn6sgdg9ls9u6tar",
126
+ chained_instruction: null,
127
+ funding_utxo_ids:
128
+ "57f1f46857ab12e20f32ecaac780b4096b0951458e15ab08e2ce0992f0521323:0",
129
+ instruction: {
130
+ Call: {
131
+ contract: "token_0_0",
132
+ expr: "burn({r0: 13106511852580896768, r1: 2, r2: 0, r3: 0, sign: plus})",
133
+ gas_limit: 10,
134
+ },
135
+ },
136
+ x_only_public_key:
137
+ "2c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f",
138
+ },
139
+ ],
140
+ sat_per_vbyte: 1,
141
+ },
142
+ });
143
+ });
144
+
145
+ test("transfer", async () => {
146
+ const transportRequestMock = vi.fn(async (_request) => {
147
+ return { result: {} };
148
+ });
149
+
150
+ const mockTransport = () =>
151
+ createHttpTransport({
152
+ key: "mock",
153
+ name: "Mock Transport",
154
+ request: transportRequestMock,
155
+ type: "mock",
156
+ });
157
+
158
+ const client = createPublicClient({
159
+ transport: mockTransport,
34
160
  chain: signet,
161
+ account: [
162
+ "tb1pj2wrjsg0ksmmflec0myf3j7qnqm9myvk2pesqn7y8cqn6sgdg9ls9u6tar",
163
+ "2c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f",
164
+ ],
35
165
  });
36
166
 
37
- // proc contract action defined on client
38
- // response is correctly typed
39
- const res = await client.procContract({
167
+ await client.procContract({
40
168
  wit: wit,
41
- // can also be injected
169
+ functionName: "transfer",
170
+ contractAddress: "token_0_0",
171
+ args: ["tb1q...", [25n, 0]],
172
+ satsPerVByte: 1,
173
+ utxos: [
174
+ "57f1f46857ab12e20f32ecaac780b4096b0951458e15ab08e2ce0992f0521323:0",
175
+ ],
176
+ gas: 10n,
177
+ });
178
+
179
+ expect(transportRequestMock).toHaveBeenCalledWith({
180
+ route: "/transactions/compose",
181
+ method: "POST",
182
+ body: {
183
+ envelope: null,
184
+ instructions: [
185
+ {
186
+ address:
187
+ "tb1pj2wrjsg0ksmmflec0myf3j7qnqm9myvk2pesqn7y8cqn6sgdg9ls9u6tar",
188
+ chained_instruction: null,
189
+ funding_utxo_ids:
190
+ "57f1f46857ab12e20f32ecaac780b4096b0951458e15ab08e2ce0992f0521323:0",
191
+ instruction: {
192
+ Call: {
193
+ contract: "token_0_0",
194
+ expr: 'transfer("tb1q...", {r0: 6553255926290448384, r1: 1, r2: 0, r3: 0, sign: plus})',
195
+ gas_limit: 10,
196
+ },
197
+ },
198
+ x_only_public_key:
199
+ "2c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f",
200
+ },
201
+ ],
202
+ sat_per_vbyte: 1,
203
+ },
204
+ });
205
+ });
206
+
207
+ test("mint with scientific notation decimal", async () => {
208
+ const transportRequestMock = vi.fn(async (_request) => {
209
+ return { result: {} };
210
+ });
211
+
212
+ const mockTransport = () =>
213
+ createHttpTransport({
214
+ key: "mock",
215
+ name: "Mock Transport",
216
+ request: transportRequestMock,
217
+ type: "mock",
218
+ });
219
+
220
+ const client = createPublicClient({
221
+ transport: mockTransport,
222
+ chain: signet,
223
+ account: [
224
+ "tb1pj2wrjsg0ksmmflec0myf3j7qnqm9myvk2pesqn7y8cqn6sgdg9ls9u6tar",
225
+ "2c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f",
226
+ ],
227
+ });
42
228
 
43
- functionName: "mint", // functin name is only valid if it's got a proc-context
229
+ await client.procContract({
230
+ wit: wit,
231
+ functionName: "mint",
44
232
  contractAddress: "token_0_0",
45
- args: [[7n, 18]],
233
+ args: [[7n, 18]], // 7 * 10^18
46
234
  satsPerVByte: 1,
47
235
  utxos: [
48
236
  "57f1f46857ab12e20f32ecaac780b4096b0951458e15ab08e2ce0992f0521323:0",
@@ -50,5 +238,30 @@ test.skip("e2e", async () => {
50
238
  gas: 10n,
51
239
  });
52
240
 
53
- console.log({ callproc: res.result });
241
+ expect(transportRequestMock).toHaveBeenCalledWith({
242
+ route: "/transactions/compose",
243
+ method: "POST",
244
+ body: {
245
+ envelope: null,
246
+ instructions: [
247
+ {
248
+ address:
249
+ "tb1pj2wrjsg0ksmmflec0myf3j7qnqm9myvk2pesqn7y8cqn6sgdg9ls9u6tar",
250
+ chained_instruction: null,
251
+ funding_utxo_ids:
252
+ "57f1f46857ab12e20f32ecaac780b4096b0951458e15ab08e2ce0992f0521323:0",
253
+ instruction: {
254
+ Call: {
255
+ contract: "token_0_0",
256
+ expr: "mint({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})",
257
+ gas_limit: 10,
258
+ },
259
+ },
260
+ x_only_public_key:
261
+ "2c7b730daa0036e8276cdd8fabe844b2dd324a6d227dd209663805189d03e51f",
262
+ },
263
+ ],
264
+ sat_per_vbyte: 1,
265
+ },
266
+ });
54
267
  });
@@ -0,0 +1,240 @@
1
+ import { expectTypeOf, test } from "vitest";
2
+ import { parseWit } from "../../../../wit/wit-parser/parse-wit.js";
3
+ import type {
4
+ ViewContractReturnType,
5
+ ViewContractParameters,
6
+ } from "./view-contract.js";
7
+
8
+ // Color Palette Contract - demonstrates variants and enums in WIT
9
+ const colorPaletteWit = [
10
+ // Records
11
+ "record rgb { r: u8, g: u8, b: u8 }",
12
+ "record hsv { h: u16, s: u8, v: u8 }",
13
+ "record palette-info { name: string, size: u32, owner: string }",
14
+ // Enums
15
+ "enum palette-status { active, archived, locked, readonly }",
16
+ "enum sort-order { alphabetical, creation-date, usage-count }",
17
+ // Variants
18
+ "variant color { hex(string), rgb(rgb), hsv(hsv), named(string) }",
19
+ "variant query { by-name(string), by-index(u32), all, by-status(palette-status) }",
20
+ "variant palette-event { created(palette-info), color-added(color), color-removed(u32), status-changed(palette-status) }",
21
+ // Proc functions
22
+ "export add-color: func(ctx: borrow<proc-context>, c: color) -> result<list<color>, error>;",
23
+ "export remove-color: func(ctx: borrow<proc-context>, index: u32) -> result<color, error>;",
24
+ "export set-status: func(ctx: borrow<proc-context>, status: palette-status) -> result<palette-status, error>;",
25
+ "export sort-colors: func(ctx: borrow<proc-context>, order: sort-order) -> result<_, error>;",
26
+ // View functions
27
+ "export get-colors: func(ctx: borrow<view-context>) -> list<color>;",
28
+ "export get-color: func(ctx: borrow<view-context>, index: u32) -> option<color>;",
29
+ "export get-status: func(ctx: borrow<view-context>) -> palette-status;",
30
+ "export get-info: func(ctx: borrow<view-context>) -> palette-info;",
31
+ "export query-colors: func(ctx: borrow<view-context>, q: query) -> list<color>;",
32
+ "export find-color: func(ctx: borrow<view-context>, c: color) -> option<u32>;",
33
+ "export get-recent-events: func(ctx: borrow<view-context>, limit: u32) -> list<palette-event>;",
34
+ ] as const;
35
+
36
+ const colorPalette = parseWit(colorPaletteWit);
37
+
38
+ test("get-colors return type", () => {
39
+ type Result = ViewContractReturnType<typeof colorPalette, "get-colors">;
40
+
41
+ expectTypeOf<Result>().toEqualTypeOf<
42
+ readonly (
43
+ | ["hex", string]
44
+ | [
45
+ "rgb",
46
+ {
47
+ r: number;
48
+ g: number;
49
+ b: number;
50
+ },
51
+ ]
52
+ | [
53
+ "hsv",
54
+ {
55
+ h: number;
56
+ s: number;
57
+ v: number;
58
+ },
59
+ ]
60
+ | ["named", string]
61
+ )[]
62
+ >();
63
+ });
64
+
65
+ test("get-color return type", () => {
66
+ type Result = ViewContractReturnType<typeof colorPalette, "get-color">;
67
+
68
+ expectTypeOf<Result>().toEqualTypeOf<
69
+ | ["none"]
70
+ | [
71
+ "some",
72
+ (
73
+ | ["hex", string]
74
+ | [
75
+ "rgb",
76
+ {
77
+ r: number;
78
+ g: number;
79
+ b: number;
80
+ },
81
+ ]
82
+ | [
83
+ "hsv",
84
+ {
85
+ h: number;
86
+ s: number;
87
+ v: number;
88
+ },
89
+ ]
90
+ | ["named", string]
91
+ ),
92
+ ]
93
+ >();
94
+ });
95
+
96
+ test("get-status return type", () => {
97
+ type Result = ViewContractReturnType<typeof colorPalette, "get-status", []>;
98
+
99
+ expectTypeOf<Result>().toEqualTypeOf<
100
+ "active" | "archived" | "locked" | "readonly"
101
+ >();
102
+ });
103
+
104
+ test("get-info return type", () => {
105
+ type Result = ViewContractReturnType<typeof colorPalette, "get-info", []>;
106
+
107
+ expectTypeOf<Result>().toEqualTypeOf<{
108
+ name: string;
109
+ size: number;
110
+ owner: string;
111
+ }>();
112
+ });
113
+
114
+ test("query-colors argument type - should be discriminated union", () => {
115
+ type Params = ViewContractParameters<typeof colorPalette, "query-colors">;
116
+
117
+ expectTypeOf<Params["args"]>().toEqualTypeOf<
118
+ readonly [
119
+ | ["by-name", string]
120
+ | ["by-index", number]
121
+ | ["all"]
122
+ | ["by-status", "active" | "archived" | "locked" | "readonly"],
123
+ ]
124
+ >;
125
+ });
126
+
127
+ test("query-colors return type", () => {
128
+ type Result = ViewContractReturnType<typeof colorPalette, "query-colors">;
129
+
130
+ expectTypeOf<Result>().toEqualTypeOf<
131
+ readonly (
132
+ | ["hex", string]
133
+ | [
134
+ "rgb",
135
+ {
136
+ r: number;
137
+ g: number;
138
+ b: number;
139
+ },
140
+ ]
141
+ | [
142
+ "hsv",
143
+ {
144
+ h: number;
145
+ s: number;
146
+ v: number;
147
+ },
148
+ ]
149
+ | ["named", string]
150
+ )[]
151
+ >();
152
+ });
153
+
154
+ test("find-color argument type - color variant", () => {
155
+ type Params = ViewContractParameters<typeof colorPalette, "find-color">;
156
+
157
+ expectTypeOf<Params["args"]>().toEqualTypeOf<
158
+ readonly [
159
+ | ["hex", string]
160
+ | ["named", string]
161
+ | [
162
+ "rgb",
163
+ {
164
+ r: number;
165
+ g: number;
166
+ b: number;
167
+ },
168
+ ]
169
+ | [
170
+ "hsv",
171
+ {
172
+ h: number;
173
+ s: number;
174
+ v: number;
175
+ },
176
+ ],
177
+ ]
178
+ >;
179
+ });
180
+
181
+ test("find-color return type", () => {
182
+ type Result = ViewContractReturnType<
183
+ typeof colorPalette,
184
+ "find-color",
185
+ [
186
+ | ["hex", string]
187
+ | ["rgb", { r: number; g: number; b: number }]
188
+ | ["hsv", { h: number; s: number; v: number }]
189
+ | ["named", string],
190
+ ]
191
+ >;
192
+
193
+ expectTypeOf<Result>().toEqualTypeOf<["none"] | ["some", number]>();
194
+ });
195
+
196
+ test("get-recent-events return type", () => {
197
+ type Result = ViewContractReturnType<
198
+ typeof colorPalette,
199
+ "get-recent-events",
200
+ [number]
201
+ >;
202
+
203
+ expectTypeOf<Result>().toEqualTypeOf<
204
+ readonly (
205
+ | [
206
+ "created",
207
+ {
208
+ name: string;
209
+ size: number;
210
+ owner: string;
211
+ },
212
+ ]
213
+ | [
214
+ "color-added",
215
+ (
216
+ | ["hex", string]
217
+ | [
218
+ "rgb",
219
+ {
220
+ r: number;
221
+ g: number;
222
+ b: number;
223
+ },
224
+ ]
225
+ | [
226
+ "hsv",
227
+ {
228
+ h: number;
229
+ s: number;
230
+ v: number;
231
+ },
232
+ ]
233
+ | ["named", string]
234
+ ),
235
+ ]
236
+ | ["color-removed", number]
237
+ | ["status-changed", "active" | "archived" | "locked" | "readonly"]
238
+ )[]
239
+ >();
240
+ });