@haneullabs/wallet-sdk 0.1.0

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 (133) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +1 -0
  3. package/dist/cjs/auto-approvals/analyzer.d.ts +71 -0
  4. package/dist/cjs/auto-approvals/analyzer.js +70 -0
  5. package/dist/cjs/auto-approvals/analyzer.js.map +7 -0
  6. package/dist/cjs/auto-approvals/index.d.ts +6 -0
  7. package/dist/cjs/auto-approvals/index.js +33 -0
  8. package/dist/cjs/auto-approvals/index.js.map +7 -0
  9. package/dist/cjs/auto-approvals/intent.d.ts +5 -0
  10. package/dist/cjs/auto-approvals/intent.js +65 -0
  11. package/dist/cjs/auto-approvals/intent.js.map +7 -0
  12. package/dist/cjs/auto-approvals/manager.d.ts +31 -0
  13. package/dist/cjs/auto-approvals/manager.js +328 -0
  14. package/dist/cjs/auto-approvals/manager.js.map +7 -0
  15. package/dist/cjs/auto-approvals/schemas/index.d.ts +4 -0
  16. package/dist/cjs/auto-approvals/schemas/index.js +28 -0
  17. package/dist/cjs/auto-approvals/schemas/index.js.map +7 -0
  18. package/dist/cjs/auto-approvals/schemas/policy.d.ts +145 -0
  19. package/dist/cjs/auto-approvals/schemas/policy.js +79 -0
  20. package/dist/cjs/auto-approvals/schemas/policy.js.map +7 -0
  21. package/dist/cjs/auto-approvals/schemas/state.d.ts +115 -0
  22. package/dist/cjs/auto-approvals/schemas/state.js +49 -0
  23. package/dist/cjs/auto-approvals/schemas/state.js.map +7 -0
  24. package/dist/cjs/index.d.ts +2 -0
  25. package/dist/cjs/index.js +20 -0
  26. package/dist/cjs/index.js.map +7 -0
  27. package/dist/cjs/package.json +5 -0
  28. package/dist/cjs/transaction-analyzer/analyzer.d.ts +34 -0
  29. package/dist/cjs/transaction-analyzer/analyzer.js +94 -0
  30. package/dist/cjs/transaction-analyzer/analyzer.js.map +7 -0
  31. package/dist/cjs/transaction-analyzer/index.d.ts +9 -0
  32. package/dist/cjs/transaction-analyzer/index.js +28 -0
  33. package/dist/cjs/transaction-analyzer/index.js.map +7 -0
  34. package/dist/cjs/transaction-analyzer/rules/accessLevel.d.ts +29 -0
  35. package/dist/cjs/transaction-analyzer/rules/accessLevel.js +106 -0
  36. package/dist/cjs/transaction-analyzer/rules/accessLevel.js.map +7 -0
  37. package/dist/cjs/transaction-analyzer/rules/coin-flows.d.ts +313 -0
  38. package/dist/cjs/transaction-analyzer/rules/coin-flows.js +179 -0
  39. package/dist/cjs/transaction-analyzer/rules/coin-flows.js.map +7 -0
  40. package/dist/cjs/transaction-analyzer/rules/coin-value.d.ts +42 -0
  41. package/dist/cjs/transaction-analyzer/rules/coin-value.js +60 -0
  42. package/dist/cjs/transaction-analyzer/rules/coin-value.js.map +7 -0
  43. package/dist/cjs/transaction-analyzer/rules/coins.d.ts +337 -0
  44. package/dist/cjs/transaction-analyzer/rules/coins.js +78 -0
  45. package/dist/cjs/transaction-analyzer/rules/coins.js.map +7 -0
  46. package/dist/cjs/transaction-analyzer/rules/commands.d.ts +366 -0
  47. package/dist/cjs/transaction-analyzer/rules/commands.js +148 -0
  48. package/dist/cjs/transaction-analyzer/rules/commands.js.map +7 -0
  49. package/dist/cjs/transaction-analyzer/rules/core.d.ts +314 -0
  50. package/dist/cjs/transaction-analyzer/rules/core.js +73 -0
  51. package/dist/cjs/transaction-analyzer/rules/core.js.map +7 -0
  52. package/dist/cjs/transaction-analyzer/rules/functions.d.ts +292 -0
  53. package/dist/cjs/transaction-analyzer/rules/functions.js +58 -0
  54. package/dist/cjs/transaction-analyzer/rules/functions.js.map +7 -0
  55. package/dist/cjs/transaction-analyzer/rules/index.d.ts +2244 -0
  56. package/dist/cjs/transaction-analyzer/rules/index.js +52 -0
  57. package/dist/cjs/transaction-analyzer/rules/index.js.map +7 -0
  58. package/dist/cjs/transaction-analyzer/rules/inputs.d.ts +313 -0
  59. package/dist/cjs/transaction-analyzer/rules/inputs.js +49 -0
  60. package/dist/cjs/transaction-analyzer/rules/inputs.js.map +7 -0
  61. package/dist/cjs/transaction-analyzer/rules/objects.d.ts +359 -0
  62. package/dist/cjs/transaction-analyzer/rules/objects.js +124 -0
  63. package/dist/cjs/transaction-analyzer/rules/objects.js.map +7 -0
  64. package/dist/cjs/util.d.ts +5 -0
  65. package/dist/cjs/util.js +17 -0
  66. package/dist/cjs/util.js.map +7 -0
  67. package/dist/esm/auto-approvals/analyzer.d.ts +71 -0
  68. package/dist/esm/auto-approvals/analyzer.js +50 -0
  69. package/dist/esm/auto-approvals/analyzer.js.map +7 -0
  70. package/dist/esm/auto-approvals/index.d.ts +6 -0
  71. package/dist/esm/auto-approvals/index.js +12 -0
  72. package/dist/esm/auto-approvals/index.js.map +7 -0
  73. package/dist/esm/auto-approvals/intent.d.ts +5 -0
  74. package/dist/esm/auto-approvals/intent.js +45 -0
  75. package/dist/esm/auto-approvals/intent.js.map +7 -0
  76. package/dist/esm/auto-approvals/manager.d.ts +31 -0
  77. package/dist/esm/auto-approvals/manager.js +308 -0
  78. package/dist/esm/auto-approvals/manager.js.map +7 -0
  79. package/dist/esm/auto-approvals/schemas/index.d.ts +4 -0
  80. package/dist/esm/auto-approvals/schemas/index.js +8 -0
  81. package/dist/esm/auto-approvals/schemas/index.js.map +7 -0
  82. package/dist/esm/auto-approvals/schemas/policy.d.ts +145 -0
  83. package/dist/esm/auto-approvals/schemas/policy.js +49 -0
  84. package/dist/esm/auto-approvals/schemas/policy.js.map +7 -0
  85. package/dist/esm/auto-approvals/schemas/state.d.ts +115 -0
  86. package/dist/esm/auto-approvals/schemas/state.js +19 -0
  87. package/dist/esm/auto-approvals/schemas/state.js.map +7 -0
  88. package/dist/esm/index.d.ts +2 -0
  89. package/dist/esm/index.js +3 -0
  90. package/dist/esm/index.js.map +7 -0
  91. package/dist/esm/package.json +5 -0
  92. package/dist/esm/transaction-analyzer/analyzer.d.ts +34 -0
  93. package/dist/esm/transaction-analyzer/analyzer.js +74 -0
  94. package/dist/esm/transaction-analyzer/analyzer.js.map +7 -0
  95. package/dist/esm/transaction-analyzer/index.d.ts +9 -0
  96. package/dist/esm/transaction-analyzer/index.js +8 -0
  97. package/dist/esm/transaction-analyzer/index.js.map +7 -0
  98. package/dist/esm/transaction-analyzer/rules/accessLevel.d.ts +29 -0
  99. package/dist/esm/transaction-analyzer/rules/accessLevel.js +86 -0
  100. package/dist/esm/transaction-analyzer/rules/accessLevel.js.map +7 -0
  101. package/dist/esm/transaction-analyzer/rules/coin-flows.d.ts +313 -0
  102. package/dist/esm/transaction-analyzer/rules/coin-flows.js +159 -0
  103. package/dist/esm/transaction-analyzer/rules/coin-flows.js.map +7 -0
  104. package/dist/esm/transaction-analyzer/rules/coin-value.d.ts +42 -0
  105. package/dist/esm/transaction-analyzer/rules/coin-value.js +40 -0
  106. package/dist/esm/transaction-analyzer/rules/coin-value.js.map +7 -0
  107. package/dist/esm/transaction-analyzer/rules/coins.d.ts +337 -0
  108. package/dist/esm/transaction-analyzer/rules/coins.js +58 -0
  109. package/dist/esm/transaction-analyzer/rules/coins.js.map +7 -0
  110. package/dist/esm/transaction-analyzer/rules/commands.d.ts +366 -0
  111. package/dist/esm/transaction-analyzer/rules/commands.js +128 -0
  112. package/dist/esm/transaction-analyzer/rules/commands.js.map +7 -0
  113. package/dist/esm/transaction-analyzer/rules/core.d.ts +314 -0
  114. package/dist/esm/transaction-analyzer/rules/core.js +53 -0
  115. package/dist/esm/transaction-analyzer/rules/core.js.map +7 -0
  116. package/dist/esm/transaction-analyzer/rules/functions.d.ts +292 -0
  117. package/dist/esm/transaction-analyzer/rules/functions.js +38 -0
  118. package/dist/esm/transaction-analyzer/rules/functions.js.map +7 -0
  119. package/dist/esm/transaction-analyzer/rules/index.d.ts +2244 -0
  120. package/dist/esm/transaction-analyzer/rules/index.js +32 -0
  121. package/dist/esm/transaction-analyzer/rules/index.js.map +7 -0
  122. package/dist/esm/transaction-analyzer/rules/inputs.d.ts +313 -0
  123. package/dist/esm/transaction-analyzer/rules/inputs.js +29 -0
  124. package/dist/esm/transaction-analyzer/rules/inputs.js.map +7 -0
  125. package/dist/esm/transaction-analyzer/rules/objects.d.ts +359 -0
  126. package/dist/esm/transaction-analyzer/rules/objects.js +104 -0
  127. package/dist/esm/transaction-analyzer/rules/objects.js.map +7 -0
  128. package/dist/esm/util.d.ts +5 -0
  129. package/dist/esm/util.js +1 -0
  130. package/dist/esm/util.js.map +7 -0
  131. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  132. package/dist/tsconfig.tsbuildinfo +1 -0
  133. package/package.json +59 -0
