@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,33 +1,628 @@
1
- import { test } from "vitest";
1
+ import { test, vi, expect } from "vitest";
2
2
  import { viewContract } from "./view-contract.js";
3
3
  import { parseWit } from "../../../../wit/wit-parser/parse-wit.js";
4
4
  import { createPublicClient } from "../../../clients/kontor/create-public-client.js";
5
- import { http } from "../../../clients/transports/http.js";
6
- import { nativeToken } from "../../../contracts/wits.js";
5
+ import { createHttpTransport } from "../../../../sdk/clients/transports/create-http-transport.js";
7
6
  import { signet } from "../../../chains/definitions/signet.js";
8
7
 
9
- const wit = parseWit(nativeToken.raw);
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
+
35
+ "export get-color-result: func(ctx: borrow<view-context>, index: u32) -> result<color, error>;",
36
+ ] as const;
37
+
38
+ const colorPalette = parseWit(colorPaletteWit);
39
+
40
+ test("get-colors", async () => {
41
+ const transportRequestMock = vi.fn(async (_request) => {
42
+ // Returns list<color> - a list of color variants
43
+ return {
44
+ result: {
45
+ type: "Ok",
46
+ value: '[hex("#FF5733"), rgb({r: 255, g: 87, b: 51}), named("tomato")]',
47
+ },
48
+ };
49
+ });
50
+
51
+ const mockTransport = () =>
52
+ createHttpTransport({
53
+ key: "mock",
54
+ name: "Mock Transport",
55
+ request: transportRequestMock,
56
+ type: "mock",
57
+ });
58
+
59
+ const client = createPublicClient({
60
+ transport: mockTransport,
61
+ chain: signet,
62
+ });
63
+
64
+ const result = await client.viewContract({
65
+ wit: colorPalette,
66
+ functionName: "get-colors",
67
+ contractAddress: "palette_0_0",
68
+ });
69
+
70
+ expect(transportRequestMock).toHaveBeenCalledWith({
71
+ route: "/contracts/:contractAddress",
72
+ method: "POST",
73
+ path: { contractAddress: "palette_0_0" },
74
+ body: { expr: "get-colors()" },
75
+ });
76
+
77
+ // Verify deserialized result - list<color> becomes array of variant tuples
78
+ expect(result).toEqual([
79
+ ["hex", "#FF5733"],
80
+ ["rgb", { r: 255, g: 87, b: 51 }],
81
+ ["named", "tomato"],
82
+ ]);
83
+ });
84
+
85
+ test("get-color", async () => {
86
+ const transportRequestMock = vi.fn(async (_request) => {
87
+ // Returns option<color> - some variant with a color
88
+ return {
89
+ result: {
90
+ type: "Ok",
91
+ value: 'some(hex("#FF5733"))',
92
+ },
93
+ };
94
+ });
95
+
96
+ const mockTransport = () =>
97
+ createHttpTransport({
98
+ key: "mock",
99
+ name: "Mock Transport",
100
+ request: transportRequestMock,
101
+ type: "mock",
102
+ });
103
+
104
+ const client = createPublicClient({
105
+ transport: mockTransport,
106
+ chain: signet,
107
+ });
108
+
109
+ const result = await viewContract(client, {
110
+ wit: colorPalette,
111
+ functionName: "get-color",
112
+ contractAddress: "palette_0_0",
113
+ args: [0],
114
+ });
115
+
116
+ expect(transportRequestMock).toHaveBeenCalledWith({
117
+ route: "/contracts/:contractAddress",
118
+ method: "POST",
119
+ path: { contractAddress: "palette_0_0" },
120
+ body: { expr: "get-color(0)" },
121
+ });
122
+
123
+ // Verify deserialized result - option<color> with some
124
+ expect(result).toEqual(["some", ["hex", "#FF5733"]]);
125
+ });
126
+
127
+ test("get-color returns none", async () => {
128
+ const transportRequestMock = vi.fn(async (_request) => {
129
+ return {
130
+ result: {
131
+ type: "Ok",
132
+ value: "none",
133
+ },
134
+ };
135
+ });
136
+
137
+ const mockTransport = () =>
138
+ createHttpTransport({
139
+ key: "mock",
140
+ name: "Mock Transport",
141
+ request: transportRequestMock,
142
+ type: "mock",
143
+ });
144
+
145
+ const client = createPublicClient({
146
+ transport: mockTransport,
147
+ chain: signet,
148
+ });
149
+
150
+ const result = await viewContract(client, {
151
+ wit: colorPalette,
152
+ functionName: "get-color",
153
+ contractAddress: "palette_0_0",
154
+ args: [99],
155
+ });
156
+
157
+ // Verify deserialized result - option with none
158
+ expect(result).toEqual(["none"]);
159
+ });
160
+
161
+ test("get-status", async () => {
162
+ const transportRequestMock = vi.fn(async (_request) => {
163
+ // Returns palette-status enum
164
+ return {
165
+ result: {
166
+ type: "Ok",
167
+ value: "active",
168
+ },
169
+ };
170
+ });
171
+
172
+ const mockTransport = () =>
173
+ createHttpTransport({
174
+ key: "mock",
175
+ name: "Mock Transport",
176
+ request: transportRequestMock,
177
+ type: "mock",
178
+ });
179
+
180
+ const client = createPublicClient({
181
+ transport: mockTransport,
182
+ chain: signet,
183
+ });
184
+
185
+ const result = await viewContract(client, {
186
+ wit: colorPalette,
187
+ functionName: "get-status",
188
+ contractAddress: "palette_0_0",
189
+ });
190
+
191
+ expect(transportRequestMock).toHaveBeenCalledWith({
192
+ route: "/contracts/:contractAddress",
193
+ method: "POST",
194
+ path: { contractAddress: "palette_0_0" },
195
+ body: { expr: "get-status()" },
196
+ });
197
+
198
+ // Verify deserialized result - enum becomes the string value
199
+ expect(result).toBe("active");
200
+ });
201
+
202
+ test("get-info", async () => {
203
+ const transportRequestMock = vi.fn(async (_request) => {
204
+ // Returns palette-info record
205
+ return {
206
+ result: {
207
+ type: "Ok",
208
+ value: '{name: "My Palette", size: 5, owner: "user123"}',
209
+ },
210
+ };
211
+ });
212
+
213
+ const mockTransport = () =>
214
+ createHttpTransport({
215
+ key: "mock",
216
+ name: "Mock Transport",
217
+ request: transportRequestMock,
218
+ type: "mock",
219
+ });
10
220
 
11
- test("e2e", async () => {
12
221
  const client = createPublicClient({
13
- transport: http("https://signet-staging.kontor.network:35000/api"),
222
+ transport: mockTransport,
14
223
  chain: signet,
15
224
  });
16
225
 
17
- const res = await client.viewContract({
18
- wit: wit,
19
- functionName: "balances", // functin name is only valid if it's got a view-context
20
- contractAddress: "token_0_0",
226
+ const result = await viewContract(client, {
227
+ wit: colorPalette,
228
+ functionName: "get-info",
229
+ contractAddress: "palette_0_0",
230
+ });
231
+
232
+ expect(transportRequestMock).toHaveBeenCalledWith({
233
+ route: "/contracts/:contractAddress",
234
+ method: "POST",
235
+ path: { contractAddress: "palette_0_0" },
236
+ body: { expr: "get-info()" },
237
+ });
238
+
239
+ // Verify deserialized result - record becomes an object
240
+ expect(result).toEqual({
241
+ name: "My Palette",
242
+ size: 5,
243
+ owner: "user123",
244
+ });
245
+ });
246
+
247
+ test("query-colors with all", async () => {
248
+ const transportRequestMock = vi.fn(async (_request) => {
249
+ // Returns list<color>
250
+ return {
251
+ result: {
252
+ type: "Ok",
253
+ value: '[hex("#FF5733"), rgb({r: 10, g: 150, b: 200})]',
254
+ },
255
+ };
256
+ });
257
+
258
+ const mockTransport = () =>
259
+ createHttpTransport({
260
+ key: "mock",
261
+ name: "Mock Transport",
262
+ request: transportRequestMock,
263
+ type: "mock",
264
+ });
265
+
266
+ const client = createPublicClient({
267
+ transport: mockTransport,
268
+ chain: signet,
269
+ });
270
+
271
+ const result = await viewContract(client, {
272
+ wit: colorPalette,
273
+ functionName: "query-colors",
274
+ contractAddress: "palette_0_0",
275
+ args: [["all"]],
276
+ });
277
+
278
+ expect(transportRequestMock).toHaveBeenCalledWith({
279
+ route: "/contracts/:contractAddress",
280
+ method: "POST",
281
+ path: { contractAddress: "palette_0_0" },
282
+ body: { expr: "query-colors(all)" },
283
+ });
284
+
285
+ // Verify deserialized result
286
+ expect(result).toEqual([
287
+ ["hex", "#FF5733"],
288
+ ["rgb", { r: 10, g: 150, b: 200 }],
289
+ ]);
290
+ });
291
+
292
+ test("query-colors with by-name", async () => {
293
+ const transportRequestMock = vi.fn(async (_request) => {
294
+ // Returns list<color>
295
+ return {
296
+ result: {
297
+ type: "Ok",
298
+ value: '[named("sunset"), hex("#FF6347")]',
299
+ },
300
+ };
301
+ });
302
+
303
+ const mockTransport = () =>
304
+ createHttpTransport({
305
+ key: "mock",
306
+ name: "Mock Transport",
307
+ request: transportRequestMock,
308
+ type: "mock",
309
+ });
310
+
311
+ const client = createPublicClient({
312
+ transport: mockTransport,
313
+ chain: signet,
314
+ });
315
+
316
+ const result = await viewContract(client, {
317
+ wit: colorPalette,
318
+ functionName: "query-colors",
319
+ contractAddress: "palette_0_0",
320
+ args: [["by-name", "sunset"]],
321
+ });
322
+
323
+ expect(transportRequestMock).toHaveBeenCalledWith({
324
+ route: "/contracts/:contractAddress",
325
+ method: "POST",
326
+ path: { contractAddress: "palette_0_0" },
327
+ body: { expr: 'query-colors(by-name("sunset"))' },
328
+ });
329
+
330
+ // Verify deserialized result
331
+ expect(result).toEqual([
332
+ ["named", "sunset"],
333
+ ["hex", "#FF6347"],
334
+ ]);
335
+ });
336
+
337
+ test("query-colors with by-index", async () => {
338
+ const transportRequestMock = vi.fn(async (_request) => {
339
+ // Returns list<color>
340
+ return {
341
+ result: {
342
+ type: "Ok",
343
+ value: "[rgb({r: 255, g: 0, b: 0})]",
344
+ },
345
+ };
346
+ });
347
+
348
+ const mockTransport = () =>
349
+ createHttpTransport({
350
+ key: "mock",
351
+ name: "Mock Transport",
352
+ request: transportRequestMock,
353
+ type: "mock",
354
+ });
355
+
356
+ const client = createPublicClient({
357
+ transport: mockTransport,
358
+ chain: signet,
359
+ });
360
+
361
+ const result = await viewContract(client, {
362
+ wit: colorPalette,
363
+ functionName: "query-colors",
364
+ contractAddress: "palette_0_0",
365
+ args: [["by-index", 5]],
366
+ });
367
+
368
+ expect(transportRequestMock).toHaveBeenCalledWith({
369
+ route: "/contracts/:contractAddress",
370
+ method: "POST",
371
+ path: { contractAddress: "palette_0_0" },
372
+ body: { expr: "query-colors(by-index(5))" },
373
+ });
374
+
375
+ // Verify deserialized result
376
+ expect(result).toEqual([["rgb", { r: 255, g: 0, b: 0 }]]);
377
+ });
378
+
379
+ test("query-colors with by-status", async () => {
380
+ const transportRequestMock = vi.fn(async (_request) => {
381
+ // Returns list<color>
382
+ return {
383
+ result: {
384
+ type: "Ok",
385
+ value: '[hex("#00FF00"), named("green")]',
386
+ },
387
+ };
388
+ });
389
+
390
+ const mockTransport = () =>
391
+ createHttpTransport({
392
+ key: "mock",
393
+ name: "Mock Transport",
394
+ request: transportRequestMock,
395
+ type: "mock",
396
+ });
397
+
398
+ const client = createPublicClient({
399
+ transport: mockTransport,
400
+ chain: signet,
401
+ });
402
+
403
+ const result = await viewContract(client, {
404
+ wit: colorPalette,
405
+ functionName: "query-colors",
406
+ contractAddress: "palette_0_0",
407
+ args: [["by-status", "active"]],
408
+ });
409
+
410
+ expect(transportRequestMock).toHaveBeenCalledWith({
411
+ route: "/contracts/:contractAddress",
412
+ method: "POST",
413
+ path: { contractAddress: "palette_0_0" },
414
+ body: { expr: "query-colors(by-status(active))" },
415
+ });
416
+
417
+ // Verify deserialized result
418
+ expect(result).toEqual([
419
+ ["hex", "#00FF00"],
420
+ ["named", "green"],
421
+ ]);
422
+ });
423
+
424
+ test("find-color with hex variant", async () => {
425
+ const transportRequestMock = vi.fn(async (_request) => {
426
+ // Returns option<u32>
427
+ return {
428
+ result: {
429
+ type: "Ok",
430
+ value: "some(3)",
431
+ },
432
+ };
433
+ });
434
+
435
+ const mockTransport = () =>
436
+ createHttpTransport({
437
+ key: "mock",
438
+ name: "Mock Transport",
439
+ request: transportRequestMock,
440
+ type: "mock",
441
+ });
442
+
443
+ const client = createPublicClient({
444
+ transport: mockTransport,
445
+ chain: signet,
446
+ });
447
+
448
+ const result = await viewContract(client, {
449
+ wit: colorPalette,
450
+ functionName: "find-color",
451
+ contractAddress: "palette_0_0",
452
+ args: [["hex", "#FF5733"]],
453
+ });
454
+
455
+ expect(transportRequestMock).toHaveBeenCalledWith({
456
+ route: "/contracts/:contractAddress",
457
+ method: "POST",
458
+ path: { contractAddress: "palette_0_0" },
459
+ body: { expr: 'find-color(hex("#FF5733"))' },
460
+ });
461
+
462
+ // Verify deserialized result - option<u32> with some
463
+ expect(result).toEqual(["some", 3]);
464
+ });
465
+
466
+ test("find-color with rgb variant", async () => {
467
+ const transportRequestMock = vi.fn(async (_request) => {
468
+ // Returns option<u32>
469
+ return {
470
+ result: {
471
+ type: "Ok",
472
+ value: "some(7)",
473
+ },
474
+ };
475
+ });
476
+
477
+ const mockTransport = () =>
478
+ createHttpTransport({
479
+ key: "mock",
480
+ name: "Mock Transport",
481
+ request: transportRequestMock,
482
+ type: "mock",
483
+ });
484
+
485
+ const client = createPublicClient({
486
+ transport: mockTransport,
487
+ chain: signet,
488
+ });
489
+
490
+ const result = await viewContract(client, {
491
+ wit: colorPalette,
492
+ functionName: "find-color",
493
+ contractAddress: "palette_0_0",
494
+ args: [["rgb", { r: 255, g: 87, b: 51 }]],
495
+ });
496
+
497
+ expect(transportRequestMock).toHaveBeenCalledWith({
498
+ route: "/contracts/:contractAddress",
499
+ method: "POST",
500
+ path: { contractAddress: "palette_0_0" },
501
+ body: { expr: "find-color(rgb({r: 255, g: 87, b: 51}))" },
502
+ });
503
+
504
+ // Verify deserialized result
505
+ expect(result).toEqual(["some", 7]);
506
+ });
507
+
508
+ test("find-color with named variant returns none", async () => {
509
+ const transportRequestMock = vi.fn(async (_request) => {
510
+ // Returns option<u32> - none in this case
511
+ return {
512
+ result: {
513
+ type: "Ok",
514
+ value: "none",
515
+ },
516
+ };
517
+ });
518
+
519
+ const mockTransport = () =>
520
+ createHttpTransport({
521
+ key: "mock",
522
+ name: "Mock Transport",
523
+ request: transportRequestMock,
524
+ type: "mock",
525
+ });
526
+
527
+ const client = createPublicClient({
528
+ transport: mockTransport,
529
+ chain: signet,
530
+ });
531
+
532
+ const result = await viewContract(client, {
533
+ wit: colorPalette,
534
+ functionName: "find-color",
535
+ contractAddress: "palette_0_0",
536
+ args: [["named", "tomato"]],
537
+ });
538
+
539
+ expect(transportRequestMock).toHaveBeenCalledWith({
540
+ route: "/contracts/:contractAddress",
541
+ method: "POST",
542
+ path: { contractAddress: "palette_0_0" },
543
+ body: { expr: 'find-color(named("tomato"))' },
544
+ });
545
+
546
+ // Verify deserialized result - option with none
547
+ expect(result).toEqual(["none"]);
548
+ });
549
+
550
+ test("get-recent-events", async () => {
551
+ const transportRequestMock = vi.fn(async (_request) => {
552
+ // Returns list<palette-event>
553
+ return {
554
+ result: {
555
+ type: "Ok",
556
+ value:
557
+ '[created({name: "Summer Palette", size: 10, owner: "alice"}), color-added(hex("#FF5733")), status-changed(active)]',
558
+ },
559
+ };
560
+ });
561
+
562
+ const mockTransport = () =>
563
+ createHttpTransport({
564
+ key: "mock",
565
+ name: "Mock Transport",
566
+ request: transportRequestMock,
567
+ type: "mock",
568
+ });
569
+
570
+ const client = createPublicClient({
571
+ transport: mockTransport,
572
+ chain: signet,
573
+ });
574
+
575
+ const result = await viewContract(client, {
576
+ wit: colorPalette,
577
+ functionName: "get-recent-events",
578
+ contractAddress: "palette_0_0",
579
+ args: [10],
580
+ });
581
+
582
+ expect(transportRequestMock).toHaveBeenCalledWith({
583
+ route: "/contracts/:contractAddress",
584
+ method: "POST",
585
+ path: { contractAddress: "palette_0_0" },
586
+ body: { expr: "get-recent-events(10)" },
587
+ });
588
+
589
+ expect(result).toEqual([
590
+ ["created", { name: "Summer Palette", size: 10, owner: "alice" }],
591
+ ["color-added", ["hex", "#FF5733"]],
592
+ ["status-changed", "active"],
593
+ ]);
594
+ });
595
+
596
+ test("get-color returns none", async () => {
597
+ const transportRequestMock = vi.fn(async (_request) => {
598
+ return {
599
+ result: {
600
+ type: "Ok",
601
+ value: `err(validation("color not found"))`,
602
+ },
603
+ };
604
+ });
605
+
606
+ const mockTransport = () =>
607
+ createHttpTransport({
608
+ key: "mock",
609
+ name: "Mock Transport",
610
+ request: transportRequestMock,
611
+ type: "mock",
612
+ });
613
+
614
+ const client = createPublicClient({
615
+ transport: mockTransport,
616
+ chain: signet,
21
617
  });
22
618
 
23
- console.log("res:", res);
24
- // inject client directly into view contract action
25
- const res2 = await viewContract(client, {
26
- wit: wit,
27
- functionName: "balance",
28
- contractAddress: "token_0_0",
29
- args: ["252a90b16b5c25b9f366ab4b518f9f2ce3624d23c05dc26f7649f51515c76e2d"],
619
+ const result = await viewContract(client, {
620
+ wit: colorPalette,
621
+ functionName: "get-color-result",
622
+ contractAddress: "palette_0_0",
623
+ args: [99],
30
624
  });
31
625
 
32
- console.log("res2:", res2);
626
+ // Verify deserialized result - option with none
627
+ expect(result).toEqual(["err", ["validation", "color not found"]]);
33
628
  });
@@ -6,8 +6,8 @@ export const signet = defineChain({
6
6
  blockTime: 1_000 * 60 * 10,
7
7
  urls: {
8
8
  default: {
9
- http: ["https://signet-staging.kontor.network:35000/api"],
10
- webSocket: ["wss://signet-staging.kontor.network:35000/ws"],
9
+ http: ["https://signet-staging.kontor.network:35001/api"],
10
+ webSocket: ["wss://signet-staging.kontor.network:35001/ws"],
11
11
  // TODO: maybe need to add auth
12
12
  bitcoinRpc: ["https://signet-staging.kontor.network:38332"],
13
13
  },
@@ -97,10 +97,10 @@ describe("transports", () => {
97
97
  "https://signet-staging.kontor.network:38332",
98
98
  ],
99
99
  "http": [
100
- "https://signet-staging.kontor.network:35000/api",
100
+ "https://signet-staging.kontor.network:35001/api",
101
101
  ],
102
102
  "webSocket": [
103
- "wss://signet-staging.kontor.network:35000/ws",
103
+ "wss://signet-staging.kontor.network:35001/ws",
104
104
  ],
105
105
  },
106
106
  },
@@ -100,10 +100,10 @@ test("with chain", () => {
100
100
  "https://signet-staging.kontor.network:38332",
101
101
  ],
102
102
  "http": [
103
- "https://signet-staging.kontor.network:35000/api",
103
+ "https://signet-staging.kontor.network:35001/api",
104
104
  ],
105
105
  "webSocket": [
106
- "wss://signet-staging.kontor.network:35000/ws",
106
+ "wss://signet-staging.kontor.network:35001/ws",
107
107
  ],
108
108
  },
109
109
  },
@@ -5,7 +5,7 @@ import { http } from "../transports/http.js";
5
5
 
6
6
  test("creates", async () => {
7
7
  const { uid, ...client } = createPublicClient({
8
- transport: http("https://signet.kontor.network:35000/api"),
8
+ transport: http("https://signet.kontor.network:35001/api"),
9
9
  });
10
10
 
11
11
  expect(client).toMatchInlineSnapshot(`
@@ -33,7 +33,7 @@ test("creates", async () => {
33
33
  "retryDelay": 150,
34
34
  "timeout": 10000,
35
35
  "type": "http",
36
- "url": "https://signet.kontor.network:35000/api",
36
+ "url": "https://signet.kontor.network:35001/api",
37
37
  },
38
38
  "type": "kontor-http-client",
39
39
  "viewContract": [Function],