@dstoken-solana/rwa-rbac 0.0.1-rc1

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 (72) hide show
  1. package/dist/client/AssetController.d.ts +98 -0
  2. package/dist/client/AssetController.d.ts.map +1 -0
  3. package/dist/client/AssetController.js +394 -0
  4. package/dist/client/AssetController.js.map +1 -0
  5. package/dist/client/IdentityMetadataRegistry.d.ts +64 -0
  6. package/dist/client/IdentityMetadataRegistry.d.ts.map +1 -0
  7. package/dist/client/IdentityMetadataRegistry.js +296 -0
  8. package/dist/client/IdentityMetadataRegistry.js.map +1 -0
  9. package/dist/client/IdentityRegistry.d.ts +65 -0
  10. package/dist/client/IdentityRegistry.d.ts.map +1 -0
  11. package/dist/client/IdentityRegistry.js +230 -0
  12. package/dist/client/IdentityRegistry.js.map +1 -0
  13. package/dist/client/PolicyEngine.d.ts +74 -0
  14. package/dist/client/PolicyEngine.d.ts.map +1 -0
  15. package/dist/client/PolicyEngine.js +182 -0
  16. package/dist/client/PolicyEngine.js.map +1 -0
  17. package/dist/client/RwaRbacClient.d.ts +70 -0
  18. package/dist/client/RwaRbacClient.d.ts.map +1 -0
  19. package/dist/client/RwaRbacClient.js +159 -0
  20. package/dist/client/RwaRbacClient.js.map +1 -0
  21. package/dist/client/TokenLocks.d.ts +55 -0
  22. package/dist/client/TokenLocks.d.ts.map +1 -0
  23. package/dist/client/TokenLocks.js +249 -0
  24. package/dist/client/TokenLocks.js.map +1 -0
  25. package/dist/client/index.d.ts +2 -0
  26. package/dist/client/index.d.ts.map +1 -0
  27. package/dist/client/index.js +2 -0
  28. package/dist/client/index.js.map +1 -0
  29. package/dist/constants.d.ts +5 -0
  30. package/dist/constants.d.ts.map +1 -0
  31. package/dist/constants.js +5 -0
  32. package/dist/constants.js.map +1 -0
  33. package/dist/index.d.ts +8 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +8 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/pdas.d.ts +9 -0
  38. package/dist/pdas.d.ts.map +1 -0
  39. package/dist/pdas.js +37 -0
  40. package/dist/pdas.js.map +1 -0
  41. package/dist/types/flags.d.ts +43 -0
  42. package/dist/types/flags.d.ts.map +1 -0
  43. package/dist/types/flags.js +45 -0
  44. package/dist/types/flags.js.map +1 -0
  45. package/dist/types/generated/rwa_imr.d.ts +592 -0
  46. package/dist/types/generated/rwa_imr.d.ts.map +1 -0
  47. package/dist/types/generated/rwa_imr.js +2 -0
  48. package/dist/types/generated/rwa_imr.js.map +1 -0
  49. package/dist/types/generated/rwa_imr.json +585 -0
  50. package/dist/types/generated/rwa_rbac.d.ts +2671 -0
  51. package/dist/types/generated/rwa_rbac.d.ts.map +1 -0
  52. package/dist/types/generated/rwa_rbac.js +2 -0
  53. package/dist/types/generated/rwa_rbac.js.map +1 -0
  54. package/dist/types/generated/rwa_rbac.json +2664 -0
  55. package/dist/types/generated/token_locks.d.ts +649 -0
  56. package/dist/types/generated/token_locks.d.ts.map +1 -0
  57. package/dist/types/generated/token_locks.js +2 -0
  58. package/dist/types/generated/token_locks.js.map +1 -0
  59. package/dist/types/generated/token_locks.json +642 -0
  60. package/dist/types/index.d.ts +5 -0
  61. package/dist/types/index.d.ts.map +1 -0
  62. package/dist/types/index.js +5 -0
  63. package/dist/types/index.js.map +1 -0
  64. package/dist/types/instructions.d.ts +213 -0
  65. package/dist/types/instructions.d.ts.map +1 -0
  66. package/dist/types/instructions.js +2 -0
  67. package/dist/types/instructions.js.map +1 -0
  68. package/dist/utils.d.ts +7 -0
  69. package/dist/utils.d.ts.map +1 -0
  70. package/dist/utils.js +8 -0
  71. package/dist/utils.js.map +1 -0
  72. package/package.json +38 -0