@@ -0,0 +1,366 @@
1
+ import type { Command } from '@haneullabs/haneul/transactions';
2
+ import type { Experimental_HaneulClientTypes } from '@haneullabs/haneul/experimental';
3
+ import type { AnalyzedCommandInput } from './inputs.js';
4
+ export type AnalyzedCommandArgument = AnalyzedCommandInput | {
5
+ $kind: 'Unknown';
6
+ accessLevel: 'read' | 'mutate' | 'transfer';
7
+ } | {
8
+ $kind: 'GasCoin';
9
+ accessLevel: 'read' | 'mutate' | 'transfer';
10
+ } | {
11
+ $kind: 'Result';
12
+ index: [number, number];
13
+ accessLevel: 'read' | 'mutate' | 'transfer';
14
+ };
15
+ export type AnalyzedCommand = {
16
+ $kind: 'MoveCall';
17
+ index: number;
18
+ arguments: AnalyzedCommandArgument[];
19
+ function: Experimental_HaneulClientTypes.FunctionResponse;
20
+ command: Extract<Command, {
21
+ $kind: 'MoveCall';
22
+ }>['MoveCall'];
23
+ } | {
24
+ $kind: 'TransferObjects';
25
+ index: number;
26
+ objects: AnalyzedCommandArgument[];
27
+ address: AnalyzedCommandArgument;
28
+ command: Extract<Command, {
29
+ $kind: 'TransferObjects';
30
+ }>['TransferObjects'];
31
+ } | {
32
+ $kind: 'MergeCoins';
33
+ index: number;
34
+ sources: AnalyzedCommandArgument[];
35
+ destination: AnalyzedCommandArgument;
36
+ command: Extract<Command, {
37
+ $kind: 'MergeCoins';
38
+ }>['MergeCoins'];
39
+ } | {
40
+ $kind: 'SplitCoins';
41
+ index: number;
42
+ coin: AnalyzedCommandArgument;
43
+ amounts: AnalyzedCommandArgument[];
44
+ command: Extract<Command, {
45
+ $kind: 'SplitCoins';
46
+ }>['SplitCoins'];
47
+ } | {
48
+ $kind: 'MakeMoveVec';
49
+ index: number;
50
+ elements: AnalyzedCommandArgument[];
51
+ command: Extract<Command, {
52
+ $kind: 'MakeMoveVec';
53
+ }>['MakeMoveVec'];
54
+ } | {
55
+ $kind: 'Upgrade';
56
+ index: number;
57
+ ticket: AnalyzedCommandArgument;
58
+ command: Extract<Command, {
59
+ $kind: 'Upgrade';
60
+ }>['Upgrade'];
61
+ } | {
62
+ $kind: 'Publish';
63
+ index: number;
64
+ command: Extract<Command, {
65
+ $kind: 'Publish';
66
+ }>['Publish'];
67
+ } | {
68
+ $kind: 'Unknown';
69
+ index: number;
70
+ command: Extract<Command, {
71
+ $kind: 'Unknown';
72
+ }>['Unknown'];
73
+ };
74
+ export declare const commands: import("../analyzer.js").Analyzer<AnalyzedCommand[], {
75
+ client: import("@haneullabs/haneul/experimental").Experimental_BaseClient & {
76
+ core: import("@haneullabs/haneul/experimental").Experimental_CoreClient;
77
+ };
78
+ }, {
79
+ data: {
80
+ version: 2;
81
+ sender?: string | null | undefined;
82
+ expiration?: import("@haneullabs/bcs").EnumOutputShapeWithKeys<{
83
+ None: true;
84
+ Epoch: string | number;
85
+ }, "None" | "Epoch"> | null | undefined;
86
+ gasData: {
87
+ budget: string | number | null;
88
+ price: string | number | null;
89
+ owner: string | null;
90
+ payment: {
91
+ objectId: string;
92
+ version: string | number;
93
+ digest: string;
94
+ }[] | null;
95
+ };
96
+ inputs: import("@haneullabs/bcs").EnumOutputShapeWithKeys<{
97
+ Object: import("@haneullabs/bcs").EnumOutputShapeWithKeys<{
98
+ ImmOrOwnedObject: {
99
+ objectId: string;
100
+ version: string | number;
101
+ digest: string;
102
+ };
103
+ SharedObject: {
104
+ objectId: string;
105
+ initialSharedVersion: string | number;
106
+ mutable: boolean;
107
+ };
108
+ Receiving: {
109
+ objectId: string;
110
+ version: string | number;
111
+ digest: string;
112
+ };
113
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
114
+ Pure: {
115
+ bytes: string;
116
+ };
117
+ UnresolvedPure: {
118
+ value: unknown;
119
+ };
120
+ UnresolvedObject: {
121
+ objectId: string;
122
+ version?: string | number | null | undefined;
123
+ digest?: string | null | undefined;
124
+ initialSharedVersion?: string | number | null | undefined;
125
+ mutable?: boolean | null | undefined;
126
+ };
127
+ }, "Pure" | "Object" | "UnresolvedPure" | "UnresolvedObject">[];
128
+ commands: import("@haneullabs/bcs").EnumOutputShapeWithKeys<{
129
+ MoveCall: {
130
+ package: string;
131
+ module: string;
132
+ function: string;
133
+ typeArguments: string[];
134
+ arguments: ({
135
+ $kind: "GasCoin";
136
+ GasCoin: true;
137
+ } | {
138
+ $kind: "Input";
139
+ Input: number;
140
+ type?: "pure";
141
+ } | {
142
+ $kind: "Input";
143
+ Input: number;
144
+ type?: "object";
145
+ } | {
146
+ $kind: "Result";
147
+ Result: number;
148
+ } | {
149
+ $kind: "NestedResult";
150
+ NestedResult: [number, number];
151
+ })[];
152
+ _argumentTypes?: {
153
+ ref: "&" | "&mut" | null;
154
+ body: import("@haneullabs/haneul/transactions").OpenMoveTypeSignatureBody;
155
+ }[] | null | undefined;
156
+ };
157
+ TransferObjects: {
158
+ objects: ({
159
+ $kind: "GasCoin";
160
+ GasCoin: true;
161
+ } | {
162
+ $kind: "Input";
163
+ Input: number;
164
+ type?: "pure";
165
+ } | {
166
+ $kind: "Input";
167
+ Input: number;
168
+ type?: "object";
169
+ } | {
170
+ $kind: "Result";
171
+ Result: number;
172
+ } | {
173
+ $kind: "NestedResult";
174
+ NestedResult: [number, number];
175
+ })[];
176
+ address: {
177
+ $kind: "GasCoin";
178
+ GasCoin: true;
179
+ } | {
180
+ $kind: "Input";
181
+ Input: number;
182
+ type?: "pure";
183
+ } | {
184
+ $kind: "Input";
185
+ Input: number;
186
+ type?: "object";
187
+ } | {
188
+ $kind: "Result";
189
+ Result: number;
190
+ } | {
191
+ $kind: "NestedResult";
192
+ NestedResult: [number, number];
193
+ };
194
+ };
195
+ SplitCoins: {
196
+ coin: {
197
+ $kind: "GasCoin";
198
+ GasCoin: true;
199
+ } | {
200
+ $kind: "Input";
201
+ Input: number;
202
+ type?: "pure";
203
+ } | {
204
+ $kind: "Input";
205
+ Input: number;
206
+ type?: "object";
207
+ } | {
208
+ $kind: "Result";
209
+ Result: number;
210
+ } | {
211
+ $kind: "NestedResult";
212
+ NestedResult: [number, number];
213
+ };
214
+ amounts: ({
215
+ $kind: "GasCoin";
216
+ GasCoin: true;
217
+ } | {
218
+ $kind: "Input";
219
+ Input: number;
220
+ type?: "pure";
221
+ } | {
222
+ $kind: "Input";
223
+ Input: number;
224
+ type?: "object";
225
+ } | {
226
+ $kind: "Result";
227
+ Result: number;
228
+ } | {
229
+ $kind: "NestedResult";
230
+ NestedResult: [number, number];
231
+ })[];
232
+ };
233
+ MergeCoins: {
234
+ destination: {
235
+ $kind: "GasCoin";
236
+ GasCoin: true;
237
+ } | {
238
+ $kind: "Input";
239
+ Input: number;
240
+ type?: "pure";
241
+ } | {
242
+ $kind: "Input";
243
+ Input: number;
244
+ type?: "object";
245
+ } | {
246
+ $kind: "Result";
247
+ Result: number;
248
+ } | {
249
+ $kind: "NestedResult";
250
+ NestedResult: [number, number];
251
+ };
252
+ sources: ({
253
+ $kind: "GasCoin";
254
+ GasCoin: true;
255
+ } | {
256
+ $kind: "Input";
257
+ Input: number;
258
+ type?: "pure";
259
+ } | {
260
+ $kind: "Input";
261
+ Input: number;
262
+ type?: "object";
263
+ } | {
264
+ $kind: "Result";
265
+ Result: number;
266
+ } | {
267
+ $kind: "NestedResult";
268
+ NestedResult: [number, number];
269
+ })[];
270
+ };
271
+ Publish: {
272
+ modules: string[];
273
+ dependencies: string[];
274
+ };
275
+ MakeMoveVec: {
276
+ type: string | null;
277
+ elements: ({
278
+ $kind: "GasCoin";
279
+ GasCoin: true;
280
+ } | {
281
+ $kind: "Input";
282
+ Input: number;
283
+ type?: "pure";
284
+ } | {
285
+ $kind: "Input";
286
+ Input: number;
287
+ type?: "object";
288
+ } | {
289
+ $kind: "Result";
290
+ Result: number;
291
+ } | {
292
+ $kind: "NestedResult";
293
+ NestedResult: [number, number];
294
+ })[];
295
+ };
296
+ Upgrade: {
297
+ modules: string[];
298
+ dependencies: string[];
299
+ package: string;
300
+ ticket: {
301
+ $kind: "GasCoin";
302
+ GasCoin: true;
303
+ } | {
304
+ $kind: "Input";
305
+ Input: number;
306
+ type?: "pure";
307
+ } | {
308
+ $kind: "Input";
309
+ Input: number;
310
+ type?: "object";
311
+ } | {
312
+ $kind: "Result";
313
+ Result: number;
314
+ } | {
315
+ $kind: "NestedResult";
316
+ NestedResult: [number, number];
317
+ };
318
+ };
319
+ $Intent: {
320
+ name: string;
321
+ inputs: {
322
+ [x: string]: {
323
+ $kind: "GasCoin";
324
+ GasCoin: true;
325
+ } | {
326
+ $kind: "Input";
327
+ Input: number;
328
+ type?: "pure";
329
+ } | {
330
+ $kind: "Input";
331
+ Input: number;
332
+ type?: "object";
333
+ } | {
334
+ $kind: "Result";
335
+ Result: number;
336
+ } | {
337
+ $kind: "NestedResult";
338
+ NestedResult: [number, number];
339
+ } | ({
340
+ $kind: "GasCoin";
341
+ GasCoin: true;
342
+ } | {
343
+ $kind: "Input";
344
+ Input: number;
345
+ type?: "pure";
346
+ } | {
347
+ $kind: "Input";
348
+ Input: number;
349
+ type?: "object";
350
+ } | {
351
+ $kind: "Result";
352
+ Result: number;
353
+ } | {
354
+ $kind: "NestedResult";
355
+ NestedResult: [number, number];
356
+ })[];
357
+ };
358
+ data: {
359
+ [x: string]: unknown;
360
+ };
361
+ };
362
+ }, "MoveCall" | "TransferObjects" | "SplitCoins" | "MergeCoins" | "Publish" | "MakeMoveVec" | "Upgrade" | "$Intent">[];
363
+ };
364
+ moveFunctions: Experimental_HaneulClientTypes.FunctionResponse[];
365
+ inputs: AnalyzedCommandInput[];
366
+ }>;
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var commands_exports = {};
20
+ __export(commands_exports, {
21
+ commands: () => commands
22
+ });
23
+ module.exports = __toCommonJS(commands_exports);
24
+ var import_inputs = require("./inputs.js");
25
+ var import_analyzer = require("../analyzer.js");
26
+ var import_core = require("./core.js");
27
+ var import_functions = require("./functions.js");
28
+ const commands = (0, import_analyzer.createAnalyzer)({
29
+ dependencies: {
30
+ data: import_core.data,
31
+ moveFunctions: import_functions.moveFunctions,
32
+ inputs: import_inputs.inputs
33
+ },
34
+ analyze: () => ({ data: data2, moveFunctions: moveFunctions2, inputs: inputs2 }) => {
35
+ const issues = [];
36
+ const commands2 = [];
37
+ const mapInput = (arg, accessLevel = "transfer") => {
38
+ switch (arg.$kind) {
39
+ case "Input":
40
+ break;
41
+ case "GasCoin":
42
+ return { $kind: "GasCoin", accessLevel };
43
+ case "Result":
44
+ return { $kind: "Result", index: [arg.Result, 0], accessLevel };
45
+ case "NestedResult":
46
+ return { $kind: "Result", index: arg.NestedResult, accessLevel };
47
+ default:
48
+ issues.push({ message: `Unexpected input type: ${JSON.stringify(arg)}` });
49
+ return { $kind: "Unknown", accessLevel };
50
+ }
51
+ const input = inputs2[arg.Input];
52
+ if (!input) {
53
+ issues.push({ message: `Missing input for index ${arg.Input}` });
54
+ return { $kind: "Unknown", accessLevel };
55
+ }
56
+ return { ...input, accessLevel };
57
+ };
58
+ for (let index = 0; index < data2.commands.length; index++) {
59
+ const command = data2.commands[index];
60
+ switch (command.$kind) {
61
+ case "$Intent":
62
+ issues.push({ message: `Unexpected $Intent command: ${JSON.stringify(command)}` });
63
+ break;
64
+ case "MakeMoveVec":
65
+ commands2.push({
66
+ $kind: "MakeMoveVec",
67
+ index,
68
+ elements: command.MakeMoveVec.elements.map((el) => mapInput(el)),
69
+ command: command.MakeMoveVec
70
+ });
71
+ break;
72
+ case "TransferObjects":
73
+ commands2.push({
74
+ $kind: "TransferObjects",
75
+ index,
76
+ address: mapInput(command.TransferObjects.address),
77
+ objects: command.TransferObjects.objects.map((obj) => mapInput(obj)),
78
+ command: command.TransferObjects
79
+ });
80
+ break;
81
+ case "MergeCoins":
82
+ commands2.push({
83
+ $kind: "MergeCoins",
84
+ index,
85
+ sources: command.MergeCoins.sources.map((src) => mapInput(src)),
86
+ destination: mapInput(command.MergeCoins.destination, "mutate"),
87
+ command: command.MergeCoins
88
+ });
89
+ break;
90
+ case "SplitCoins":
91
+ commands2.push({
92
+ $kind: "SplitCoins",
93
+ index,
94
+ coin: mapInput(command.SplitCoins.coin, "mutate"),
95
+ amounts: command.SplitCoins.amounts.map((amt) => mapInput(amt, "transfer")),
96
+ command: command.SplitCoins
97
+ });
98
+ break;
99
+ case "MoveCall": {
100
+ const func = moveFunctions2.find(
101
+ (fn) => fn.packageId === command.MoveCall.package && fn.moduleName === command.MoveCall.module && fn.name === command.MoveCall.function
102
+ );
103
+ commands2.push({
104
+ $kind: "MoveCall",
105
+ index,
106
+ arguments: command.MoveCall.arguments.map((arg, i) => {
107
+ let accessLevel = "transfer";
108
+ switch (func.parameters[i].reference) {
109
+ case "mutable":
110
+ accessLevel = "mutate";
111
+ break;
112
+ case "immutable":
113
+ accessLevel = "read";
114
+ break;
115
+ }
116
+ return mapInput(arg, accessLevel);
117
+ }),
118
+ command: command.MoveCall,
119
+ function: func
120
+ });
121
+ break;
122
+ }
123
+ case "Publish":
124
+ commands2.push({
125
+ $kind: "Publish",
126
+ index,
127
+ command: command.Publish
128
+ });
129
+ break;
130
+ case "Upgrade":
131
+ commands2.push({
132
+ $kind: "Upgrade",
133
+ index,
134
+ ticket: mapInput(command.Upgrade.ticket),
135
+ command: command.Upgrade
136
+ });
137
+ break;
138
+ default:
139
+ throw new Error("Unknown command type: " + command.$kind);
140
+ }
141
+ }
142
+ if (issues.length) {
143
+ return { issues };
144
+ }
145
+ return { result: commands2 };
146
+ }
147
+ });
148
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/transaction-analyzer/rules/commands.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Argument, Command } from '@haneullabs/haneul/transactions';\nimport type { Experimental_HaneulClientTypes } from '@haneullabs/haneul/experimental';\nimport { inputs } from './inputs.js';\nimport type { AnalyzedCommandInput } from './inputs.js';\nimport type { TransactionAnalysisIssue } from '../analyzer.js';\nimport { createAnalyzer } from '../analyzer.js';\nimport { data } from './core.js';\nimport { moveFunctions } from './functions.js';\n\nexport type AnalyzedCommandArgument =\n\t| AnalyzedCommandInput\n\t| {\n\t\t\t$kind: 'Unknown';\n\t\t\taccessLevel: 'read' | 'mutate' | 'transfer';\n\t }\n\t| {\n\t\t\t$kind: 'GasCoin';\n\t\t\taccessLevel: 'read' | 'mutate' | 'transfer';\n\t }\n\t| {\n\t\t\t$kind: 'Result';\n\t\t\tindex: [number, number];\n\t\t\taccessLevel: 'read' | 'mutate' | 'transfer';\n\t };\n\nexport type AnalyzedCommand =\n\t| {\n\t\t\t$kind: 'MoveCall';\n\t\t\tindex: number;\n\t\t\targuments: AnalyzedCommandArgument[];\n\t\t\tfunction: Experimental_HaneulClientTypes.FunctionResponse;\n\t\t\tcommand: Extract<Command, { $kind: 'MoveCall' }>['MoveCall'];\n\t }\n\t| {\n\t\t\t$kind: 'TransferObjects';\n\t\t\tindex: number;\n\t\t\tobjects: AnalyzedCommandArgument[];\n\t\t\taddress: AnalyzedCommandArgument;\n\t\t\tcommand: Extract<Command, { $kind: 'TransferObjects' }>['TransferObjects'];\n\t }\n\t| {\n\t\t\t$kind: 'MergeCoins';\n\t\t\tindex: number;\n\t\t\tsources: AnalyzedCommandArgument[];\n\t\t\tdestination: AnalyzedCommandArgument;\n\t\t\tcommand: Extract<Command, { $kind: 'MergeCoins' }>['MergeCoins'];\n\t }\n\t| {\n\t\t\t$kind: 'SplitCoins';\n\t\t\tindex: number;\n\t\t\tcoin: AnalyzedCommandArgument;\n\t\t\tamounts: AnalyzedCommandArgument[];\n\t\t\tcommand: Extract<Command, { $kind: 'SplitCoins' }>['SplitCoins'];\n\t }\n\t| {\n\t\t\t$kind: 'MakeMoveVec';\n\t\t\tindex: number;\n\t\t\telements: AnalyzedCommandArgument[];\n\t\t\tcommand: Extract<Command, { $kind: 'MakeMoveVec' }>['MakeMoveVec'];\n\t }\n\t| {\n\t\t\t$kind: 'Upgrade';\n\t\t\tindex: number;\n\t\t\tticket: AnalyzedCommandArgument;\n\t\t\tcommand: Extract<Command, { $kind: 'Upgrade' }>['Upgrade'];\n\t }\n\t| {\n\t\t\t$kind: 'Publish';\n\t\t\tindex: number;\n\t\t\tcommand: Extract<Command, { $kind: 'Publish' }>['Publish'];\n\t }\n\t| {\n\t\t\t$kind: 'Unknown';\n\t\t\tindex: number;\n\t\t\tcommand: Extract<Command, { $kind: 'Unknown' }>['Unknown'];\n\t };\n\nexport const commands = createAnalyzer({\n\tdependencies: {\n\t\tdata,\n\t\tmoveFunctions,\n\t\tinputs,\n\t},\n\tanalyze:\n\t\t() =>\n\t\t({ data, moveFunctions, inputs }) => {\n\t\t\tconst issues: TransactionAnalysisIssue[] = [];\n\t\t\tconst commands: AnalyzedCommand[] = [];\n\n\t\t\tconst mapInput = (\n\t\t\t\targ: Argument,\n\t\t\t\taccessLevel: 'read' | 'mutate' | 'transfer' = 'transfer',\n\t\t\t): AnalyzedCommandArgument => {\n\t\t\t\tswitch (arg.$kind) {\n\t\t\t\t\tcase 'Input':\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'GasCoin':\n\t\t\t\t\t\treturn { $kind: 'GasCoin', accessLevel };\n\t\t\t\t\tcase 'Result':\n\t\t\t\t\t\treturn { $kind: 'Result', index: [arg.Result, 0], accessLevel };\n\t\t\t\t\tcase 'NestedResult':\n\t\t\t\t\t\treturn { $kind: 'Result', index: arg.NestedResult, accessLevel };\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tissues.push({ message: `Unexpected input type: ${JSON.stringify(arg)}` });\n\t\t\t\t\t\treturn { $kind: 'Unknown', accessLevel };\n\t\t\t\t}\n\n\t\t\t\tconst input = inputs[arg.Input];\n\n\t\t\t\tif (!input) {\n\t\t\t\t\tissues.push({ message: `Missing input for index ${arg.Input}` });\n\t\t\t\t\treturn { $kind: 'Unknown', accessLevel };\n\t\t\t\t}\n\n\t\t\t\treturn { ...input, accessLevel };\n\t\t\t};\n\n\t\t\tfor (let index = 0; index < data.commands.length; index++) {\n\t\t\t\tconst command = data.commands[index];\n\t\t\t\tswitch (command.$kind) {\n\t\t\t\t\tcase '$Intent':\n\t\t\t\t\t\tissues.push({ message: `Unexpected $Intent command: ${JSON.stringify(command)}` });\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'MakeMoveVec':\n\t\t\t\t\t\tcommands.push({\n\t\t\t\t\t\t\t$kind: 'MakeMoveVec',\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\telements: command.MakeMoveVec.elements.map((el) => mapInput(el)),\n\t\t\t\t\t\t\tcommand: command.MakeMoveVec,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'TransferObjects':\n\t\t\t\t\t\tcommands.push({\n\t\t\t\t\t\t\t$kind: 'TransferObjects',\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\taddress: mapInput(command.TransferObjects.address),\n\t\t\t\t\t\t\tobjects: command.TransferObjects.objects.map((obj) => mapInput(obj)),\n\t\t\t\t\t\t\tcommand: command.TransferObjects,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'MergeCoins':\n\t\t\t\t\t\tcommands.push({\n\t\t\t\t\t\t\t$kind: 'MergeCoins',\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\tsources: command.MergeCoins.sources.map((src) => mapInput(src)),\n\t\t\t\t\t\t\tdestination: mapInput(command.MergeCoins.destination, 'mutate'),\n\t\t\t\t\t\t\tcommand: command.MergeCoins,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'SplitCoins':\n\t\t\t\t\t\tcommands.push({\n\t\t\t\t\t\t\t$kind: 'SplitCoins',\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\tcoin: mapInput(command.SplitCoins.coin, 'mutate'),\n\t\t\t\t\t\t\tamounts: command.SplitCoins.amounts.map((amt) => mapInput(amt, 'transfer')),\n\t\t\t\t\t\t\tcommand: command.SplitCoins,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'MoveCall': {\n\t\t\t\t\t\tconst func = moveFunctions.find(\n\t\t\t\t\t\t\t(fn) =>\n\t\t\t\t\t\t\t\tfn.packageId === command.MoveCall.package &&\n\t\t\t\t\t\t\t\tfn.moduleName === command.MoveCall.module &&\n\t\t\t\t\t\t\t\tfn.name === command.MoveCall.function,\n\t\t\t\t\t\t)!;\n\t\t\t\t\t\tcommands.push({\n\t\t\t\t\t\t\t$kind: 'MoveCall',\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\targuments: command.MoveCall.arguments.map((arg, i) => {\n\t\t\t\t\t\t\t\tlet accessLevel: 'read' | 'mutate' | 'transfer' = 'transfer';\n\t\t\t\t\t\t\t\tswitch (func.parameters[i].reference) {\n\t\t\t\t\t\t\t\t\tcase 'mutable':\n\t\t\t\t\t\t\t\t\t\taccessLevel = 'mutate';\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 'immutable':\n\t\t\t\t\t\t\t\t\t\taccessLevel = 'read';\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn mapInput(arg, accessLevel);\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tcommand: command.MoveCall,\n\t\t\t\t\t\t\tfunction: func,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase 'Publish':\n\t\t\t\t\t\tcommands.push({\n\t\t\t\t\t\t\t$kind: 'Publish',\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\tcommand: command.Publish,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Upgrade':\n\t\t\t\t\t\tcommands.push({\n\t\t\t\t\t\t\t$kind: 'Upgrade',\n\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\tticket: mapInput(command.Upgrade.ticket),\n\t\t\t\t\t\t\tcommand: command.Upgrade,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error('Unknown command type: ' + (command as { $kind: string }).$kind);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (issues.length) {\n\t\t\t\treturn { issues };\n\t\t\t}\n\n\t\t\treturn { result: commands };\n\t\t},\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["data", "moveFunctions", "inputs", "commands"]
7
+ }