@kontor/kontor-sdk 1.0.0-alpha.3 → 1.0.0-alpha.5

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 (113) hide show
  1. package/dist/src/kwit/error.js +59 -0
  2. package/dist/src/kwit/error.js.map +1 -0
  3. package/dist/src/kwit/kwit-parser/core/errors/kwit-parameter.js +29 -0
  4. package/dist/src/kwit/kwit-parser/core/errors/kwit-parameter.js.map +1 -0
  5. package/dist/src/kwit/kwit-parser/core/errors/signature.js +42 -0
  6. package/dist/src/kwit/kwit-parser/core/errors/signature.js.map +1 -0
  7. package/dist/src/kwit/kwit-parser/core/errors/splitParameters.js +18 -0
  8. package/dist/src/kwit/kwit-parser/core/errors/splitParameters.js.map +1 -0
  9. package/dist/src/kwit/kwit-parser/core/records.js +73 -0
  10. package/dist/src/kwit/kwit-parser/core/records.js.map +1 -0
  11. package/dist/src/kwit/kwit-parser/core/records.test.js +53 -0
  12. package/dist/src/kwit/kwit-parser/core/records.test.js.map +1 -0
  13. package/dist/src/kwit/kwit-parser/core/signatures.js +33 -0
  14. package/dist/src/kwit/kwit-parser/core/signatures.js.map +1 -0
  15. package/dist/src/kwit/kwit-parser/core/signatures.test.js +54 -0
  16. package/dist/src/kwit/kwit-parser/core/signatures.test.js.map +1 -0
  17. package/dist/src/kwit/kwit-parser/core/types/records.js +2 -0
  18. package/dist/src/kwit/kwit-parser/core/types/records.js.map +1 -0
  19. package/dist/src/kwit/kwit-parser/core/types/records.test-d.js +19 -0
  20. package/dist/src/kwit/kwit-parser/core/types/records.test-d.js.map +1 -0
  21. package/dist/src/kwit/kwit-parser/core/types/signatures.js +3 -0
  22. package/dist/src/kwit/kwit-parser/core/types/signatures.js.map +1 -0
  23. package/dist/src/kwit/kwit-parser/core/types/signatures.test-d.js +18 -0
  24. package/dist/src/kwit/kwit-parser/core/types/signatures.test-d.js.map +1 -0
  25. package/dist/src/kwit/kwit-parser/core/types/utils.js +2 -0
  26. package/dist/src/kwit/kwit-parser/core/types/utils.js.map +1 -0
  27. package/dist/src/kwit/kwit-parser/core/types/utils.test-d.js +159 -0
  28. package/dist/src/kwit/kwit-parser/core/types/utils.test-d.js.map +1 -0
  29. package/dist/src/kwit/kwit-parser/core/utils.js +212 -0
  30. package/dist/src/kwit/kwit-parser/core/utils.js.map +1 -0
  31. package/dist/src/kwit/kwit-parser/core/utils.test.js +302 -0
  32. package/dist/src/kwit/kwit-parser/core/utils.test.js.map +1 -0
  33. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.js +26 -0
  34. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.js.map +1 -0
  35. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.test.js +83 -0
  36. package/dist/src/kwit/kwit-parser/parse-kwit-parameter.test.js.map +1 -0
  37. package/dist/src/kwit/kwit-parser/parse-kwit.js +16 -0
  38. package/dist/src/kwit/kwit-parser/parse-kwit.js.map +1 -0
  39. package/dist/src/kwit/kwit-parser/parse-kwit.test.js +78 -0
  40. package/dist/src/kwit/kwit-parser/parse-kwit.test.js.map +1 -0
  41. package/dist/src/kwit/kwit.js +2 -0
  42. package/dist/src/kwit/kwit.js.map +1 -0
  43. package/dist/src/kwit/kwit.test.js +9 -0
  44. package/dist/src/kwit/kwit.test.js.map +1 -0
  45. package/dist/src/kwit/narrow.js +14 -0
  46. package/dist/src/kwit/narrow.js.map +1 -0
  47. package/dist/src/kwit/regex.js +6 -0
  48. package/dist/src/kwit/regex.js.map +1 -0
  49. package/dist/src/kwit/register.js +2 -0
  50. package/dist/src/kwit/register.js.map +1 -0
  51. package/dist/src/kwit/type-utils.js +2 -0
  52. package/dist/src/kwit/type-utils.js.map +1 -0
  53. package/dist/src/kwit/utils.js +2 -0
  54. package/dist/src/kwit/utils.js.map +1 -0
  55. package/dist/src/kwit/utils.test-d.js +17 -0
  56. package/dist/src/kwit/utils.test-d.js.map +1 -0
  57. package/dist/src/kwit/version.js +2 -0
  58. package/dist/src/kwit/version.js.map +1 -0
  59. package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js +19 -30
  60. package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js.map +1 -1
  61. package/dist/src/sdk/actions/public/test-mempool-accept.js +1 -1
  62. package/dist/src/sdk/actions/public/test-mempool-accept.js.map +1 -1
  63. package/dist/src/sdk/clients/decorators/public.js +2 -0
  64. package/dist/src/sdk/clients/decorators/public.js.map +1 -1
  65. package/dist/src/sdk/errors/kwit.js +19 -0
  66. package/dist/src/sdk/errors/kwit.js.map +1 -0
  67. package/dist/src/sdk/test/e2e.test.js +174 -14
  68. package/dist/src/sdk/test/e2e.test.js.map +1 -1
  69. package/dist/src/sdk/utils/kwit/codecs/decimal.js +165 -0
  70. package/dist/src/sdk/utils/kwit/codecs/decimal.js.map +1 -0
  71. package/dist/src/sdk/utils/kwit/codecs/enum.js +104 -0
  72. package/dist/src/sdk/utils/kwit/codecs/enum.js.map +1 -0
  73. package/dist/src/sdk/utils/kwit/codecs/integer.js +167 -0
  74. package/dist/src/sdk/utils/kwit/codecs/integer.js.map +1 -0
  75. package/dist/src/sdk/utils/kwit/codecs/list.js +117 -0
  76. package/dist/src/sdk/utils/kwit/codecs/list.js.map +1 -0
  77. package/dist/src/sdk/utils/kwit/codecs/option.js +91 -0
  78. package/dist/src/sdk/utils/kwit/codecs/option.js.map +1 -0
  79. package/dist/src/sdk/utils/kwit/codecs/string.js +27 -0
  80. package/dist/src/sdk/utils/kwit/codecs/string.js.map +1 -0
  81. package/dist/src/sdk/utils/kwit/codecs/types.js +45 -0
  82. package/dist/src/sdk/utils/kwit/codecs/types.js.map +1 -0
  83. package/dist/src/sdk/utils/kwit/codecs/unit.js +22 -0
  84. package/dist/src/sdk/utils/kwit/codecs/unit.js.map +1 -0
  85. package/dist/src/sdk/utils/kwit/decode-function-result.js +36 -0
  86. package/dist/src/sdk/utils/kwit/decode-function-result.js.map +1 -0
  87. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.js +286 -0
  88. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.js.map +1 -0
  89. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.test.js +75 -0
  90. package/dist/src/sdk/utils/kwit/decode-kwit-parameter.test.js.map +1 -0
  91. package/dist/src/sdk/utils/kwit/encode-function-data.js +17 -0
  92. package/dist/src/sdk/utils/kwit/encode-function-data.js.map +1 -0
  93. package/dist/src/sdk/utils/kwit/encode-function-data.test-d.js +21 -0
  94. package/dist/src/sdk/utils/kwit/encode-function-data.test-d.js.map +1 -0
  95. package/dist/src/sdk/utils/kwit/encode-function-data.test.js +91 -0
  96. package/dist/src/sdk/utils/kwit/encode-function-data.test.js.map +1 -0
  97. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.js +250 -0
  98. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.js.map +1 -0
  99. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.test.js +62 -0
  100. package/dist/src/sdk/utils/kwit/encode-kwit-parameters.test.js.map +1 -0
  101. package/dist/src/sdk/utils/kwit/get-kwit-item.js +186 -0
  102. package/dist/src/sdk/utils/kwit/get-kwit-item.js.map +1 -0
  103. package/dist/src/sdk/utils/kwit/get-kwit-item.test.js +119 -0
  104. package/dist/src/sdk/utils/kwit/get-kwit-item.test.js.map +1 -0
  105. package/dist/src/sdk/utils/kwit/prepare-encode-function-data.js +24 -0
  106. package/dist/src/sdk/utils/kwit/prepare-encode-function-data.js.map +1 -0
  107. package/dist/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +1 -1
  109. package/src/sdk/actions/kontor/wallet/sign-reveal.ts +27 -34
  110. package/src/sdk/actions/public/test-mempool-accept.ts +2 -3
  111. package/src/sdk/clients/decorators/public.ts +11 -0
  112. package/src/sdk/test/e2e.test.ts +193 -15
  113. package/src/sdk/types/btc-rpc.ts +1 -1
