@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,130 +1,153 @@
1
1
  import type { WitParameter, WitType } from "../../../wit/wit.js";
2
2
  import { InvalidWitEncodingTypeError } from "../../errors/wit.js";
3
- import { DecimalCodec } from "./codecs/decimal.js";
4
- import { IntegerCodec } from "./codecs/integer.js";
5
- import { U64Codec } from "./codecs/u64.js";
6
- import { S64Codec } from "./codecs/s64.js";
7
- import { BoolCodec } from "./codecs/bool.js";
8
- import { StringCodec } from "./codecs/string.js";
9
- import { OptionCodecFactory } from "./codecs/option.js";
10
- import { ListCodecFactory } from "./codecs/list.js";
11
- import {
12
- makeDecoder,
13
- type CodecConstructor,
14
- type CodecInstance,
15
- type WaveExpr,
16
- } from "./codecs/types.js";
3
+ import type { Codec } from "./codecs/types.js";
4
+ import * as C from "./codecs/index.js";
5
+
6
+ import { WitError } from "../../../wit/built-ins.js";
7
+
8
+ export type VariantValue = [string, unknown];
9
+ export type RecordValue = Record<string, unknown>;
17
10
 
18
11
  export function decodeWitParameter(value: string, param: WitParameter) {
19
12
  const decoder = decoderForParam(param);
20
-
21
13
  return {
22
- decoded: decoder.decode(value),
14
+ decoded: decoder.decodeWave(value),
23
15
  };
24
16
  }
25
17
 
