@dstoken-solana/rwa-rbac 0.3.0 → 0.4.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 (54) hide show
  1. package/dist/client/AssetController.d.ts +15 -23
  2. package/dist/client/AssetController.d.ts.map +1 -1
  3. package/dist/client/AssetController.js +343 -0
  4. package/dist/client/AssetController.js.map +1 -0
  5. package/dist/client/IdentityMetadataRegistry.d.ts +5 -5
  6. package/dist/client/IdentityMetadataRegistry.d.ts.map +1 -1
  7. package/dist/client/IdentityMetadataRegistry.js +354 -0
  8. package/dist/client/IdentityMetadataRegistry.js.map +1 -0
  9. package/dist/client/IdentityRegistry.d.ts +4 -4
  10. package/dist/client/IdentityRegistry.d.ts.map +1 -1
  11. package/dist/client/IdentityRegistry.js +200 -0
  12. package/dist/client/IdentityRegistry.js.map +1 -0
  13. package/dist/client/PolicyEngine.d.ts +7 -7
  14. package/dist/client/PolicyEngine.js +260 -0
  15. package/dist/client/PolicyEngine.js.map +1 -0
  16. package/dist/client/RwaRbacClient.d.ts.map +1 -1
  17. package/dist/client/RwaRbacClient.js +250 -0
  18. package/dist/client/RwaRbacClient.js.map +1 -0
  19. package/dist/client/index.js +6 -0
  20. package/dist/client/index.js.map +1 -0
  21. package/dist/constants.js +5 -0
  22. package/dist/constants.js.map +1 -0
  23. package/dist/index.es.js +313 -234
  24. package/dist/index.js +6 -4975
  25. package/dist/index.js.map +1 -0
  26. package/dist/pdas.d.ts.map +1 -1
  27. package/dist/pdas.js +38 -0
  28. package/dist/pdas.js.map +1 -0
  29. package/dist/types/flags.d.ts +28 -28
  30. package/dist/types/flags.d.ts.map +1 -1
  31. package/dist/types/flags.js +47 -0
  32. package/dist/types/flags.js.map +1 -0
  33. package/dist/types/generated/index.js +4 -0
  34. package/dist/types/generated/index.js.map +1 -0
  35. package/dist/types/generated/rwa_imr.d.ts +37 -0
  36. package/dist/types/generated/rwa_imr.d.ts.map +1 -1
  37. package/dist/types/generated/rwa_imr.js +2 -0
  38. package/dist/types/generated/rwa_imr.js.map +1 -0
  39. package/dist/types/generated/rwa_imr.json +902 -0
  40. package/dist/types/generated/rwa_rbac.d.ts +145 -98
  41. package/dist/types/generated/rwa_rbac.d.ts.map +1 -1
  42. package/dist/types/generated/rwa_rbac.js +2 -0
  43. package/dist/types/generated/rwa_rbac.js.map +1 -0
  44. package/dist/types/generated/rwa_rbac.json +2621 -0
  45. package/dist/types/index.js +4 -0
  46. package/dist/types/index.js.map +1 -0
  47. package/dist/types/instructions.d.ts +8 -1
  48. package/dist/types/instructions.d.ts.map +1 -1
  49. package/dist/types/instructions.js +2 -0
  50. package/dist/types/instructions.js.map +1 -0
  51. package/dist/utils.d.ts.map +1 -1
  52. package/dist/utils.js +8 -0
  53. package/dist/utils.js.map +1 -0
  54. package/package.json +13 -13
