@kontor/kontor-sdk 1.0.0-alpha.1 → 1.0.0-alpha.4

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 +0 -3
  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 +8 -32
  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 +27 -6
  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 +6 -2
  109. package/src/sdk/actions/kontor/wallet/sign-reveal.ts +0 -4
  110. package/src/sdk/actions/public/test-mempool-accept.ts +34 -31
  111. package/src/sdk/clients/decorators/public.ts +11 -0
  112. package/src/sdk/test/e2e.test.ts +31 -6
  113. package/src/sdk/types/btc-rpc.ts +12 -11
@@ -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"}
@@ -0,0 +1,21 @@
1
+ import { expectTypeOf, test } from "vitest";
2
+ import { encodeFunctionData, } from "./encode-function-data.js";
3
+ import { nativeToken } from "~test/src/wits.js";
4
+ import { parseKwit } from "src/kwit/kwit-parser/parse-kwit.js";
5
+ test("single, function name not required", () => {
6
+ const singleRaw = [
7
+ "record mint { dst: string, amt: decimal }",
8
+ "export issuance: func(ctx: borrow<core-context>, amt: decimal) -> result<mint, error>;",
9
+ ];
10
+ const single = parseKwit(singleRaw);
11
+ // single entry does not require functionName
12
+ encodeFunctionData({ kwit: single, args: [[7n, 18]] });
13
+ expectTypeOf().toEqualTypeOf();
14
+ });
15
+ test("native token", () => {
16
+ // @ts-expect-error functionName required
17
+ encodeFunctionData({ kwit: nativeToken });
18
+ expectTypeOf().not.toEqualTypeOf();
19
+ expectTypeOf().toEqualTypeOf();
20
+ });
21
+ //# sourceMappingURL=encode-function-data.test-d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-function-data.test-d.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/kwit/encode-function-data.test-d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAEL,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC9C,MAAM,SAAS,GAAG;QAChB,2CAA2C;QAE3C,wFAAwF;KAChF,CAAC;IAEX,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAIvD,YAAY,EAAqB,CAAC,aAAa,EAA0B,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;IACxB,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAG1C,YAAY,EAAqB,CAAC,GAAG,CAAC,aAAa,EAAa,CAAC;IACjE,YAAY,EAAqB,CAAC,aAAa,EAa5C,CAAC;AACN,CAAC,CAAC,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { expect, test } from "vitest";
2
+ import { encodeFunctionData } from "./encode-function-data.js";
3
+ import { parseKwit } from "../../../kwit/kwit-parser/parse-kwit.js";
4
+ export const nativeToken = parseKwit([
5
+ "record balance { acc: string, amt: decimal }",
6
+ "record transfer { src: string, dst: string, amt: decimal }",
7
+ "record burn { src: string, amt: decimal }",
8
+ "record mint { dst: string, amt: decimal }",
9
+ "export issuance: func(ctx: borrow<core-context>, amt: decimal) -> result<mint, error>;",
10
+ "export hold: func(ctx: borrow<core-context>, amt: decimal) -> result<transfer, error>;",
11
+ "export release: func(ctx: borrow<core-context>, burn-amt: decimal) -> result<burn, error>;",
12
+ "export init: func(ctx: borrow<proc-context>);",
13
+ "export mint: func(ctx: borrow<proc-context>, amt: decimal) -> result<mint, error>;",
14
+ "export burn: func(ctx: borrow<proc-context>, amt: decimal) -> result<burn, error>;",
15
+ "export transfer: func(ctx: borrow<proc-context>, dst: string, amt: decimal) -> result<transfer, error>;",
16
+ "export balance: func(ctx: borrow<view-context>, acc: string) -> option<decimal>;",
17
+ "export balances: func(ctx: borrow<view-context>) -> list<balance>;",
18
+ "export total-supply: func(ctx: borrow<view-context>) -> decimal;",
19
+ "export attach: func(ctx: borrow<proc-context>, vout: u64, amt: decimal) -> result<transfer, error>;",
20
+ "export detach: func(ctx: borrow<proc-context>) -> result<transfer, error>;",
21
+ ]);
22
+ //TODO: change functionName to func
23
+ test("issuance", () => {
24
+ expect(encodeFunctionData({
25
+ kwit: nativeToken,
26
+ functionName: "issuance",
27
+ args: [[7n, 18]],
28
+ })).toEqual("issuance({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})");
29
+ });
30
+ test("hold", () => {
31
+ expect(encodeFunctionData({
32
+ kwit: nativeToken,
33
+ functionName: "hold",
34
+ args: [[7n, 18]],
35
+ })).toEqual("hold({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})");
36
+ });
37
+ test("release", () => {
38
+ expect(encodeFunctionData({
39
+ kwit: nativeToken,
40
+ functionName: "release",
41
+ args: [[7n, 18]],
42
+ })).toEqual("release({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})");
43
+ });
44
+ test("mint", () => {
45
+ expect(encodeFunctionData({
46
+ kwit: nativeToken,
47
+ functionName: "mint",
48
+ args: [[7n, 18]],
49
+ })).toEqual("mint({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})");
50
+ });
51
+ test("burn", () => {
52
+ expect(encodeFunctionData({
53
+ kwit: nativeToken,
54
+ functionName: "burn",
55
+ args: [[7n, 18]],
56
+ })).toEqual("burn({r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})");
57
+ });
58
+ test("transfer", () => {
59
+ expect(encodeFunctionData({
60
+ kwit: nativeToken,
61
+ functionName: "transfer",
62
+ args: ["bc1deadbeef", [7n, 18]],
63
+ })).toEqual(`transfer("bc1deadbeef", {r0: 7, r1: 0, r2: 0, r3: 0, sign: plus})`);
64
+ });
65
+ test("balance", () => {
66
+ expect(encodeFunctionData({
67
+ kwit: nativeToken,
68
+ functionName: "balance",
69
+ args: ["bc1deadbeef"],
70
+ })).toEqual(`balance("bc1deadbeef")`);
71
+ });
72
+ test("balances", () => {
73
+ expect(encodeFunctionData({
74
+ kwit: nativeToken,
75
+ functionName: "balances",
76
+ })).toEqual(`balances()`);
77
+ });
78
+ test("totalSupply", () => {
79
+ expect(encodeFunctionData({
80
+ kwit: nativeToken,
81
+ functionName: "total-supply",
82
+ })).toEqual(`total-supply()`);
83
+ });
84
+ test("attach", () => {
85
+ expect(encodeFunctionData({
86
+ kwit: nativeToken,
87
+ functionName: "attach",
88
+ args: [7n, [7n, 18]],
89
+ })).toEqual(`attach()`);
90
+ });
91
+ //# sourceMappingURL=encode-function-data.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-function-data.test.js","sourceRoot":"","sources":["../../../../../src/sdk/utils/kwit/encode-function-data.test.ts"],"names":[],"mappings":"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"}