@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,359 @@
1
+ import type { ClientWithCoreApi, Experimental_HaneulClientTypes } from '@haneullabs/haneul/experimental';
2
+ export type AnalyzedObject = Experimental_HaneulClientTypes.ObjectResponse & {
3
+ ownerAddress: string | null;
4
+ };
5
+ export declare const objectIds: import("../analyzer.js").Analyzer<string[], {
6
+ client: ClientWithCoreApi;
7
+ }, {
8
+ data: {
9
+ version: 2;
10
+ sender?: string | null | undefined;
11
+ expiration?: import("@haneullabs/bcs").EnumOutputShapeWithKeys<{
12
+ None: true;
13
+ Epoch: string | number;
14
+ }, "None" | "Epoch"> | null | undefined;
15
+ gasData: {
16
+ budget: string | number | null;
17
+ price: string | number | null;
18
+ owner: string | null;
19
+ payment: {
20
+ objectId: string;
21
+ version: string | number;
22
+ digest: string;
23
+ }[] | null;
24
+ };
25
+ inputs: import("@haneullabs/bcs").EnumOutputShapeWithKeys<{
26
+ Object: import("@haneullabs/bcs").EnumOutputShapeWithKeys<{
27
+ ImmOrOwnedObject: {
28
+ objectId: string;
29
+ version: string | number;
30
+ digest: string;
31
+ };
32
+ SharedObject: {
33
+ objectId: string;
34
+ initialSharedVersion: string | number;
35
+ mutable: boolean;
36
+ };
37
+ Receiving: {
38
+ objectId: string;
39
+ version: string | number;
40
+ digest: string;
41
+ };
42
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
43
+ Pure: {
44
+ bytes: string;
45
+ };
46
+ UnresolvedPure: {
47
+ value: unknown;
48
+ };
49
+ UnresolvedObject: {
50
+ objectId: string;
51
+ version?: string | number | null | undefined;
52
+ digest?: string | null | undefined;
53
+ initialSharedVersion?: string | number | null | undefined;
54
+ mutable?: boolean | null | undefined;
55
+ };
56
+ }, "Pure" | "Object" | "UnresolvedPure" | "UnresolvedObject">[];
57
+ commands: import("@haneullabs/bcs").EnumOutputShapeWithKeys<{
58
+ MoveCall: {
59
+ package: string;
60
+ module: string;
61
+ function: string;
62
+ typeArguments: string[];
63
+ arguments: ({
64
+ $kind: "GasCoin";
65
+ GasCoin: true;
66
+ } | {
67
+ $kind: "Input";
68
+ Input: number;
69
+ type?: "pure";
70
+ } | {
71
+ $kind: "Input";
72
+ Input: number;
73
+ type?: "object";
74
+ } | {
75
+ $kind: "Result";
76
+ Result: number;
77
+ } | {
78
+ $kind: "NestedResult";
79
+ NestedResult: [number, number];
80
+ })[];
81
+ _argumentTypes?: {
82
+ ref: "&" | "&mut" | null;
83
+ body: import("@haneullabs/haneul/dist/cjs/transactions/index.js").OpenMoveTypeSignatureBody;
84
+ }[] | null | undefined;
85
+ };
86
+ TransferObjects: {
87
+ objects: ({
88
+ $kind: "GasCoin";
89
+ GasCoin: true;
90
+ } | {
91
+ $kind: "Input";
92
+ Input: number;
93
+ type?: "pure";
94
+ } | {
95
+ $kind: "Input";
96
+ Input: number;
97
+ type?: "object";
98
+ } | {
99
+ $kind: "Result";
100
+ Result: number;
101
+ } | {
102
+ $kind: "NestedResult";
103
+ NestedResult: [number, number];
104
+ })[];
105
+ address: {
106
+ $kind: "GasCoin";
107
+ GasCoin: true;
108
+ } | {
109
+ $kind: "Input";
110
+ Input: number;
111
+ type?: "pure";
112
+ } | {
113
+ $kind: "Input";
114
+ Input: number;
115
+ type?: "object";
116
+ } | {
117
+ $kind: "Result";
118
+ Result: number;
119
+ } | {
120
+ $kind: "NestedResult";
121
+ NestedResult: [number, number];
122
+ };
123
+ };
124
+ SplitCoins: {
125
+ coin: {
126
+ $kind: "GasCoin";
127
+ GasCoin: true;
128
+ } | {
129
+ $kind: "Input";
130
+ Input: number;
131
+ type?: "pure";
132
+ } | {
133
+ $kind: "Input";
134
+ Input: number;
135
+ type?: "object";
136
+ } | {
137
+ $kind: "Result";
138
+ Result: number;
139
+ } | {
140
+ $kind: "NestedResult";
141
+ NestedResult: [number, number];
142
+ };
143
+ amounts: ({
144
+ $kind: "GasCoin";
145
+ GasCoin: true;
146
+ } | {
147
+ $kind: "Input";
148
+ Input: number;
149
+ type?: "pure";
150
+ } | {
151
+ $kind: "Input";
152
+ Input: number;
153
+ type?: "object";
154
+ } | {
155
+ $kind: "Result";
156
+ Result: number;
157
+ } | {
158
+ $kind: "NestedResult";
159
+ NestedResult: [number, number];
160
+ })[];
161
+ };
162
+ MergeCoins: {
163
+ destination: {
164
+ $kind: "GasCoin";
165
+ GasCoin: true;
166
+ } | {
167
+ $kind: "Input";
168
+ Input: number;
169
+ type?: "pure";
170
+ } | {
171
+ $kind: "Input";
172
+ Input: number;
173
+ type?: "object";
174
+ } | {
175
+ $kind: "Result";
176
+ Result: number;
177
+ } | {
178
+ $kind: "NestedResult";
179
+ NestedResult: [number, number];
180
+ };
181
+ sources: ({
182
+ $kind: "GasCoin";
183
+ GasCoin: true;
184
+ } | {
185
+ $kind: "Input";
186
+ Input: number;
187
+ type?: "pure";
188
+ } | {
189
+ $kind: "Input";
190
+ Input: number;
191
+ type?: "object";
192
+ } | {
193
+ $kind: "Result";
194
+ Result: number;
195
+ } | {
196
+ $kind: "NestedResult";
197
+ NestedResult: [number, number];
198
+ })[];
199
+ };
200
+ Publish: {
201
+ modules: string[];
202
+ dependencies: string[];
203
+ };
204
+ MakeMoveVec: {
205
+ type: string | null;
206
+ elements: ({
207
+ $kind: "GasCoin";
208
+ GasCoin: true;
209
+ } | {
210
+ $kind: "Input";
211
+ Input: number;
212
+ type?: "pure";
213
+ } | {
214
+ $kind: "Input";
215
+ Input: number;
216
+ type?: "object";
217
+ } | {
218
+ $kind: "Result";
219
+ Result: number;
220
+ } | {
221
+ $kind: "NestedResult";
222
+ NestedResult: [number, number];
223
+ })[];
224
+ };
225
+ Upgrade: {
226
+ modules: string[];
227
+ dependencies: string[];
228
+ package: string;
229
+ ticket: {
230
+ $kind: "GasCoin";
231
+ GasCoin: true;
232
+ } | {
233
+ $kind: "Input";
234
+ Input: number;
235
+ type?: "pure";
236
+ } | {
237
+ $kind: "Input";
238
+ Input: number;
239
+ type?: "object";
240
+ } | {
241
+ $kind: "Result";
242
+ Result: number;
243
+ } | {
244
+ $kind: "NestedResult";
245
+ NestedResult: [number, number];
246
+ };
247
+ };
248
+ $Intent: {
249
+ name: string;
250
+ inputs: {
251
+ [x: string]: {
252
+ $kind: "GasCoin";
253
+ GasCoin: true;
254
+ } | {
255
+ $kind: "Input";
256
+ Input: number;
257
+ type?: "pure";
258
+ } | {
259
+ $kind: "Input";
260
+ Input: number;
261
+ type?: "object";
262
+ } | {
263
+ $kind: "Result";
264
+ Result: number;
265
+ } | {
266
+ $kind: "NestedResult";
267
+ NestedResult: [number, number];
268
+ } | ({
269
+ $kind: "GasCoin";
270
+ GasCoin: true;
271
+ } | {
272
+ $kind: "Input";
273
+ Input: number;
274
+ type?: "pure";
275
+ } | {
276
+ $kind: "Input";
277
+ Input: number;
278
+ type?: "object";
279
+ } | {
280
+ $kind: "Result";
281
+ Result: number;
282
+ } | {
283
+ $kind: "NestedResult";
284
+ NestedResult: [number, number];
285
+ })[];
286
+ };
287
+ data: {
288
+ [x: string]: unknown;
289
+ };
290
+ };
291
+ }, "MoveCall" | "TransferObjects" | "SplitCoins" | "MergeCoins" | "Publish" | "MakeMoveVec" | "Upgrade" | "$Intent">[];
292
+ };
293
+ }>;
294
+ export declare const objects: import("../analyzer.js").Analyzer<{
295
+ ownerAddress: string | null;
296
+ id: string;
297
+ version: string;
298
+ digest: string;
299
+ owner: Experimental_HaneulClientTypes.ObjectOwner;
300
+ type: string;
301
+ content: PromiseLike<Uint8Array>;
302
+ previousTransaction: string | null;
303
+ }[], {
304
+ client: import("@haneullabs/haneul/experimental").Experimental_BaseClient & {
305
+ core: import("@haneullabs/haneul/experimental").Experimental_CoreClient;
306
+ };
307
+ }, {
308
+ objectIds: string[];
309
+ }>;
310
+ export declare const ownedObjects: import("../analyzer.js").Analyzer<{
311
+ ownerAddress: string | null;
312
+ id: string;
313
+ version: string;
314
+ digest: string;
315
+ owner: Experimental_HaneulClientTypes.ObjectOwner;
316
+ type: string;
317
+ content: PromiseLike<Uint8Array>;
318
+ previousTransaction: string | null;
319
+ }[], {
320
+ client: import("@haneullabs/haneul/experimental").Experimental_BaseClient & {
321
+ core: import("@haneullabs/haneul/experimental").Experimental_CoreClient;
322
+ };
323
+ }, {
324
+ objects: {
325
+ ownerAddress: string | null;
326
+ id: string;
327
+ version: string;
328
+ digest: string;
329
+ owner: Experimental_HaneulClientTypes.ObjectOwner;
330
+ type: string;
331
+ content: PromiseLike<Uint8Array>;
332
+ previousTransaction: string | null;
333
+ }[];
334
+ }>;
335
+ export declare const objectsById: import("../analyzer.js").Analyzer<Map<string, {
336
+ ownerAddress: string | null;
337
+ id: string;
338
+ version: string;
339
+ digest: string;
340
+ owner: Experimental_HaneulClientTypes.ObjectOwner;
341
+ type: string;
342
+ content: PromiseLike<Uint8Array>;
343
+ previousTransaction: string | null;
344
+ }>, {
345
+ client: import("@haneullabs/haneul/experimental").Experimental_BaseClient & {
346
+ core: import("@haneullabs/haneul/experimental").Experimental_CoreClient;
347
+ };
348
+ }, {
349
+ objects: {
350
+ ownerAddress: string | null;
351
+ id: string;
352
+ version: string;
353
+ digest: string;
354
+ owner: Experimental_HaneulClientTypes.ObjectOwner;
355
+ type: string;
356
+ content: PromiseLike<Uint8Array>;
357
+ previousTransaction: string | null;
358
+ }[];
359
+ }>;
@@ -0,0 +1,104 @@
1
+ import { createAnalyzer } from "../analyzer.js";
2
+ import { data } from "./core.js";
3
+ const objectIds = createAnalyzer({
4
+ dependencies: { data },
5
+ analyze: () => ({ data: data2 }) => {
6
+ const issues = [];
7
+ const inputs = data2.inputs.filter((input) => {
8
+ switch (input.$kind) {
9
+ case "UnresolvedObject":
10
+ case "UnresolvedPure":
11
+ issues.push({ message: `Unexpected unresolved input: ${JSON.stringify(input)}` });
12
+ return false;
13
+ case "Pure":
14
+ return false;
15
+ case "Object":
16
+ return true;
17
+ default:
18
+ issues.push({ message: `Unknown input type: ${JSON.stringify(input)}` });
19
+ return false;
20
+ }
21
+ }).map((input) => {
22
+ switch (input.Object.$kind) {
23
+ case "ImmOrOwnedObject":
24
+ return input.Object.ImmOrOwnedObject.objectId;
25
+ case "SharedObject":
26
+ return input.Object.SharedObject.objectId;
27
+ case "Receiving":
28
+ return input.Object.Receiving.objectId;
29
+ default:
30
+ throw new Error(`Unknown object type: ${JSON.stringify(input)}`);
31
+ }
32
+ });
33
+ if (issues.length) {
34
+ return { issues };
35
+ }
36
+ const gasObjects = data2.gasData.payment?.map((obj) => obj.objectId) || [];
37
+ return {
38
+ result: Array.from(/* @__PURE__ */ new Set([...inputs, ...gasObjects]))
39
+ };
40
+ }
41
+ });
42
+ const objects = createAnalyzer({
43
+ cacheKey: "objects@1.0.0",
44
+ dependencies: { objectIds },
45
+ analyze: ({ client }) => async ({ objectIds: objectIds2 }) => {
46
+ const { objects: objects2 } = await client.core.getObjects({
47
+ objectIds: objectIds2
48
+ });
49
+ const issues = [];
50
+ const foundObjects = objects2.filter(
51
+ (obj) => {
52
+ if (obj instanceof Error) {
53
+ issues.push({ message: `Failed to fetch object: ${obj.message}`, error: obj });
54
+ return false;
55
+ }
56
+ return true;
57
+ }
58
+ );
59
+ const result = foundObjects.map((obj) => {
60
+ let ownerAddress = null;
61
+ switch (obj.owner.$kind) {
62
+ case "AddressOwner":
63
+ ownerAddress = obj.owner.AddressOwner;
64
+ break;
65
+ case "ObjectOwner":
66
+ ownerAddress = obj.owner.ObjectOwner;
67
+ break;
68
+ case "ConsensusAddressOwner":
69
+ ownerAddress = obj.owner.ConsensusAddressOwner.owner;
70
+ break;
71
+ case "Shared":
72
+ case "Immutable":
73
+ ownerAddress = null;
74
+ break;
75
+ default:
76
+ issues.push({ message: `Unknown owner type: ${JSON.stringify(obj.owner)}` });
77
+ }
78
+ return { ...obj, ownerAddress };
79
+ });
80
+ if (issues.length) {
81
+ return { issues };
82
+ }
83
+ return { result };
84
+ }
85
+ });
86
+ const ownedObjects = createAnalyzer({
87
+ dependencies: { objects },
88
+ analyze: () => ({ objects: objects2 }) => {
89
+ return { result: objects2.filter((obj) => obj.ownerAddress !== null) };
90
+ }
91
+ });
92
+ const objectsById = createAnalyzer({
93
+ dependencies: { objects },
94
+ analyze: () => ({ objects: objects2 }) => ({
95
+ result: new Map(objects2.map((obj) => [obj.id, obj]))
96
+ })
97
+ });
98
+ export {
99
+ objectIds,
100
+ objects,
101
+ objectsById,
102
+ ownedObjects
103
+ };
104
+ //# sourceMappingURL=objects.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/transaction-analyzer/rules/objects.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ClientWithCoreApi, Experimental_HaneulClientTypes } from '@haneullabs/haneul/experimental';\nimport { createAnalyzer } from '../analyzer.js';\nimport type { TransactionAnalysisIssue } from '../analyzer.js';\n\nimport { data } from './core.js';\n\nexport type AnalyzedObject = Experimental_HaneulClientTypes.ObjectResponse & {\n\townerAddress: string | null;\n};\n\nexport const objectIds = createAnalyzer({\n\tdependencies: { data },\n\tanalyze:\n\t\t() =>\n\t\t({ data }) => {\n\t\t\tconst issues: TransactionAnalysisIssue[] = [];\n\n\t\t\tconst inputs = data.inputs\n\t\t\t\t.filter((input): input is Extract<typeof input, { $kind: 'Object' }> => {\n\t\t\t\t\tswitch (input.$kind) {\n\t\t\t\t\t\tcase 'UnresolvedObject':\n\t\t\t\t\t\tcase 'UnresolvedPure':\n\t\t\t\t\t\t\tissues.push({ message: `Unexpected unresolved input: ${JSON.stringify(input)}` });\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\tcase 'Pure':\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tissues.push({ message: `Unknown input type: ${JSON.stringify(input)}` });\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.map((input) => {\n\t\t\t\t\tswitch (input.Object.$kind) {\n\t\t\t\t\t\tcase 'ImmOrOwnedObject':\n\t\t\t\t\t\t\treturn input.Object.ImmOrOwnedObject.objectId;\n\t\t\t\t\t\tcase 'SharedObject':\n\t\t\t\t\t\t\treturn input.Object.SharedObject.objectId;\n\t\t\t\t\t\tcase 'Receiving':\n\t\t\t\t\t\t\treturn input.Object.Receiving.objectId;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tthrow new Error(`Unknown object type: ${JSON.stringify(input)}`);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tif (issues.length) {\n\t\t\t\treturn { issues };\n\t\t\t}\n\n\t\t\tconst gasObjects = data.gasData.payment?.map((obj) => obj.objectId) || [];\n\n\t\t\treturn {\n\t\t\t\tresult: Array.from(new Set([...inputs, ...gasObjects])),\n\t\t\t};\n\t\t},\n});\n\nexport const objects = createAnalyzer({\n\tcacheKey: 'objects@1.0.0',\n\tdependencies: { objectIds },\n\tanalyze:\n\t\t({ client }: { client: ClientWithCoreApi }) =>\n\t\tasync ({ objectIds }) => {\n\t\t\tconst { objects } = await client.core.getObjects({\n\t\t\t\tobjectIds,\n\t\t\t});\n\n\t\t\tconst issues: TransactionAnalysisIssue[] = [];\n\n\t\t\tconst foundObjects = objects.filter(\n\t\t\t\t(obj): obj is Experimental_HaneulClientTypes.ObjectResponse => {\n\t\t\t\t\tif (obj instanceof Error) {\n\t\t\t\t\t\tissues.push({ message: `Failed to fetch object: ${obj.message}`, error: obj });\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tconst result = foundObjects.map((obj) => {\n\t\t\t\tlet ownerAddress: string | null = null;\n\t\t\t\tswitch (obj.owner.$kind) {\n\t\t\t\t\tcase 'AddressOwner':\n\t\t\t\t\t\townerAddress = obj.owner.AddressOwner;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'ObjectOwner':\n\t\t\t\t\t\townerAddress = obj.owner.ObjectOwner;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'ConsensusAddressOwner':\n\t\t\t\t\t\townerAddress = obj.owner.ConsensusAddressOwner.owner;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'Shared':\n\t\t\t\t\tcase 'Immutable':\n\t\t\t\t\t\townerAddress = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tissues.push({ message: `Unknown owner type: ${JSON.stringify(obj.owner)}` });\n\t\t\t\t}\n\n\t\t\t\treturn { ...obj, ownerAddress };\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 };\n\t\t},\n});\n\nexport const ownedObjects = createAnalyzer({\n\tdependencies: { objects },\n\tanalyze:\n\t\t() =>\n\t\t({ objects }) => {\n\t\t\treturn { result: objects.filter((obj) => obj.ownerAddress !== null) };\n\t\t},\n});\n\nexport const objectsById = createAnalyzer({\n\tdependencies: { objects },\n\tanalyze:\n\t\t() =>\n\t\t({ objects }) => ({\n\t\t\tresult: new Map(objects.map((obj) => [obj.id, obj])),\n\t\t}),\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["data", "objectIds", "objects"]
7
+ }
@@ -0,0 +1,5 @@
1
+ export type Defined = {} | null;
2
+ export type Simplify<T> = {
3
+ [K in keyof T]: T[K];
4
+ } & {};
5
+ export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }