@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.
- package/dist/src/kwit/error.js +59 -0
- package/dist/src/kwit/error.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/errors/kwit-parameter.js +29 -0
- package/dist/src/kwit/kwit-parser/core/errors/kwit-parameter.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/errors/signature.js +42 -0
- package/dist/src/kwit/kwit-parser/core/errors/signature.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/errors/splitParameters.js +18 -0
- package/dist/src/kwit/kwit-parser/core/errors/splitParameters.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/records.js +73 -0
- package/dist/src/kwit/kwit-parser/core/records.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/records.test.js +53 -0
- package/dist/src/kwit/kwit-parser/core/records.test.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/signatures.js +33 -0
- package/dist/src/kwit/kwit-parser/core/signatures.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/signatures.test.js +54 -0
- package/dist/src/kwit/kwit-parser/core/signatures.test.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/types/records.js +2 -0
- package/dist/src/kwit/kwit-parser/core/types/records.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/types/records.test-d.js +19 -0
- package/dist/src/kwit/kwit-parser/core/types/records.test-d.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/types/signatures.js +3 -0
- package/dist/src/kwit/kwit-parser/core/types/signatures.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/types/signatures.test-d.js +18 -0
- package/dist/src/kwit/kwit-parser/core/types/signatures.test-d.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/types/utils.js +2 -0
- package/dist/src/kwit/kwit-parser/core/types/utils.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/types/utils.test-d.js +159 -0
- package/dist/src/kwit/kwit-parser/core/types/utils.test-d.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/utils.js +212 -0
- package/dist/src/kwit/kwit-parser/core/utils.js.map +1 -0
- package/dist/src/kwit/kwit-parser/core/utils.test.js +302 -0
- package/dist/src/kwit/kwit-parser/core/utils.test.js.map +1 -0
- package/dist/src/kwit/kwit-parser/parse-kwit-parameter.js +26 -0
- package/dist/src/kwit/kwit-parser/parse-kwit-parameter.js.map +1 -0
- package/dist/src/kwit/kwit-parser/parse-kwit-parameter.test.js +83 -0
- package/dist/src/kwit/kwit-parser/parse-kwit-parameter.test.js.map +1 -0
- package/dist/src/kwit/kwit-parser/parse-kwit.js +16 -0
- package/dist/src/kwit/kwit-parser/parse-kwit.js.map +1 -0
- package/dist/src/kwit/kwit-parser/parse-kwit.test.js +78 -0
- package/dist/src/kwit/kwit-parser/parse-kwit.test.js.map +1 -0
- package/dist/src/kwit/kwit.js +2 -0
- package/dist/src/kwit/kwit.js.map +1 -0
- package/dist/src/kwit/kwit.test.js +9 -0
- package/dist/src/kwit/kwit.test.js.map +1 -0
- package/dist/src/kwit/narrow.js +14 -0
- package/dist/src/kwit/narrow.js.map +1 -0
- package/dist/src/kwit/regex.js +6 -0
- package/dist/src/kwit/regex.js.map +1 -0
- package/dist/src/kwit/register.js +2 -0
- package/dist/src/kwit/register.js.map +1 -0
- package/dist/src/kwit/type-utils.js +2 -0
- package/dist/src/kwit/type-utils.js.map +1 -0
- package/dist/src/kwit/utils.js +2 -0
- package/dist/src/kwit/utils.js.map +1 -0
- package/dist/src/kwit/utils.test-d.js +17 -0
- package/dist/src/kwit/utils.test-d.js.map +1 -0
- package/dist/src/kwit/version.js +2 -0
- package/dist/src/kwit/version.js.map +1 -0
- package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js +0 -3
- package/dist/src/sdk/actions/kontor/wallet/sign-reveal.js.map +1 -1
- package/dist/src/sdk/actions/public/test-mempool-accept.js +8 -32
- package/dist/src/sdk/actions/public/test-mempool-accept.js.map +1 -1
- package/dist/src/sdk/clients/decorators/public.js +2 -0
- package/dist/src/sdk/clients/decorators/public.js.map +1 -1
- package/dist/src/sdk/errors/kwit.js +19 -0
- package/dist/src/sdk/errors/kwit.js.map +1 -0
- package/dist/src/sdk/test/e2e.test.js +27 -6
- package/dist/src/sdk/test/e2e.test.js.map +1 -1
- package/dist/src/sdk/utils/kwit/codecs/decimal.js +165 -0
- package/dist/src/sdk/utils/kwit/codecs/decimal.js.map +1 -0
- package/dist/src/sdk/utils/kwit/codecs/enum.js +104 -0
- package/dist/src/sdk/utils/kwit/codecs/enum.js.map +1 -0
- package/dist/src/sdk/utils/kwit/codecs/integer.js +167 -0
- package/dist/src/sdk/utils/kwit/codecs/integer.js.map +1 -0
- package/dist/src/sdk/utils/kwit/codecs/list.js +117 -0
- package/dist/src/sdk/utils/kwit/codecs/list.js.map +1 -0
- package/dist/src/sdk/utils/kwit/codecs/option.js +91 -0
- package/dist/src/sdk/utils/kwit/codecs/option.js.map +1 -0
- package/dist/src/sdk/utils/kwit/codecs/string.js +27 -0
- package/dist/src/sdk/utils/kwit/codecs/string.js.map +1 -0
- package/dist/src/sdk/utils/kwit/codecs/types.js +45 -0
- package/dist/src/sdk/utils/kwit/codecs/types.js.map +1 -0
- package/dist/src/sdk/utils/kwit/codecs/unit.js +22 -0
- package/dist/src/sdk/utils/kwit/codecs/unit.js.map +1 -0
- package/dist/src/sdk/utils/kwit/decode-function-result.js +36 -0
- package/dist/src/sdk/utils/kwit/decode-function-result.js.map +1 -0
- package/dist/src/sdk/utils/kwit/decode-kwit-parameter.js +286 -0
- package/dist/src/sdk/utils/kwit/decode-kwit-parameter.js.map +1 -0
- package/dist/src/sdk/utils/kwit/decode-kwit-parameter.test.js +75 -0
- package/dist/src/sdk/utils/kwit/decode-kwit-parameter.test.js.map +1 -0
- package/dist/src/sdk/utils/kwit/encode-function-data.js +17 -0
- package/dist/src/sdk/utils/kwit/encode-function-data.js.map +1 -0
- package/dist/src/sdk/utils/kwit/encode-function-data.test-d.js +21 -0
- package/dist/src/sdk/utils/kwit/encode-function-data.test-d.js.map +1 -0
- package/dist/src/sdk/utils/kwit/encode-function-data.test.js +91 -0
- package/dist/src/sdk/utils/kwit/encode-function-data.test.js.map +1 -0
- package/dist/src/sdk/utils/kwit/encode-kwit-parameters.js +250 -0
- package/dist/src/sdk/utils/kwit/encode-kwit-parameters.js.map +1 -0
- package/dist/src/sdk/utils/kwit/encode-kwit-parameters.test.js +62 -0
- package/dist/src/sdk/utils/kwit/encode-kwit-parameters.test.js.map +1 -0
- package/dist/src/sdk/utils/kwit/get-kwit-item.js +186 -0
- package/dist/src/sdk/utils/kwit/get-kwit-item.js.map +1 -0
- package/dist/src/sdk/utils/kwit/get-kwit-item.test.js +119 -0
- package/dist/src/sdk/utils/kwit/get-kwit-item.test.js.map +1 -0
- package/dist/src/sdk/utils/kwit/prepare-encode-function-data.js +24 -0
- package/dist/src/sdk/utils/kwit/prepare-encode-function-data.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -2
- package/src/sdk/actions/kontor/wallet/sign-reveal.ts +0 -4
- package/src/sdk/actions/public/test-mempool-accept.ts +34 -31
- package/src/sdk/clients/decorators/public.ts +11 -0
- package/src/sdk/test/e2e.test.ts +31 -6
- 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":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,WAAW,GAIZ,MAAM,mBAAmB,CAAC;AAE3B,MAAM,aAAa,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;AAC/C,MAAM,cAAc,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AACjD,MAAM,sBAAsB,GAAG,WAAW,CACxC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CACxC,CAAC;AACF,MAAM,oBAAoB,GAAG,CAAC,KAAoB,EAAE,EAAE,CACpD,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3E,MAAM,oBAAoB,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AAEhF,MAAM,kBAAkB,GAAG,CAAC,KAAoB,EAAE,EAAE,CAClD,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEzE,MAAM,YAAY,GAAG,CAAC,KAAoB,EAAE,EAAE,CAC5C,WAAW,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;AAEhD,EAAE;AAEF,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,KAAoB;IACrE,kBAAkB;IAClB,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvC,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAA8B,EAC9B,KAAoB;IAEpB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAErB,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAC5B,CAAC,GAAG,EAAE,SAAwB,EAAE,EAAE;QAChC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3C,aAAa;QACb,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,UAAW,CAAC,CAAC;QAElD,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,CACH,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,CAAgB;IACvC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAgB,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEnB,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC;QACxB,KAAK,iBAAiB;YACpB,OAAO,sBAAsB,CAAC;QAChC,KAAK,eAAe;YAClB,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,eAAe;YAClB,OAAO,oBAAoB,CAAC;QAC9B,KAAK,aAAa;YAChB,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAE/B,KAAK,OAAO,CAAC;QACb,KAAK,kBAAkB,CAAC;QACxB,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,SAAS,CAAC;QACf,KAAK,gBAAgB,CAAC;QACtB,KAAK,cAAc,CAAC;QACpB,KAAK,YAAY,CAAC;QAClB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,YAAY,CAAC;QAClB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,iBAAiB,CAAC;QACvB,KAAK,WAAW,CAAC;QAEjB,KAAK,cAAc,CAAC;QACpB,KAAK,YAAY,CAAC;QAClB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW,CAAC;QACjB,KAAK,eAAe,CAAC;QACrB,KAAK,SAAS,CAAC;QACf,KAAK,kBAAkB,CAAC;QACxB,KAAK,uBAAuB,CAAC;QAC7B,KAAK,qBAAqB,CAAC;QAC3B,KAAK,mBAAmB,CAAC;QACzB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,oBAAoB,CAAC;QAC1B,KAAK,oBAAoB,CAAC;QAC1B,KAAK,mBAAmB,CAAC;QACzB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,oBAAoB,CAAC;QAC1B,KAAK,oBAAoB,CAAC;QAC1B,KAAK,wBAAwB,CAAC;QAC9B,KAAK,wBAAwB,CAAC;QAC9B,KAAK,sBAAsB,CAAC;QAC5B,KAAK,+BAA+B,CAAC;QACrC,KAAK,6BAA6B,CAAC;QACnC,KAAK,2BAA2B,CAAC;QACjC,KAAK,4BAA4B,CAAC;QAClC,KAAK,4BAA4B,CAAC;QAClC,KAAK,4BAA4B,CAAC;QAClC,KAAK,2BAA2B,CAAC;QACjC,KAAK,4BAA4B,CAAC;QAClC,KAAK,4BAA4B,CAAC;QAClC,KAAK,4BAA4B,CAAC;QAClC,KAAK,gCAAgC,CAAC;QACtC,KAAK,gCAAgC,CAAC;QACtC,KAAK,0BAA0B,CAAC;QAChC,KAAK,8BAA8B,CAAC;QACpC,KAAK,sBAAsB,CAAC;QAC5B,KAAK,oBAAoB,CAAC;QAC1B,KAAK,kBAAkB,CAAC;QACxB,KAAK,mBAAmB,CAAC;QACzB,KAAK,mBAAmB,CAAC;QACzB,KAAK,mBAAmB,CAAC;QACzB,KAAK,kBAAkB,CAAC;QACxB,KAAK,mBAAmB,CAAC;QACzB,KAAK,mBAAmB,CAAC;QACzB,KAAK,mBAAmB,CAAC;QACzB,KAAK,uBAAuB,CAAC;QAC7B,KAAK,uBAAuB,CAAC;QAC7B,KAAK,iBAAiB,CAAC;QACvB,KAAK,qBAAqB,CAAC;QAC3B,KAAK,qCAAqC,CAAC;QAC3C,KAAK,mCAAmC,CAAC;QACzC,KAAK,iCAAiC,CAAC;QACvC,KAAK,kCAAkC,CAAC;QACxC,KAAK,kCAAkC,CAAC;QACxC,KAAK,kCAAkC,CAAC;QACxC,KAAK,iCAAiC,CAAC;QACvC,KAAK,kCAAkC,CAAC;QACxC,KAAK,kCAAkC,CAAC;QACxC,KAAK,kCAAkC,CAAC;QACxC,KAAK,sCAAsC,CAAC;QAC5C,KAAK,sCAAsC,CAAC;QAC5C,KAAK,gCAAgC,CAAC;QACtC,KAAK,oCAAoC,CAAC;QAC1C,KAAK,6BAA6B,CAAC;QACnC,KAAK,2BAA2B,CAAC;QACjC,KAAK,yBAAyB,CAAC;QAC/B,KAAK,0BAA0B,CAAC;QAChC,KAAK,0BAA0B,CAAC;QAChC,KAAK,0BAA0B,CAAC;QAChC,KAAK,yBAAyB,CAAC;QAC/B,KAAK,0BAA0B,CAAC;QAChC,KAAK,0BAA0B,CAAC;QAChC,KAAK,0BAA0B,CAAC;QAChC,KAAK,8BAA8B,CAAC;QACpC,KAAK,8BAA8B,CAAC;QACpC,KAAK,wBAAwB,CAAC;QAC9B,KAAK,4BAA4B;YAC/B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAErC;YACE,MAAM,UAAU,GAAU,CAAC,CAAC;YAC5B,KAAK,UAAU,CAAC;YAChB,MAAM,IAAI,4BAA4B,CAAC,CAAC,EAAE;gBACxC,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,EAAE;IACJ,CAAC;AACH,CAAC;AAED,MAAM,OAAO,kBAAkB;IAG7B,yEAAyE;IACzE,YACkB,IAA4B,EAC3B,KAAoB;QADrC;;;;mBAAgB,IAAI;WAAwB;QAC5C;;;;mBAAiB,KAAK;WAAe;IACpC,CAAC;IAEJ,4EAA4E;IAC5E,MAAM;QACJ,0EAA0E;QAC1E,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI;QACF,uDAAuD;QACvD,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAoB;IAMpB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,2DAA2D;IAC3D,kGAAkG;IAClG,gGAAgG;IAChG,MAAM,UAAU;QACd,0CAA0C;QAE1C,6EAA6E;QAC7E,MAAM,CAAC,MAAM,CAAC,MAA8B;YAC1C,0DAA0D;YAC1D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,8EAA8E;QAC9E,MAAM,CAAC,SAAS,CAAC,IAAY;YAC3B,iEAAiE;YACjE,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;YAE9C,OAAO,cAAc,CAAC,IAAI,CAA2B,CAAC;QACxD,CAAC;QAED,yDAAyD;QACzD,MAAM,CAAC,UAAU,CAAC,IAA4B;YAC5C,2EAA2E;YAC3E,OAAO,IAAI,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,kFAAkF;QAClF,YAAY,IAA4B;YACtC,iFAAiF;YACjF,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAAuB,CAAC;QAC3D,CAAC;KACF;IAED,yDAAyD;IACzD,OAAO,UAIN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,sDAAsD;IACtD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAExB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,KAAK;gBAAE,YAAY,IAAI,IAAI,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxC,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,KAAK;gBAAE,YAAY,IAAI,IAAI,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;YAChD,4CAA4C;YAC5C,KAAK,GAAG,KAAK,CAAC;YACd,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACvC,0CAA0C;YAC1C,aAAa;YACb,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;YAChD,UAAU,GAAG,EAAE,CAAC;YAChB,YAAY,GAAG,EAAE,CAAC;YAClB,KAAK,GAAG,IAAI,CAAC;YACb,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,EAAE,CAAC;gBACV,UAAU,IAAI,IAAI,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,YAAY,IAAI,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;QAED,CAAC,EAAE,CAAC;IACN,CAAC;IAED,8BAA8B;IAC9B,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACtB,aAAa;QACb,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -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":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;IACnC,8CAA8C;IAC9C,4DAA4D;IAC5D,2CAA2C;IAC3C,2CAA2C;IAC3C,wFAAwF;IACxF,wFAAwF;IACxF,4FAA4F;IAC5F,+CAA+C;IAC/C,oFAAoF;IACpF,oFAAoF;IACpF,yGAAyG;IACzG,kFAAkF;IAClF,oEAAoE;IACpE,kEAAkE;IAClE,qGAAqG;IACrG,4EAA4E;CAC7E,CAAC,CAAC;AAEH,mCAAmC;AACnC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;IACpB,MAAM,CACJ,kBAAkB,CAAC;QACjB,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,UAAU;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KACjB,CAAC,CACH,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;IAChB,MAAM,CACJ,kBAAkB,CAAC;QACjB,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,MAAM;QACpB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KACjB,CAAC,CACH,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;IACnB,MAAM,CACJ,kBAAkB,CAAC;QACjB,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,SAAS;QACvB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KACjB,CAAC,CACH,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;IAChB,MAAM,CACJ,kBAAkB,CAAC;QACjB,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,MAAM;QACpB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KACjB,CAAC,CACH,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;IAChB,MAAM,CACJ,kBAAkB,CAAC;QACjB,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,MAAM;QACpB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KACjB,CAAC,CACH,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;IACpB,MAAM,CACJ,kBAAkB,CAAC;QACjB,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,UAAU;QACxB,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KAChC,CAAC,CACH,CAAC,OAAO,CACP,mEAAmE,CACpE,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;IACnB,MAAM,CACJ,kBAAkB,CAAC;QACjB,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,SAAS;QACvB,IAAI,EAAE,CAAC,aAAa,CAAC;KACtB,CAAC,CACH,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;IACpB,MAAM,CACJ,kBAAkB,CAAC;QACjB,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,UAAU;KACzB,CAAC,CACH,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;IACvB,MAAM,CACJ,kBAAkB,CAAC;QACjB,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,cAAc;KAC7B,CAAC,CACH,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;IAClB,MAAM,CACJ,kBAAkB,CAAC;QACjB,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,QAAQ;QACtB,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KACrB,CAAC,CACH,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC"}
|