@@ -0,0 +1,296 @@
1
+ import { PublicKey, SystemProgram, } from "@solana/web3.js";
2
+ import { deriveControllerAuthorityPda, deriveInvestorPda } from "../pdas";
3
+ import { getIdentityAccountPda, getIdentityRegistryPda, getPolicyEnginePda, getPolicyEngineProgram, getPolicyEnginerEventAuthority, getTrackerAccountPda, getWalletIdentityAccountPda, identityRegistryProgramId, policyEngineProgramId, } from "@dstoken-solana/rwa-token-sdk";
4
+ import { IMR_PROGRAM } from "../constants";
5
+ /**
6
+ * Role-based access client for accessing Identity Metadata Registry.
7
+ */
8
+ export class IdentityMetadataRegistry {
9
+ constructor(rwaClient, rbacProgram, imrProgram) {
10
+ this.rwaClient = rwaClient;
11
+ this.rbacProgram = rbacProgram;
12
+ this.imrProgram = imrProgram;
13
+ }
14
+ /**
15
+ * Asynchronously generates instructions to setup an investor.
16
+ * @param args - {@link SetupInvestorArgs}
17
+ * @param authority - RBAC AssetAccessController ControllerAuthority.
18
+ * @param assetAccessController - RBAC AssetAccessController account.
19
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
20
+ * @returns A Promise that resolves to the instructions to setup an investor.
21
+ *
22
+ * It is required for at least a single user to be setup before issuing tokens.
23
+ */
24
+ async setupUserIxns(args, assetAccessController, authorizedUserRole) {
25
+ const returnIxs = [];
26
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
27
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
28
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
29
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString() // Investor is owner of IdentityAccount
30
+ );
31
+ const assetMintKey = new PublicKey(args.assetMint);
32
+ const registerIx = await this.imrProgram.methods
33
+ .registerInvestor(args.investorId, args.collisionHash, args.levels[0], args.expiries[0], args.country, args.proofHashes[0])
34
+ .accountsStrict({
35
+ payer: args.payer,
36
+ authority: controllerAuthority,
37
+ investor,
38
+ identityRegistryProgram: identityRegistryProgramId,
39
+ identityRegistry,
40
+ identityAccount,
41
+ walletIdentity: getWalletIdentityAccountPda(args.assetMint, investor.toString() // Investor is owner of IdentityAccount
42
+ ),
43
+ systemProgram: SystemProgram.programId,
44
+ })
45
+ .instruction();
46
+ returnIxs.push(await this.rbacProgram.methods
47
+ .registerInvestor(registerIx.data)
48
+ .accountsStrict({
49
+ payer: args.payer,
50
+ user: args.signer,
51
+ controllerAuthority,
52
+ assetAccessController,
53
+ authorizedUserRole: authorizedUserRole || null,
54
+ identityMetadataRegistryProgram: IMR_PROGRAM,
55
+ investor,
56
+ identityRegistryProgram: identityRegistryProgramId,
57
+ identityRegistry,
58
+ identityAccount,
59
+ walletIdentity: getWalletIdentityAccountPda(args.assetMint, investor.toString()),
60
+ systemProgram: SystemProgram.programId,
61
+ })
62
+ .instruction());
63
+ const policyProgram = getPolicyEngineProgram(this.imrProgram.provider);
64
+ const trackerAccount = PublicKey.findProgramAddressSync([assetMintKey.toBuffer(), identityAccount.toBuffer()], policyProgram.programId)[0];
65
+ returnIxs.push(await policyProgram.methods
66
+ .createTrackerAccount()
67
+ .accountsStrict({
68
+ payer: args.payer,
69
+ trackerAccount,
70
+ systemProgram: SystemProgram.programId,
71
+ program: policyProgram.programId,
72
+ assetMint: assetMintKey,
73
+ eventAuthority: getPolicyEnginerEventAuthority(),
74
+ identityRegistry,
75
+ identityAccount,
76
+ })
77
+ .instruction());
78
+ if (args.levels.length > 1) {
79
+ returnIxs.push(await this.addLevels({
80
+ payer: args.payer,
81
+ signer: args.signer,
82
+ investorId: args.investorId,
83
+ assetMint: args.assetMint,
84
+ levels: args.levels.slice(1),
85
+ expiries: args.expiries.slice(1),
86
+ proofHashes: args.proofHashes.slice(1),
87
+ enforceLimits: args.enforceLimits,
88
+ }, assetAccessController, authorizedUserRole));
89
+ }
90
+ return {
91
+ ixs: returnIxs,
92
+ signers: [],
93
+ };
94
+ }
95
+ /**
96
+ * Asynchronously add levels to investor.
97
+ * @param args - {@link AddLevelsArgs}
98
+ * @param assetAccessController - RBAC AssetAccessController account.
99
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
100
+ * @returns A Promise that resolves to the instructions to add levels.
101
+ * */
102
+ async addLevels(args, assetAccessController, authorizedUserRole) {
103
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
104
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
105
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
106
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString());
107
+ const trackerAccount = getTrackerAccountPda(args.assetMint, investor.toString());
108
+ const ix = await this.imrProgram.methods
109
+ .addLevels(Buffer.from(args.levels), args.expiries, args.proofHashes, args.enforceLimits ?? false)
110
+ .accountsStrict({
111
+ payer: args.payer,
112
+ authority: controllerAuthority,
113
+ investor,
114
+ identityRegistryProgram: identityRegistryProgramId,
115
+ identityRegistry,
116
+ identityAccount,
117
+ systemProgram: SystemProgram.programId,
118
+ policyEngineProgram: policyEngineProgramId,
119
+ policyEngine: getPolicyEnginePda(args.assetMint),
120
+ trackerAccount,
121
+ assetMint: args.assetMint,
122
+ })
123
+ .instruction();
124
+ return this.rbacProgram.methods
125
+ .addLevels(ix.data)
126
+ .accountsStrict({
127
+ payer: args.payer,
128
+ user: args.signer,
129
+ controllerAuthority,
130
+ assetAccessController,
131
+ authorizedUserRole: authorizedUserRole || null,
132
+ identityMetadataRegistryProgram: IMR_PROGRAM,
133
+ investor,
134
+ identityRegistryProgram: identityRegistryProgramId,
135
+ identityRegistry,
136
+ identityAccount,
137
+ systemProgram: SystemProgram.programId,
138
+ policyEngineProgram: policyEngineProgramId,
139
+ policyEngine: getPolicyEnginePda(args.assetMint),
140
+ trackerAccount,
141
+ assetMint: args.assetMint,
142
+ })
143
+ .instruction();
144
+ }
145
+ /**
146
+ * Asynchronously change country for the Investor.
147
+ * @param args - {@link ChangeCountryArgs}
148
+ * @param assetAccessController - RBAC AssetAccessController account.
149
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
150
+ * @returns A Promise that resolves to the instructions to change the country.
151
+ * */
152
+ async changeCountry(args, assetAccessController, authorizedUserRole) {
153
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
154
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
155
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
156
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString());
157
+ const trackerAccount = getTrackerAccountPda(args.assetMint, investor.toString());
158
+ const ix = await this.imrProgram.methods
159
+ .changeCountry(args.country, args.enforceLimits ?? false)
160
+ .accountsStrict({
161
+ payer: args.payer,
162
+ authority: controllerAuthority,
163
+ investor,
164
+ identityRegistryProgram: identityRegistryProgramId,
165
+ identityRegistry,
166
+ identityAccount,
167
+ policyEngineProgram: policyEngineProgramId,
168
+ policyEngine: getPolicyEnginePda(args.assetMint),
169
+ trackerAccount,
170
+ assetMint: args.assetMint,
171
+ })
172
+ .instruction();
173
+ return this.rbacProgram.methods
174
+ .changeCountry(ix.data)
175
+ .accountsStrict({
176
+ payer: args.payer,
177
+ user: args.signer,
178
+ controllerAuthority,
179
+ assetAccessController,
180
+ authorizedUserRole: authorizedUserRole || null,
181
+ identityMetadataRegistryProgram: IMR_PROGRAM,
182
+ investor,
183
+ identityRegistryProgram: identityRegistryProgramId,
184
+ identityRegistry,
185
+ identityAccount,
186
+ policyEngineProgram: policyEngineProgramId,
187
+ policyEngine: getPolicyEnginePda(args.assetMint),
188
+ trackerAccount,
189
+ assetMint: args.assetMint,
190
+ })
191
+ .instruction();
192
+ }
193
+ /**
194
+ * Asynchronously remove levels from an investor.
195
+ * @param args - {@link RemoveLevelsArgs}
196
+ * @param assetAccessController - RBAC AssetAccessController account.
197
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
198
+ * @returns A Promise that resolves to the instructions to remove levels.
199
+ * */
200
+ async removeLevels(args, assetAccessController, authorizedUserRole) {
201
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
202
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
203
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
204
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString());
205
+ const trackerAccount = getTrackerAccountPda(args.assetMint, investor.toString());
206
+ const ix = await this.imrProgram.methods
207
+ .removeLevels(Buffer.from(args.levels), args.enforceLimits ?? false)
208
+ .accountsStrict({
209
+ payer: args.payer,
210
+ authority: controllerAuthority,
211
+ investor,
212
+ identityRegistryProgram: identityRegistryProgramId,
213
+ identityRegistry,
214
+ identityAccount,
215
+ systemProgram: SystemProgram.programId,
216
+ policyEngineProgram: policyEngineProgramId,
217
+ policyEngine: getPolicyEnginePda(args.assetMint),
218
+ trackerAccount,
219
+ assetMint: args.assetMint,
220
+ })
221
+ .instruction();
222
+ return this.rbacProgram.methods
223
+ .removeLevels(ix.data)
224
+ .accountsStrict({
225
+ payer: args.payer,
226
+ user: args.signer,
227
+ controllerAuthority,
228
+ assetAccessController,
229
+ authorizedUserRole: authorizedUserRole || null,
230
+ identityMetadataRegistryProgram: IMR_PROGRAM,
231
+ investor,
232
+ identityRegistryProgram: identityRegistryProgramId,
233
+ identityRegistry,
234
+ identityAccount,
235
+ systemProgram: SystemProgram.programId,
236
+ policyEngineProgram: policyEngineProgramId,
237
+ policyEngine: getPolicyEnginePda(args.assetMint),
238
+ trackerAccount,
239
+ assetMint: args.assetMint,
240
+ })
241
+ .instruction();
242
+ }
243
+ /**
244
+ * Asynchronously remove an investor.
245
+ * @param args - {@link RemoveLevelsArgs}
246
+ * @param assetAccessController - RBAC AssetAccessController account.
247
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
248
+ * @returns A Promise that resolves to the instructions to remove an investor.
249
+ * */
250
+ async removeInvestor(args, assetAccessController, authorizedUserRole) {
251
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
252
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
253
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
254
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString());
255
+ return this.rbacProgram.methods
256
+ .removeInvestor()
257
+ .accountsStrict({
258
+ payer: args.payer,
259
+ user: args.signer,
260
+ controllerAuthority,
261
+ assetAccessController,
262
+ authorizedUserRole: authorizedUserRole || null,
263
+ identityMetadataRegistryProgram: IMR_PROGRAM,
264
+ investor,
265
+ identityRegistryProgram: identityRegistryProgramId,
266
+ identityRegistry,
267
+ identityAccount,
268
+ })
269
+ .instruction();
270
+ }
271
+ /**
272
+ * Asynchronously attach a wallet to IdentityAccouont for the Investor.
273
+ * @param args - {@link AttachWalletByInvestorArgs}
274
+ * */
275
+ async attachWalletByInvestor(args) {
276
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
277
+ const investor = deriveInvestorPda(args.investorId, identityRegistry);
278
+ const identityAccount = getIdentityAccountPda(args.assetMint, investor.toString());
279
+ return this.imrProgram.methods
280
+ .attachWalletByInvestor(args.newWallet)
281
+ .accountsStrict({
282
+ payer: args.payer,
283
+ wallet: args.signer,
284
+ investor,
285
+ walletIdentity: getWalletIdentityAccountPda(args.assetMint, args.signer),
286
+ identityRegistryProgram: identityRegistryProgramId,
287
+ newWalletIdentity: getWalletIdentityAccountPda(args.assetMint, args.newWallet.toString()),
288
+ identityAccount,
289
+ identityRegistry,
290
+ assetMint: args.assetMint,
291
+ systemProgram: SystemProgram.programId,
292
+ })
293
+ .instruction();
294
+ }
295
+ }
296
+ //# 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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"}
@@ -0,0 +1,65 @@
1
+ import { Program } from "@coral-xyz/anchor";
2
+ import { PublicKey, TransactionInstruction } from "@solana/web3.js";
3
+ import { RwaRbac } from "../types/generated/rwa_rbac";
4
+ import { AttachDetachWalletArgs, RefreshLevelArgs } from "../types/instructions";
5
+ import { AddLevelToIdentityAccountArgs, IxReturn, RemoveLevelFromIdentityAccountArgs, RwaClient, SetupUserArgs } from "@dstoken-solana/rwa-token-sdk";
6
+ /**
7
+ * Represents the role-based access client for Identity Registry for an RWA.
8
+ */
9
+ export declare class IdentityRegistry {
10
+ rwaClient: RwaClient;
11
+ rbacProgram: Program<RwaRbac>;
12
+ constructor(rwaClient: RwaClient, rbacProgram: Program<RwaRbac>);
13
+ /**
14
+ * Asynchronously generates instructions to setup a non-investor user with an identity account.
15
+ * @param args - {@link SetupUserArgs}
16
+ * @param authority - RBAC AssetAccessController ControllerAuthority.
17
+ * @param assetAccessController - RBAC AssetAccessController account.
18
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
19
+ * @returns A Promise that resolves to the instructions to setup a user.
20
+ *
21
+ * It is required for at least a single user to be setup before issuing tokens.
22
+ */
23
+ setupUserIxns(args: SetupUserArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<IxReturn>;
24
+ /**
25
+ * Asynchronously update a non-investor user identity account level.
26
+ * @param args - {@link AddLevelToIdentityAccountArgs}
27
+ * @param assetAccessController - RBAC AssetAccessController account.
28
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
29
+ * @returns A Promise that resolves to the instructions to update user account identity.
30
+ * */
31
+ addIdentityLevelToUserAccount(args: AddLevelToIdentityAccountArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
32
+ /**
33
+ * Asynchronously reduces a non-Investor user identity account level.
34
+ * @param args - {@link RemoveLevelFromIdentityAccount}
35
+ * @param assetAccessController - RBAC AssetAccessController account.
36
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
37
+ * @returns A Promise that resolves to the instructions to reduce the level of a user identity account.
38
+ */
39
+ removeIdentityLevelFromUserAccount(args: RemoveLevelFromIdentityAccountArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
40
+ /**
41
+ * Asynchronously generates instruction to refresh expiry on an Identity Account level.
42
+ * @param args - {@link RefreshLevelArgs}
43
+ * @param assetAccessController - RBAC AssetAccessController account.
44
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
45
+ * @returns A Promise that resolves to refresh expiry on an Identity Account level.
46
+ * */
47
+ refreshLevelToIdentityAccountIxn(args: RefreshLevelArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
48
+ /**
49
+ * Asynchronously generates instruction to attach wallet to identity.
50
+ * @param args - {@link AttachDetachWalletArgs}
51
+ * @param assetAccessController - RBAC AssetAccessController account.
52
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
53
+ * @returns A Promise that resolves to attach wallet.
54
+ * */
55
+ attachWalletToIdentityIxn(args: AttachDetachWalletArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
56
+ /**
57
+ * Asynchronously generates instruction to detach wallet from identity.
58
+ * @param args - {@link AttachDetachWalletArgs}
59
+ * @param assetAccessController - RBAC AssetAccessController account.
60
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
61
+ * @returns A Promise that resolves to detach wallet.
62
+ * */
63
+ detachWalletFromIdentityIxn(args: AttachDetachWalletArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
64
+ }
65
+ //# sourceMappingURL=IdentityRegistry.d.ts.map
@@ -0,0 +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,EACtB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,6BAA6B,EAS7B,QAAQ,EAER,kCAAkC,EAClC,SAAS,EACT,aAAa,EACd,MAAM,+BAA+B,CAAC;AAIvC;;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;IAuCpB;;;;;;SAMK;IACC,6BAA6B,CACjC,IAAI,EAAE,6BAA6B,EACnC,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IA6BlC;;;;;;OAMG;IACG,kCAAkC,CACtC,IAAI,EAAE,kCAAkC,EACxC,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IA+BlC;;;;;;SAMK;IACC,gCAAgC,CACpC,IAAI,EAAE,gBAAgB,EACtB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IA+BlC;;;;;;SAMK;IACC,yBAAyB,CAC7B,IAAI,EAAE,sBAAsB,EAC5B,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IA8ClC;;;;;;SAMK;IACC,2BAA2B,CAC/B,IAAI,EAAE,sBAAsB,EAC5B,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;CAqCnC"}
@@ -0,0 +1,230 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import { getIdentityAccountPda, getIdentityRegistryPda, getIdentityRegistryProgram, getPolicyEnginePda, getRemoveLevelFromIdentityAccount, getTrackerAccountPda, getWalletIdentityAccountPda, identityRegistryProgramId, policyEngineProgramId, } from "@dstoken-solana/rwa-token-sdk";
3
+ import { deriveControllerAuthorityPda } from "../pdas";
4
+ import { SystemProgram } from "@solana/web3.js";
5
+ /**
6
+ * Represents the role-based access client for Identity Registry for an RWA.
7
+ */
8
+ export class IdentityRegistry {
9
+ constructor(rwaClient, rbacProgram) {
10
+ this.rwaClient = rwaClient;
11
+ this.rbacProgram = rbacProgram;
12
+ }
13
+ /**
14
+ * Asynchronously generates instructions to setup a non-investor user with an identity account.
15
+ * @param args - {@link SetupUserArgs}
16
+ * @param authority - RBAC AssetAccessController ControllerAuthority.
17
+ * @param assetAccessController - RBAC AssetAccessController account.
18
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
19
+ * @returns A Promise that resolves to the instructions to setup a user.
20
+ *
21
+ * It is required for at least a single user to be setup before issuing tokens.
22
+ */
23
+ async setupUserIxns(args, assetAccessController, authorizedUserRole) {
24
+ const { ixs } = await this.rwaClient.identityRegistry.setupUserIxns(args);
25
+ const returnIxs = [];
26
+ const identityAccountIx = ixs[0];
27
+ const trackerAccountIx = ixs[1];
28
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
29
+ const identityAccount = getIdentityAccountPda(args.assetMint, args.owner);
30
+ returnIxs.push(await this.rbacProgram.methods
31
+ .createIdentityAccount(identityAccountIx.data)
32
+ .accountsStrict({
33
+ payer: args.payer,
34
+ user: args.signer,
35
+ controllerAuthority,
36
+ assetAccessController,
37
+ authorizedUserRole: authorizedUserRole || null,
38
+ identityRegistryProgram: identityRegistryProgramId,
39
+ identityRegistry: getIdentityRegistryPda(args.assetMint),
40
+ identityAccount,
41
+ walletIdentity: getWalletIdentityAccountPda(args.assetMint, args.owner),
42
+ systemProgram: SystemProgram.programId,
43
+ })
44
+ .instruction());
45
+ returnIxs.push(trackerAccountIx);
46
+ return {
47
+ ixs: returnIxs,
48
+ signers: [],
49
+ };
50
+ }
51
+ /**
52
+ * Asynchronously update a non-investor user identity account level.
53
+ * @param args - {@link AddLevelToIdentityAccountArgs}
54
+ * @param assetAccessController - RBAC AssetAccessController account.
55
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
56
+ * @returns A Promise that resolves to the instructions to update user account identity.
57
+ * */
58
+ async addIdentityLevelToUserAccount(args, assetAccessController, authorizedUserRole) {
59
+ const identityAccount = getIdentityAccountPda(args.assetMint, args.owner);
60
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
61
+ return this.rbacProgram.methods
62
+ .addLevelToIdentityAccount(args.levels[0], args.expiries[0], args.ignorePolicy ?? false)
63
+ .accountsStrict({
64
+ payer: args.payer,
65
+ user: args.signer,
66
+ controllerAuthority,
67
+ assetAccessController,
68
+ authorizedUserRole: authorizedUserRole || null,
69
+ identityRegistryProgram: identityRegistryProgramId,
70
+ identityRegistry: getIdentityRegistryPda(args.assetMint),
71
+ identityAccount,
72
+ identityAccountOwner: args.owner,
73
+ systemProgram: SystemProgram.programId,
74
+ policyEngineProgram: policyEngineProgramId,
75
+ policyEngine: getPolicyEnginePda(args.assetMint),
76
+ trackerAccount: getTrackerAccountPda(args.assetMint, args.owner),
77
+ assetMint: args.assetMint,
78
+ })
79
+ .instruction();
80
+ }
81
+ /**
82
+ * Asynchronously reduces a non-Investor user identity account level.
83
+ * @param args - {@link RemoveLevelFromIdentityAccount}
84
+ * @param assetAccessController - RBAC AssetAccessController account.
85
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
86
+ * @returns A Promise that resolves to the instructions to reduce the level of a user identity account.
87
+ */
88
+ async removeIdentityLevelFromUserAccount(args, assetAccessController, authorizedUserRole) {
89
+ const removeLevelIx = await getRemoveLevelFromIdentityAccount(args, this.rwaClient.provider);
90
+ const ixData = removeLevelIx.data;
91
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
92
+ const identityAccount = getIdentityAccountPda(args.assetMint, args.owner);
93
+ return this.rbacProgram.methods
94
+ .removeLevelFromIdentityAccount(ixData)
95
+ .accountsStrict({
96
+ payer: args.payer,
97
+ user: args.signer,
98
+ controllerAuthority,
99
+ assetAccessController,
100
+ authorizedUserRole: authorizedUserRole || null,
101
+ identityRegistryProgram: identityRegistryProgramId,
102
+ identityRegistry: getIdentityRegistryPda(args.assetMint),
103
+ identityAccount,
104
+ identityAccountOwner: args.owner,
105
+ systemProgram: SystemProgram.programId,
106
+ policyEngineProgram: policyEngineProgramId,
107
+ policyEngine: getPolicyEnginePda(args.assetMint),
108
+ trackerAccount: getTrackerAccountPda(args.assetMint, args.owner),
109
+ assetMint: args.assetMint,
110
+ })
111
+ .instruction();
112
+ }
113
+ /**
114
+ * Asynchronously generates instruction to refresh expiry on an Identity Account level.
115
+ * @param args - {@link RefreshLevelArgs}
116
+ * @param assetAccessController - RBAC AssetAccessController account.
117
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
118
+ * @returns A Promise that resolves to refresh expiry on an Identity Account level.
119
+ * */
120
+ async refreshLevelToIdentityAccountIxn(args, assetAccessController, authorizedUserRole) {
121
+ const identityProgram = getIdentityRegistryProgram(this.rwaClient.provider);
122
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
123
+ const identityAccount = getIdentityAccountPda(args.assetMint, args.owner);
124
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
125
+ const refreshIx = await identityProgram.methods
126
+ .refreshLevelToIdentityAccount(args.level, args.expiry)
127
+ .accountsStrict({
128
+ payer: args.payer,
129
+ signer: controllerAuthority,
130
+ identityRegistry,
131
+ identityAccount,
132
+ })
133
+ .instruction();
134
+ return this.rbacProgram.methods
135
+ .refreshLevelToIdentityAccount(refreshIx.data)
136
+ .accountsStrict({
137
+ payer: args.payer,
138
+ user: args.signer,
139
+ controllerAuthority,
140
+ assetAccessController,
141
+ authorizedUserRole: authorizedUserRole || null,
142
+ identityRegistryProgram: identityRegistryProgramId,
143
+ identityRegistry,
144
+ identityAccount,
145
+ })
146
+ .instruction();
147
+ }
148
+ /**
149
+ * Asynchronously generates instruction to attach wallet to identity.
150
+ * @param args - {@link AttachDetachWalletArgs}
151
+ * @param assetAccessController - RBAC AssetAccessController account.
152
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
153
+ * @returns A Promise that resolves to attach wallet.
154
+ * */
155
+ async attachWalletToIdentityIxn(args, assetAccessController, authorizedUserRole) {
156
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
157
+ const identityProgram = getIdentityRegistryProgram(this.rwaClient.provider);
158
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
159
+ const identityAccount = getIdentityAccountPda(args.assetMint, args.owner);
160
+ const newWalletIdentityAccount = getIdentityAccountPda(args.assetMint, args.wallet);
161
+ const walletIdentity = getWalletIdentityAccountPda(args.assetMint, args.wallet.toString());
162
+ const ix = await identityProgram.methods
163
+ .attachWalletToIdentity(new PublicKey(args.wallet))
164
+ .accountsStrict({
165
+ payer: args.payer,
166
+ authority: controllerAuthority,
167
+ identityAccount,
168
+ identityRegistry,
169
+ assetMint: args.assetMint,
170
+ walletIdentity,
171
+ systemProgram: SystemProgram.programId,
172
+ })
173
+ .instruction();
174
+ return this.rbacProgram.methods
175
+ .attachWalletToIdentity(ix.data)
176
+ .accountsStrict({
177
+ payer: args.payer,
178
+ user: args.signer,
179
+ controllerAuthority,
180
+ assetAccessController,
181
+ authorizedUserRole: authorizedUserRole || null,
182
+ identityRegistryProgram: identityRegistryProgramId,
183
+ identityAccount,
184
+ identityRegistry,
185
+ assetMint: args.assetMint,
186
+ walletIdentity,
187
+ systemProgram: SystemProgram.programId,
188
+ })
189
+ .instruction();
190
+ }
191
+ /**
192
+ * Asynchronously generates instruction to detach wallet from identity.
193
+ * @param args - {@link AttachDetachWalletArgs}
194
+ * @param assetAccessController - RBAC AssetAccessController account.
195
+ * @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
196
+ * @returns A Promise that resolves to detach wallet.
197
+ * */
198
+ async detachWalletFromIdentityIxn(args, assetAccessController, authorizedUserRole) {
199
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
200
+ const identityProgram = getIdentityRegistryProgram(this.rwaClient.provider);
201
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
202
+ const identityAccount = getIdentityAccountPda(args.assetMint, args.owner);
203
+ const walletIdentity = getWalletIdentityAccountPda(args.assetMint, args.wallet.toString());
204
+ const ix = await identityProgram.methods
205
+ .detachWalletFromIdentity()
206
+ .accountsStrict({
207
+ payer: args.payer,
208
+ authority: controllerAuthority,
209
+ walletIdentity,
210
+ identityAccount,
211
+ identityRegistry,
212
+ })
213
+ .instruction();
214
+ return this.rbacProgram.methods
215
+ .detachWalletFromIdentity(ix.data)
216
+ .accountsStrict({
217
+ payer: args.payer,
218
+ user: args.signer,
219
+ controllerAuthority,
220
+ assetAccessController,
221
+ authorizedUserRole: authorizedUserRole || null,
222
+ identityRegistryProgram: identityRegistryProgramId,
223
+ walletIdentity,
224
+ identityAccount,
225
+ identityRegistry,
226
+ })
227
+ .instruction();
228
+ }
229
+ }
230
+ //# 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,EAEL,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EAClB,iCAAiC,EACjC,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EAEzB,qBAAqB,GAItB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;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;IACH,KAAK,CAAC,aAAa,CACjB,IAAmB,EACnB,qBAAgC,EAChC,kBAA8B;QAE9B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1E,MAAM,SAAS,GAAG,EAAE,CAAC;QAErB,MAAM,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,mBAAmB,GAAG,4BAA4B,CACtD,qBAAqB,CACtB,CAAC;QACF,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,SAAS,CAAC,IAAI,CACZ,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;aAC3B,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC;aAC7C,cAAc,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,kBAAkB,EAAE,kBAAkB,IAAI,IAAI;YAC9C,uBAAuB,EAAE,yBAAyB;YAClD,gBAAgB,EAAE,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC;YACxD,eAAe;YACf,cAAc,EAAE,2BAA2B,CACzC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,CACX;YACD,aAAa,EAAE,aAAa,CAAC,SAAS;SACvC,CAAC;aACD,WAAW,EAAE,CACjB,CAAC;QAEF,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEjC,OAAO;YACL,GAAG,EAAE,SAAS;YACd,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED;;;;;;SAMK;IACL,KAAK,CAAC,6BAA6B,CACjC,IAAmC,EACnC,qBAAgC,EAChC,kBAA8B;QAE9B,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,mBAAmB,GAAG,4BAA4B,CACtD,qBAAqB,CACtB,CAAC;QACF,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;aAC5B,yBAAyB,CACxB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EACd,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAChB,IAAI,CAAC,YAAY,IAAI,KAAK,CAC3B;aACA,cAAc,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,kBAAkB,EAAE,kBAAkB,IAAI,IAAI;YAC9C,uBAAuB,EAAE,yBAAyB;YAClD,gBAAgB,EAAE,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC;YACxD,eAAe;YACf,oBAAoB,EAAE,IAAI,CAAC,KAAK;YAChC,aAAa,EAAE,aAAa,CAAC,SAAS;YACtC,mBAAmB,EAAE,qBAAqB;YAC1C,YAAY,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;YAChD,cAAc,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;YAChE,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IACD;;;;;;OAMG;IACH,KAAK,CAAC,kCAAkC,CACtC,IAAwC,EACxC,qBAAgC,EAChC,kBAA8B;QAE9B,MAAM,aAAa,GAAG,MAAM,iCAAiC,CAC3D,IAAI,EACJ,IAAI,CAAC,SAAS,CAAC,QAAQ,CACxB,CAAC;QACF,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC;QAClC,MAAM,mBAAmB,GAAG,4BAA4B,CACtD,qBAAqB,CACtB,CAAC;QACF,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;aAC5B,8BAA8B,CAAC,MAAM,CAAC;aACtC,cAAc,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,kBAAkB,EAAE,kBAAkB,IAAI,IAAI;YAC9C,uBAAuB,EAAE,yBAAyB;YAClD,gBAAgB,EAAE,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC;YACxD,eAAe;YACf,oBAAoB,EAAE,IAAI,CAAC,KAAK;YAChC,aAAa,EAAE,aAAa,CAAC,SAAS;YACtC,mBAAmB,EAAE,qBAAqB;YAC1C,YAAY,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;YAChD,cAAc,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;YAChE,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;SAMK;IACL,KAAK,CAAC,gCAAgC,CACpC,IAAsB,EACtB,qBAAgC,EAChC,kBAA8B;QAE9B,MAAM,eAAe,GAAG,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5E,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,mBAAmB,GAAG,4BAA4B,CACtD,qBAAqB,CACtB,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO;aAC5C,6BAA6B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC;aACtD,cAAc,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,mBAAmB;YAC3B,gBAAgB;YAChB,eAAe;SAChB,CAAC;aACD,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;aAC5B,6BAA6B,CAAC,SAAS,CAAC,IAAI,CAAC;aAC7C,cAAc,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,kBAAkB,EAAE,kBAAkB,IAAI,IAAI;YAC9C,uBAAuB,EAAE,yBAAyB;YAClD,gBAAgB;YAChB,eAAe;SAChB,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;SAMK;IACL,KAAK,CAAC,yBAAyB,CAC7B,IAA4B,EAC5B,qBAAgC,EAChC,kBAA8B;QAE9B,MAAM,mBAAmB,GAAG,4BAA4B,CACtD,qBAAqB,CACtB,CAAC;QACF,MAAM,eAAe,GAAG,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5E,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,wBAAwB,GAAG,qBAAqB,CACpD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,MAAM,cAAc,GAAG,2BAA2B,CAChD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CACvB,CAAC;QAEF,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO;aACrC,sBAAsB,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAClD,cAAc,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,mBAAmB;YAC9B,eAAe;YACf,gBAAgB;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc;YACd,aAAa,EAAE,aAAa,CAAC,SAAS;SACvC,CAAC;aACD,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;aAC5B,sBAAsB,CAAC,EAAE,CAAC,IAAI,CAAC;aAC/B,cAAc,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,kBAAkB,EAAE,kBAAkB,IAAI,IAAI;YAC9C,uBAAuB,EAAE,yBAAyB;YAClD,eAAe;YACf,gBAAgB;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc;YACd,aAAa,EAAE,aAAa,CAAC,SAAS;SACvC,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;SAMK;IACL,KAAK,CAAC,2BAA2B,CAC/B,IAA4B,EAC5B,qBAAgC,EAChC,kBAA8B;QAE9B,MAAM,mBAAmB,GAAG,4BAA4B,CACtD,qBAAqB,CACtB,CAAC;QACF,MAAM,eAAe,GAAG,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5E,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,cAAc,GAAG,2BAA2B,CAChD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CACvB,CAAC;QAEF,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO;aACrC,wBAAwB,EAAE;aAC1B,cAAc,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,mBAAmB;YAC9B,cAAc;YACd,eAAe;YACf,gBAAgB;SACjB,CAAC;aACD,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;aAC5B,wBAAwB,CAAC,EAAE,CAAC,IAAI,CAAC;aACjC,cAAc,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,mBAAmB;YACnB,qBAAqB;YACrB,kBAAkB,EAAE,kBAAkB,IAAI,IAAI;YAC9C,uBAAuB,EAAE,yBAAyB;YAClD,cAAc;YACd,eAAe;YACf,gBAAgB;SACjB,CAAC;aACD,WAAW,EAAE,CAAC;IACnB,CAAC;CACF"}