@kontor/kontor-sdk 1.0.0-alpha.27 → 1.0.0-alpha.29

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 (191) hide show
  1. package/dist/cjs/exports/index.js.map +1 -1
  2. package/dist/cjs/sdk/accounts/hd-key-to-account.js +1 -0
  3. package/dist/cjs/sdk/accounts/hd-key-to-account.js.map +1 -1
  4. package/dist/cjs/sdk/accounts/mnemonic-to-account.js +2 -4
  5. package/dist/cjs/sdk/accounts/mnemonic-to-account.js.map +1 -1
  6. package/dist/cjs/sdk/accounts/private-key-to-account.js +3 -8
  7. package/dist/cjs/sdk/accounts/private-key-to-account.js.map +1 -1
  8. package/dist/cjs/sdk/accounts/to-local-account.js.map +1 -1
  9. package/dist/cjs/sdk/actions/get-contract.js +36 -16
  10. package/dist/cjs/sdk/actions/get-contract.js.map +1 -1
  11. package/dist/cjs/sdk/actions/kontor/public/build-compose-query.js +9 -12
  12. package/dist/cjs/sdk/actions/kontor/public/build-compose-query.js.map +1 -1
  13. package/dist/cjs/sdk/actions/kontor/public/build-instruction-query.js +13 -33
  14. package/dist/cjs/sdk/actions/kontor/public/build-instruction-query.js.map +1 -1
  15. package/dist/cjs/sdk/actions/kontor/public/call-compose.js +6 -4
  16. package/dist/cjs/sdk/actions/kontor/public/call-compose.js.map +1 -1
  17. package/dist/cjs/sdk/actions/kontor/public/call-view.js.map +1 -1
  18. package/dist/cjs/sdk/actions/kontor/public/inspect.js +1 -2
  19. package/dist/cjs/sdk/actions/kontor/public/inspect.js.map +1 -1
  20. package/dist/cjs/sdk/actions/kontor/public/proc-contract.js +5 -5
  21. package/dist/cjs/sdk/actions/kontor/public/proc-contract.js.map +1 -1
  22. package/dist/cjs/sdk/actions/kontor/public/view-contract.js +2 -1
  23. package/dist/cjs/sdk/actions/kontor/public/view-contract.js.map +1 -1
  24. package/dist/cjs/sdk/chains/definitions/signet.js +0 -1
  25. package/dist/cjs/sdk/chains/definitions/signet.js.map +1 -1
  26. package/dist/cjs/sdk/clients/decorators/kontor/public.js.map +1 -1
  27. package/dist/cjs/sdk/errors/chain.js +44 -0
  28. package/dist/cjs/sdk/errors/chain.js.map +1 -0
  29. package/dist/cjs/sdk/utils/chain/assert-current-chain.js +11 -0
  30. package/dist/cjs/sdk/utils/chain/assert-current-chain.js.map +1 -0
  31. package/dist/cjs/sdk/utils/kontor/build-compose-query.js +19 -0
  32. package/dist/cjs/sdk/utils/kontor/build-compose-query.js.map +1 -0
  33. package/dist/cjs/sdk/utils/kontor/build-instruction-query.js +36 -0
  34. package/dist/cjs/sdk/utils/kontor/build-instruction-query.js.map +1 -0
  35. package/dist/cjs/sdk/utils/wit/codecs/bool.js +29 -0
  36. package/dist/cjs/sdk/utils/wit/codecs/bool.js.map +1 -0
  37. package/dist/cjs/sdk/utils/wit/codecs/s64.js +57 -0
  38. package/dist/cjs/sdk/utils/wit/codecs/s64.js.map +1 -0
  39. package/dist/cjs/sdk/utils/wit/decode-wit-parameter.js +134 -131
  40. package/dist/cjs/sdk/utils/wit/decode-wit-parameter.js.map +1 -1
  41. package/dist/cjs/sdk/utils/wit/encode-wit-parameters.js +74 -26
  42. package/dist/cjs/sdk/utils/wit/encode-wit-parameters.js.map +1 -1
  43. package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
  44. package/dist/cjs/wit/wit-parser/core/errors/{splitParameters.js → split-parameters.js} +1 -1
  45. package/dist/cjs/wit/wit-parser/core/errors/split-parameters.js.map +1 -0
  46. package/dist/cjs/wit/wit-parser/core/utils.js +3 -3
  47. package/dist/cjs/wit/wit-parser/core/utils.js.map +1 -1
  48. package/dist/esm/exports/index.js +1 -1
  49. package/dist/esm/exports/index.js.map +1 -1
  50. package/dist/esm/sdk/accounts/hd-key-to-account.js +2 -5
  51. package/dist/esm/sdk/accounts/hd-key-to-account.js.map +1 -1
  52. package/dist/esm/sdk/accounts/mnemonic-to-account.js +2 -10
  53. package/dist/esm/sdk/accounts/mnemonic-to-account.js.map +1 -1
  54. package/dist/esm/sdk/accounts/private-key-to-account.js +3 -15
  55. package/dist/esm/sdk/accounts/private-key-to-account.js.map +1 -1
  56. package/dist/esm/sdk/accounts/to-local-account.js +0 -5
  57. package/dist/esm/sdk/accounts/to-local-account.js.map +1 -1
  58. package/dist/esm/sdk/actions/get-contract.js +37 -35
  59. package/dist/esm/sdk/actions/get-contract.js.map +1 -1
  60. package/dist/esm/sdk/actions/kontor/public/build-compose-query.js +9 -13
  61. package/dist/esm/sdk/actions/kontor/public/build-compose-query.js.map +1 -1
  62. package/dist/esm/sdk/actions/kontor/public/build-instruction-query.js +13 -36
  63. package/dist/esm/sdk/actions/kontor/public/build-instruction-query.js.map +1 -1
  64. package/dist/esm/sdk/actions/kontor/public/call-compose.js +6 -4
  65. package/dist/esm/sdk/actions/kontor/public/call-compose.js.map +1 -1
  66. package/dist/esm/sdk/actions/kontor/public/call-view.js +1 -0
  67. package/dist/esm/sdk/actions/kontor/public/call-view.js.map +1 -1
  68. package/dist/esm/sdk/actions/kontor/public/inspect.js +9 -4
  69. package/dist/esm/sdk/actions/kontor/public/inspect.js.map +1 -1
  70. package/dist/esm/sdk/actions/kontor/public/proc-contract.js +5 -6
  71. package/dist/esm/sdk/actions/kontor/public/proc-contract.js.map +1 -1
  72. package/dist/esm/sdk/actions/kontor/public/view-contract.js +3 -5
  73. package/dist/esm/sdk/actions/kontor/public/view-contract.js.map +1 -1
  74. package/dist/esm/sdk/chains/definitions/signet.js +0 -1
  75. package/dist/esm/sdk/chains/definitions/signet.js.map +1 -1
  76. package/dist/esm/sdk/clients/decorators/kontor/public.js.map +1 -1
  77. package/dist/esm/sdk/errors/chain.js +37 -0
  78. package/dist/esm/sdk/errors/chain.js.map +1 -0
  79. package/dist/esm/sdk/utils/chain/assert-current-chain.js +8 -0
  80. package/dist/esm/sdk/utils/chain/assert-current-chain.js.map +1 -0
  81. package/dist/esm/sdk/utils/kontor/build-compose-query.js +16 -0
  82. package/dist/esm/sdk/utils/kontor/build-compose-query.js.map +1 -0
  83. package/dist/esm/sdk/utils/kontor/build-instruction-query.js +36 -0
  84. package/dist/esm/sdk/utils/kontor/build-instruction-query.js.map +1 -0
  85. package/dist/esm/sdk/utils/wit/codecs/bool.js +26 -0
  86. package/dist/esm/sdk/utils/wit/codecs/bool.js.map +1 -0
  87. package/dist/esm/sdk/utils/wit/codecs/s64.js +65 -0
  88. package/dist/esm/sdk/utils/wit/codecs/s64.js.map +1 -0
  89. package/dist/esm/sdk/utils/wit/decode-wit-parameter.js +155 -147
  90. package/dist/esm/sdk/utils/wit/decode-wit-parameter.js.map +1 -1
  91. package/dist/esm/sdk/utils/wit/encode-wit-parameters.js +74 -72
  92. package/dist/esm/sdk/utils/wit/encode-wit-parameters.js.map +1 -1
  93. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  94. package/dist/esm/wit/wit-parser/core/errors/{splitParameters.js → split-parameters.js} +1 -1
  95. package/dist/esm/wit/wit-parser/core/errors/split-parameters.js.map +1 -0
  96. package/dist/esm/wit/wit-parser/core/utils.js +1 -1
  97. package/dist/esm/wit/wit-parser/core/utils.js.map +1 -1
  98. package/dist/types/exports/index.d.ts +1 -1
  99. package/dist/types/exports/index.d.ts.map +1 -1
  100. package/dist/types/sdk/accounts/hd-key-to-account.d.ts +0 -5
  101. package/dist/types/sdk/accounts/hd-key-to-account.d.ts.map +1 -1
  102. package/dist/types/sdk/accounts/mnemonic-to-account.d.ts +1 -6
  103. package/dist/types/sdk/accounts/mnemonic-to-account.d.ts.map +1 -1
  104. package/dist/types/sdk/accounts/private-key-to-account.d.ts +5 -3
  105. package/dist/types/sdk/accounts/private-key-to-account.d.ts.map +1 -1
  106. package/dist/types/sdk/accounts/to-local-account.d.ts +0 -5
  107. package/dist/types/sdk/accounts/to-local-account.d.ts.map +1 -1
  108. package/dist/types/sdk/actions/get-contract.d.ts +28 -5
  109. package/dist/types/sdk/actions/get-contract.d.ts.map +1 -1
  110. package/dist/types/sdk/actions/kontor/public/build-compose-query.d.ts +5 -5
  111. package/dist/types/sdk/actions/kontor/public/build-compose-query.d.ts.map +1 -1
  112. package/dist/types/sdk/actions/kontor/public/build-instruction-query.d.ts +6 -6
  113. package/dist/types/sdk/actions/kontor/public/build-instruction-query.d.ts.map +1 -1
  114. package/dist/types/sdk/actions/kontor/public/call-compose.d.ts +1 -1
  115. package/dist/types/sdk/actions/kontor/public/call-compose.d.ts.map +1 -1
  116. package/dist/types/sdk/actions/kontor/public/call-view.d.ts +3 -3
  117. package/dist/types/sdk/actions/kontor/public/call-view.d.ts.map +1 -1
  118. package/dist/types/sdk/actions/kontor/public/inspect.d.ts +3 -3
  119. package/dist/types/sdk/actions/kontor/public/inspect.d.ts.map +1 -1
  120. package/dist/types/sdk/actions/kontor/public/proc-contract.d.ts +3 -3
  121. package/dist/types/sdk/actions/kontor/public/proc-contract.d.ts.map +1 -1
  122. package/dist/types/sdk/actions/kontor/public/view-contract.d.ts +3 -3
  123. package/dist/types/sdk/actions/kontor/public/view-contract.d.ts.map +1 -1
  124. package/dist/types/sdk/chains/definitions/signet.d.ts +0 -1
  125. package/dist/types/sdk/chains/definitions/signet.d.ts.map +1 -1
  126. package/dist/types/sdk/clients/decorators/kontor/public.d.ts +6 -6
  127. package/dist/types/sdk/clients/decorators/kontor/public.d.ts.map +1 -1
  128. package/dist/types/sdk/errors/chain.d.ts +32 -0
  129. package/dist/types/sdk/errors/chain.d.ts.map +1 -0
  130. package/dist/types/sdk/types/chain.d.ts +0 -2
  131. package/dist/types/sdk/types/chain.d.ts.map +1 -1
  132. package/dist/types/sdk/types/contract.d.ts.map +1 -1
  133. package/dist/types/sdk/utils/chain/assert-current-chain.d.ts +10 -0
  134. package/dist/types/sdk/utils/chain/assert-current-chain.d.ts.map +1 -0
  135. package/dist/types/sdk/utils/kontor/build-compose-query.d.ts +13 -0
  136. package/dist/types/sdk/utils/kontor/build-compose-query.d.ts.map +1 -0
  137. package/dist/types/sdk/utils/kontor/build-instruction-query.d.ts +22 -0
  138. package/dist/types/sdk/utils/kontor/build-instruction-query.d.ts.map +1 -0
  139. package/dist/types/sdk/utils/wit/codecs/bool.d.ts +3 -0
  140. package/dist/types/sdk/utils/wit/codecs/bool.d.ts.map +1 -0
  141. package/dist/types/sdk/utils/wit/codecs/s64.d.ts +23 -0
  142. package/dist/types/sdk/utils/wit/codecs/s64.d.ts.map +1 -0
  143. package/dist/types/sdk/utils/wit/decode-wit-parameter.d.ts +12 -3
  144. package/dist/types/sdk/utils/wit/decode-wit-parameter.d.ts.map +1 -1
  145. package/dist/types/sdk/utils/wit/encode-wit-parameters.d.ts.map +1 -1
  146. package/dist/types/wit/type-utils.d.ts.map +1 -1
  147. package/dist/types/wit/utils.d.ts.map +1 -1
  148. package/dist/types/wit/wit-parser/core/errors/{splitParameters.d.ts → split-parameters.d.ts} +1 -1
  149. package/dist/types/wit/wit-parser/core/errors/split-parameters.d.ts.map +1 -0
  150. package/package.json +1 -1
  151. package/src/exports/index.ts +1 -1
  152. package/src/sdk/accounts/hd-key-to-account.ts +2 -5
  153. package/src/sdk/accounts/mnemonic-to-account.test.ts +7 -81
  154. package/src/sdk/accounts/mnemonic-to-account.ts +2 -11
  155. package/src/sdk/accounts/private-key-to-account.ts +10 -16
  156. package/src/sdk/accounts/to-local-account.ts +0 -5
  157. package/src/sdk/actions/get-contract.test-d.ts +10 -9
  158. package/src/sdk/actions/get-contract.test.ts +49 -0
  159. package/src/sdk/actions/get-contract.ts +312 -91
  160. package/src/sdk/actions/kontor/public/build-compose-query.ts +23 -25
  161. package/src/sdk/actions/kontor/public/build-instruction-query.ts +27 -53
  162. package/src/sdk/actions/kontor/public/call-compose.ts +8 -4
  163. package/src/sdk/actions/kontor/public/call-view.ts +5 -4
  164. package/src/sdk/actions/kontor/public/inspect.ts +20 -9
  165. package/src/sdk/actions/kontor/public/proc-contract.test.ts +1 -2
  166. package/src/sdk/actions/kontor/public/proc-contract.ts +21 -55
  167. package/src/sdk/actions/kontor/public/{view-contract.test-d.ts → view-contract.test.ts} +2 -2
  168. package/src/sdk/actions/kontor/public/view-contract.ts +10 -9
  169. package/src/sdk/chains/definitions/signet.ts +0 -1
  170. package/src/sdk/clients/base/create-rpc-client.test.ts +0 -1
  171. package/src/sdk/clients/create-public-client.test.ts +0 -1
  172. package/src/sdk/clients/decorators/kontor/public.ts +21 -12
  173. package/src/sdk/clients/kontor/create-public-client.test.ts +0 -7
  174. package/src/sdk/errors/chain.ts +64 -0
  175. package/src/sdk/test/e2e.test.ts +25 -1
  176. package/src/sdk/types/chain.ts +0 -2
  177. package/src/sdk/types/contract.ts +3 -14
  178. package/src/sdk/utils/chain/assert-current-chain.ts +28 -0
  179. package/src/sdk/utils/kontor/build-compose-query.ts +33 -0
  180. package/src/sdk/utils/kontor/build-instruction-query.ts +75 -0
  181. package/src/sdk/utils/wit/codecs/bool.ts +29 -0
  182. package/src/sdk/utils/wit/codecs/s64.ts +76 -0
  183. package/src/sdk/utils/wit/decode-wit-parameter.ts +167 -164
  184. package/src/sdk/utils/wit/encode-wit-parameters.ts +78 -75
  185. package/src/wit/type-utils.ts +0 -2
  186. package/src/wit/utils.ts +3 -6
  187. package/src/wit/wit-parser/core/utils.ts +1 -1
  188. package/dist/cjs/wit/wit-parser/core/errors/splitParameters.js.map +0 -1
  189. package/dist/esm/wit/wit-parser/core/errors/splitParameters.js.map +0 -1
  190. package/dist/types/wit/wit-parser/core/errors/splitParameters.d.ts.map +0 -1
  191. /package/src/wit/wit-parser/core/errors/{splitParameters.ts → split-parameters.ts} +0 -0