@@ -0,0 +1,91 @@
1
+ import { Enum } from "./enum.js";
2
+ export const KontorOption = Enum.Option;
3
+ /**
4
+ * Instance that represents a decoded option<Inner> value.
5
+ *
6
+ * Generic parameterization is on the *inner codec constructor* so that
7
+ * the JS type of this option instance is always OptionJs<CodecJs<InnerC>>.
8
+ */
9
+ export class OptionCodecFactory {
10
+ constructor(innerCodec, data) {
11
+ Object.defineProperty(this, "innerCodec", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: innerCodec
16
+ });
17
+ Object.defineProperty(this, "data", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: data
22
+ });
23
+ }
24
+ toWave() {
25
+ if (this.data.kind === "none") {
26
+ return "none";
27
+ }
28
+ // assume data.value is a WaveExpr string for the inner
29
+ return `some(${this.data.value ?? ""})`;
30
+ }
31
+ toJs() {
32
+ if (this.data.kind === "none") {
33
+ return { kind: "none" };
34
+ }
35
+ if (this.data.value == null) {
36
+ throw new Error("Option some() has no inner value");
37
+ }
38
+ // 1) parse inner WaveExpr → inner WaveData
39
+ const innerWaveData = this.innerCodec.parseWave(this.data.value);
40
+ // 2) WaveData → inner instance
41
+ const innerInst = this.innerCodec.fromKontor(innerWaveData);
42
+ // 3) instance → JS
43
+ return { kind: "some", value: innerInst.toJs() };
44
+ }
45
+ // ----- Static factory to build a typed option<T> codec constructor -----
46
+ static create(innerCodec) {
47
+ // Class expression implements the static methods required by CodecConstructor
48
+ class OptionCodecClass {
49
+ constructor(data) {
50
+ // Internally forward all instance behavior to OptionCodecInstance
51
+ Object.defineProperty(this, "_impl", {
52
+ enumerable: true,
53
+ configurable: true,
54
+ writable: true,
55
+ value: void 0
56
+ });
57
+ this._impl = new OptionCodecFactory(innerCodec, data);
58
+ }
59
+ // ----- CodecConstructor statics -----
60
+ static fromJs(value) {
61
+ if (value.kind === "none") {
62
+ return new OptionCodecFactory(innerCodec, { kind: "none" });
63
+ }
64
+ // encode inner via innerCodec
65
+ const innerInst = innerCodec.fromJs(value.value);
66
+ const innerWave = innerInst.toWave();
67
+ return new OptionCodecFactory(innerCodec, {
68
+ kind: "some",
69
+ value: innerWave,
70
+ });
71
+ }
72
+ static parseWave(expr) {
73
+ // Expect raw "none" or "some(<inner...>)"
74
+ return Enum.Option.schema.parse(expr);
75
+ }
76
+ static fromKontor(data) {
77
+ return new OptionCodecFactory(innerCodec, data);
78
+ }
79
+ // ----- Instance side -----
80
+ toWave() {
81
+ return this._impl.toWave();
82
+ }
83
+ toJs() {
84
+ return this._impl.toJs();
85
+ }
86
+ }
87
+ // Satisfy the CodecConstructor contract with precise generics
88
+ return OptionCodecClass;
89
+ }
90
+ }
91
+ //# sourceMappingURL=option.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/kwit/codecs/option.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;AAKxC;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAI7B,YACmB,UAAkB,EACnB,IAAmB;QADnC;;;;mBAAiB,UAAU;WAAQ;QACnC;;;;mBAAgB,IAAI;WAAe;IAClC,CAAC;IAEJ,MAAM;QACJ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,MAAkB,CAAC;QAC5B,CAAC;QACD,uDAAuD;QACvD,OAAO,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,GAAe,CAAC;IACtD,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,2CAA2C;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,CACK,CAAC;QAEvB,+BAA+B;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAC1C,aAAa,CACO,CAAC;QAEvB,mBAAmB;QACnB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAqB,EAAE,CAAC;IACtE,CAAC;IAED,0EAA0E;IAE1E,MAAM,CAAC,MAAM,CAGX,UAAkB;QASlB,8EAA8E;QAC9E,MAAM,gBAAgB;YAIpB,YAAY,IAAmB;gBAH/B,kEAAkE;gBACjD;;;;;mBAAkC;gBAGjD,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACxD,CAAC;YAED,uCAAuC;YAEvC,MAAM,CAAC,MAAM,CACX,KAAgC;gBAEhC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,OAAO,IAAI,kBAAkB,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBACD,8BAA8B;gBAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAwB,CAAC,CAAC;gBACpE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;gBACrC,OAAO,IAAI,kBAAkB,CAAC,UAAU,EAAE;oBACxC,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,SAAS,CAAC,IAAY;gBAC3B,0CAA0C;gBAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,CAAC,UAAU,CAAC,IAAmB;gBACnC,OAAO,IAAI,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAClD,CAAC;YAED,4BAA4B;YAE5B,MAAM;gBACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,CAAC;YACD,IAAI;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC3B,CAAC;SACF;QAED,8DAA8D;QAC9D,OAAO,gBAIN,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ export const StringCodec = {
2
+ fromJs(value) {
3
+ return {
4
+ toWave() {
5
+ // Wave syntax for string args: we assume quoted
6
+ return `"${value}"`;
7
+ },
8
+ toJs() {
9
+ return value;
10
+ },
11
+ };
12
+ },
13
+ fromKontor(data) {
14
+ return {
15
+ toWave() {
16
+ return `"${data}"`;
17
+ },
18
+ toJs() {
19
+ return data;
20
+ },
21
+ };
22
+ },
23
+ parseWave(expr) {
24
+ return JSON.parse(expr);
25
+ },
26
+ };
27
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/kwit/codecs/string.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,CAAC,KAAa;QAClB,OAAO;YACL,MAAM;gBACJ,gDAAgD;gBAChD,OAAO,IAAI,KAAK,GAAe,CAAC;YAClC,CAAC;YACD,IAAI;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO;YACL,MAAM;gBACJ,OAAO,IAAI,IAAI,GAAe,CAAC;YACjC,CAAC;YACD,IAAI;gBACF,OAAO,IAAc,CAAC;YACxB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACoE,CAAC"}
@@ -0,0 +1,45 @@
1
+ export const unit = { _tag: "Unit" };
2
+ // ---------- Encoder: JS → WaveExpr (fully type-safe) ----------
3
+ export class Encoder {
4
+ constructor(schema) {
5
+ Object.defineProperty(this, "schema", {
6
+ enumerable: true,
7
+ configurable: true,
8
+ writable: true,
9
+ value: schema
10
+ });
11
+ }
12
+ encode(values) {
13
+ const out = {};
14
+ for (const key of Object.keys(this.schema)) {
15
+ const ctor = this.schema[key];
16
+ const inst = ctor.fromJs(values[key]);
17
+ out[key] = inst.toWave();
18
+ }
19
+ return out;
20
+ }
21
+ }
22
+ // ---------- Decoder: WaveExpr → JS (inferred from codec) ----------
23
+ export class Decoder {
24
+ constructor(codec) {
25
+ Object.defineProperty(this, "codec", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: codec
30
+ });
31
+ }
32
+ decode(expr) {
33
+ console.log("in tuple decode");
34
+ const wave = this.codec.parseWave(expr);
35
+ console.log({ wave });
36
+ const inst = this.codec.fromKontor(wave);
37
+ console.log({ inst });
38
+ return inst.toJs();
39
+ }
40
+ }
41
+ // Optional ergonomic helper so callers don't write generics at `new` sites
42
+ export function makeDecoder(codec) {
43
+ return new Decoder(codec);
44
+ }
45
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/kwit/codecs/types.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,IAAI,GAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAuE3C,iEAAiE;AAEjE,MAAM,OAAO,OAAO;IAClB,YAA6B,MAAS;QAA1B;;;;mBAAiB,MAAM;WAAG;IAAG,CAAC;IAE1C,MAAM,CAAC,MAAkB;QACvB,MAAM,GAAG,GAAG,EAAkC,CAAC;QAC/C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAmB,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,qEAAqE;AAErE,MAAM,OAAO,OAAO;IAGlB,YAA6B,KAAQ;QAAzB;;;;mBAAiB,KAAK;WAAG;IAAG,CAAC;IAEzC,MAAM,CAAC,IAAY;QACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAiB,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAiB,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,IAAI,EAAgB,CAAC;IACnC,CAAC;CACF;AAED,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAEzB,KAAQ;IACR,OAAO,IAAI,OAAO,CAAI,KAAK,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { unit, } from "./types.js";
2
+ class _UnitCodec {
3
+ constructor() { }
4
+ static fromJs(_value) {
5
+ return new _UnitCodec();
6
+ }
7
+ static fromKontor(_data) {
8
+ return new _UnitCodec();
9
+ }
10
+ static parseWave(_expr) {
11
+ // ok branch payload is conceptually "unit"
12
+ return unit;
13
+ }
14
+ toWave() {
15
+ return "";
16
+ }
17
+ toJs() {
18
+ return unit;
19
+ }
20
+ }
21
+ export const UnitCodec = _UnitCodec;
22
+ //# sourceMappingURL=unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit.js","sourceRoot":"","sources":["../../../../../../src/sdk/utils/kwit/codecs/unit.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,IAAI,GAEL,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU;IACd,gBAAe,CAAC;IAEhB,MAAM,CAAC,MAAM,CAAC,MAAY;QACxB,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,KAAc;QAC9B,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAa;QAC5B,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;QACJ,OAAO,EAAc,CAAC;IACxB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,UAIxB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { decodeKwitParameter } from "./decode-kwit-parameter.js";
2
+ import { getKwitItem } from "./get-kwit-item.js";
3
+ export function decodeFunctionResult(parameters) {
4
+ const { kwit, functionName, data } = parameters;
5
+ let kwitItem = kwit[0];
6
+ if (functionName) {
7
+ const item = getKwitItem({ kwit, name: functionName });
8
+ // todo: refine error
9
+ // if (!item) throw new KwitFunctionNotFoundError(functionName, { docsPath })
10
+ if (!item)
11
+ throw new Error("KwitFunctionNotFoundError");
12
+ kwitItem = item;
13
+ }
14
+ if (kwitItem.type !== "function")
15
+ // todo: refine error
16
+ // throw new KwitFunctionNotFoundError(undefined, { docsPath })
17
+ throw new Error("KwitFunctionNotFoundError");
18
+ if (!kwitItem.outputs)
19
+ // todo: refine error
20
+ // throw new KwitFunctionOutputsNotFoundError(kwitItem.name, { docsPath })
21
+ throw new Error("KwitFunctionNotFoundError");
22
+ const value = decodeKwitParameter(data, kwitItem.outputs[0]);
23
+ // TODO: sholdn't have to index on `decoded` here
24
+ return value.decoded;
25
+ //
26
+ // if (values && values.length > 1)
27
+ // return values as DecodeFunctionResultReturnType<kwit, functionName, args>;
28
+ // if (values && values.length === 1)
29
+ // return values[0] as DecodeFunctionResultReturnType<
30
+ // kwit,
31
+ // functionName,
32
+ // args
33
+ // >;
34
+ // return undefined as DecodeFunctionResultReturnType<kwit, functionName, args>;
35
+ }
36
+ //# sourceMappingURL=decode-function-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-function-result.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/kwit/decode-function-result.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAA6B,MAAM,oBAAoB,CAAC;AAgD5E,MAAM,UAAU,oBAAoB,CAIlC,UAA8D;IAE9D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAChC,UAA4C,CAAC;IAE/C,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACvD,qBAAqB;QACrB,6EAA6E;QAC7E,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACxD,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,QAAS,CAAC,IAAI,KAAK,UAAU;QAC/B,qBAAqB;QACrB,+DAA+D;QAC/D,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAS,CAAC,OAAO;QACpB,qBAAqB;QACrB,0EAA0E;QAC1E,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE/C,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAS,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;IAC/D,iDAAiD;IACjD,OAAO,KAAK,CAAC,OAA6D,CAAC;IAE3E,EAAE;IACF,mCAAmC;IACnC,+EAA+E;IAC/E,qCAAqC;IACrC,wDAAwD;IACxD,YAAY;IACZ,oBAAoB;IACpB,WAAW;IACX,OAAO;IACP,gFAAgF;AAClF,CAAC"}
@@ -0,0 +1,286 @@
1
+ import { InvalidKwitEncodingTypeError } from "../../errors/kwit.js";
2
+ import { DecimalCodec } from "./codecs/decimal.js";
3
+ import { StringCodec } from "./codecs/string.js";
4
+ import { OptionCodecFactory } from "./codecs/option.js";
5
+ import { ListCodecFactory } from "./codecs/list.js";
6
+ import { makeDecoder, } from "./codecs/types.js";
7
+ const stringDecoder = makeDecoder(StringCodec);
8
+ const decimalDecoder = makeDecoder(DecimalCodec);
9
+ const optionOfDecimalDecoder = makeDecoder(OptionCodecFactory.create(DecimalCodec));
10
+ const optionOfTupleDecoder = (param) => makeDecoder(OptionCodecFactory.create(makeTupleCodecConstructor(param)));
11
+ const listOfDecimalDecoder = makeDecoder(ListCodecFactory.create(DecimalCodec));
12
+ const listOfTupleDecoder = (param) => makeDecoder(ListCodecFactory.create(makeTupleCodecConstructor(param)));
13
+ const tupleDecoder = (param) => makeDecoder(makeTupleCodecConstructor(param));
14
+ //
15
+ export function decodeKwitParameter(value, param) {
16
+ // TODO: type cast
17
+ const decoder = decoderForParam(param);
18
+ return {
19
+ decoded: decoder.decode(value),
20
+ };
21
+ }
22
+ export function decodeTuple(record, param) {
23
+ if (!param.components) {
24
+ throw new Error("Tuple parameter missing components");
25
+ }
26
+ console.log("value");
27
+ return param.components.reduce((acc, component) => {
28
+ if (!component.name) {
29
+ throw new Error("Tuple component missing name");
30
+ }
31
+ const fieldValue = record[component.name];
32
+ const decoder = decoderForParam(component);
33
+ // @ts-ignore
34
+ acc[component.name] = decoder.decode(fieldValue);
35
+ return acc;
36
+ }, {});
37
+ }
38
+ function decoderForParam(p) {
39
+ const t = p.type;
40
+ console.log({ t });
41
+ switch (t) {
42
+ case "tuple":
43
+ return tupleDecoder(p);
44
+ case "string":
45
+ return stringDecoder;
46
+ case "decimal":
47
+ return decimalDecoder;
48
+ case "option<decimal>":
49
+ return optionOfDecimalDecoder;
50
+ case "option<tuple>":
51
+ return optionOfTupleDecoder(p);
52
+ case "list<decimal>":
53
+ return listOfDecimalDecoder;
54
+ case "list<tuple>":
55
+ return listOfTupleDecoder(p);
56
+ case "error":
57
+ case "contract-address":
58
+ case "bool":
59
+ case "s8":
60
+ case "s16":
61
+ case "s32":
62
+ case "s64":
63
+ case "u8":
64
+ case "u16":
65
+ case "u32":
66
+ case "u64":
67
+ case "integer":
68
+ case "option<string>":
69
+ case "option<bool>":
70
+ case "option<s8>":
71
+ case "option<s16>":
72
+ case "option<s32>":
73
+ case "option<s64>":
74
+ case "option<u8>":
75
+ case "option<u16>":
76
+ case "option<u32>":
77
+ case "option<u64>":
78
+ case "option<integer>":
79
+ case "option<_>":
80
+ case "list<string>":
81
+ case "list<bool>":
82
+ case "list<s8>":
83
+ case "list<s16>":
84
+ case "list<s32>":
85
+ case "list<s64>":
86
+ case "list<u8>":
87
+ case "list<u16>":
88
+ case "list<u32>":
89
+ case "list<u64>":
90
+ case "list<integer>":
91
+ case "list<_>":
92
+ case "result<_, error>":
93
+ case "result<string, error>":
94
+ case "result<bool, error>":
95
+ case "result<s8, error>":
96
+ case "result<s16, error>":
97
+ case "result<s32, error>":
98
+ case "result<s64, error>":
99
+ case "result<u8, error>":
100
+ case "result<u16, error>":
101
+ case "result<u32, error>":
102
+ case "result<u64, error>":
103
+ case "result<decimal, error>":
104
+ case "result<integer, error>":
105
+ case "result<tuple, error>":
106
+ case "result<option<string>, error>":
107
+ case "result<option<bool>, error>":
108
+ case "result<option<s8>, error>":
109
+ case "result<option<s16>, error>":
110
+ case "result<option<s32>, error>":
111
+ case "result<option<s64>, error>":
112
+ case "result<option<u8>, error>":
113
+ case "result<option<u16>, error>":
114
+ case "result<option<u32>, error>":
115
+ case "result<option<u64>, error>":
116
+ case "result<option<decimal>, error>":
117
+ case "result<option<integer>, error>":
118
+ case "result<option<_>, error>":
119
+ case "result<option<tuple>, error>":
120
+ case "option<list<string>>":
121
+ case "option<list<bool>>":
122
+ case "option<list<s8>>":
123
+ case "option<list<s16>>":
124
+ case "option<list<s32>>":
125
+ case "option<list<s64>>":
126
+ case "option<list<u8>>":
127
+ case "option<list<u16>>":
128
+ case "option<list<u32>>":
129
+ case "option<list<u64>>":
130
+ case "option<list<decimal>>":
131
+ case "option<list<integer>>":
132
+ case "option<list<_>>":
133
+ case "option<list<tuple>>":
134
+ case "result<option<list<string>>, error>":
135
+ case "result<option<list<bool>>, error>":
136
+ case "result<option<list<s8>>, error>":
137
+ case "result<option<list<s16>>, error>":
138
+ case "result<option<list<s32>>, error>":
139
+ case "result<option<list<s64>>, error>":
140
+ case "result<option<list<u8>>, error>":
141
+ case "result<option<list<u16>>, error>":
142
+ case "result<option<list<u32>>, error>":
143
+ case "result<option<list<u64>>, error>":
144
+ case "result<option<list<decimal>>, error>":
145
+ case "result<option<list<integer>>, error>":
146
+ case "result<option<list<_>>, error>":
147
+ case "result<option<list<tuple>>, error>":
148
+ case "result<list<string>, error>":
149
+ case "result<list<bool>, error>":
150
+ case "result<list<s8>, error>":
151
+ case "result<list<s16>, error>":
152
+ case "result<list<s32>, error>":
153
+ case "result<list<s64>, error>":
154
+ case "result<list<u8>, error>":
155
+ case "result<list<u16>, error>":
156
+ case "result<list<u32>, error>":
157
+ case "result<list<u64>, error>":
158
+ case "result<list<decimal>, error>":
159
+ case "result<list<integer>, error>":
160
+ case "result<list<_>, error>":
161
+ case "result<list<tuple>, error>":
162
+ throw new Error("not implemented");
163
+ default:
164
+ const exhaustive = t;
165
+ void exhaustive;
166
+ throw new InvalidKwitEncodingTypeError(t, {
167
+ docsPath: "tk",
168
+ });
169
+ //
170
+ }
171
+ }
172
+ export class TupleCodecInstance {
173
+ // 'data' holds the raw parsed JSON object representing the encoded tuple
174
+ constructor(data, param) {
175
+ Object.defineProperty(this, "data", {
176
+ enumerable: true,
177
+ configurable: true,
178
+ writable: true,
179
+ value: data
180
+ });
181
+ Object.defineProperty(this, "param", {
182
+ enumerable: true,
183
+ configurable: true,
184
+ writable: true,
185
+ value: param
186
+ });
187
+ }
188
+ // Fixes Error 2416: Property 'toWave' must return the branded type WaveExpr
189
+ toWave() {
190
+ // Converts JS data back to the wave format (usually a stringified object)
191
+ throw new Error("TupleCodec.toWave not implemented for decoding context");
192
+ }
193
+ toJs() {
194
+ // The core decoding step: recursively call decodeTuple
195
+ return decodeTuple(this.data, this.param);
196
+ }
197
+ }
198
+ export function makeTupleCodecConstructor(param) {
199
+ if (!param.components) {
200
+ throw new Error("Cannot create TupleCodec: Parameter missing components");
201
+ }
202
+ // 2. Define the CodecConstructor class with static methods
203
+ // We remove 'implements CodecConstructor<any, any, any>' as the function returns the class itself
204
+ // (Fixes Error 2420, although the original code had the static methods, this clarifies intent).
205
+ class TupleCodec {
206
+ // --- Static CodecConstructor methods ---
207
+ // Called to create an instance from a JavaScript value (e.g., when encoding)
208
+ static fromJs(_value) {
209
+ // NOTE: Full encoding implementation is omitted for focus
210
+ throw new Error("TupleCodec.fromJs not implemented for decoding context");
211
+ }
212
+ // Called to parse the raw encoded string into a JavaScript object (Wave Data)
213
+ static parseWave(expr) {
214
+ // For tuples, the raw encoded string is the JSON representation.
215
+ console.log("parsing tuple wave expr:", expr);
216
+ return parseWitRecord(expr);
217
+ }
218
+ // Called to create an instance from the parsed Wave Data
219
+ static fromKontor(data) {
220
+ // Pass the original parameter definition to the instance for use in toJs()
221
+ return new TupleCodecInstance(data, param);
222
+ }
223
+ // --- Instance constructor (optional, mainly for type checking compatibility) ---
224
+ constructor(data) {
225
+ // Delegate to the static factory to ensure the instance is correctly initialized
226
+ return TupleCodec.fromKontor(data);
227
+ }
228
+ }
229
+ // 3. Cast the class to the correct CodecConstructor type
230
+ return TupleCodec;
231
+ }
232
+ export function parseWitRecord(raw) {
233
+ // Remove leading/trailing whitespace and outer braces
234
+ const trimmed = raw.trim().replace(/^\{|\}$/g, "");
235
+ const result = {};
236
+ let depth = 0;
237
+ let currentKey = "";
238
+ let currentValue = "";
239
+ let inKey = true;
240
+ let i = 0;
241
+ while (i < trimmed.length) {
242
+ const char = trimmed[i];
243
+ if (char === "{" || char === "[") {
244
+ depth++;
245
+ if (!inKey)
246
+ currentValue += char;
247
+ }
248
+ else if (char === "}" || char === "]") {
249
+ depth--;
250
+ if (!inKey)
251
+ currentValue += char;
252
+ }
253
+ else if (char === ":" && depth === 0 && inKey) {
254
+ // Found the separator between key and value
255
+ inKey = false;
256
+ i++;
257
+ continue;
258
+ }
259
+ else if (char === "," && depth === 0) {
260
+ // Found separator between key-value pairs
261
+ // @ts-ignore
262
+ result[currentKey.trim()] = currentValue.trim();
263
+ currentKey = "";
264
+ currentValue = "";
265
+ inKey = true;
266
+ i++;
267
+ continue;
268
+ }
269
+ else {
270
+ if (inKey) {
271
+ currentKey += char;
272
+ }
273
+ else {
274
+ currentValue += char;
275
+ }
276
+ }
277
+ i++;
278
+ }
279
+ // Add the last key-value pair
280
+ if (currentKey.trim()) {
281
+ // @ts-ignore
282
+ result[currentKey.trim()] = currentValue.trim();
283
+ }
284
+ return result;
285
+ }
286
+ //# sourceMappingURL=decode-kwit-parameter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-kwit-parameter.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/kwit/decode-kwit-parameter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { expect, test, describe } from "vitest";
2
+ import { decodeKwitParameter, parseWitRecord, } from "./decode-kwit-parameter.js";
3
+ describe("parseWitRecord", () => {
4
+ test("balance", () => {
5
+ const raw = `{key: "1b39e35044922c2cb2108b9a2a0ff13223471b17ca55e87e307270308dc77ac0", value: {r0: 10000000000000000000, r1: 0, r2: 0, r3: 0, sign: plus}}`;
6
+ expect(parseWitRecord(raw)).toEqual({
7
+ key: '"1b39e35044922c2cb2108b9a2a0ff13223471b17ca55e87e307270308dc77ac0"',
8
+ value: "{r0: 10000000000000000000, r1: 0, r2: 0, r3: 0, sign: plus}",
9
+ });
10
+ });
11
+ });
12
+ describe("decodeParameter", () => {
13
+ test("string", () => {
14
+ const decoded = decodeKwitParameter('"0xdeadbeef"', {
15
+ type: "string",
16
+ });
17
+ expect(decoded).toEqual({ decoded: "0xdeadbeef" });
18
+ });
19
+ test("decimal", () => {
20
+ const decoded = decodeKwitParameter("{r0: 7, r1: 0, r2: 0, r3: 0, sign: plus}", {
21
+ type: "decimal",
22
+ });
23
+ expect(decoded).toEqual({ decoded: [7n, 18] });
24
+ });
25
+ test("tuple", () => {
26
+ const raw = `{key: "1b39e35044922c2cb2108b9a2a0ff13223471b17ca55e87e307270308dc77ac0", value: {r0: 7, r1: 0, r2: 0, r3: 0, sign: plus}}`;
27
+ expect(decodeKwitParameter(raw, {
28
+ type: "tuple",
29
+ components: [
30
+ { name: "key", type: "string" },
31
+ { name: "value", type: "decimal" },
32
+ ],
33
+ })).toEqual({
34
+ decoded: {
35
+ key: "1b39e35044922c2cb2108b9a2a0ff13223471b17ca55e87e307270308dc77ac0",
36
+ value: [7n, 18],
37
+ },
38
+ });
39
+ });
40
+ test("list<tuple>", () => {
41
+ const raw = `[{key: "1b39e35044922c2cb2108b9a2a0ff13223471b17ca55e87e307270308dc77ac0", value: {r0: 7, r1: 0, r2: 0, r3: 0, sign: plus}}]`;
42
+ expect(decodeKwitParameter(raw, {
43
+ type: "list<tuple>",
44
+ components: [
45
+ { name: "key", type: "string" },
46
+ { name: "value", type: "decimal" },
47
+ ],
48
+ })).toEqual({
49
+ decoded: [
50
+ {
51
+ key: "1b39e35044922c2cb2108b9a2a0ff13223471b17ca55e87e307270308dc77ac0",
52
+ value: [7n, 18],
53
+ },
54
+ ],
55
+ });
56
+ });
57
+ test("list<decimal>", () => {
58
+ const decoded = decodeKwitParameter("[{r0: 7, r1: 0, r2: 0, r3: 0, sign: plus}, {r0: 8, r1: 0, r2: 0, r3: 0, sign: plus}]", {
59
+ type: "list<decimal>",
60
+ });
61
+ expect(decoded).toEqual({
62
+ decoded: [
63
+ [7n, 18],
64
+ [8n, 18],
65
+ ],
66
+ });
67
+ });
68
+ test("option<decimal>", () => {
69
+ const decoded = decodeKwitParameter("some({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})", {
70
+ type: "option<decimal>",
71
+ });
72
+ expect(decoded).toEqual({ decoded: { kind: "some", value: [7n, 18] } });
73
+ });
74
+ });
75
+ //# sourceMappingURL=decode-kwit-parameter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-kwit-parameter.test.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/kwit/decode-kwit-parameter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { encodeKwitParameters } from "./encode-kwit-parameters.js";
2
+ import { prepareEncodeFunctionData } from "./prepare-encode-function-data.js";
3
+ export function encodeFunctionData(parameters) {
4
+ const { args } = parameters;
5
+ const { kwit, functionName } = (() => {
6
+ if (parameters.kwit.length === 1 &&
7
+ parameters.functionName?.startsWith("0x"))
8
+ return parameters;
9
+ return prepareEncodeFunctionData(parameters);
10
+ })();
11
+ const kwitItem = kwit[0]; // TODO: do some paranoic checks here
12
+ const data = "inputs" in kwitItem && kwitItem.inputs
13
+ ? encodeKwitParameters(kwitItem.inputs, args ?? [])
14
+ : undefined;
15
+ return `${functionName}(${data ?? ""})`;
16
+ }
17
+ //# sourceMappingURL=encode-function-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-function-data.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/kwit/encode-function-data.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AA4C9E,MAAM,UAAU,kBAAkB,CAIhC,UAA4D;IAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,UAA0C,CAAC;IAE5D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,GAAG,EAAE;QACnC,IACE,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAC5B,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC;YAEzC,OAAO,UAAgD,CAAC;QAC1D,OAAO,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,qCAAqC;IAEhE,MAAM,IAAI,GACR,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM;QACrC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACnD,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,GAAG,YAAY,IAAI,IAAI,IAAI,EAAE,GAAW,CAAC;AAClD,CAAC"}