@@ -0,0 +1,354 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { utils } from "@coral-xyz/anchor";
11
+ import { PublicKey, SystemProgram, } from "@solana/web3.js";
12
+ import { deriveControllerAuthorityPda, deriveInvestorPda, getEventAuthority, } from "../pdas";
13
+ import { getIdentityAccountPda, getIdentityRegistryPda, getPolicyEnginePda, getTrackerAccountPda, getWalletIdentityAccountPda, identityRegistryProgramId, policyEngineProgramId, getIdentityRegistryEventAuthority, } from "@dstoken-solana/rwa-token-sdk";
14
+ import { IMR_PROGRAM } from "../constants";
15
+ /**
16
+ * Role-based access client for accessing Identity Metadata Registry.
17
+ */
18
+ export class IdentityMetadataRegistry {
19
+ constructor(rwaClient, rbacProgram, imrProgram) {
20
+ this.rwaClient = rwaClient;
21
+ this.rbacProgram = rbacProgram;
22
+ this.imrProgram = imrProgram;
23
+ }
24
+ /**
25
+ * Parses inner instructions data field for array of events emitted by program using CPI Events.
26
+ * @param ixs - Array of CompiledInstruction from a transaction inner instructions.
27
+ * @returns Array of Events
28
+ * */
29
+ parseEvents(ixs) {
30
+ const eventCoder = this.imrProgram.coder.events;
31
+ const events = ixs
32
+ .map(({ data }) => {
33
+ try {
34
+ const buffer = Buffer.from(utils.bytes.bs58.decode(data));
35
+ const event = eventCoder.decode(utils.bytes.base64.encode(buffer.slice(8)));
36
+ return event;
37
+ }
38
+ catch (err) {
39
+ console.error("Error decoding events", err);
40
+ }
41
+ })
42
+ .filter((v) => v != null);
43
+ return events;
44
+ }
45
+ /**
46
+ * Asynchronously generates instructions to setup an investor.
47
+ * @param args - {@link SetupInvestorArgs}
48
+ * @param authority - RBAC AssetAccessController ControllerAuthority.
49
+ * @param assetAccessController - RBAC AssetAccessController account.
50
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
51
+ * @returns A Promise that resolves to the instructions to setup an investor.
52
+ *
53
+ * It is required for at least a single user to be setup before issuing tokens.
54
+ */
55
+ setupUserIxns(args, assetAccessController, authorizedUserRole) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ const returnIxs = [];
58
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
59
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
60
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
61
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString() // Investor is owner of IdentityAccount
62
+ );
63
+ const assetMintKey = new PublicKey(args.assetMint);
64
+ const registerIx = yield this.imrProgram.methods
65
+ .registerInvestor(args.investorId, args.collisionHash, args.levels[0], args.expiries[0], args.country, args.proofHashes[0])
66
+ .accountsStrict({
67
+ payer: args.payer,
68
+ authority: controllerAuthority,
69
+ investor,
70
+ identityRegistryProgram: identityRegistryProgramId,
71
+ identityRegistry,
72
+ identityAccount,
73
+ walletIdentity: getWalletIdentityAccountPda(args.assetMint, investor.toString() // Investor is owner of IdentityAccount
74
+ ),
75
+ systemProgram: SystemProgram.programId,
76
+ eventAuthority: getEventAuthority(IMR_PROGRAM),
77
+ eventAuthorityIdentityRegistry: getIdentityRegistryEventAuthority(),
78
+ program: identityRegistryProgramId,
79
+ policyEngineProgram: policyEngineProgramId,
80
+ trackerAccount: getTrackerAccountPda(args.assetMint, investor.toString()),
81
+ assetMint: assetMintKey,
82
+ })
83
+ .instruction();
84
+ returnIxs.push(yield this.rbacProgram.methods
85
+ .registerInvestor(registerIx.data)
86
+ .accountsStrict({
87
+ payer: args.payer,
88
+ user: args.signer,
89
+ controllerAuthority,
90
+ assetAccessController,
91
+ authorizedUserRole: authorizedUserRole || null,
92
+ identityMetadataRegistryProgram: IMR_PROGRAM,
93
+ investor,
94
+ identityRegistryProgram: identityRegistryProgramId,
95
+ identityRegistry,
96
+ identityAccount,
97
+ walletIdentity: getWalletIdentityAccountPda(args.assetMint, investor.toString()),
98
+ systemProgram: SystemProgram.programId,
99
+ eventAuthorityIdentityMetadataRegistry: getEventAuthority(IMR_PROGRAM),
100
+ eventAuthorityIdentityRegistry: getIdentityRegistryEventAuthority(),
101
+ policyEngineProgram: policyEngineProgramId,
102
+ trackerAccount: getTrackerAccountPda(args.assetMint, investor.toString()),
103
+ assetMint: assetMintKey,
104
+ })
105
+ .instruction());
106
+ if (args.levels.length > 1) {
107
+ returnIxs.push(yield this.addLevels({
108
+ payer: args.payer,
109
+ signer: args.signer,
110
+ investorId: args.investorId,
111
+ assetMint: args.assetMint,
112
+ levels: args.levels.slice(1),
113
+ expiries: args.expiries.slice(1),
114
+ proofHashes: args.proofHashes.slice(1),
115
+ enforceLimits: args.enforceLimits,
116
+ }, assetAccessController, authorizedUserRole));
117
+ }
118
+ return {
119
+ ixs: returnIxs,
120
+ signers: [],
121
+ };
122
+ });
123
+ }
124
+ /**
125
+ * Asynchronously add levels to investor.
126
+ * @param args - {@link AddLevelsArgs}
127
+ * @param assetAccessController - RBAC AssetAccessController account.
128
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
129
+ * @returns A Promise that resolves to the instructions to add levels.
130
+ * */
131
+ addLevels(args, assetAccessController, authorizedUserRole) {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ var _a;
134
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
135
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
136
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
137
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString());
138
+ const trackerAccount = getTrackerAccountPda(args.assetMint, investor.toString());
139
+ const ix = yield this.imrProgram.methods
140
+ .addLevels(Buffer.from(args.levels), args.expiries, args.proofHashes, (_a = args.enforceLimits) !== null && _a !== void 0 ? _a : false)
141
+ .accountsStrict({
142
+ payer: args.payer,
143
+ authority: controllerAuthority,
144
+ investor,
145
+ identityRegistryProgram: identityRegistryProgramId,
146
+ identityRegistry,
147
+ identityAccount,
148
+ systemProgram: SystemProgram.programId,
149
+ policyEngineProgram: policyEngineProgramId,
150
+ policyEngine: getPolicyEnginePda(args.assetMint),
151
+ trackerAccount,
152
+ assetMint: args.assetMint,
153
+ eventAuthorityIdentityRegistry: getIdentityRegistryEventAuthority(),
154
+ eventAuthority: getEventAuthority(IMR_PROGRAM),
155
+ program: IMR_PROGRAM,
156
+ })
157
+ .instruction();
158
+ return this.rbacProgram.methods
159
+ .addLevels(ix.data)
160
+ .accountsStrict({
161
+ payer: args.payer,
162
+ user: args.signer,
163
+ controllerAuthority,
164
+ assetAccessController,
165
+ authorizedUserRole: authorizedUserRole || null,
166
+ identityMetadataRegistryProgram: IMR_PROGRAM,
167
+ investor,
168
+ identityRegistryProgram: identityRegistryProgramId,
169
+ identityRegistry,
170
+ identityAccount,
171
+ systemProgram: SystemProgram.programId,
172
+ policyEngineProgram: policyEngineProgramId,
173
+ policyEngine: getPolicyEnginePda(args.assetMint),
174
+ trackerAccount,
175
+ assetMint: args.assetMint,
176
+ eventAuthorityIdentityRegistry: getIdentityRegistryEventAuthority(),
177
+ eventAuthorityIdentityMetadataRegistry: getEventAuthority(IMR_PROGRAM),
178
+ })
179
+ .instruction();
180
+ });
181
+ }
182
+ /**
183
+ * Asynchronously change country for the Investor.
184
+ * @param args - {@link ChangeCountryArgs}
185
+ * @param assetAccessController - RBAC AssetAccessController account.
186
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
187
+ * @returns A Promise that resolves to the instructions to change the country.
188
+ * */
189
+ changeCountry(args, assetAccessController, authorizedUserRole) {
190
+ return __awaiter(this, void 0, void 0, function* () {
191
+ var _a;
192
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
193
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
194
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
195
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString());
196
+ const trackerAccount = getTrackerAccountPda(args.assetMint, investor.toString());
197
+ const ix = yield this.imrProgram.methods
198
+ .changeCountry(args.country, (_a = args.enforceLimits) !== null && _a !== void 0 ? _a : false)
199
+ .accountsStrict({
200
+ payer: args.payer,
201
+ authority: controllerAuthority,
202
+ investor,
203
+ identityRegistryProgram: identityRegistryProgramId,
204
+ identityRegistry,
205
+ identityAccount,
206
+ policyEngineProgram: policyEngineProgramId,
207
+ policyEngine: getPolicyEnginePda(args.assetMint),
208
+ trackerAccount,
209
+ assetMint: args.assetMint,
210
+ eventAuthorityIdentityRegistry: getIdentityRegistryEventAuthority(),
211
+ })
212
+ .instruction();
213
+ return this.rbacProgram.methods
214
+ .changeCountry(ix.data)
215
+ .accountsStrict({
216
+ payer: args.payer,
217
+ user: args.signer,
218
+ controllerAuthority,
219
+ assetAccessController,
220
+ authorizedUserRole: authorizedUserRole || null,
221
+ identityMetadataRegistryProgram: IMR_PROGRAM,
222
+ investor,
223
+ identityRegistryProgram: identityRegistryProgramId,
224
+ identityRegistry,
225
+ identityAccount,
226
+ policyEngineProgram: policyEngineProgramId,
227
+ policyEngine: getPolicyEnginePda(args.assetMint),
228
+ trackerAccount,
229
+ assetMint: args.assetMint,
230
+ eventAuthorityIdentityRegistry: getIdentityRegistryEventAuthority(),
231
+ })
232
+ .instruction();
233
+ });
234
+ }
235
+ /**
236
+ * Asynchronously remove levels from an investor.
237
+ * @param args - {@link RemoveLevelsArgs}
238
+ * @param assetAccessController - RBAC AssetAccessController account.
239
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
240
+ * @returns A Promise that resolves to the instructions to remove levels.
241
+ * */
242
+ removeLevels(args, assetAccessController, authorizedUserRole) {
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ var _a;
245
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
246
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
247
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
248
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString());
249
+ const trackerAccount = getTrackerAccountPda(args.assetMint, investor.toString());
250
+ const ix = yield this.imrProgram.methods
251
+ .removeLevels(Buffer.from(args.levels), (_a = args.enforceLimits) !== null && _a !== void 0 ? _a : false)
252
+ .accountsStrict({
253
+ payer: args.payer,
254
+ authority: controllerAuthority,
255
+ investor,
256
+ identityRegistryProgram: identityRegistryProgramId,
257
+ identityRegistry,
258
+ identityAccount,
259
+ systemProgram: SystemProgram.programId,
260
+ policyEngineProgram: policyEngineProgramId,
261
+ policyEngine: getPolicyEnginePda(args.assetMint),
262
+ trackerAccount,
263
+ assetMint: args.assetMint,
264
+ eventAuthorityIdentityRegistry: getIdentityRegistryEventAuthority(),
265
+ })
266
+ .instruction();
267
+ return this.rbacProgram.methods
268
+ .removeLevels(ix.data)
269
+ .accountsStrict({
270
+ payer: args.payer,
271
+ user: args.signer,
272
+ controllerAuthority,
273
+ assetAccessController,
274
+ authorizedUserRole: authorizedUserRole || null,
275
+ identityMetadataRegistryProgram: IMR_PROGRAM,
276
+ investor,
277
+ identityRegistryProgram: identityRegistryProgramId,
278
+ identityRegistry,
279
+ identityAccount,
280
+ systemProgram: SystemProgram.programId,
281
+ policyEngineProgram: policyEngineProgramId,
282
+ policyEngine: getPolicyEnginePda(args.assetMint),
283
+ trackerAccount,
284
+ assetMint: args.assetMint,
285
+ eventAuthorityIdentityRegistry: getIdentityRegistryEventAuthority(),
286
+ })
287
+ .instruction();
288
+ });
289
+ }
290
+ /**
291
+ * Asynchronously remove an investor.
292
+ * @param args - {@link RemoveLevelsArgs}
293
+ * @param assetAccessController - RBAC AssetAccessController account.
294
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
295
+ * @returns A Promise that resolves to the instructions to remove an investor.
296
+ * */
297
+ removeInvestor(args, assetAccessController, authorizedUserRole) {
298
+ return __awaiter(this, void 0, void 0, function* () {
299
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
300
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
301
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
302
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString());
303
+ return this.rbacProgram.methods
304
+ .removeInvestor()
305
+ .accountsStrict({
306
+ payer: args.payer,
307
+ user: args.signer,
308
+ controllerAuthority,
309
+ assetAccessController,
310
+ authorizedUserRole: authorizedUserRole || null,
311
+ identityMetadataRegistryProgram: IMR_PROGRAM,
312
+ investor,
313
+ identityRegistryProgram: identityRegistryProgramId,
314
+ identityRegistry,
315
+ identityAccount,
316
+ walletIdentity: getWalletIdentityAccountPda(args.assetMint, investor.toString()),
317
+ policyEngineProgram: policyEngineProgramId,
318
+ trackerAccount: getTrackerAccountPda(args.assetMint, investor.toString()),
319
+ eventAuthorityIdentityMetadataRegistry: getEventAuthority(IMR_PROGRAM),
320
+ eventAuthorityIdentityRegistry: getIdentityRegistryEventAuthority(),
321
+ assetMint: args.assetMint,
322
+ })
323
+ .instruction();
324
+ });
325
+ }
326
+ /**
327
+ * Asynchronously attach a wallet to IdentityAccouont for the Investor.
328
+ * @param args - {@link AttachWalletByInvestorArgs}
329
+ * */
330
+ attachWalletByInvestor(args) {
331
+ return __awaiter(this, void 0, void 0, function* () {
332
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
333
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
334
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString());
335
+ return this.imrProgram.methods
336
+ .attachWalletByInvestor(args.newWallet)
337
+ .accountsStrict({
338
+ payer: args.payer,
339
+ wallet: args.signer,
340
+ investor,
341
+ walletIdentity: getWalletIdentityAccountPda(args.assetMint, args.signer),
342
+ identityRegistryProgram: identityRegistryProgramId,
343
+ newWalletIdentity: getWalletIdentityAccountPda(args.assetMint, args.newWallet.toString()),
344
+ identityAccount,
345
+ identityRegistry,
346
+ assetMint: args.assetMint,
347
+ systemProgram: SystemProgram.programId,
348
+ eventAuthorityIdentityRegistry: getIdentityRegistryEventAuthority(),
349
+ })
350
+ .instruction();
351
+ });
352
+ }
353
+ }
354
+ //# sourceMappingURL=IdentityMetadataRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityMetadataRegistry.js","sourceRoot":"","sources":["../../src/client/IdentityMetadataRegistry.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export declare class IdentityRegistry {
15
15
  * @param args - {@link SetupUserArgs}