@@ -0,0 +1,75 @@
1
+ import type { Inst, InstructionQuery } from "../../types/kontor.js";
2
+ import type { Address, UtxoId, XOnlyPubKey } from "../../types/misc.js";
3
+
4
+ export type BuildInstructionQueryReturnType = InstructionQuery;
5
+
6
+ export type BuildInstructionQueryParameters = {
7
+ address: Address;
8
+ xOnlyPubKey: XOnlyPubKey; // TODO: maybe this should be wrapped in a single object
9
+ utxos: UtxoId[];
10
+ /**
11
+ * The concrete instruction to send (Publish | Call | Issuance).
12
+ * Example:
13
+ * { Call: { gas_limit: 100000, contract: "addr", expr: "balance(...)" } }
14
+ * { Publish: { gas_limit: 100000, name: "token", bytes: [0,1,2,...] } }
15
+ * "Issuance"
16
+ */
17
+ instruction: Inst;
18
+ /**
19
+ * Optional chained instruction if you want to send two instructions atomically.
20
+ */
21
+ chainedInstruction?: Inst | null;
22
+ };
23
+
24
+ // ------------------ helpers ------------------
25
+
26
+ function normalizeXOnly(pub: string): string {
27
+ if (!/^[0-9a-fA-F]{64}$/.test(pub)) {
28
+ throw new Error(
29
+ "x_only_public_key must be 32-byte (64 hex chars) x-only pubkey",
30
+ );
31
+ }
32
+ return pub.toLowerCase();
33
+ }
34
+
35
+ function normalizeUtxoId(u: UtxoId): string {
36
+ if (typeof u === "string") return u;
37
+ if (!u?.txid || typeof u.vout !== "number") {
38
+ throw new Error("funding UTXO must be 'txid:vout' or { txid, vout }");
39
+ }
40
+ return `${u.txid}:${u.vout}`;
41
+ }
42
+
43
+ function normalizeUtxoIds(u: UtxoId | UtxoId[]): string[] {
44
+ return Array.isArray(u) ? u.map(normalizeUtxoId) : [normalizeUtxoId(u)];
45
+ }
46
+
47
+ // ------------------ main builder ------------------
48
+
49
+ export function buildInstructionQuery(
50
+ params: BuildInstructionQueryParameters,
51
+ ): BuildInstructionQueryReturnType {
52
+ const {
53
+ utxos,
54
+ instruction,
55
+ chainedInstruction = null,
56
+ address,
57
+ xOnlyPubKey,
58
+ } = params;
59
+
60
+ if (utxos.length === 0) {
61
+ // TODO: add custom error
62
+ throw new Error("at least one funding UTXO is required");
63
+ }
64
+
65
+ const xOnly = normalizeXOnly(xOnlyPubKey);
66
+ const fundingIds = normalizeUtxoIds(utxos);
67
+
68
+ return {
69
+ address,
70
+ x_only_public_key: xOnly,
71
+ funding_utxo_ids: fundingIds.join(","),
72
+ instruction,
73
+ chained_instruction: chainedInstruction ?? null,
74
+ };
75
+ }
@@ -0,0 +1,29 @@
1
+ import type { CodecConstructor, CodecInstance, WaveExpr } from "./types.js";
2
+
3
+ export const BoolCodec = {
4
+ fromJs(value: boolean) {
5
+ return {
6
+ toWave(): WaveExpr {
7
+ return `${value}` as WaveExpr;
8
+ },
9
+ toJs(): boolean {
10
+ return value;
11
+ },
12
+ };
13
+ },
14
+
15
+ fromKontor(data: boolean) {
16
+ return {
17
+ toWave(): WaveExpr {
18
+ return `${data}` as WaveExpr;
19
+ },
20
+ toJs(): boolean {
21
+ return data as boolean;
22
+ },
23
+ };
24
+ },
25
+
26
+ parseWave(expr: string): boolean {
27
+ return JSON.parse(expr);
28
+ },
29
+ } as unknown as CodecConstructor<boolean, CodecInstance<boolean>, boolean>;
@@ -0,0 +1,76 @@
1
+ // s64.ts
2
+ import * as z from "zod";
3
+ import type { WaveExpr, CodecInstance, CodecConstructor } from "./types.js";
4
+
5
+ // Signed 64-bit range
6
+ const S64_MIN = -(1n << 63n);
7
+ const S64_MAX = (1n << 63n) - 1n;
8
+
9
+ export const S64 = z
10
+ .bigint()
11
+ .min(S64_MIN, { message: "must be ≥ -2^63" })
12
+ .max(S64_MAX, { message: "must be ≤ 2^63-1" });
13
+
14
+ /**
15
+ * Parse a Wave expression for an s64.
16
+ *
17
+ * - Accepts optional underscores for readability: -1_000_000
18
+ * - Allows optional leading "-"
19
+ * - Enforces the s64 range via zod
20
+ */
21
+ export function parseS64WaveExpr(expr: string): bigint {
22
+ const trimmed = expr.trim();
23
+ if (!trimmed) throw new Error("empty s64 expression");
24
+
25
+ // Allow underscores like "-1_000_000"
26
+ const normalized = trimmed.replace(/_/g, "");
27
+
28
+ if (!/^-?[0-9]+$/.test(normalized)) {
29
+ throw new Error(`invalid s64 literal: "${expr}"`);
30
+ }
31
+
32
+ const value = BigInt(normalized);
33
+ return S64.parse(value); // range-check via zod
34
+ }
35
+
36
+ // --- S64Codec ---------------------------------------------------
37
+
38
+ class _S64Codec implements CodecInstance<bigint> {
39
+ public readonly value: bigint;
40
+
41
+ constructor(value: bigint) {
42
+ this.value = S64.parse(value);
43
+ }
44
+
45
+ static fromJs(value: bigint | number | string): _S64Codec {
46
+ let v: bigint;
47
+ if (typeof value === "bigint") v = value;
48
+ else if (typeof value === "number") v = BigInt(value);
49
+ else v = BigInt(value); // e.g. JSON string "-12345"
50
+
51
+ return new _S64Codec(v);
52
+ }
53
+
54
+ static fromKontor(data: string | bigint | number): _S64Codec {
55
+ return _S64Codec.fromJs(data);
56
+ }
57
+
58
+ static parseWave(expr: string): bigint {
59
+ return parseS64WaveExpr(expr);
60
+ }
61
+
62
+ toWave(): WaveExpr {
63
+ // Wave syntax for s64: plain decimal, optional leading "-"
64
+ return `${this.value}` as WaveExpr;
65
+ }
66
+
67
+ toJs(): bigint {
68
+ return this.value;
69
+ }
70
+ }
71
+
72
+ export const S64Codec = _S64Codec as unknown as CodecConstructor<
73
+ bigint,
74
+ _S64Codec,
75
+ bigint
76
+ >;
@@ -1,7 +1,10 @@
1
1
  import type { WitParameter, WitType } from "../../../wit/wit.js";