26
- export function decodeTuple(
27
- record: Record<string, string>,
28
- param: WitParameter,
29
- ): Record<string, string> {
18
+ export function RecordCodec(param: WitParameter): Codec<RecordValue> {
30
19
  if (!param.components) {
31
- throw new Error("Tuple parameter missing components");
20
+ throw new Error("Record parameter missing components");
32
21
  }
33
22
 
34
- return param.components.reduce<Record<string, string>>(
35
- (acc, component: WitParameter) => {
36
- if (!component.name) {
37
- throw new Error("Tuple component missing name");
23
+ return {
24
+ decodeWave(expr: string): RecordValue {
25
+ const record = parseWitRecord(expr);
26
+ const result: Record<string, unknown> = {};
27
+
28
+ for (const component of param.components!) {
29
+ if (!component.name) {
30
+ throw new Error("Record component missing name");
31
+ }
32
+
33
+ const fieldValue = record[component.name];
34
+ if (fieldValue === undefined) {
35
+ throw new Error(`Record missing field "${component.name}"`);
36
+ }
37
+
38
+ const decoder = decoderForParam(component);
39
+ result[component.name] = decoder.decodeWave(fieldValue);
38
40
  }
39
41
 
40
- const fieldValue = record[component.name];
41
- const decoder = decoderForParam(component);
42
- // @ts-ignore
43
- acc[component.name] = decoder.decode(fieldValue!);
42
+ return result;
43
+ },
44
44
 
45
- return acc;
45
+ encodeWave(_value: RecordValue): string {
46
+ throw new Error(
47
+ "RecordCodec.encodeWave not implemented for decoding context",
48
+ );
46
49
  },
47
- {},
48
- );
50
+ };
49
51
  }
50
52
 
51
- export class TupleCodecInstance
52
- implements CodecInstance<Record<string, string>>
53
- {
54
- // 'data' holds the raw parsed JSON object representing the encoded tuple
55
- constructor(
56
- public readonly data: Record<string, string>,
57
- private readonly param: WitParameter,
58
- ) {}
59
-
60
- // Fixes Error 2416: Property 'toWave' must return the branded type WaveExpr
61
- toWave(): WaveExpr {
62
- // Converts JS data back to the wave format (usually a stringified object)
63
- throw new Error("TupleCodec.toWave not implemented for decoding context");
53
+ export function VariantCodec(param: WitParameter): Codec<VariantValue> {
54
+ if (!param.components) {
55
+ throw new Error("Variant parameter missing components");
64
56
  }
65
57
 
66
- toJs(): Record<string, string> {
67
- // The core decoding step: recursively call decodeTuple
68
- return decodeTuple(this.data, this.param);
69
- }
70
- }
58
+ return {
59
+ decodeWave(expr: string): VariantValue {
60
+ // Variant format is either:
61
+ // - "case-name" (for cases without payload)
62
+ // - "case-name(value)" (for cases with payload)
63
+
64
+ const match = expr.match(/^([a-z][a-z0-9-]*)(?:\((.*)\))?$/s);
65
+ if (!match) {
66
+ throw new Error(`Invalid variant format: ${expr}`);
67
+ }
71
68
 
72
- export function makeTupleCodecConstructor(
73
- param: WitParameter,
74
- ): CodecConstructor<
75
- Record<string, string>, // JS Type
76
- TupleCodecInstance, // Instance Type (now correctly defined outside)
77
- Record<string, string> // Wave Data Type (Parsed JSON object)
78
- > {
79
- if (!param.components) {
80
- throw new Error("Cannot create TupleCodec: Parameter missing components");
81
- }
69
+ const [, caseName, payload] = match;
70
+
71
+ // Find the matching variant case
72
+ const variantCase = param.components!.find(
73
+ (c: WitParameter) => c.name === caseName,
74
+ );
82
75
 
83
- // 2. Define the CodecConstructor class with static methods
84
- // We remove 'implements CodecConstructor<any, any, any>' as the function returns the class itself
85
- // (Fixes Error 2420, although the original code had the static methods, this clarifies intent).
86
- class TupleCodec {
87
- // --- Static CodecConstructor methods ---
76
+ if (!variantCase) {
77
+ throw new Error(`Unknown variant case: ${caseName}`);
78
+ }
88
79
 
89
- // Called to create an instance from a JavaScript value (e.g., when encoding)
90
- static fromJs(_value: Record<string, string>): TupleCodecInstance {
91
- // NOTE: Full encoding implementation is omitted for focus
92
- throw new Error("TupleCodec.fromJs not implemented for decoding context");
93
- }
80
+ // If the case has no payload (type is "_")
81
+ if (variantCase.type === "_") {
82
+ if (payload) {
83
+ throw new Error(
84
+ `Variant case ${caseName} expects no payload but got: ${payload}`,
85
+ );
86
+ }
87
+ return [caseName!, undefined];
88
+ }
94
89
 
95
- // Called to parse the raw encoded string into a JavaScript object (Wave Data)
96
- static parseWave(expr: string): Record<string, string> {
97
- // For tuples, the raw encoded string is the JSON representation.
90
+ // Case expects a payload
91
+ if (!payload) {
92
+ throw new Error(
93
+ `Variant case ${caseName} expects a payload but got none`,
94
+ );
95
+ }
98
96
 
99
- return parseWitRecord(expr) as Record<string, string>;
100
- }
97
+ // Decode the payload according to the case's type
98
+ const decoder = decoderForParam(variantCase);
99
+ const decodedValue = decoder.decodeWave(payload);
101
100
 
102
- // Called to create an instance from the parsed Wave Data
103
- static fromKontor(data: Record<string, string>): TupleCodecInstance {
104
- // Pass the original parameter definition to the instance for use in toJs()
105
- return new TupleCodecInstance(data, param);
106
- }
101
+ return [caseName!, decodedValue];
102
+ },
107
103
 
108
- // --- Instance constructor (optional, mainly for type checking compatibility) ---
109
- constructor(data: Record<string, string>) {
110
- // Delegate to the static factory to ensure the instance is correctly initialized
111
- return TupleCodec.fromKontor(data) as TupleCodecInstance;
112
- }
104
+ encodeWave(_value: VariantValue): string {
105
+ throw new Error(
106
+ "VariantCodec.encodeWave not implemented for decoding context",
107
+ );
108
+ },
109
+ };
110
+ }
111
+
112
+ export function EnumCodec(param: WitParameter): Codec<string> {
113
+ if (!param.components) {
114
+ throw new Error("Enum parameter missing components (cases)");
113
115
  }
114
116
 
115
- // 3. Cast the class to the correct CodecConstructor type
116
- return TupleCodec as unknown as CodecConstructor<
117
- Record<string, string>,
118
- TupleCodecInstance,
119
- Record<string, string>
120
- >;
117
+ const validCases = param.components.map((c) => c.name);
118
+
119
+ return {
120
+ decodeWave(expr: string): string {
121
+ const caseName = expr.trim();
122
+
123
+ // Validate that it's a valid case
124
+ if (!validCases.includes(caseName)) {
125
+ throw new Error(
126
+ `Invalid enum case "${caseName}". Valid cases: ${validCases.join(", ")}`,
127
+ );
128
+ }
129
+
130
+ return caseName;
131
+ },
132
+
133
+ encodeWave(value: string): string {
134
+ // Validate that it's a valid case
135
+ if (!validCases.includes(value)) {
136
+ throw new Error(
137
+ `Invalid enum case "${value}". Valid cases: ${validCases.join(", ")}`,
138
+ );
139
+ }
140
+
141
+ return value;
142
+ },
143
+ };
121
144
  }
122
145
 
123
- export function parseWitRecord(raw: string) {
146
+ export function parseWitRecord(raw: string): Record<string, string> {
124
147
  // Remove leading/trailing whitespace and outer braces
125
148
  const trimmed = raw.trim().replace(/^\{|\}$/g, "");
126
149
 
127
- const result = {};
150
+ const result: Record<string, string> = {};
128
151
  let depth = 0;
129
152
  let currentKey = "";
130
153
  let currentValue = "";
@@ -147,7 +170,6 @@ export function parseWitRecord(raw: string) {
147
170
  continue;
148
171
  } else if (char === "," && depth === 0) {
149
172
  // Found separator between key-value pairs
150
- // @ts-ignore
151
173
  result[currentKey.trim()] = currentValue.trim();
152
174
  currentKey = "";
153
175
  currentValue = "";
@@ -167,170 +189,445 @@ export function parseWitRecord(raw: string) {
167
189
 
168
190
  // Add the last key-value pair
169
191
  if (currentKey.trim()) {
170
- // @ts-ignore
171
192
  result[currentKey.trim()] = currentValue.trim();
172
193
  }
173
194
 
174
195
  return result;
175
196
  }
176
197
 
177
- function decoderForParam(p: WitParameter) {
198
+ export function decoderForParam(p: WitParameter): Codec<unknown> {
178
199
  const t = p.type as WitType;
179
-
180
200
  switch (t) {
181
- // --- tuples -------------------------------------------------
182
- case "tuple":
183
- return makeDecoder(makeTupleCodecConstructor(p));
184
- case "option<tuple>":
185
- return makeDecoder(
186
- OptionCodecFactory.create(makeTupleCodecConstructor(p)),
187
- );
188
- case "list<tuple>":
189
- return makeDecoder(ListCodecFactory.create(makeTupleCodecConstructor(p)));
190
-
191
- // --- string -------------------------------------------------
201
+ // --- variant -----------------------------------------------
202
+ case "variant":
203
+ return VariantCodec(p);
204
+ case "option<variant>":
205
+ return C.OptionCodec(VariantCodec(p));
206
+ case "list<variant>":
207
+ return C.ListCodec(VariantCodec(p));
208
+ case "result<variant, error>":
209
+ return C.ResultCodec(VariantCodec(p), VariantCodec(WitError.param));
210
+
211
+ // --- record -------------------------------------------------
212
+ case "record":
213
+ return RecordCodec(p);
214
+ case "option<record>":
215
+ return C.OptionCodec(RecordCodec(p));
216
+ case "list<record>":
217
+ return C.ListCodec(RecordCodec(p));
218
+ case "result<record, error>":
219
+ return C.ResultCodec(RecordCodec(p), VariantCodec(WitError.param));
220
+
221
+ // --- enum --------------------------------------------------
222
+ case "enum":
223
+ return EnumCodec(p);
224
+ case "option<enum>":
225
+ return C.OptionCodec(EnumCodec(p));
226
+ case "list<enum>":
227
+ return C.ListCodec(EnumCodec(p));
228
+ case "result<enum, error>":
229
+ return C.ResultCodec(EnumCodec(p), VariantCodec(WitError.param));
230
+
231
+ // --- string ------------------------------------------------
192
232
  case "string":
193
- return makeDecoder(StringCodec);
233
+ return C.StringCodec;
194
234
  case "option<string>":
195
- return makeDecoder(OptionCodecFactory.create(StringCodec));
235
+ return C.OptionCodec(C.StringCodec);
196
236
  case "list<string>":
197
- return makeDecoder(ListCodecFactory.create(StringCodec));
237
+ return C.ListCodec(C.StringCodec);
238
+ case "result<string, error>":
239
+ return C.ResultCodec(C.StringCodec, VariantCodec(WitError.param));
198
240
 
199
- // --- decimal ------------------------------------------------
241
+ // --- decimal -----------------------------------------------
200
242
  case "decimal":
201
- return makeDecoder(DecimalCodec);
243
+ return C.DecimalCodec;
202
244
  case "option<decimal>":
203
- return makeDecoder(OptionCodecFactory.create(DecimalCodec));
245
+ return C.OptionCodec(C.DecimalCodec);
204
246
  case "list<decimal>":
205
- return makeDecoder(ListCodecFactory.create(DecimalCodec));
247
+ return C.ListCodec(C.DecimalCodec);
248
+ case "result<decimal, error>":
249
+ return C.ResultCodec(C.DecimalCodec, VariantCodec(WitError.param));
206
250
 
207
- // --- bool ---------------------------------------------------
251
+ // --- bool --------------------------------------------------
208
252
  case "bool":
209
- return makeDecoder(BoolCodec);
253
+ return C.BoolCodec;
210
254
  case "option<bool>":
211
- return makeDecoder(OptionCodecFactory.create(BoolCodec));
255
+ return C.OptionCodec(C.BoolCodec);
212
256
  case "list<bool>":
213
- return makeDecoder(ListCodecFactory.create(BoolCodec));
214
-
215
- // --- u64 ----------------------------------------------------
216
- case "u64":
217
- return makeDecoder(U64Codec);
218
- case "option<u64>":
219
- return makeDecoder(OptionCodecFactory.create(U64Codec));
220
- case "list<u64>":
221
- return makeDecoder(ListCodecFactory.create(U64Codec));
222
-
223
- // --- s64 ----------------------------------------------------
224
- case "s64":
225
- return makeDecoder(S64Codec);
226
- case "option<s64>":
227
- return makeDecoder(OptionCodecFactory.create(S64Codec));
228
- case "list<s64>":
229
- return makeDecoder(ListCodecFactory.create(S64Codec));
257
+ return C.ListCodec(C.BoolCodec);
258
+ case "result<bool, error>":
259
+ return C.ResultCodec(C.BoolCodec, VariantCodec(WitError.param));
230
260
 
231
- // --- integer ------------------------------------------------
261
+ // --- integer -----------------------------------------------
232
262
  case "integer":
233
- return makeDecoder(IntegerCodec);
263
+ return C.IntegerCodec;
234
264
  case "option<integer>":
235
- return makeDecoder(OptionCodecFactory.create(IntegerCodec));
265
+ return C.OptionCodec(C.IntegerCodec);
236
266
  case "list<integer>":
237
- return makeDecoder(ListCodecFactory.create(IntegerCodec));
267
+ return C.ListCodec(C.IntegerCodec);
268
+ case "result<integer, error>":
269
+ return C.ResultCodec(C.IntegerCodec, VariantCodec(WitError.param));
238
270
 
239
- // --- not supported (yet) -----------------------------------
240
- case "error":
241
- case "contract-address":
242
- case "s8":
243
- case "s16":
244
- case "s32":
271
+ // --- u8 ----------------------------------------------------
245
272
  case "u8":
246
- case "u16":
247
- case "u32":
248
- case "option<s8>":
249
- case "option<s16>":
250
- case "option<s32>":
273
+ return C.U8Codec;
251
274
  case "option<u8>":
252
- case "option<u16>":
253
- case "option<u32>":
254
- case "option<_>":
255
- case "list<s8>":
256
- case "list<s16>":
257
- case "list<s32>":
275
+ return C.OptionCodec(C.U8Codec);
258
276
  case "list<u8>":
277
+ return C.ListCodec(C.U8Codec);
278
+ case "result<u8, error>":
279
+ return C.ResultCodec(C.U8Codec, VariantCodec(WitError.param));
280
+
281
+ // --- u16 ---------------------------------------------------
282
+ case "u16":
283
+ return C.U16Codec;
284
+ case "option<u16>":
285
+ return C.OptionCodec(C.U16Codec);
259
286
  case "list<u16>":
287
+ return C.ListCodec(C.U16Codec);
288
+ case "result<u16, error>":
289
+ return C.ResultCodec(C.U16Codec, VariantCodec(WitError.param));
290
+
291
+ // --- u32 ---------------------------------------------------
292
+ case "u32":
293
+ return C.U32Codec;
294
+ case "option<u32>":
295
+ return C.OptionCodec(C.U32Codec);
260
296
  case "list<u32>":
261
- case "list<_>":
262
- case "result<_, error>":
263
- case "result<string, error>":
264
- case "result<bool, error>":
297
+ return C.ListCodec(C.U32Codec);
298
+ case "result<u32, error>":
299
+ return C.ResultCodec(C.U32Codec, VariantCodec(WitError.param));
300
+
301
+ // --- u64 ---------------------------------------------------
302
+ case "u64":
303
+ return C.U64Codec;
304
+ case "option<u64>":
305
+ return C.OptionCodec(C.U64Codec);
306
+ case "list<u64>":
307
+ return C.ListCodec(C.U64Codec);
308
+ case "result<u64, error>":
309
+ return C.ResultCodec(C.U64Codec, VariantCodec(WitError.param));
310
+
311
+ // --- s8 ----------------------------------------------------
312
+ case "s8":
313
+ return C.S8Codec;
314
+ case "option<s8>":
315
+ return C.OptionCodec(C.S8Codec);
316
+ case "list<s8>":
317
+ return C.ListCodec(C.S8Codec);
265
318
  case "result<s8, error>":
319
+ return C.ResultCodec(C.S8Codec, VariantCodec(WitError.param));
320
+
321
+ // --- s16 ---------------------------------------------------
322
+ case "s16":
323
+ return C.S16Codec;
324
+ case "option<s16>":
325
+ return C.OptionCodec(C.S16Codec);
326
+ case "list<s16>":
327
+ return C.ListCodec(C.S16Codec);
266
328
  case "result<s16, error>":
329
+ return C.ResultCodec(C.S16Codec, VariantCodec(WitError.param));
330
+
331
+ // --- s32 ---------------------------------------------------
332
+ case "s32":
333
+ return C.S32Codec;
334
+ case "option<s32>":
335
+ return C.OptionCodec(C.S32Codec);
336
+ case "list<s32>":
337
+ return C.ListCodec(C.S32Codec);
267
338
  case "result<s32, error>":
339
+ return C.ResultCodec(C.S32Codec, VariantCodec(WitError.param));
340
+
341
+ // --- s64 ---------------------------------------------------
342
+ case "s64":
343
+ return C.S64Codec;
344
+ case "option<s64>":
345
+ return C.OptionCodec(C.S64Codec);
346
+ case "list<s64>":
347
+ return C.ListCodec(C.S64Codec);
268
348
  case "result<s64, error>":
269
- case "result<u8, error>":
270
- case "result<u16, error>":
271
- case "result<u32, error>":
272
- case "result<u64, error>":
273
- case "result<decimal, error>":
274
- case "result<integer, error>":
275
- case "result<tuple, error>":
276
- case "result<option<string>, error>":
277
- case "result<option<bool>, error>":
278
- case "result<option<s8>, error>":
279
- case "result<option<s16>, error>":
280
- case "result<option<s32>, error>":
281
- case "result<option<s64>, error>":
282
- case "result<option<u8>, error>":
283
- case "result<option<u16>, error>":
284
- case "result<option<u32>, error>":
285
- case "result<option<u64>, error>":
286
- case "result<option<decimal>, error>":
287
- case "result<option<integer>, error>":
349
+ return C.ResultCodec(C.S64Codec, VariantCodec(WitError.param));
350
+
351
+ // --- unit (special cases) ----------------------------------
352
+ case "option<_>":
353
+ return C.OptionCodec(C.UnitCodec);
354
+ case "result<_, error>":
355
+ return C.ResultCodec(C.UnitCodec, VariantCodec(WitError.param));
288
356
  case "result<option<_>, error>":
289
- case "result<option<tuple>, error>":
357
+ return C.ResultCodec(
358
+ C.OptionCodec(C.UnitCodec),
359
+ VariantCodec(WitError.param),
360
+ );
361
+
362
+ // --- option of list (nested) -------------------------------
290
363
  case "option<list<string>>":
364
+ return C.OptionCodec(C.ListCodec(C.StringCodec));
365
+ case "option<list<decimal>>":
366
+ return C.OptionCodec(C.ListCodec(C.DecimalCodec));
291
367
  case "option<list<bool>>":
292
- case "option<list<s8>>":
293
- case "option<list<s16>>":
294
- case "option<list<s32>>":
295
- case "option<list<s64>>":
368
+ return C.OptionCodec(C.ListCodec(C.BoolCodec));
369
+ case "option<list<integer>>":
370
+ return C.OptionCodec(C.ListCodec(C.IntegerCodec));
296
371
  case "option<list<u8>>":
372
+ return C.OptionCodec(C.ListCodec(C.U8Codec));
297
373
  case "option<list<u16>>":
374
+ return C.OptionCodec(C.ListCodec(C.U16Codec));
298
375
  case "option<list<u32>>":
376
+ return C.OptionCodec(C.ListCodec(C.U32Codec));
299
377
  case "option<list<u64>>":
300
- case "option<list<decimal>>":
301
- case "option<list<integer>>":
302
- case "option<list<_>>":
303
- case "option<list<tuple>>":
304
- case "result<option<list<string>>, error>":
305
- case "result<option<list<bool>>, error>":
306
- case "result<option<list<s8>>, error>":
307
- case "result<option<list<s16>>, error>":
308
- case "result<option<list<s32>>, error>":
309
- case "result<option<list<s64>>, error>":
310
- case "result<option<list<u8>>, error>":
311
- case "result<option<list<u16>>, error>":
312
- case "result<option<list<u32>>, error>":
313
- case "result<option<list<u64>>, error>":
314
- case "result<option<list<decimal>>, error>":
315
- case "result<option<list<integer>>, error>":
316
- case "result<option<list<_>>, error>":
317
- case "result<option<list<tuple>>, error>":
378
+ return C.OptionCodec(C.ListCodec(C.U64Codec));
379
+ case "option<list<s8>>":
380
+ return C.OptionCodec(C.ListCodec(C.S8Codec));
381
+ case "option<list<s16>>":
382
+ return C.OptionCodec(C.ListCodec(C.S16Codec));
383
+ case "option<list<s32>>":
384
+ return C.OptionCodec(C.ListCodec(C.S32Codec));
385
+ case "option<list<s64>>":
386
+ return C.OptionCodec(C.ListCodec(C.S64Codec));
387
+ case "option<list<variant>>":
388
+ return C.OptionCodec(C.ListCodec(VariantCodec(p)));
389
+ case "option<list<record>>":
390
+ return C.OptionCodec(C.ListCodec(RecordCodec(p)));
391
+ case "option<list<enum>>":
392
+ return C.OptionCodec(C.ListCodec(EnumCodec(p)));
393
+ // --- result of option (nested) -----------------------------
394
+ case "result<option<string>, error>":
395
+ return C.ResultCodec(
396
+ C.OptionCodec(C.StringCodec),
397
+ VariantCodec(WitError.param),
398
+ );
399
+ case "result<option<decimal>, error>":
400
+ return C.ResultCodec(
401
+ C.OptionCodec(C.DecimalCodec),
402
+ VariantCodec(WitError.param),
403
+ );
404
+ case "result<option<bool>, error>":
405
+ return C.ResultCodec(
406
+ C.OptionCodec(C.BoolCodec),
407
+ VariantCodec(WitError.param),
408
+ );
409
+ case "result<option<integer>, error>":
410
+ return C.ResultCodec(
411
+ C.OptionCodec(C.IntegerCodec),
412
+ VariantCodec(WitError.param),
413
+ );
414
+ case "result<option<u8>, error>":
415
+ return C.ResultCodec(
416
+ C.OptionCodec(C.U8Codec),
417
+ VariantCodec(WitError.param),
418
+ );
419
+ case "result<option<u16>, error>":
420
+ return C.ResultCodec(
421
+ C.OptionCodec(C.U16Codec),
422
+ VariantCodec(WitError.param),
423
+ );
424
+ case "result<option<u32>, error>":
425
+ return C.ResultCodec(
426
+ C.OptionCodec(C.U32Codec),
427
+ VariantCodec(WitError.param),
428
+ );
429
+ case "result<option<u64>, error>":
430
+ return C.ResultCodec(
431
+ C.OptionCodec(C.U64Codec),
432
+ VariantCodec(WitError.param),
433
+ );
434
+ case "result<option<s8>, error>":
435
+ return C.ResultCodec(
436
+ C.OptionCodec(C.S8Codec),
437
+ VariantCodec(WitError.param),
438
+ );
439
+ case "result<option<s16>, error>":
440
+ return C.ResultCodec(
441
+ C.OptionCodec(C.S16Codec),
442
+ VariantCodec(WitError.param),
443
+ );
444
+ case "result<option<s32>, error>":
445
+ return C.ResultCodec(
446
+ C.OptionCodec(C.S32Codec),
447
+ VariantCodec(WitError.param),
448
+ );
449
+ case "result<option<s64>, error>":
450
+ return C.ResultCodec(
451
+ C.OptionCodec(C.S64Codec),
452
+ VariantCodec(WitError.param),
453
+ );
454
+ case "result<option<variant>, error>":
455
+ return C.ResultCodec(
456
+ C.OptionCodec(VariantCodec(p)),
457
+ VariantCodec(WitError.param),
458
+ );
459
+ case "result<option<record>, error>":
460
+ return C.ResultCodec(
461
+ C.OptionCodec(RecordCodec(p)),
462
+ VariantCodec(WitError.param),
463
+ );
464
+ case "result<option<enum>, error>":
465
+ return C.ResultCodec(
466
+ C.OptionCodec(EnumCodec(p)),
467
+ VariantCodec(WitError.param),
468
+ );
469
+
470
+ // --- result of list (nested) -------------------------------
318
471
  case "result<list<string>, error>":
472
+ return C.ResultCodec(
473
+ C.ListCodec(C.StringCodec),
474
+ VariantCodec(WitError.param),
475
+ );
476
+ case "result<list<decimal>, error>":
477
+ return C.ResultCodec(
478
+ C.ListCodec(C.DecimalCodec),
479
+ VariantCodec(WitError.param),
480
+ );
319
481
  case "result<list<bool>, error>":
320
- case "result<list<s8>, error>":
321
- case "result<list<s16>, error>":
322
- case "result<list<s32>, error>":
323
- case "result<list<s64>, error>":
482
+ return C.ResultCodec(
483
+ C.ListCodec(C.BoolCodec),
484
+ VariantCodec(WitError.param),
485
+ );
486
+ case "result<list<integer>, error>":
487
+ return C.ResultCodec(
488
+ C.ListCodec(C.IntegerCodec),
489
+ VariantCodec(WitError.param),
490
+ );
324
491
  case "result<list<u8>, error>":
492
+ return C.ResultCodec(
493
+ C.ListCodec(C.U8Codec),
494
+ VariantCodec(WitError.param),
495
+ );
325
496
  case "result<list<u16>, error>":
497
+ return C.ResultCodec(
498
+ C.ListCodec(C.U16Codec),
499
+ VariantCodec(WitError.param),
500
+ );
326
501
  case "result<list<u32>, error>":
502
+ return C.ResultCodec(
503
+ C.ListCodec(C.U32Codec),
504
+ VariantCodec(WitError.param),
505
+ );
327
506
  case "result<list<u64>, error>":
328
- case "result<list<decimal>, error>":
329
- case "result<list<integer>, error>":
330
- case "result<list<_>, error>":
331
- case "result<list<tuple>, error>":
332
- throw new InvalidWitEncodingTypeError(t, { docsPath: "tk" });
507
+ return C.ResultCodec(
508
+ C.ListCodec(C.U64Codec),
509
+ VariantCodec(WitError.param),
510
+ );
511
+ case "result<list<s8>, error>":
512
+ return C.ResultCodec(
513
+ C.ListCodec(C.S8Codec),
514
+ VariantCodec(WitError.param),
515
+ );
516
+ case "result<list<s16>, error>":
517
+ return C.ResultCodec(
518
+ C.ListCodec(C.S16Codec),
519
+ VariantCodec(WitError.param),
520
+ );
521
+ case "result<list<s32>, error>":
522
+ return C.ResultCodec(
523
+ C.ListCodec(C.S32Codec),
524
+ VariantCodec(WitError.param),
525
+ );
526
+ case "result<list<s64>, error>":
527
+ return C.ResultCodec(
528
+ C.ListCodec(C.S64Codec),
529
+ VariantCodec(WitError.param),
530
+ );
531
+ case "result<list<variant>, error>":
532
+ return C.ResultCodec(
533
+ C.ListCodec(VariantCodec(p)),
534
+ VariantCodec(WitError.param),
535
+ );
536
+ case "result<list<record>, error>":
537
+ return C.ResultCodec(
538
+ C.ListCodec(RecordCodec(p)),
539
+ VariantCodec(WitError.param),
540
+ );
541
+ case "result<list<enum>, error>":
542
+ return C.ResultCodec(
543
+ C.ListCodec(EnumCodec(p)),
544
+ VariantCodec(WitError.param),
545
+ );
333
546
 
547
+ case "result<option<_>, error>":
548
+ return C.ResultCodec(
549
+ C.OptionCodec(C.UnitCodec),
550
+ VariantCodec(WitError.param),
551
+ );
552
+ case "result<option<list<string>>, error>":
553
+ return C.ResultCodec(
554
+ C.OptionCodec(C.ListCodec(C.StringCodec)),
555
+ VariantCodec(WitError.param),
556
+ );
557
+ case "result<option<list<decimal>>, error>":
558
+ return C.ResultCodec(
559
+ C.OptionCodec(C.ListCodec(C.DecimalCodec)),
560
+ VariantCodec(WitError.param),
561
+ );
562
+ case "result<option<list<bool>>, error>":
563
+ return C.ResultCodec(
564
+ C.OptionCodec(C.ListCodec(C.BoolCodec)),
565
+ VariantCodec(WitError.param),
566
+ );
567
+ case "result<option<list<integer>>, error>":
568
+ return C.ResultCodec(
569
+ C.OptionCodec(C.ListCodec(C.IntegerCodec)),
570
+ VariantCodec(WitError.param),
571
+ );
572
+ case "result<option<list<u8>>, error>":
573
+ return C.ResultCodec(
574
+ C.OptionCodec(C.ListCodec(C.U8Codec)),
575
+ VariantCodec(WitError.param),
576
+ );
577
+ case "result<option<list<u16>>, error>":
578
+ return C.ResultCodec(
579
+ C.OptionCodec(C.ListCodec(C.U16Codec)),
580
+ VariantCodec(WitError.param),
581
+ );
582
+ case "result<option<list<u32>>, error>":
583
+ return C.ResultCodec(
584
+ C.OptionCodec(C.ListCodec(C.U32Codec)),
585
+ VariantCodec(WitError.param),
586
+ );
587
+ case "result<option<list<u64>>, error>":
588
+ return C.ResultCodec(
589
+ C.OptionCodec(C.ListCodec(C.U64Codec)),
590
+ VariantCodec(WitError.param),
591
+ );
592
+ case "result<option<list<s8>>, error>":
593
+ return C.ResultCodec(
594
+ C.OptionCodec(C.ListCodec(C.S8Codec)),
595
+ VariantCodec(WitError.param),
596
+ );
597
+ case "result<option<list<s16>>, error>":
598
+ return C.ResultCodec(
599
+ C.OptionCodec(C.ListCodec(C.S16Codec)),
600
+ VariantCodec(WitError.param),
601
+ );
602
+ case "result<option<list<s32>>, error>":
603
+ return C.ResultCodec(
604
+ C.OptionCodec(C.ListCodec(C.S32Codec)),
605
+ VariantCodec(WitError.param),
606
+ );
607
+ case "result<option<list<s64>>, error>":
608
+ return C.ResultCodec(
609
+ C.OptionCodec(C.ListCodec(C.S64Codec)),
610
+ VariantCodec(WitError.param),
611
+ );
612
+ case "result<option<list<variant>>, error>":
613
+ return C.ResultCodec(
614
+ C.OptionCodec(C.ListCodec(VariantCodec(p))),
615
+ VariantCodec(WitError.param),
616
+ );
617
+ case "result<option<list<record>>, error>":
618
+ return C.ResultCodec(
619
+ C.OptionCodec(C.ListCodec(RecordCodec(p))),
620
+ VariantCodec(WitError.param),
621
+ );
622
+ case "result<option<list<enum>>, error>":
623
+ return C.ResultCodec(
624
+ C.OptionCodec(C.ListCodec(EnumCodec(p))),
625
+ VariantCodec(WitError.param),
626
+ );
627
+ case "error":
628
+ return VariantCodec(WitError.param);
629
+ case "contract-address":
630
+ return C.ContractAddressCodec;
334
631
  default: {
335
632
  t satisfies never;
336
633
  throw new InvalidWitEncodingTypeError(t, { docsPath: "tk" });