16
16
  * @param authority - RBAC AssetAccessController ControllerAuthority.
17
17
  * @param assetAccessController - RBAC AssetAccessController account.
18
- * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
18
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
19
19
  * @returns A Promise that resolves to the instructions to setup a user.
20
20
  *
21
21
  * It is required for at least a single user to be setup before issuing tokens.
@@ -26,7 +26,7 @@ export declare class IdentityRegistry {
26
26
  * @param args - {@link SetupUserArgs}
27
27
  * @param authority - RBAC AssetAccessController ControllerAuthority.
28
28
  * @param assetAccessController - RBAC AssetAccessController account.
29
- * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
29
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
30
30
  * @returns A Promise that resolves to the instructions to setup a user.
31
31
  *
32
32
  * It is required for at least a single user to be setup before issuing tokens.
@@ -36,7 +36,7 @@ export declare class IdentityRegistry {
36
36
  * Asynchronously generates instruction to attach wallet to identity.
37
37
  * @param args - {@link AttachDetachWalletArgs}
38
38
  * @param assetAccessController - RBAC AssetAccessController account.
39
- * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
39
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
40
40
  * @returns A Promise that resolves to attach wallet.
41
41
  * */
42
42
  attachWalletToIdentityIxn(args: AttachDetachWalletArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
@@ -44,7 +44,7 @@ export declare class IdentityRegistry {
44
44
  * Asynchronously generates instruction to detach wallet from identity.
45
45
  * @param args - {@link AttachDetachWalletArgs}
46
46
  * @param assetAccessController - RBAC AssetAccessController account.
47
- * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
47
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
48
48
  * @returns A Promise that resolves to detach wallet.
49
49
  * */
50
50
  detachWalletFromIdentityIxn(args: AttachDetachWalletArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
@@ -1 +1 @@
1
- {"version":3,"file":"IdentityRegistry.d.ts","sourceRoot":"","sources":["../../src/client/IdentityRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EACL,sBAAsB,EAEtB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAYL,QAAQ,EAGR,SAAS,EACT,aAAa,EACd,MAAM,+BAA+B,CAAC;AAKvC;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAElB,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;IAK/D;;;;;;;;;OASG;IACG,aAAa,CACjB,IAAI,EAAE,aAAa,EACnB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,QAAQ,CAAC;IAyCpB;;;;;;;;;OASG;IACG,aAAa,CACjB,IAAI,EAAE,kBAAkB,EACxB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IAgClC;;;;;;SAMK;IACC,yBAAyB,CAC7B,IAAI,EAAE,sBAAsB,EAC5B,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IAiDlC;;;;;;SAMK;IACC,2BAA2B,CAC/B,IAAI,EAAE,sBAAsB,EAC5B,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;CAmDnC"}
1
+ {"version":3,"file":"IdentityRegistry.d.ts","sourceRoot":"","sources":["../../src/client/IdentityRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EASL,QAAQ,EAER,SAAS,EACT,aAAa,EACd,MAAM,+BAA+B,CAAC;AAQvC;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAElB,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC;IAK/D;;;;;;;;;OASG;IACG,aAAa,CACjB,IAAI,EAAE,aAAa,EACnB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,QAAQ,CAAC;IAwCpB;;;;;;;;;OASG;IACG,aAAa,CACjB,IAAI,EAAE,kBAAkB,EACxB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IA0ClC;;;;;;SAMK;IACC,yBAAyB,CAC7B,IAAI,EAAE,sBAAsB,EAC5B,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IAiDlC;;;;;;SAMK;IACC,2BAA2B,CAC/B,IAAI,EAAE,sBAAsB,EAC5B,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;CAmDnC"}
@@ -0,0 +1,200 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { PublicKey } from "@solana/web3.js";
11
+ import { getIdentityAccount, getIdentityAccountPda, getIdentityRegistryEventAuthority, getIdentityRegistryPda, getIdentityRegistryProgram, getTrackerAccountPda, getWalletIdentityAccountPda, identityRegistryProgramId, policyEngineProgramId, } from "@dstoken-solana/rwa-token-sdk";
12
+ import { deriveControllerAuthorityPda } from "../pdas";
13
+ import { SystemProgram } from "@solana/web3.js";
14
+ import { getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID, } from "@solana/spl-token";
15
+ /**
16
+ * Represents the role-based access client for Identity Registry for an RWA.
17
+ */
18
+ export class IdentityRegistry {
19
+ constructor(rwaClient, rbacProgram) {
20
+ this.rwaClient = rwaClient;
21
+ this.rbacProgram = rbacProgram;
22
+ }
23
+ /**
24
+ * Asynchronously generates instructions to setup a non-investor user with an identity account.
25
+ * @param args - {@link SetupUserArgs}
26
+ * @param authority - RBAC AssetAccessController ControllerAuthority.
27
+ * @param assetAccessController - RBAC AssetAccessController account.
28
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
29
+ * @returns A Promise that resolves to the instructions to setup a user.
30
+ *
31
+ * It is required for at least a single user to be setup before issuing tokens.
32
+ */
33
+ setupUserIxns(args, assetAccessController, authorizedUserRole) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ const { ixs } = yield this.rwaClient.identityRegistry.setupUserIxns(args);
36
+ const returnIxs = [];
37
+ const identityAccountIx = ixs[0];
38
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
39
+ const identityAccount = getIdentityAccountPda(args.assetMint, args.owner);
40
+ returnIxs.push(yield this.rbacProgram.methods
41
+ .createIdentityAccount(identityAccountIx.data)
42
+ .accountsStrict({
43
+ payer: args.payer,
44
+ user: args.signer,
45
+ controllerAuthority,
46
+ assetAccessController,
47
+ authorizedUserRole: authorizedUserRole || null,
48
+ identityRegistryProgram: identityRegistryProgramId,
49
+ identityRegistry: getIdentityRegistryPda(args.assetMint),
50
+ identityAccount,
51
+ walletIdentity: getWalletIdentityAccountPda(args.assetMint, args.owner),
52
+ systemProgram: SystemProgram.programId,
53
+ eventAuthority: getIdentityRegistryEventAuthority(),
54
+ policyEngineProgram: policyEngineProgramId,
55
+ trackerAccount: getTrackerAccountPda(args.assetMint, args.owner),
56
+ assetMint: args.assetMint,
57
+ })
58
+ .instruction());
59
+ return {
60
+ ixs: returnIxs,
61
+ signers: [],
62
+ };
63
+ });
64
+ }
65
+ /**
66
+ * Asynchronously generates instructions to remove a non-investor user with an identity account.
67
+ * @param args - {@link SetupUserArgs}
68
+ * @param authority - RBAC AssetAccessController ControllerAuthority.
69
+ * @param assetAccessController - RBAC AssetAccessController account.
70
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
71
+ * @returns A Promise that resolves to the instructions to setup a user.
72
+ *
73
+ * It is required for at least a single user to be setup before issuing tokens.
74
+ */
75
+ removeUserIxn(args, assetAccessController, authorizedUserRole) {
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ const ix = yield this.rwaClient.identityRegistry.revokeIdentityAccount(args);
78
+ const identityAccountAddress = getIdentityAccountPda(args.assetMint, args.owner);
79
+ const identityAccount = yield getIdentityAccount(identityAccountAddress, this.rwaClient.provider);
80
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
81
+ const returnIx = yield this.rbacProgram.methods
82
+ .removeIdentityAccount(ix.data)
83
+ .accountsStrict({
84
+ payer: args.payer,
85
+ user: args.signer,
86
+ controllerAuthority,
87
+ assetAccessController,
88
+ authorizedUserRole: authorizedUserRole || null,
89
+ identityRegistryProgram: identityRegistryProgramId,
90
+ identityRegistry: getIdentityRegistryPda(args.assetMint),
91
+ identityAccount: identityAccountAddress,
92
+ walletIdentity: getWalletIdentityAccountPda(args.assetMint, args.owner),
93
+ eventAuthority: getIdentityRegistryEventAuthority(),
94
+ identityOwner: identityAccount.owner,
95
+ policyEngineProgram: policyEngineProgramId,
96
+ trackerAccount: getTrackerAccountPda(args.assetMint, args.owner),
97
+ assetMint: args.assetMint,
98
+ })
99
+ .instruction();
100
+ return returnIx;
101
+ });
102
+ }
103
+ /**
104
+ * Asynchronously generates instruction to attach wallet to identity.
105
+ * @param args - {@link AttachDetachWalletArgs}
106
+ * @param assetAccessController - RBAC AssetAccessController account.
107
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
108
+ * @returns A Promise that resolves to attach wallet.
109
+ * */
110
+ attachWalletToIdentityIxn(args, assetAccessController, authorizedUserRole) {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
113
+ const identityProgram = getIdentityRegistryProgram(this.rwaClient.provider);
114
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
115
+ const identityAccount = getIdentityAccountPda(args.assetMint, args.owner);
116
+ const newWalletIdentityAccount = getIdentityAccountPda(args.assetMint, args.wallet);
117
+ const walletIdentity = getWalletIdentityAccountPda(args.assetMint, args.wallet.toString());
118
+ const ix = yield identityProgram.methods
119
+ .attachWalletToIdentity(new PublicKey(args.wallet))
120
+ .accountsStrict({
121
+ payer: args.payer,
122
+ authority: controllerAuthority,
123
+ identityAccount,
124
+ identityRegistry,
125
+ assetMint: args.assetMint,
126
+ walletIdentity,
127
+ systemProgram: SystemProgram.programId,
128
+ eventAuthority: getIdentityRegistryEventAuthority(),
129
+ program: identityRegistryProgramId,
130
+ })
131
+ .instruction();
132
+ return this.rbacProgram.methods
133
+ .attachWalletToIdentity(ix.data)
134
+ .accountsStrict({
135
+ payer: args.payer,
136
+ user: args.signer,
137
+ controllerAuthority,
138
+ assetAccessController,
139
+ authorizedUserRole: authorizedUserRole || null,
140
+ identityRegistryProgram: identityRegistryProgramId,
141
+ identityAccount,
142
+ identityRegistry,
143
+ assetMint: args.assetMint,
144
+ walletIdentity,
145
+ systemProgram: SystemProgram.programId,
146
+ eventAuthority: getIdentityRegistryEventAuthority(),
147
+ })
148
+ .instruction();
149
+ });
150
+ }
151
+ /**
152
+ * Asynchronously generates instruction to detach wallet from identity.
153
+ * @param args - {@link AttachDetachWalletArgs}
154
+ * @param assetAccessController - RBAC AssetAccessController account.
155
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
156
+ * @returns A Promise that resolves to detach wallet.
157
+ * */
158
+ detachWalletFromIdentityIxn(args, assetAccessController, authorizedUserRole) {
159
+ return __awaiter(this, void 0, void 0, function* () {
160
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
161
+ const identityProgram = getIdentityRegistryProgram(this.rwaClient.provider);
162
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
163
+ const identityAccount = getIdentityAccountPda(args.assetMint, args.owner);
164
+ const walletIdentity = getWalletIdentityAccountPda(args.assetMint, args.wallet.toString());
165
+ const tokenAccount = getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.wallet), false, TOKEN_2022_PROGRAM_ID);
166
+ const ix = yield identityProgram.methods
167
+ .detachWalletFromIdentity()
168
+ .accountsStrict({
169
+ payer: args.payer,
170
+ authority: controllerAuthority,
171
+ walletIdentity,
172
+ identityAccount,
173
+ identityRegistry,
174
+ eventAuthority: getIdentityRegistryEventAuthority(),
175
+ program: identityRegistryProgramId,
176
+ tokenAccount: tokenAccount,
177
+ assetMint: args.assetMint,
178
+ })
179
+ .instruction();
180
+ return this.rbacProgram.methods
181
+ .detachWalletFromIdentity(ix.data)
182
+ .accountsStrict({
183
+ payer: args.payer,
184
+ user: args.signer,
185
+ controllerAuthority,
186
+ assetAccessController,
187
+ authorizedUserRole: authorizedUserRole || null,
188
+ identityRegistryProgram: identityRegistryProgramId,
189
+ walletIdentity,
190
+ identityAccount,
191
+ identityRegistry,
192
+ eventAuthority: getIdentityRegistryEventAuthority(),
193
+ tokenAccount: tokenAccount,
194
+ assetMint: args.assetMint,
195
+ })
196
+ .instruction();
197
+ });
198
+ }
199
+ }
200
+ //# sourceMappingURL=IdentityRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityRegistry.js","sourceRoot":"","sources":["../../src/client/IdentityRegistry.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAOpE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,iCAAiC,EACjC,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EAEzB,qBAAqB,GAGtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAI3B,YAAY,SAAoB,EAAE,WAA6B;QAC7D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;;;;;;;OASG;IACG,aAAa,CACjB,IAAmB,EACnB,qBAAgC,EAChC,kBAA8B;;YAE9B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1E,MAAM,SAAS,GAAG,EAAE,CAAC;YAErB,MAAM,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,mBAAmB,GAAG,4BAA4B,CACtD,qBAAqB,CACtB,CAAC;YACF,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1E,SAAS,CAAC,IAAI,CACZ,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;iBAC3B,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC;iBAC7C,cAAc,CAAC;gBACd,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,mBAAmB;gBACnB,qBAAqB;gBACrB,kBAAkB,EAAE,kBAAkB,IAAI,IAAI;gBAC9C,uBAAuB,EAAE,yBAAyB;gBAClD,gBAAgB,EAAE,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC;gBACxD,eAAe;gBACf,cAAc,EAAE,2BAA2B,CACzC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,CACX;gBACD,aAAa,EAAE,aAAa,CAAC,SAAS;gBACtC,cAAc,EAAE,iCAAiC,EAAE;gBACnD,mBAAmB,EAAE,qBAAqB;gBAC1C,cAAc,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;gBAChE,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;iBACD,WAAW,EAAE,CACjB,CAAC;YAEF,OAAO;gBACL,GAAG,EAAE,SAAS;gBACd,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;KAAA;IAED;;;;;;;;;OASG;IACG,aAAa,CACjB,IAAwB,EACxB,qBAAgC,EAChC,kBAA8B;;YAE9B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,qBAAqB,CACpE,IAAI,CACL,CAAC;YACF,MAAM,sBAAsB,GAAG,qBAAqB,CAClD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,CACX,CAAC;YACF,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAC9C,sBAAsB,EACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,CACxB,CAAC;YAEF,MAAM,mBAAmB,GAAG,4BAA4B,CACtD,qBAAqB,CACtB,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;iBAC1C,qBAAqB,CAAC,EAAE,CAAC,IAAI,CAAC;iBAC9B,cAAc,CAAC;gBACd,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,mBAAmB;gBACnB,qBAAqB;gBACrB,kBAAkB,EAAE,kBAAkB,IAAI,IAAI;gBAC9C,uBAAuB,EAAE,yBAAyB;gBAClD,gBAAgB,EAAE,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC;gBACxD,eAAe,EAAE,sBAAsB;gBACvC,cAAc,EAAE,2BAA2B,CACzC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,CACX;gBACD,cAAc,EAAE,iCAAiC,EAAE;gBACnD,aAAa,EAAE,eAAe,CAAC,KAAK;gBACpC,mBAAmB,EAAE,qBAAqB;gBAC1C,cAAc,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;gBAChE,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;iBACD,WAAW,EAAE,CAAC;YAEnB,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;IAED;;;;;;SAMK;IACC,yBAAyB,CAC7B,IAA4B,EAC5B,qBAAgC,EAChC,kBAA8B;;YAE9B,MAAM,mBAAmB,GAAG,4BAA4B,CACtD,qBAAqB,CACtB,CAAC;YACF,MAAM,eAAe,GAAG,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5E,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1E,MAAM,wBAAwB,GAAG,qBAAqB,CACpD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,CACZ,CAAC;YACF,MAAM,cAAc,GAAG,2BAA2B,CAChD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CACvB,CAAC;YAEF,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO;iBACrC,sBAAsB,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAClD,cAAc,CAAC;gBACd,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,mBAAmB;gBAC9B,eAAe;gBACf,gBAAgB;gBAChB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,cAAc;gBACd,aAAa,EAAE,aAAa,CAAC,SAAS;gBACtC,cAAc,EAAE,iCAAiC,EAAE;gBACnD,OAAO,EAAE,yBAAyB;aACnC,CAAC;iBACD,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;iBAC5B,sBAAsB,CAAC,EAAE,CAAC,IAAI,CAAC;iBAC/B,cAAc,CAAC;gBACd,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,mBAAmB;gBACnB,qBAAqB;gBACrB,kBAAkB,EAAE,kBAAkB,IAAI,IAAI;gBAC9C,uBAAuB,EAAE,yBAAyB;gBAClD,eAAe;gBACf,gBAAgB;gBAChB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,cAAc;gBACd,aAAa,EAAE,aAAa,CAAC,SAAS;gBACtC,cAAc,EAAE,iCAAiC,EAAE;aACpD,CAAC;iBACD,WAAW,EAAE,CAAC;QACnB,CAAC;KAAA;IAED;;;;;;SAMK;IACC,2BAA2B,CAC/B,IAA4B,EAC5B,qBAAgC,EAChC,kBAA8B;;YAE9B,MAAM,mBAAmB,GAAG,4BAA4B,CACtD,qBAAqB,CACtB,CAAC;YACF,MAAM,eAAe,GAAG,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5E,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1E,MAAM,cAAc,GAAG,2BAA2B,CAChD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CACvB,CAAC;YAEF,MAAM,YAAY,GAAG,6BAA6B,CAChD,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAC7B,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAC1B,KAAK,EACL,qBAAqB,CACtB,CAAC;YAEF,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO;iBACrC,wBAAwB,EAAE;iBAC1B,cAAc,CAAC;gBACd,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,mBAAmB;gBAC9B,cAAc;gBACd,eAAe;gBACf,gBAAgB;gBAChB,cAAc,EAAE,iCAAiC,EAAE;gBACnD,OAAO,EAAE,yBAAyB;gBAClC,YAAY,EAAE,YAAY;gBAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;iBACD,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;iBAC5B,wBAAwB,CAAC,EAAE,CAAC,IAAI,CAAC;iBACjC,cAAc,CAAC;gBACd,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,mBAAmB;gBACnB,qBAAqB;gBACrB,kBAAkB,EAAE,kBAAkB,IAAI,IAAI;gBAC9C,uBAAuB,EAAE,yBAAyB;gBAClD,cAAc;gBACd,eAAe;gBACf,gBAAgB;gBAChB,cAAc,EAAE,iCAAiC,EAAE;gBACnD,YAAY,EAAE,YAAY;gBAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;iBACD,WAAW,EAAE,CAAC;QACnB,CAAC;KAAA;CACF"}