@typemove/move 2.0.0 → 2.0.1-rc.1

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 (46) hide show
  1. package/dist/esm/abstract-move-coder.d.ts +30 -0
  2. package/dist/esm/abstract-move-coder.d.ts.map +1 -0
  3. package/dist/esm/abstract-move-coder.js +308 -0
  4. package/dist/esm/abstract-move-coder.js.map +1 -0
  5. package/dist/esm/account.d.ts +16 -0
  6. package/dist/esm/account.d.ts.map +1 -0
  7. package/dist/esm/account.js +71 -0
  8. package/dist/esm/account.js.map +1 -0
  9. package/dist/esm/chain-adapter.d.ts +13 -0
  10. package/dist/esm/chain-adapter.d.ts.map +1 -0
  11. package/dist/esm/chain-adapter.js +3 -0
  12. package/dist/esm/chain-adapter.js.map +1 -0
  13. package/dist/esm/codegen/abstract-codegen.d.ts +50 -0
  14. package/dist/esm/codegen/abstract-codegen.d.ts.map +1 -0
  15. package/dist/esm/codegen/abstract-codegen.js +463 -0
  16. package/dist/esm/codegen/abstract-codegen.js.map +1 -0
  17. package/dist/esm/codegen/index.d.ts +2 -0
  18. package/dist/esm/codegen/index.d.ts.map +1 -0
  19. package/dist/esm/codegen/index.js +2 -0
  20. package/dist/esm/codegen/index.js.map +1 -0
  21. package/dist/esm/index.d.ts +7 -0
  22. package/dist/esm/index.d.ts.map +1 -0
  23. package/dist/esm/index.js +7 -0
  24. package/dist/esm/index.js.map +1 -0
  25. package/dist/esm/internal-models.d.ts +46 -0
  26. package/dist/esm/internal-models.d.ts.map +1 -0
  27. package/dist/esm/internal-models.js +7 -0
  28. package/dist/esm/internal-models.js.map +1 -0
  29. package/dist/esm/types.d.ts +52 -0
  30. package/dist/esm/types.d.ts.map +1 -0
  31. package/dist/esm/types.js +317 -0
  32. package/dist/esm/types.js.map +1 -0
  33. package/dist/esm/utils.d.ts +17 -0
  34. package/dist/esm/utils.d.ts.map +1 -0
  35. package/dist/esm/utils.js +127 -0
  36. package/dist/esm/utils.js.map +1 -0
  37. package/package.json +5 -5
  38. package/src/abstract-move-coder.ts +347 -0
  39. package/src/account.ts +81 -0
  40. package/src/chain-adapter.ts +26 -0
  41. package/src/codegen/abstract-codegen.ts +574 -0
  42. package/src/codegen/index.ts +1 -0
  43. package/src/index.ts +6 -0
  44. package/src/internal-models.ts +52 -0
  45. package/src/types.ts +362 -0
  46. package/src/utils.ts +144 -0
