@typemove/iota 1.10.0-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 (134) hide show
  1. package/LICENSE +201 -0
  2. package/Readme.md +161 -0
  3. package/builtin/0x1/package.json +5 -0
  4. package/builtin/0x2/package.json +5 -0
  5. package/builtin/0x3/package.json +5 -0
  6. package/builtin/package.json +5 -0
  7. package/codegen/package.json +5 -0
  8. package/dist/cjs/builtin/0x1.d.ts +778 -0
  9. package/dist/cjs/builtin/0x1.d.ts.map +1 -0
  10. package/dist/cjs/builtin/0x1.js +4297 -0
  11. package/dist/cjs/builtin/0x1.js.map +1 -0
  12. package/dist/cjs/builtin/0x2.d.ts +4256 -0
  13. package/dist/cjs/builtin/0x2.d.ts.map +1 -0
  14. package/dist/cjs/builtin/0x2.js +16540 -0
  15. package/dist/cjs/builtin/0x2.js.map +1 -0
  16. package/dist/cjs/builtin/0x3.d.ts +1978 -0
  17. package/dist/cjs/builtin/0x3.d.ts.map +1 -0
  18. package/dist/cjs/builtin/0x3.js +6120 -0
  19. package/dist/cjs/builtin/0x3.js.map +1 -0
  20. package/dist/cjs/builtin/index.d.ts +4 -0
  21. package/dist/cjs/builtin/index.d.ts.map +1 -0
  22. package/dist/cjs/builtin/index.js +11 -0
  23. package/dist/cjs/builtin/index.js.map +1 -0
  24. package/dist/cjs/codegen/codegen.d.ts +20 -0
  25. package/dist/cjs/codegen/codegen.d.ts.map +1 -0
  26. package/dist/cjs/codegen/codegen.js +253 -0
  27. package/dist/cjs/codegen/codegen.js.map +1 -0
  28. package/dist/cjs/codegen/index.d.ts +2 -0
  29. package/dist/cjs/codegen/index.d.ts.map +1 -0
  30. package/dist/cjs/codegen/index.js +5 -0
  31. package/dist/cjs/codegen/index.js.map +1 -0
  32. package/dist/cjs/index.d.ts +4 -0
  33. package/dist/cjs/index.d.ts.map +1 -0
  34. package/dist/cjs/index.js +11 -0
  35. package/dist/cjs/index.js.map +1 -0
  36. package/dist/cjs/models.d.ts +18 -0
  37. package/dist/cjs/models.d.ts.map +1 -0
  38. package/dist/cjs/models.js +5 -0
  39. package/dist/cjs/models.js.map +1 -0
  40. package/dist/cjs/move-coder.d.ts +27 -0
  41. package/dist/cjs/move-coder.d.ts.map +1 -0
  42. package/dist/cjs/move-coder.js +274 -0
  43. package/dist/cjs/move-coder.js.map +1 -0
  44. package/dist/cjs/package.json +3 -0
  45. package/dist/cjs/sui-chain-adapter.d.ts +15 -0
  46. package/dist/cjs/sui-chain-adapter.d.ts.map +1 -0
  47. package/dist/cjs/sui-chain-adapter.js +88 -0
  48. package/dist/cjs/sui-chain-adapter.js.map +1 -0
  49. package/dist/cjs/to-internal.d.ts +4 -0
  50. package/dist/cjs/to-internal.d.ts.map +1 -0
  51. package/dist/cjs/to-internal.js +99 -0
  52. package/dist/cjs/to-internal.js.map +1 -0
  53. package/dist/cjs/transaction.d.ts +15 -0
  54. package/dist/cjs/transaction.d.ts.map +1 -0
  55. package/dist/cjs/transaction.js +98 -0
  56. package/dist/cjs/transaction.js.map +1 -0
  57. package/dist/esm/builtin/0x1.d.ts +778 -0
  58. package/dist/esm/builtin/0x1.d.ts.map +1 -0
  59. package/dist/esm/builtin/0x1.js +4293 -0
  60. package/dist/esm/builtin/0x1.js.map +1 -0
  61. package/dist/esm/builtin/0x2.d.ts +4256 -0
  62. package/dist/esm/builtin/0x2.d.ts.map +1 -0
  63. package/dist/esm/builtin/0x2.js +16534 -0
  64. package/dist/esm/builtin/0x2.js.map +1 -0
  65. package/dist/esm/builtin/0x3.d.ts +1978 -0
  66. package/dist/esm/builtin/0x3.d.ts.map +1 -0
  67. package/dist/esm/builtin/0x3.js +6115 -0
  68. package/dist/esm/builtin/0x3.js.map +1 -0
  69. package/dist/esm/builtin/index.d.ts +4 -0
  70. package/dist/esm/builtin/index.d.ts.map +1 -0
  71. package/dist/esm/builtin/index.js +7 -0
  72. package/dist/esm/builtin/index.js.map +1 -0
  73. package/dist/esm/codegen/codegen.d.ts +20 -0
  74. package/dist/esm/codegen/codegen.d.ts.map +1 -0
  75. package/dist/esm/codegen/codegen.js +247 -0
  76. package/dist/esm/codegen/codegen.js.map +1 -0
  77. package/dist/esm/codegen/index.d.ts +2 -0
  78. package/dist/esm/codegen/index.d.ts.map +1 -0
  79. package/dist/esm/codegen/index.js +2 -0
  80. package/dist/esm/codegen/index.js.map +1 -0
  81. package/dist/esm/codegen/run.d.ts +3 -0
  82. package/dist/esm/codegen/run.d.ts.map +1 -0
  83. package/dist/esm/codegen/run.js +49 -0
  84. package/dist/esm/codegen/run.js.map +1 -0
  85. package/dist/esm/index.d.ts +4 -0
  86. package/dist/esm/index.d.ts.map +1 -0
  87. package/dist/esm/index.js +4 -0
  88. package/dist/esm/index.js.map +1 -0
  89. package/dist/esm/models.d.ts +18 -0
  90. package/dist/esm/models.d.ts.map +1 -0
  91. package/dist/esm/models.js +2 -0
  92. package/dist/esm/models.js.map +1 -0
  93. package/dist/esm/move-coder.d.ts +27 -0
  94. package/dist/esm/move-coder.d.ts.map +1 -0
  95. package/dist/esm/move-coder.js +268 -0
  96. package/dist/esm/move-coder.js.map +1 -0
  97. package/dist/esm/sui-chain-adapter.d.ts +15 -0
  98. package/dist/esm/sui-chain-adapter.d.ts.map +1 -0
  99. package/dist/esm/sui-chain-adapter.js +84 -0
  100. package/dist/esm/sui-chain-adapter.js.map +1 -0
  101. package/dist/esm/to-internal.d.ts +4 -0
  102. package/dist/esm/to-internal.d.ts.map +1 -0
  103. package/dist/esm/to-internal.js +96 -0
  104. package/dist/esm/to-internal.js.map +1 -0
  105. package/dist/esm/transaction.d.ts +15 -0
  106. package/dist/esm/transaction.d.ts.map +1 -0
  107. package/dist/esm/transaction.js +83 -0
  108. package/dist/esm/transaction.js.map +1 -0
  109. package/package.json +63 -0
  110. package/src/abis/0x1.json +4213 -0
  111. package/src/abis/0x2.json +26692 -0
  112. package/src/abis/0x3.json +10598 -0
  113. package/src/builtin/0x1.ts +6110 -0
  114. package/src/builtin/0x2.ts +24700 -0
  115. package/src/builtin/0x3.ts +9680 -0
  116. package/src/builtin/index.ts +6 -0
  117. package/src/codegen/codegen.ts +290 -0
  118. package/src/codegen/index.ts +1 -0
  119. package/src/codegen/run.ts +57 -0
  120. package/src/index.ts +4 -0
  121. package/src/models.ts +21 -0
  122. package/src/move-coder.ts +318 -0
  123. package/src/sui-chain-adapter.ts +113 -0
  124. package/src/tests/abis/testnet/0x1e2b124f746a339b3cf99b9f969393a96594519aafb1d06517aacfeeae20e7a5.json +265 -0
  125. package/src/tests/abis/testnet/0x6c4a21e3e7e6b6d51c4604021633e1d97e24e37a696f8c082cd48f37503e602a.json +2429 -0
  126. package/src/tests/abis/testnet/0x7f7a37c826c88bcfe9aecc042453395ddfa9df6f29cb7c97590bf86cf2b0a75e.json +1356 -0
  127. package/src/tests/abis/testnet/0xebaa2ad3eacc230f309cd933958cc52684df0a41ae7ac214d186b80f830867d2.json +10060 -0
  128. package/src/tests/types/testnet/0x1e2b124f746a339b3cf99b9f969393a96594519aafb1d06517aacfeeae20e7a5.ts +291 -0
  129. package/src/tests/types/testnet/0x6c4a21e3e7e6b6d51c4604021633e1d97e24e37a696f8c082cd48f37503e602a.ts +2468 -0
  130. package/src/tests/types/testnet/0x7f7a37c826c88bcfe9aecc042453395ddfa9df6f29cb7c97590bf86cf2b0a75e.ts +1389 -0
  131. package/src/tests/types/testnet/0xebaa2ad3eacc230f309cd933958cc52684df0a41ae7ac214d186b80f830867d2.ts +9522 -0
  132. package/src/tests/types/testnet/index.ts +7 -0
  133. package/src/to-internal.ts +127 -0
  134. package/src/transaction.ts +127 -0
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IotaCodegen = void 0;
4
+ exports.codegen = codegen;
5
+ const tslib_1 = require("tslib");
6
+ const client_1 = require("@iota/iota-sdk/client");
7
+ const fs = tslib_1.__importStar(require("fs"));
8
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
9
+ const move_1 = require("@typemove/move");
10
+ const codegen_1 = require("@typemove/move/codegen");
11
+ const path_1 = require("path");
12
+ const sui_chain_adapter_js_1 = require("../sui-chain-adapter.js");
13
+ async function codegen(abisDir, outDir = (0, path_1.join)('src', 'types', 'sui'), endpoint, genExample = false, builtin = false) {
14
+ if (!fs.existsSync(abisDir)) {
15
+ console.error(chalk_1.default.red(`ABIs directory ${abisDir} does not exist`));
16
+ return 0;
17
+ }
18
+ try {
19
+ const gen = new IotaCodegen(endpoint);
20
+ const numFiles = await gen.generate(abisDir, outDir, builtin);
21
+ if (numFiles > 0) {
22
+ console.log(chalk_1.default.green(`Generated for ${numFiles} accounts for Iota to ${outDir}`));
23
+ }
24
+ else {
25
+ console.error(chalk_1.default.red(`No account found`));
26
+ }
27
+ return numFiles;
28
+ }
29
+ catch (e) {
30
+ console.error(chalk_1.default.red(`Failed to generate for ${abisDir}, please check if ABI json files are valid`));
31
+ console.log(e);
32
+ return 0;
33
+ }
34
+ }
35
+ class IotaCodegen extends codegen_1.AbstractCodegen {
36
+ ADDRESS_TYPE = 'string';
37
+ SYSTEM_PACKAGE = '@typemove/iota';
38
+ // ADDRESS_TYPE = 'string'
39
+ // MAIN_NET = IotaNetwork.MAIN_NET
40
+ // TEST_NET = IotaNetwork.TEST_NET
41
+ PREFIX = 'Iota';
42
+ // STRUCT_FIELD_NAME = 'fields'
43
+ // GENERATE_ON_ENTRY = true
44
+ PAYLOAD_OPTIONAL = true;
45
+ constructor(endpoint) {
46
+ super(new sui_chain_adapter_js_1.IotaChainAdapter(new client_1.IotaClient({ url: endpoint })));
47
+ }
48
+ readModulesFile(fullPath) {
49
+ const res = super.readModulesFile(fullPath);
50
+ if (res.result) {
51
+ return res.result;
52
+ }
53
+ return res;
54
+ }
55
+ generateStructs(module, struct, events) {
56
+ let content = '';
57
+ switch ((0, move_1.structQname)(module, struct)) {
58
+ // TODO they should still have module code generated
59
+ case '0x1::ascii::Char':
60
+ case '0x1::ascii::String':
61
+ case '0x2::object::ID':
62
+ content += `export type ${struct.name} = string`;
63
+ break;
64
+ case '0x2::coin::Coin':
65
+ content += `export type ${struct.name}<T> = string`;
66
+ break;
67
+ case '0x2::balance::Balance':
68
+ content += `export type ${struct.name}<T> = bigint`;
69
+ break;
70
+ case '0x1::option::Option':
71
+ content += `export type Option<T> = T | undefined`;
72
+ break;
73
+ }
74
+ return content + super.generateStructs(module, struct, events, content !== '');
75
+ }
76
+ generateForEvents(module, struct) {
77
+ switch ((0, move_1.structQname)(module, struct)) {
78
+ case '0x1::ascii::Char':
79
+ case '0x1::ascii::String':
80
+ case '0x2::object::ID':
81
+ case '0x2::coin::Coin':
82
+ case '0x1::option::Option':
83
+ case '0x2::balance::Balance':
84
+ return '';
85
+ }
86
+ return super.generateForEvents(module, struct);
87
+ }
88
+ generateExtra(address, module) {
89
+ const funcs = module.exposedFunctions.map((f) => this.generateBuilderForFunction(address || module.address, module, f));
90
+ const viewFuncs = module.exposedFunctions.map((f) => this.generateViewFunction(module, f));
91
+ return `
92
+ export namespace builder {
93
+ ${funcs.join('\n')}
94
+ }
95
+ export namespace view {
96
+ ${viewFuncs.join('\n')}
97
+ }
98
+ `;
99
+ }
100
+ generateArgs(module, func, isView) {
101
+ const args = [];
102
+ const argsLen = func.params.length;
103
+ for (const [idx, arg] of func.params.entries()) {
104
+ if (idx === argsLen - 1 && arg.qname === '0x2::tx_context::TxContext') {
105
+ // no op
106
+ }
107
+ else if (arg.reference) {
108
+ args.push({
109
+ paramType: isView
110
+ ? this.ADDRESS_TYPE
111
+ : `${this.ADDRESS_TYPE} | TransactionObjectArgument | TransactionArgument`,
112
+ callValue: `_args.push(transactionArgumentOrObject(args[${idx}], tx))`
113
+ });
114
+ }
115
+ else if (arg.isVector()) {
116
+ // TODO fix pure vector
117
+ args.push({
118
+ paramType: isView
119
+ ? `${this.ADDRESS_TYPE}[]`
120
+ : `(${this.ADDRESS_TYPE} | TransactionObjectArgument)[] | TransactionArgument`,
121
+ callValue: `_args.push(transactionArgumentOrVec(args[${idx}], tx))`
122
+ });
123
+ }
124
+ else {
125
+ // Handle pure type
126
+ let pureFunction = '';
127
+ const paramType = isView
128
+ ? this.generateTypeForDescriptor(arg, module.address)
129
+ : `${this.generateTypeForDescriptor(arg, module.address)} | TransactionArgument`;
130
+ switch (arg.qname.toLowerCase()) {
131
+ case 'u8':
132
+ pureFunction = `transactionArgumentOrPureU8`;
133
+ break;
134
+ case 'u16':
135
+ pureFunction = `transactionArgumentOrPureU16`;
136
+ break;
137
+ case 'u32':
138
+ pureFunction = `transactionArgumentOrPureU32`;
139
+ break;
140
+ case 'u64':
141
+ pureFunction = `transactionArgumentOrPureU64`;
142
+ break;
143
+ case 'u128':
144
+ pureFunction = `transactionArgumentOrPureU128`;
145
+ break;
146
+ case 'u256':
147
+ pureFunction = `transactionArgumentOrPureU256`;
148
+ break;
149
+ case 'bool':
150
+ pureFunction = `transactionArgumentOrPureBool`;
151
+ break;
152
+ case 'string':
153
+ pureFunction = `transactionArgumentOrPureString`;
154
+ break;
155
+ case 'address':
156
+ pureFunction = `transactionArgumentOrPureAddress`;
157
+ break;
158
+ // case 'vector':
159
+ // case 'option':
160
+ default:
161
+ pureFunction = `transactionArgumentOrPure`;
162
+ // paramType = 'TransactionArgument'
163
+ }
164
+ const callValue = pureFunction ? `_args.push(${pureFunction}(args[${idx}], tx))` : `_args.push(args[${idx}])`;
165
+ args.push({
166
+ paramType,
167
+ callValue
168
+ });
169
+ }
170
+ }
171
+ return args;
172
+ }
173
+ generateViewFunction(module, func) {
174
+ if (func.visibility === move_1.InternalMoveFunctionVisibility.PRIVATE) {
175
+ return '';
176
+ }
177
+ const genericString = this.generateFunctionTypeParameters(func);
178
+ const typeParamArg = func.typeParams
179
+ .map((v, idx) => {
180
+ return `TypeDescriptor<T${idx}> | string`;
181
+ })
182
+ .join(',');
183
+ const args = this.generateArgs(module, func, true);
184
+ const returnType = `${this.generateFunctionReturnTypeParameters(func, module.address)}`;
185
+ return `export async function ${(0, move_1.camel)((0, move_1.normalizeToJSName)(func.name))}${genericString}(
186
+ client: IotaClient,
187
+ args: [${args.map((a) => a.paramType).join(',')}],
188
+ ${typeParamArg.length > 0 ? `typeArguments: [${typeParamArg}]` : ``} ): Promise<TypedDevInspectResults<${returnType}>> {
189
+ const tx = new Transaction()
190
+ builder.${(0, move_1.camel)((0, move_1.normalizeToJSName)(func.name))}(tx, args ${typeParamArg.length > 0 ? `, typeArguments` : ''})
191
+ const inspectRes = await client.devInspectTransactionBlock({
192
+ transactionBlock: tx,
193
+ sender: ZERO_ADDRESS
194
+ })
195
+
196
+ return (await getMoveCoder(client)).decodeDevInspectResult<${returnType}>(inspectRes)
197
+ }`;
198
+ }
199
+ generateBuilderForFunction(address, module, func) {
200
+ if (func.visibility === move_1.InternalMoveFunctionVisibility.PRIVATE && func.isEntry !== true) {
201
+ return '';
202
+ }
203
+ const args = this.generateArgs(module, func, false);
204
+ const genericString = this.generateFunctionTypeParameters(func);
205
+ const typeParamArg = func.typeParams
206
+ .map((v, idx) => {
207
+ return `TypeDescriptor<T${idx}> | string`;
208
+ })
209
+ .join(',');
210
+ const typeParamToString = func.typeParams
211
+ .map((v, idx) => {
212
+ return `typeof typeArguments[${idx}] === 'string' ? typeArguments[${idx}] : typeArguments[${idx}].getSignature()`;
213
+ })
214
+ .join(',');
215
+ return `export function ${(0, move_1.camel)((0, move_1.normalizeToJSName)(func.name))}${genericString}(tx: Transaction,
216
+ args: [${args.map((a) => a.paramType).join(',')}],
217
+ ${typeParamArg.length > 0 ? `typeArguments: [${typeParamArg}]` : ``} ):
218
+ TransactionArgument & [ ${'TransactionArgument,'.repeat(args.length)} ] {
219
+ const _args: any[] = []
220
+ ${args.map((a) => a.callValue).join('\n')}
221
+
222
+ // @ts-ignore
223
+ return tx.moveCall({
224
+ target: "${address}::${module.name}::${func.name}",
225
+ arguments: _args,
226
+ ${typeParamArg.length > 0 ? `typeArguments: [${typeParamToString}]` : ``}
227
+ })
228
+ }`;
229
+ }
230
+ generateImports() {
231
+ return `
232
+ ${super.generateImports()}
233
+ import { ZERO_ADDRESS, TypedDevInspectResults, getMoveCoder } from '@typemove/iota'
234
+ import { Transaction, TransactionArgument, TransactionObjectArgument } from '@iota/iota-sdk/transactions'
235
+ import { IotaClient } from '@iota/iota-sdk/client'
236
+ import { transactionArgumentOrObject,
237
+ transactionArgumentOrVec,
238
+ transactionArgumentOrPure,
239
+ transactionArgumentOrPureU8,
240
+ transactionArgumentOrPureU16,
241
+ transactionArgumentOrPureU32,
242
+ transactionArgumentOrPureU64,
243
+ transactionArgumentOrPureU128,
244
+ transactionArgumentOrPureU256,
245
+ transactionArgumentOrPureBool,
246
+ transactionArgumentOrPureString,
247
+ transactionArgumentOrPureAddress,
248
+ } from '@typemove/iota'
249
+ `;
250
+ }
251
+ }
252
+ exports.IotaCodegen = IotaCodegen;
253
+ //# sourceMappingURL=codegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../../src/codegen/codegen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './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,cAAc,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./codegen.js"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":";;;AAAA,uDAA4B"}
@@ -0,0 +1,4 @@
1
+ export * from './models.js';
2
+ export * from './transaction.js';
3
+ export { MoveCoder, defaultMoveCoder, getMoveCoder } from './move-coder.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAEhC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMoveCoder = exports.defaultMoveCoder = exports.MoveCoder = void 0;
4
+ const tslib_1 = require("tslib");
5
+ tslib_1.__exportStar(require("./models.js"), exports);
6
+ tslib_1.__exportStar(require("./transaction.js"), exports);
7
+ var move_coder_js_1 = require("./move-coder.js");
8
+ Object.defineProperty(exports, "MoveCoder", { enumerable: true, get: function () { return move_coder_js_1.MoveCoder; } });
9
+ Object.defineProperty(exports, "defaultMoveCoder", { enumerable: true, get: function () { return move_coder_js_1.defaultMoveCoder; } });
10
+ Object.defineProperty(exports, "getMoveCoder", { enumerable: true, get: function () { return move_coder_js_1.getMoveCoder; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,sDAA2B;AAC3B,2DAAgC;AAEhC,iDAA2E;AAAlE,0GAAA,SAAS,OAAA;AAAE,iHAAA,gBAAgB,OAAA;AAAE,6GAAA,YAAY,OAAA"}
@@ -0,0 +1,18 @@
1
+ import type { IotaEvent, MoveCallIotaTransaction, IotaMoveObject, DevInspectResults } from '@iota/iota-sdk/client';
2
+ import { DecodedStruct } from '@typemove/move';
3
+ export declare const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000000000000000000000000000";
4
+ export type TypedEventInstance<T> = DecodedStruct<IotaEvent, T>;
5
+ export type TypedIotaMoveObject<T> = DecodedStruct<IotaMoveObject, T>;
6
+ export type TypedFunctionPayload<T extends Array<any>> = MoveCallIotaTransaction & {
7
+ /**
8
+ * decoded argument data using ABI, undefined if there is decoding error, usually because the ABI/data mismatch
9
+ */
10
+ arguments_decoded: T;
11
+ };
12
+ export type TypedDevInspectResults<T extends Array<any>> = DevInspectResults & {
13
+ /**
14
+ * Decoded return values using ABI, undefined if there is decoding error, usually because the ABI/data mismatch
15
+ */
16
+ results_decoded?: T;
17
+ };
18
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,uBAAuB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,eAAO,MAAM,YAAY,uEAAuE,CAAA;AAEhG,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;AAC/D,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,CAAA;AAErE,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,IAAI,uBAAuB,GAAG;IACjF;;OAEG;IACH,iBAAiB,EAAE,CAAC,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,IAAI,iBAAiB,GAAG;IAC7E;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,CAAA;CACpB,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZERO_ADDRESS = void 0;
4
+ exports.ZERO_ADDRESS = '0x0000000000000000000000000000000000000000000000000000000000000000';
5
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/models.ts"],"names":[],"mappings":";;;AAGa,QAAA,YAAY,GAAG,oEAAoE,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { TypedDevInspectResults, TypedEventInstance } from './models.js';
2
+ import { AbstractMoveCoder, DecodedStruct, TypeDescriptor, InternalMoveModule } from '@typemove/move';
3
+ import { MoveCallIotaTransaction, IotaCallArg, IotaEvent, IotaMoveNormalizedModule, IotaMoveObject, DevInspectResults, IotaClient } from '@iota/iota-sdk/client';
4
+ import { dynamic_field } from './builtin/0x2.js';
5
+ import { BcsType } from '@iota/iota-sdk/bcs';
6
+ export type Encoding = 'base58' | 'base64' | 'hex';
7
+ export declare class MoveCoder extends AbstractMoveCoder<IotaMoveNormalizedModule, IotaEvent | IotaMoveObject> {
8
+ constructor(client: IotaClient);
9
+ maybeGetMoveEnum(type: string): Promise<undefined>;
10
+ load(module: IotaMoveNormalizedModule, address: string): InternalMoveModule;
11
+ protected decode(data: any, type: TypeDescriptor): Promise<any>;
12
+ decodeEvent<T>(event: IotaEvent): Promise<TypedEventInstance<T> | undefined>;
13
+ filterAndDecodeEvents<T>(type: TypeDescriptor<T> | string, resources: IotaEvent[]): Promise<TypedEventInstance<T>[]>;
14
+ getDynamicFields<T1, T2>(objects: IotaMoveObject[], keyType?: TypeDescriptor<T1>, valueType?: TypeDescriptor<T2>): Promise<dynamic_field.Field<T1, T2>[]>;
15
+ filterAndDecodeObjects<T>(type: TypeDescriptor<T>, objects: IotaMoveObject[]): Promise<DecodedStruct<IotaMoveObject, T>[]>;
16
+ decodeFunctionPayload(payload: MoveCallIotaTransaction, inputs: IotaCallArg[]): Promise<MoveCallIotaTransaction>;
17
+ private bcsRegistered;
18
+ private bcsRegistry;
19
+ private getBCSTypeWithArgs;
20
+ getBCSType(type: TypeDescriptor): Promise<BcsType<any>>;
21
+ registerBCSTypes(type: TypeDescriptor): Promise<void>;
22
+ decodeBCS(type: TypeDescriptor, data: Uint8Array | string, encoding?: Encoding): Promise<any>;
23
+ decodeDevInspectResult<T extends any[]>(inspectRes: DevInspectResults): Promise<TypedDevInspectResults<T>>;
24
+ }
25
+ export declare function defaultMoveCoder(endpoint?: string): MoveCoder;
26
+ export declare function getMoveCoder(client: IotaClient): Promise<MoveCoder>;
27
+ //# sourceMappingURL=move-coder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move-coder.d.ts","sourceRoot":"","sources":["../../src/move-coder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAwB,MAAM,aAAa,CAAA;AAC9F,OAAO,EACL,iBAAiB,EAEjB,aAAa,EAGb,cAAc,EACd,kBAAkB,EACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,SAAS,EACT,wBAAwB,EACxB,cAAc,EACd,iBAAiB,EACjB,UAAU,EACX,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAO,MAAM,oBAAoB,CAAA;AAGjD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAA;AAIlD,qBAAa,SAAU,SAAQ,iBAAiB,CAE9C,wBAAwB,EACxB,SAAS,GAAG,cAAc,CAC3B;gBACa,MAAM,EAAE,UAAU;IAIxB,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAInC,IAAI,CAAC,MAAM,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB;cAY3D,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC;IAkErE,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAG5E,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IAO9G,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAC3B,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,GAAE,cAAc,CAAC,EAAE,CAAY,EACtC,SAAS,GAAE,cAAc,CAAC,EAAE,CAAY,GACvC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IASzC,sBAAsB,CAAC,CAAC,EACtB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EACvB,OAAO,EAAE,cAAc,EAAE,GACxB,OAAO,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC;IAIxC,qBAAqB,CACzB,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,WAAW,EAAE,GACpB,OAAO,CAAC,uBAAuB,CAAC;IAgCnC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,WAAW,CAAkC;YAEvC,kBAAkB;IA+C1B,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAOvD,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAU7F,sBAAsB,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;CAkBjH;AAMD,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,MAAyB,GAAG,SAAS,CAO/E;AAMD,wBAAsB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAiBzE"}
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MoveCoder = void 0;
4
+ exports.defaultMoveCoder = defaultMoveCoder;
5
+ exports.getMoveCoder = getMoveCoder;
6
+ const move_1 = require("@typemove/move");
7
+ const client_1 = require("@iota/iota-sdk/client");
8
+ const to_internal_js_1 = require("./to-internal.js");
9
+ const sui_chain_adapter_js_1 = require("./sui-chain-adapter.js");
10
+ const bcs_1 = require("@iota/iota-sdk/bcs");
11
+ const utils_1 = require("@iota/iota-sdk/utils");
12
+ class MoveCoder extends move_1.AbstractMoveCoder {
13
+ constructor(client) {
14
+ super(new sui_chain_adapter_js_1.IotaChainAdapter(client));
15
+ }
16
+ async maybeGetMoveEnum(type) {
17
+ return undefined;
18
+ }
19
+ load(module, address) {
20
+ let m = this.moduleMapping.get(module.address + '::' + module.name);
21
+ const mDeclared = this.moduleMapping.get(address + '::' + module.name);
22
+ if (m && mDeclared) {
23
+ return m;
24
+ }
25
+ this.accounts.add(module.address);
26
+ m = (0, to_internal_js_1.toInternalModule)(module);
27
+ this.loadInternal(m, address);
28
+ return m;
29
+ }
30
+ async decode(data, type) {
31
+ switch (type.qname) {
32
+ case '0x1::ascii::Char':
33
+ if (data !== undefined && typeof data !== 'string') {
34
+ // bcs
35
+ const byte = (await super.decode(data, type)).byte;
36
+ return String.fromCharCode(byte);
37
+ }
38
+ case '0x1::ascii::String':
39
+ if (data !== undefined && typeof data !== 'string') {
40
+ // bcs verified
41
+ const bytes = (await super.decode(data, type)).bytes;
42
+ return new TextDecoder().decode(new Uint8Array(bytes));
43
+ }
44
+ case '0x2::object::ID':
45
+ if (data !== undefined && typeof data !== 'string') {
46
+ // bcs verified
47
+ const bytes = (await super.decode(data, type)).bytes;
48
+ return (0, utils_1.normalizeIotaObjectId)(bytes);
49
+ }
50
+ case '0x2::url::Url':
51
+ if (data !== undefined && typeof data !== 'string') {
52
+ // bcs
53
+ return (await super.decode(data, type)).url;
54
+ }
55
+ case '0x2::coin::Coin':
56
+ if (data !== undefined && typeof data !== 'string') {
57
+ // bcs
58
+ const bytes = (await super.decode(data, type)).id.id.bytes;
59
+ return new TextDecoder().decode(new Uint8Array(bytes));
60
+ }
61
+ return data;
62
+ case '0x2::balance::Balance':
63
+ if (data.value) {
64
+ // bcs verfied
65
+ const balance = await super.decode(data, type);
66
+ return balance.value;
67
+ }
68
+ return BigInt(data);
69
+ case '0x1::option::Option':
70
+ if (data === null) {
71
+ return data;
72
+ }
73
+ if (data.vec) {
74
+ // bcs verifed
75
+ let vec = await super.decode(data, type);
76
+ vec = vec.vec;
77
+ if (vec.length === 0) {
78
+ return null;
79
+ }
80
+ return vec[0];
81
+ }
82
+ return this.decode(data, type.typeArgs[0]);
83
+ case 'Address':
84
+ const str = data;
85
+ return (0, utils_1.normalizeIotaAddress)(str);
86
+ case '0x1::string::String':
87
+ if (typeof data !== 'string') {
88
+ // bcs
89
+ return new TextDecoder().decode(new Uint8Array(data.bytes));
90
+ }
91
+ default:
92
+ return super.decode(data, type);
93
+ }
94
+ }
95
+ decodeEvent(event) {
96
+ return this.decodedStruct(event);
97
+ }
98
+ filterAndDecodeEvents(type, resources) {
99
+ if (typeof type === 'string') {
100
+ type = (0, move_1.parseMoveType)(type);
101
+ }
102
+ return this.filterAndDecodeStruct(type, resources);
103
+ }
104
+ async getDynamicFields(objects, keyType = move_1.ANY_TYPE, valueType = move_1.ANY_TYPE) {
105
+ // const type = dynamic_field.Field.TYPE
106
+ // Not using the code above to avoid cycle initialize failed
107
+ const type = new move_1.TypeDescriptor('0x2::dynamic_field::Field');
108
+ type.typeArgs = [keyType, valueType];
109
+ const res = await this.filterAndDecodeObjects(type, objects);
110
+ return res.map((o) => o.data_decoded);
111
+ }
112
+ filterAndDecodeObjects(type, objects) {
113
+ return this.filterAndDecodeStruct(type, objects);
114
+ }
115
+ async decodeFunctionPayload(payload, inputs) {
116
+ const functionType = [payload.package, payload.module, payload.function].join(move_1.SPLITTER);
117
+ const func = await this.getMoveFunction(functionType);
118
+ const params = this.adapter.getMeaningfulFunctionParams(func.params);
119
+ const args = [];
120
+ for (const value of payload.arguments || []) {
121
+ const argValue = value;
122
+ if ('Input' in argValue) {
123
+ const idx = argValue.Input;
124
+ const arg = inputs[idx];
125
+ if (arg.type === 'pure') {
126
+ args.push(arg.value);
127
+ }
128
+ else if (arg.type === 'object') {
129
+ // object is not there
130
+ args.push(undefined);
131
+ }
132
+ else {
133
+ console.error('unexpected function arg value');
134
+ args.push(undefined);
135
+ }
136
+ // args.push(arg) // TODO check why ts not work using arg.push(arg)
137
+ }
138
+ else {
139
+ args.push(undefined);
140
+ }
141
+ }
142
+ const argumentsTyped = await this.decodeArray(args, params, false);
143
+ return {
144
+ ...payload,
145
+ arguments_decoded: argumentsTyped
146
+ };
147
+ }
148
+ bcsRegistered = new Set();
149
+ bcsRegistry = new Map();
150
+ async getBCSTypeWithArgs(type, args = []) {
151
+ const qname = type.qname;
152
+ const sig = type.getNormalizedSignature();
153
+ const cached = this.bcsRegistry.get(sig);
154
+ if (cached) {
155
+ return cached;
156
+ }
157
+ const lowerQname = qname.toLowerCase();
158
+ switch (lowerQname) {
159
+ case 'u8':
160
+ case 'u16':
161
+ case 'u32':
162
+ case 'u64':
163
+ case 'u128':
164
+ case 'u256':
165
+ case 'bool':
166
+ return bcs_1.bcs[lowerQname]();
167
+ case 'address':
168
+ return bcs_1.bcs.Address;
169
+ case 'vector':
170
+ return bcs_1.bcs.vector(args[0]);
171
+ default:
172
+ if (!qname.includes('::')) {
173
+ throw `Unimplemented builtin type ${qname}`;
174
+ }
175
+ }
176
+ let moveStruct;
177
+ try {
178
+ moveStruct = await this.getMoveStruct(qname);
179
+ }
180
+ catch (e) {
181
+ console.error('Invalid move address', qname);
182
+ throw e;
183
+ }
184
+ const structDef = {};
185
+ for (const field of moveStruct.fields) {
186
+ if (field.type.qname.startsWith('T') && args.length) {
187
+ const index = +field.type.qname.slice(1);
188
+ structDef[field.name] = args[index];
189
+ }
190
+ else if (field.type.typeArgs.length && args.length) {
191
+ structDef[field.name] = await this.getBCSTypeWithArgs(field.type, args);
192
+ }
193
+ else {
194
+ structDef[field.name] = await this.getBCSType(field.type);
195
+ }
196
+ }
197
+ return bcs_1.bcs.struct(qname, structDef);
198
+ }
199
+ async getBCSType(type) {
200
+ const args = await Promise.all(type.typeArgs.map((x) => this.getBCSType(x)));
201
+ const bcsType = await this.getBCSTypeWithArgs(type, args);
202
+ this.bcsRegistry.set(type.getNormalizedSignature(), bcsType);
203
+ return bcsType;
204
+ }
205
+ async registerBCSTypes(type) {
206
+ const sig = type.getNormalizedSignature();
207
+ if (this.bcsRegistered.has(sig)) {
208
+ return;
209
+ }
210
+ this.bcsRegistered.add(sig);
211
+ const bcsType = await this.getBCSType(type);
212
+ this.bcsRegistry.set(type.getNormalizedSignature(), bcsType);
213
+ }
214
+ async decodeBCS(type, data, encoding) {
215
+ await this.registerBCSTypes(type);
216
+ if (typeof data == 'string') {
217
+ const buf = Buffer.from(data, encoding);
218
+ data = new Uint8Array(buf, buf.byteOffset, buf.byteLength);
219
+ }
220
+ const bcsType = this.bcsRegistry.get(type.getNormalizedSignature());
221
+ return bcsType?.parse(data);
222
+ }
223
+ async decodeDevInspectResult(inspectRes) {
224
+ const returnValues = [];
225
+ if (inspectRes.results != null) {
226
+ for (const r of inspectRes.results) {
227
+ if (r.returnValues) {
228
+ for (const returnValue of r.returnValues) {
229
+ const type = (0, move_1.parseMoveType)(returnValue[1]);
230
+ const bcsDecoded = await this.decodeBCS(type, new Uint8Array(returnValue[0]));
231
+ const decoded = await this.decodeType(bcsDecoded, type);
232
+ returnValues.push(decoded);
233
+ }
234
+ }
235
+ else {
236
+ returnValues.push(null);
237
+ }
238
+ }
239
+ }
240
+ return { ...inspectRes, results_decoded: returnValues };
241
+ }
242
+ }
243
+ exports.MoveCoder = MoveCoder;
244
+ const DEFAULT_ENDPOINT = 'https://api.mainnet.iota.cafe/';
245
+ const CODER_MAP = new Map();
246
+ const CHAIN_ID_CODER_MAP = new Map();
247
+ function defaultMoveCoder(endpoint = DEFAULT_ENDPOINT) {
248
+ let coder = CODER_MAP.get(endpoint);
249
+ if (!coder) {
250
+ coder = new MoveCoder(new client_1.IotaClient({ url: endpoint }));
251
+ CODER_MAP.set(endpoint, coder);
252
+ }
253
+ return coder;
254
+ }
255
+ const PROVIDER_CODER_MAP = new Map();
256
+ let DEFAULT_CHAIN_ID;
257
+ async function getMoveCoder(client) {
258
+ let coder = PROVIDER_CODER_MAP.get(client);
259
+ if (!coder) {
260
+ coder = new MoveCoder(client);
261
+ // TODO how to dedup
262
+ const id = await client.getChainIdentifier();
263
+ const defaultCoder = defaultMoveCoder();
264
+ if (!DEFAULT_CHAIN_ID) {
265
+ DEFAULT_CHAIN_ID = await defaultCoder.adapter.getChainId();
266
+ }
267
+ if (id === DEFAULT_CHAIN_ID) {
268
+ coder = defaultCoder;
269
+ }
270
+ PROVIDER_CODER_MAP.set(client, coder);
271
+ }
272
+ return coder;
273
+ }
274
+ //# sourceMappingURL=move-coder.js.map