2
2
  import { InvalidWitEncodingTypeError } from "../../errors/wit.js";
3
3
  import { DecimalCodec } from "./codecs/decimal.js";
4
+ import { IntegerCodec } from "./codecs/integer.js";
4
5
  import { U64Codec } from "./codecs/u64.js";
6
+ import { S64Codec } from "./codecs/s64.js";
7
+ import { BoolCodec } from "./codecs/bool.js";
5
8
  import { StringCodec } from "./codecs/string.js";
6
9
  import { OptionCodecFactory } from "./codecs/option.js";
7
10
  import { ListCodecFactory } from "./codecs/list.js";
@@ -12,29 +15,7 @@ import {
12
15
  type WaveExpr,
13
16
  } from "./codecs/types.js";
14
17
 
15
- const u64Decoder = makeDecoder(U64Codec);
16
-
17
- const stringDecoder = makeDecoder(StringCodec);
18
- const decimalDecoder = makeDecoder(DecimalCodec);
19
- const optionOfDecimalDecoder = makeDecoder(
20
- OptionCodecFactory.create(DecimalCodec),
21
- );
22
-
23
- const optionOfTupleDecoder = (param: WitParameter) =>
24
- makeDecoder(OptionCodecFactory.create(makeTupleCodecConstructor(param)));
25
-
26
- const listOfDecimalDecoder = makeDecoder(ListCodecFactory.create(DecimalCodec));
27
-
28
- const listOfTupleDecoder = (param: WitParameter) =>
29
- makeDecoder(ListCodecFactory.create(makeTupleCodecConstructor(param)));
30
-
31
- const tupleDecoder = (param: WitParameter) =>
32
- makeDecoder(makeTupleCodecConstructor(param));
33
-
34
- //
35
-
36
18
  export function decodeWitParameter(value: string, param: WitParameter) {
37
- // TODO: type cast
38
19
  const decoder = decoderForParam(param);
39
20
 
40
21
  return {
@@ -49,7 +30,6 @@ export function decodeTuple(
49
30
  if (!param.components) {
50
31
  throw new Error("Tuple parameter missing components");
51
32
  }
52
- console.log("value");
53
33
 
54
34
  return param.components.reduce<Record<string, string>>(
55
35
  (acc, component: WitParameter) => {
@@ -68,146 +48,6 @@ export function decodeTuple(
68
48
  );
69
49
  }
70
50
 
71
- function decoderForParam(p: WitParameter) {
72
- const t = p.type as WitType;
73
- console.log({ t });
74
-
75
- switch (t) {
76
- case "tuple":
77
- return tupleDecoder(p);
78
- case "string":
79
- return stringDecoder;
80
- case "decimal":
81
- return decimalDecoder;
82
- case "option<decimal>":
83
- return optionOfDecimalDecoder;
84
- case "option<tuple>":
85
- return optionOfTupleDecoder(p);
86
- case "list<decimal>":
87
- return listOfDecimalDecoder;
88
- case "list<tuple>":
89
- return listOfTupleDecoder(p);
90
- case "u64":
91
- return u64Decoder;
92
-
93
- case "error":
94
- case "contract-address":
95
- case "bool":
96
- case "s8":
97
- case "s16":
98
- case "s32":
99
- case "s64":
100
- case "u8":
101
- case "u16":
102
- case "u32":
103
- case "integer":
104
- case "option<string>":
105
- case "option<bool>":
106
- case "option<s8>":
107
- case "option<s16>":
108
- case "option<s32>":
109
- case "option<s64>":
110
- case "option<u8>":
111
- case "option<u16>":
112
- case "option<u32>":
113
- case "option<u64>":
114
- case "option<integer>":
115
- case "option<_>":
116
-
117
- case "list<string>":
118
- case "list<bool>":
119
- case "list<s8>":
120
- case "list<s16>":
121
- case "list<s32>":
122
- case "list<s64>":
123
- case "list<u8>":
124
- case "list<u16>":
125
- case "list<u32>":
126
- case "list<u64>":
127
- case "list<integer>":
128
- case "list<_>":
129
- case "result<_, error>":
130
- case "result<string, error>":
131
- case "result<bool, error>":
132
- case "result<s8, error>":
133
- case "result<s16, error>":
134
- case "result<s32, error>":
135
- case "result<s64, error>":
136
- case "result<u8, error>":
137
- case "result<u16, error>":
138
- case "result<u32, error>":
139
- case "result<u64, error>":
140
- case "result<decimal, error>":
141
- case "result<integer, error>":
142
- case "result<tuple, error>":
143
- case "result<option<string>, error>":
144
- case "result<option<bool>, error>":
145
- case "result<option<s8>, error>":
146
- case "result<option<s16>, error>":
147
- case "result<option<s32>, error>":
148
- case "result<option<s64>, error>":
149
- case "result<option<u8>, error>":
150
- case "result<option<u16>, error>":
151
- case "result<option<u32>, error>":
152
- case "result<option<u64>, error>":
153
- case "result<option<decimal>, error>":
154
- case "result<option<integer>, error>":
155
- case "result<option<_>, error>":
156
- case "result<option<tuple>, error>":
157
- case "option<list<string>>":
158
- case "option<list<bool>>":
159
- case "option<list<s8>>":
160
- case "option<list<s16>>":
161
- case "option<list<s32>>":
162
- case "option<list<s64>>":
163
- case "option<list<u8>>":
164
- case "option<list<u16>>":
165
- case "option<list<u32>>":
166
- case "option<list<u64>>":
167
- case "option<list<decimal>>":
168
- case "option<list<integer>>":
169
- case "option<list<_>>":
170
- case "option<list<tuple>>":
171
- case "result<option<list<string>>, error>":
172
- case "result<option<list<bool>>, error>":
173
- case "result<option<list<s8>>, error>":
174
- case "result<option<list<s16>>, error>":
175
- case "result<option<list<s32>>, error>":
176
- case "result<option<list<s64>>, error>":
177
- case "result<option<list<u8>>, error>":
178
- case "result<option<list<u16>>, error>":
179
- case "result<option<list<u32>>, error>":
180
- case "result<option<list<u64>>, error>":
181
- case "result<option<list<decimal>>, error>":
182
- case "result<option<list<integer>>, error>":
183
- case "result<option<list<_>>, error>":
184
- case "result<option<list<tuple>>, error>":
185
- case "result<list<string>, error>":
186
- case "result<list<bool>, error>":
187
- case "result<list<s8>, error>":
188
- case "result<list<s16>, error>":
189
- case "result<list<s32>, error>":
190
- case "result<list<s64>, error>":
191
- case "result<list<u8>, error>":
192
- case "result<list<u16>, error>":
193
- case "result<list<u32>, error>":
194
- case "result<list<u64>, error>":
195
- case "result<list<decimal>, error>":
196
- case "result<list<integer>, error>":
197
- case "result<list<_>, error>":
198
- case "result<list<tuple>, error>":
199
- throw new Error("not implemented");
200
-
201
- default:
202
- const exhaustive: never = t;
203
- void exhaustive;
204
- throw new InvalidWitEncodingTypeError(t, {
205
- docsPath: "tk",
206
- });
207
- //
208
- }
209
- }
210
-
211
51
  export class TupleCodecInstance
212
52
  implements CodecInstance<Record<string, string>>
213
53
  {
@@ -255,7 +95,6 @@ export function makeTupleCodecConstructor(
255
95
  // Called to parse the raw encoded string into a JavaScript object (Wave Data)
256
96
  static parseWave(expr: string): Record<string, string> {
257
97
  // For tuples, the raw encoded string is the JSON representation.
258
- console.log("parsing tuple wave expr:", expr);
259
98
 
260
99
  return parseWitRecord(expr) as Record<string, string>;
261
100
  }
@@ -334,3 +173,167 @@ export function parseWitRecord(raw: string) {
334
173
 
335
174
  return result;
336
175
  }
176
+
177
+ function decoderForParam(p: WitParameter) {
178
+ const t = p.type as WitType;
179
+
180
+ 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 -------------------------------------------------
192
+ case "string":
193
+ return makeDecoder(StringCodec);
194
+ case "option<string>":
195
+ return makeDecoder(OptionCodecFactory.create(StringCodec));
196
+ case "list<string>":
197
+ return makeDecoder(ListCodecFactory.create(StringCodec));
198
+
199
+ // --- decimal ------------------------------------------------
200
+ case "decimal":
201
+ return makeDecoder(DecimalCodec);
202
+ case "option<decimal>":
203
+ return makeDecoder(OptionCodecFactory.create(DecimalCodec));
204
+ case "list<decimal>":
205
+ return makeDecoder(ListCodecFactory.create(DecimalCodec));
206
+
207
+ // --- bool ---------------------------------------------------
208
+ case "bool":
209
+ return makeDecoder(BoolCodec);
210
+ case "option<bool>":
211
+ return makeDecoder(OptionCodecFactory.create(BoolCodec));
212
+ 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));
230
+
231
+ // --- integer ------------------------------------------------
232
+ case "integer":
233
+ return makeDecoder(IntegerCodec);
234
+ case "option<integer>":
235
+ return makeDecoder(OptionCodecFactory.create(IntegerCodec));
236
+ case "list<integer>":
237
+ return makeDecoder(ListCodecFactory.create(IntegerCodec));
238
+
239
+ // --- not supported (yet) -----------------------------------
240
+ case "error":
241
+ case "contract-address":
242
+ case "s8":
243
+ case "s16":
244
+ case "s32":
245
+ case "u8":
246
+ case "u16":
247
+ case "u32":
248
+ case "option<s8>":
249
+ case "option<s16>":
250
+ case "option<s32>":
251
+ 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>":
258
+ case "list<u8>":
259
+ case "list<u16>":
260
+ case "list<u32>":
261
+ case "list<_>":
262
+ case "result<_, error>":
263
+ case "result<string, error>":
264
+ case "result<bool, error>":
265
+ case "result<s8, error>":
266
+ case "result<s16, error>":
267
+ case "result<s32, error>":
268
+ 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>":
288
+ case "result<option<_>, error>":
289
+ case "result<option<tuple>, error>":
290
+ case "option<list<string>>":
291
+ case "option<list<bool>>":
292
+ case "option<list<s8>>":
293
+ case "option<list<s16>>":
294
+ case "option<list<s32>>":
295
+ case "option<list<s64>>":
296
+ case "option<list<u8>>":
297
+ case "option<list<u16>>":
298
+ case "option<list<u32>>":
299
+ 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>":
318
+ case "result<list<string>, error>":
319
+ 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>":
324
+ case "result<list<u8>, error>":
325
+ case "result<list<u16>, error>":
326
+ case "result<list<u32>, error>":
327
+ 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" });
333
+
334
+ default: {
335
+ t satisfies never;
336
+ throw new InvalidWitEncodingTypeError(t, { docsPath: "tk" });
337
+ }
338
+ }
339
+ }