@@ -0,0 +1,463 @@
1
+ import path from 'path';
2
+ import fs from 'fs';
3
+ import { AccountModulesImportInfo, AccountRegister } from '../account.js';
4
+ import { format } from 'prettier';
5
+ import { isFrameworkAccount, moduleQname, normalizeToJSName, SPLITTER, VECTOR_STR } from '../utils.js';
6
+ export class AbstractCodegen {
7
+ // Set by every concrete subclass (SuiCodegen / AptosCodegen / …) as class
8
+ // field initializers; the definite-assignment assertion satisfies
9
+ // strictPropertyInitialization without a base-class default.
10
+ ADDRESS_TYPE;
11
+ SYSTEM_PACKAGE;
12
+ PREFIX;
13
+ STRUCT_FIELD_NAME = 'data';
14
+ PAYLOAD_OPTIONAL = false;
15
+ SYSTEM_MODULES = new Set(['0x1', '0x2', '0x3', '0x4']);
16
+ chainAdapter;
17
+ constructor(chainAdapter) {
18
+ this.chainAdapter = chainAdapter;
19
+ }
20
+ readModulesFile(fullPath) {
21
+ return JSON.parse(fs.readFileSync(fullPath, 'utf-8'));
22
+ }
23
+ defaultCoderPackage() {
24
+ return this.SYSTEM_PACKAGE;
25
+ }
26
+ generateLoadAll(isSystem) {
27
+ return 'loadAllTypes(defaultMoveCoder())';
28
+ }
29
+ async generate(srcDir, outputDir,
30
+ // network: NetworkType,
31
+ builtin = false) {
32
+ if (!fs.existsSync(srcDir)) {
33
+ return 0;
34
+ }
35
+ const files = fs.readdirSync(srcDir);
36
+ outputDir = path.resolve(outputDir);
37
+ const outputs = [];
38
+ fs.mkdirSync(outputDir, { recursive: true });
39
+ const loader = new AccountRegister();
40
+ // when generating user code, don't need to generate framework account
41
+ for (const sysModule of this.SYSTEM_MODULES) {
42
+ loader.accountImports.set(sysModule, new AccountModulesImportInfo(sysModule, sysModule));
43
+ }
44
+ // const client = getRpcClient(network)
45
+ for (const file of files) {
46
+ if (!file.endsWith('.json')) {
47
+ continue;
48
+ }
49
+ const fullPath = path.resolve(srcDir, file);
50
+ const abi = this.readModulesFile(fullPath);
51
+ const modules = this.chainAdapter.toInternalModules(abi);
52
+ for (const module of modules) {
53
+ loader.register(module, path.basename(file, '.json'));
54
+ }
55
+ const fileName = path.basename(file, '.json');
56
+ // TODO more reliable way to check if this is sui address
57
+ const address = fileName.startsWith('0x') ? fileName : undefined;
58
+ const codeGen = new AccountCodegen(this, loader, abi, modules, {
59
+ fileName,
60
+ outputDir: outputDir
61
+ // network,
62
+ }, address);
63
+ outputs.push(...codeGen.generate());
64
+ }
65
+ while (loader.pendingAccounts.size > 0) {
66
+ for (const account of loader.pendingAccounts) {
67
+ const id = await this.chainAdapter.getChainId();
68
+ console.log(`download dependent module for account ${account}, chain ID: ${id}`);
69
+ try {
70
+ const rawModules = await this.chainAdapter.fetchModules(account
71
+ // network
72
+ );
73
+ const modules = this.chainAdapter.toInternalModules(rawModules);
74
+ fs.writeFileSync(path.resolve(srcDir, account + '.json'), JSON.stringify(rawModules, null, '\t'));
75
+ for (const module of modules) {
76
+ loader.register(module, account);
77
+ }
78
+ const codeGen = new AccountCodegen(this, loader, rawModules, modules, {
79
+ fileName: account,
80
+ outputDir: outputDir
81
+ // network,
82
+ }, account);
83
+ outputs.push(...codeGen.generate());
84
+ }
85
+ catch (e) {
86
+ console.error('Error downloading account module, check if you choose the right network,or download account modules manually into your director');
87
+ console.error(e);
88
+ process.exit(1);
89
+ }
90
+ }
91
+ }
92
+ for (const output of outputs) {
93
+ let content = output.fileContent;
94
+ content = await format(output.fileContent, { parser: 'typescript' });
95
+ fs.writeFileSync(path.join(outputDir, output.fileName), content);
96
+ }
97
+ const rootFile = path.join(outputDir, 'index.ts');
98
+ let rootFileContent = `/* Autogenerated file. Do not edit manually. */
99
+ /* tslint:disable */
100
+ /* eslint-disable */
101
+ `;
102
+ for (const output of outputs) {
103
+ const parsed = path.parse(output.fileName);
104
+ rootFileContent += `export * as _${parsed.name.replaceAll('-', '_')} from './${parsed.name}.js'\n`;
105
+ }
106
+ fs.writeFileSync(rootFile, rootFileContent);
107
+ return outputs.length;
108
+ }
109
+ generateExtra(address, module) {
110
+ return '';
111
+ }
112
+ generateModule(module, allEventStructs, addressOverride
113
+ // network: NetworkType
114
+ ) {
115
+ const qname = moduleQname(module);
116
+ const eventStructs = new Map();
117
+ for (const [type, struct] of allEventStructs.entries()) {
118
+ if (type.startsWith(qname + SPLITTER)) {
119
+ eventStructs.set(type, struct);
120
+ }
121
+ }
122
+ const eventTypes = new Set(eventStructs.keys());
123
+ const events = Array.from(eventStructs.values())
124
+ .map((e) => this.generateForEvents(module, e))
125
+ .filter((s) => s !== '');
126
+ const enums = module.enums.map((e) => this.generateEnum(module, e));
127
+ const structs = module.structs.map((s) => this.generateStructs(module, s, eventTypes));
128
+ const callArgs = module.exposedFunctions.map((f) => this.generateCallArgsStructs(module, f));
129
+ const moduleName = normalizeToJSName(module.name);
130
+ return `
131
+
132
+ export namespace ${moduleName} {
133
+ ${enums.join('\n')}
134
+
135
+ ${structs.join('\n')}
136
+
137
+ ${this.generateExtra(addressOverride, module)}
138
+
139
+ ${events.join('\n')}
140
+
141
+ ${callArgs.join('\n')}
142
+ }
143
+ `;
144
+ }
145
+ generateEnum(module, enumType) {
146
+ const enumName = normalizeToJSName(enumType.name);
147
+ const enumValues = Object.keys(enumType.variants)
148
+ .map((v) => `'${v}'`)
149
+ .join(' | ');
150
+ const typeParams = enumType.typeParams || [];
151
+ const genericString = this.generateStructTypeParameters(enumType);
152
+ const genericStringAny = this.generateStructTypeParameters(enumType, true);
153
+ const typeParamApplyArg = typeParams
154
+ .map((v, idx) => {
155
+ return `arg${idx}: TypeDescriptor<T${idx}> = ANY_TYPE`;
156
+ })
157
+ .join(',');
158
+ const typeParamApply = typeParams
159
+ .map((v, idx) => {
160
+ return `arg${idx}`;
161
+ })
162
+ .join(',');
163
+ const typeDescriptor = `
164
+ export namespace ${enumName}{
165
+ export const TYPE_QNAME = '${module.address}::${module.name}::${enumType.name}'
166
+
167
+ const TYPE = new TypeDescriptor<${enumName}${genericStringAny}>(${enumName}.TYPE_QNAME)
168
+
169
+ export function type${genericString}(${typeParamApplyArg}): TypeDescriptor<${enumName}${genericString}> {
170
+ return TYPE.apply(${typeParamApply})
171
+ }
172
+ }
173
+ `;
174
+ // TODO support fields
175
+ return `
176
+ export interface ${enumName}${genericString} {
177
+ fields: {}
178
+ variant: ${enumValues}
179
+ }
180
+
181
+ ${typeDescriptor}
182
+ `;
183
+ }
184
+ generateStructs(module, struct, events, typeOnly = false) {
185
+ const typeParams = struct.typeParams || [];
186
+ const genericString = this.generateStructTypeParameters(struct);
187
+ const genericStringAny = this.generateStructTypeParameters(struct, true);
188
+ const structName = normalizeToJSName(struct.name);
189
+ const fields = struct.fields.map((field) => {
190
+ const type = this.generateTypeForDescriptor(field.type, module.address);
191
+ return `${field.name}: ${type}`;
192
+ });
193
+ const typeParamApplyArg = typeParams
194
+ .map((v, idx) => {
195
+ return `arg${idx}: TypeDescriptor<T${idx}> = ANY_TYPE`;
196
+ })
197
+ .join(',');
198
+ const typeParamApply = typeParams
199
+ .map((v, idx) => {
200
+ return `arg${idx}`;
201
+ })
202
+ .join(',');
203
+ const typeDescriptor = `
204
+ export namespace ${structName}{
205
+ export const TYPE_QNAME = '${module.address}::${module.name}::${struct.name}'
206
+
207
+ const TYPE = new TypeDescriptor<${structName}${genericStringAny}>(${structName}.TYPE_QNAME)
208
+
209
+ export function type${genericString}(${typeParamApplyArg}): TypeDescriptor<${structName}${genericString}> {
210
+ return TYPE.apply(${typeParamApply})
211
+ }
212
+ }
213
+ `;
214
+ if (typeOnly) {
215
+ return typeDescriptor;
216
+ }
217
+ let eventPayload = '';
218
+ if (events.has(moduleQname(module) + SPLITTER + struct.name)) {
219
+ eventPayload = `
220
+ export type ${structName}Instance = TypedEventInstance<${structName}${genericStringAny}> & {
221
+ ${this.STRUCT_FIELD_NAME}_decoded: ${structName}${genericStringAny}
222
+ type_arguments: [${struct.typeParams.map((_) => 'string').join(', ')}]
223
+ }
224
+ `;
225
+ }
226
+ return `
227
+ export interface ${structName}${genericString} {
228
+ ${fields.join('\n')}
229
+ }
230
+
231
+ ${typeDescriptor}
232
+
233
+ ${eventPayload}
234
+ `;
235
+ }
236
+ generateFunctionTypeParameters(func) {
237
+ let genericString = '';
238
+ if (func.typeParams && func.typeParams.length > 0) {
239
+ const params = func.typeParams
240
+ .map((v, idx) => {
241
+ return `T${idx}=any`;
242
+ })
243
+ .join(',');
244
+ genericString = `<${params}>`;
245
+ }
246
+ return genericString;
247
+ }
248
+ generateFunctionReturnTypeParameters(func, currentAddress) {
249
+ let returnType = '';
250
+ if (func.return && func.return.length > 0) {
251
+ returnType = func.return
252
+ .map((v, idx) => {
253
+ return this.generateTypeForDescriptor(v, currentAddress);
254
+ })
255
+ .join(',');
256
+ }
257
+ return '[' + returnType + ']';
258
+ }
259
+ generateStructTypeParameters(struct, useAny = false) {
260
+ let genericString = '';
261
+ if (struct.typeParams && struct.typeParams.length > 0) {
262
+ const params = struct.typeParams
263
+ .map((v, idx) => {
264
+ return useAny ? 'any' : 'T' + idx;
265
+ })
266
+ .join(',');
267
+ genericString = `<${params}>`;
268
+ }
269
+ return genericString;
270
+ }
271
+ // generateTypeParameters(struct: TypeDescriptor, useAny = false) {
272
+ // let genericString = ''
273
+ //
274
+ // if (struct.typeArgs && struct.typeArgs.length > 0) {
275
+ // const params = struct.typeArgs
276
+ // .map((_, idx) => {
277
+ // return useAny ? 'any' : 'T' + idx
278
+ // })
279
+ // .join(',')
280
+ // genericString = `<${params}>`
281
+ // }
282
+ // return genericString
283
+ // }
284
+ generateCallArgsStructs(module, func) {
285
+ return '';
286
+ }
287
+ generateForEvents(module, struct) {
288
+ return '';
289
+ }
290
+ generateTypeForDescriptor(type, currentAddress) {
291
+ if (type.reference) {
292
+ return this.ADDRESS_TYPE;
293
+ }
294
+ // Aptos Move closure / function-value types (qname sentinel set by parseMoveType).
295
+ // Move closures don't have a JSON-serializable runtime shape, so we emit unknown.
296
+ if (type.qname.startsWith('|')) {
297
+ return 'unknown';
298
+ }
299
+ switch (type.qname) {
300
+ case 'signer': // TODO check this
301
+ case 'address':
302
+ case 'Address':
303
+ return this.ADDRESS_TYPE;
304
+ case '0x1::string::String':
305
+ return 'string';
306
+ case 'bool':
307
+ case 'Bool':
308
+ return 'boolean';
309
+ case 'u8':
310
+ case 'U8':
311
+ case 'u16':
312
+ case 'U16':
313
+ case 'u32':
314
+ case 'U32':
315
+ return 'number';
316
+ case 'u64':
317
+ case 'U64':
318
+ case 'u128':
319
+ case 'U128':
320
+ case 'u256':
321
+ case 'U256':
322
+ return 'bigint';
323
+ }
324
+ if (type.qname.toLowerCase() === VECTOR_STR) {
325
+ // vector<u8> as hex string
326
+ const elementTypeQname = type.typeArgs[0].qname;
327
+ if (elementTypeQname === 'u8') {
328
+ // only for aptos
329
+ return 'string';
330
+ }
331
+ // if (elementTypeQname.startsWith('T') && !elementTypeQname.includes(SPLITTER)) {
332
+ // return `${elementTypeQname} extends string ? string : ${elementTypeQname}[]`
333
+ // }
334
+ // TODO there might be an error here, find the case and get it fixed
335
+ if (elementTypeQname.startsWith('T') && !elementTypeQname.includes(SPLITTER)) {
336
+ return `${elementTypeQname}[]`;
337
+ }
338
+ return this.generateTypeForDescriptor(type.typeArgs[0], currentAddress) + '[]';
339
+ }
340
+ const simpleName = this.generateSimpleType(type.qname, currentAddress);
341
+ if (simpleName.length === 0) {
342
+ console.error('unexpected error');
343
+ }
344
+ if (simpleName.toLowerCase() === VECTOR_STR || simpleName.toLowerCase().startsWith(VECTOR_STR + SPLITTER)) {
345
+ console.error('unexpected vector type error');
346
+ }
347
+ if (type.typeArgs.length > 0) {
348
+ // return simpleName
349
+ return (simpleName + '<' + type.typeArgs.map((t) => this.generateTypeForDescriptor(t, currentAddress)).join(',') + '>');
350
+ }
351
+ return simpleName;
352
+ }
353
+ generateSimpleType(type, currentAddress) {
354
+ const parts = type.split(SPLITTER);
355
+ for (let i = 0; i < parts.length; i++) {
356
+ parts[i] = normalizeToJSName(parts[i]);
357
+ }
358
+ if (parts.length < 2) {
359
+ return parts[0];
360
+ }
361
+ if (parts[0] === currentAddress) {
362
+ return parts.slice(1).join('.');
363
+ }
364
+ return '_' + parts.join('.');
365
+ }
366
+ generateImports() {
367
+ // let refImports = `import { ${this.ADDRESS_TYPE} } from "${this.SYSTEM_PACKAGE}"`
368
+ // if (this.ADDRESS_TYPE === 'string') {
369
+ // refImports = ''
370
+ // }
371
+ const imports = `
372
+ import { TypeDescriptor, ANY_TYPE } from "@typemove/move"
373
+ import {
374
+ MoveCoder, TypedEventInstance } from "@typemove/${this.PREFIX.toLowerCase()}"
375
+
376
+ import { defaultMoveCoder } from "${this.defaultCoderPackage()}"
377
+
378
+ `;
379
+ return imports;
380
+ }
381
+ }
382
+ export class AccountCodegen {
383
+ modules;
384
+ config;
385
+ abi;
386
+ loader;
387
+ moduleGen;
388
+ // Usually it's same as module.address, but in upgraded package, this might be the new address
389
+ address;
390
+ constructor(moduleGen, loader, abi, modules, config, address) {
391
+ // const json = fs.readFileSync(config.srcFile, 'utf-8')
392
+ this.moduleGen = moduleGen;
393
+ this.abi = abi;
394
+ this.modules = modules;
395
+ this.config = config;
396
+ this.loader = loader;
397
+ this.address = address;
398
+ }
399
+ generate() {
400
+ if (!this.modules) {
401
+ return [];
402
+ }
403
+ // const baseName = path.basename(this.config.fileName, '.json')
404
+ let address;
405
+ for (const module of this.modules) {
406
+ address = module.address;
407
+ }
408
+ if (!address) {
409
+ return [];
410
+ }
411
+ const dependedAccounts = [];
412
+ const moduleImports = [];
413
+ const info = this.loader.accountImports.get(address);
414
+ if (info) {
415
+ for (const [account] of info.imports.entries()) {
416
+ // Remap to user's filename if possible, TODO codepath not well tested
417
+ const tsAccountModule = './' + (this.loader.accountImports.get(account)?.moduleName || account);
418
+ if (isFrameworkAccount(account) && !isFrameworkAccount(address)) {
419
+ // Decide where to find builtin library
420
+ moduleImports.push(`import * as _${account} from "${this.moduleGen.SYSTEM_PACKAGE}/builtin/${account}"`
421
+ // `import _${account} = builtin._${account} `
422
+ );
423
+ }
424
+ else {
425
+ moduleImports.push(`import * as _${account} from "${tsAccountModule}.js"`);
426
+ }
427
+ dependedAccounts.push(account);
428
+ }
429
+ }
430
+ const eventsMap = this.moduleGen.chainAdapter.getAllEventStructs(this.modules);
431
+ const source = `
432
+ /* Autogenerated file. Do not edit manually. */
433
+ /* tslint:disable */
434
+ /* eslint-disable */
435
+
436
+ /* Generated types for ${this.address || address}, original address ${address} */
437
+
438
+ ${this.moduleGen.generateImports()}
439
+
440
+ ${moduleImports.join('\n')}
441
+
442
+ ${this.modules.map((m) => this.moduleGen.generateModule(m, eventsMap, this.address)).join('\n')}
443
+
444
+ const MODULES = JSON.parse('${JSON.stringify(this.abi)}')
445
+
446
+ export function loadAllTypes(coder: MoveCoder) {
447
+ ${dependedAccounts.map((a) => `_${a}.loadAllTypes(coder)`).join('\n')}
448
+ for (const m of Object.values(MODULES)) {
449
+ coder.load(m as any, '${address}')
450
+ }
451
+ }
452
+
453
+ ${this.moduleGen.generateLoadAll(this.moduleGen.SYSTEM_MODULES.has(address))}
454
+ `; // source
455
+ return [
456
+ {
457
+ fileName: this.config.fileName + '.ts',
458
+ fileContent: source
459
+ }
460
+ ];
461
+ }
462
+ }
463
+ //# sourceMappingURL=abstract-codegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-codegen.js","sourceRoot":"","sources":["../../../src/codegen/abstract-codegen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './abstract-codegen.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './abstract-codegen.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export * from './types.js';
2
+ export * from './utils.js';
3
+ export * from './account.js';
4
+ export * from './chain-adapter.js';
5
+ export * from './abstract-move-coder.js';
6
+ export * from './internal-models.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export * from './types.js';
2
+ export * from './utils.js';
3
+ export * from './account.js';
4
+ export * from './chain-adapter.js';
5
+ export * from './abstract-move-coder.js';
6
+ export * from './internal-models.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,46 @@
1
+ import { TypeDescriptor } from './types.js';
2
+ export interface InternalMoveModule {
3
+ address: string;
4
+ name: string;
5
+ exposedFunctions: InternalMoveFunction[];
6
+ structs: InternalMoveStruct[];
7
+ enums: InternalMoveEnum[];
8
+ }
9
+ export interface InternalMoveFunction {
10
+ name: string;
11
+ visibility: InternalMoveFunctionVisibility;
12
+ isEntry: boolean;
13
+ isView?: boolean;
14
+ typeParams: InternalMoveTypeParam[];
15
+ params: TypeDescriptor[];
16
+ return: TypeDescriptor[];
17
+ }
18
+ export interface InternalMoveStruct {
19
+ name: string;
20
+ isNative: boolean;
21
+ isEvent: boolean;
22
+ abilities: string[];
23
+ typeParams: InternalMoveTypeParam[];
24
+ fields: InternalMoveStructField[];
25
+ }
26
+ export interface InternalMoveEnum {
27
+ name: string;
28
+ abilities: string[];
29
+ typeParams: InternalMoveTypeParam[];
30
+ variants: {
31
+ [key: string]: InternalMoveStructField[];
32
+ };
33
+ }
34
+ export interface InternalMoveStructField {
35
+ name: string;
36
+ type: TypeDescriptor;
37
+ }
38
+ export declare enum InternalMoveFunctionVisibility {
39
+ PRIVATE = "private",
40
+ PUBLIC = "public",
41
+ FRIEND = "friend"
42
+ }
43
+ export type InternalMoveTypeParam = {
44
+ constraints: string[];
45
+ };
46
+ //# sourceMappingURL=internal-models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-models.d.ts","sourceRoot":"","sources":["../../src/internal-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB,EAAE,oBAAoB,EAAE,CAAA;IACxC,OAAO,EAAE,kBAAkB,EAAE,CAAA;IAC7B,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,8BAA8B,CAAA;IAC1C,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,qBAAqB,EAAE,CAAA;IACnC,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,MAAM,EAAE,cAAc,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,UAAU,EAAE,qBAAqB,EAAE,CAAA;IACnC,MAAM,EAAE,uBAAuB,EAAE,CAAA;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,UAAU,EAAE,qBAAqB,EAAE,CAAA;IACnC,QAAQ,EAAE;QACR,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB,EAAE,CAAA;KACzC,CAAA;CACF;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,cAAc,CAAA;CACrB;AAED,oBAAY,8BAA8B;IACxC,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export var InternalMoveFunctionVisibility;
2
+ (function (InternalMoveFunctionVisibility) {
3
+ InternalMoveFunctionVisibility["PRIVATE"] = "private";
4
+ InternalMoveFunctionVisibility["PUBLIC"] = "public";
5
+ InternalMoveFunctionVisibility["FRIEND"] = "friend";
6
+ })(InternalMoveFunctionVisibility || (InternalMoveFunctionVisibility = {}));
7
+ //# sourceMappingURL=internal-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-models.js","sourceRoot":"","sources":["../../src/internal-models.ts"],"names":[],"mappings":"AA2CA,MAAM,CAAN,IAAY,8BAIX;AAJD,WAAY,8BAA8B;IACxC,qDAAmB,CAAA;IACnB,mDAAiB,CAAA;IACjB,mDAAiB,CAAA;AACnB,CAAC,EAJW,8BAA8B,KAA9B,8BAA8B,QAIzC"}
@@ -0,0 +1,52 @@
1
+ export type DecodedStruct<B, T> = B & {
2
+ /**
3
+ * decoded data using ABI, undefined if there is decoding error, usually because the ABI/data mismatch
4
+ */
5
+ data_decoded: T;
6
+ type_arguments: string[];
7
+ };
8
+ export type NestedDecodedStruct<A, B extends {
9
+ data: A;
10
+ }, T> = B & {
11
+ data: DecodedStruct<A, T>;
12
+ };
13
+ export declare class TypeDescriptor<T = any> {
14
+ qname: string;
15
+ reference: boolean;
16
+ mutable: boolean;
17
+ typeArgs: TypeDescriptor[];
18
+ constructor(symbol: string, typeParams?: TypeDescriptor[]);
19
+ apply(...typeArgs: TypeDescriptor[]): TypeDescriptor;
20
+ clone(): this;
21
+ compareQname(t: TypeDescriptor): boolean;
22
+ getSignature(): string;
23
+ getNormalizedSignature(): string;
24
+ applyTypeArgs(ctx: Map<string, TypeDescriptor>): TypeDescriptor;
25
+ dependedTypes(): string[];
26
+ isVector(): boolean;
27
+ existAnyType(): boolean;
28
+ name(): string;
29
+ module(): string;
30
+ }
31
+ export declare function parseMoveType(type: string): TypeDescriptor;
32
+ export declare const ANY_TYPE: TypeDescriptor<any>;
33
+ export declare function vectorType<T>(t?: TypeDescriptor<T>): TypeDescriptor<T[]>;
34
+ export declare const BUILTIN_TYPES: {
35
+ ADDRESS_TYPE: TypeDescriptor<string>;
36
+ VECTOR_TYPE_ANY: TypeDescriptor<any[]>;
37
+ VECTOR_TYPE: typeof vectorType;
38
+ BOOL_TYPE: TypeDescriptor<number>;
39
+ U8_TYPE: TypeDescriptor<number>;
40
+ U16_TYPE: TypeDescriptor<number>;
41
+ U32_TYPE: TypeDescriptor<number>;
42
+ U64_TYPE: TypeDescriptor<number>;
43
+ U128_TYPE: TypeDescriptor<number>;
44
+ U256_TYPE: TypeDescriptor<number>;
45
+ };
46
+ /**
47
+ *
48
+ * @param matcher
49
+ * @param type
50
+ */
51
+ export declare function matchType(matcher: TypeDescriptor, type: TypeDescriptor): boolean;
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACpC;;OAEG;IACH,YAAY,EAAE,CAAC,CAAA;IACf,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,EAAE,CAAC,SAAS;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,EAAE,CAAC,IAAI,CAAC,GAAG;IACjE,IAAI,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAC1B,CAAA;AAED,qBAAa,cAAc,CAAC,CAAC,GAAG,GAAG;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,cAAc,EAAE,CAAA;gBAEd,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,cAAc,EAAE;IAOzD,KAAK,CAAC,GAAG,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc;IAMpD,KAAK,IAAI,IAAI;IAQb,YAAY,CAAC,CAAC,EAAE,cAAc,GAAG,OAAO;IAYxC,YAAY,IAAI,MAAM;IAQtB,sBAAsB,IAAI,MAAM;IAsBhC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,cAAc;IAsB/D,aAAa,IAAI,MAAM,EAAE;IA+CzB,QAAQ,IAAI,OAAO;IAInB,YAAY,IAAI,OAAO;IAYvB,IAAI,IAAI,MAAM;IAKd,MAAM,IAAI,MAAM;CAIjB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA8D1D;AA+DD,eAAO,MAAM,QAAQ,qBAAiC,CAAA;AAEtD,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,GAAE,cAAc,CAAC,CAAC,CAAY,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAElF;AAED,eAAO,MAAM,aAAa;;;;;;;;;;;CAqBzB,CAAA;AAWD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAchF"}