@dstoken-solana/rwa-rbac 0.4.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 (46) hide show
  1. package/dist/client/AssetController.d.ts.map +1 -1
  2. package/dist/client/AssetController.js +343 -0
  3. package/dist/client/AssetController.js.map +1 -0
  4. package/dist/client/IdentityMetadataRegistry.js +354 -0
  5. package/dist/client/IdentityMetadataRegistry.js.map +1 -0
  6. package/dist/client/IdentityRegistry.js +200 -0
  7. package/dist/client/IdentityRegistry.js.map +1 -0
  8. package/dist/client/PolicyEngine.js +260 -0
  9. package/dist/client/PolicyEngine.js.map +1 -0
  10. package/dist/client/RwaRbacClient.d.ts.map +1 -1
  11. package/dist/client/RwaRbacClient.js +250 -0
  12. package/dist/client/RwaRbacClient.js.map +1 -0
  13. package/dist/client/index.js +6 -0
  14. package/dist/client/index.js.map +1 -0
  15. package/dist/constants.js +5 -0
  16. package/dist/constants.js.map +1 -0
  17. package/dist/index.es.js +51 -21
  18. package/dist/index.js +6 -5024
  19. package/dist/index.js.map +1 -0
  20. package/dist/pdas.js +38 -0
  21. package/dist/pdas.js.map +1 -0
  22. package/dist/types/flags.d.ts +2 -1
  23. package/dist/types/flags.d.ts.map +1 -1
  24. package/dist/types/flags.js +47 -0
  25. package/dist/types/flags.js.map +1 -0
  26. package/dist/types/generated/index.js +4 -0
  27. package/dist/types/generated/index.js.map +1 -0
  28. package/dist/types/generated/rwa_imr.d.ts +24 -0
  29. package/dist/types/generated/rwa_imr.d.ts.map +1 -1
  30. package/dist/types/generated/rwa_imr.js +2 -0
  31. package/dist/types/generated/rwa_imr.js.map +1 -0
  32. package/dist/types/generated/rwa_imr.json +902 -0
  33. package/dist/types/generated/rwa_rbac.d.ts +13 -8
  34. package/dist/types/generated/rwa_rbac.d.ts.map +1 -1
  35. package/dist/types/generated/rwa_rbac.js +2 -0
  36. package/dist/types/generated/rwa_rbac.js.map +1 -0
  37. package/dist/types/generated/rwa_rbac.json +2621 -0
  38. package/dist/types/index.js +4 -0
  39. package/dist/types/index.js.map +1 -0
  40. package/dist/types/instructions.d.ts +1 -0
  41. package/dist/types/instructions.d.ts.map +1 -1
  42. package/dist/types/instructions.js +2 -0
  43. package/dist/types/instructions.js.map +1 -0
  44. package/dist/utils.js +8 -0
  45. package/dist/utils.js.map +1 -0
  46. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AssetController.d.ts","sourceRoot":"","sources":["../../src/client/AssetController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,SAAS,EAET,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EACL,eAAe,EAEf,iCAAiC,EAClC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAEL,uBAAuB,EACvB,eAAe,EAkBf,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAMvC;;GAEG;AACH,qBAAa,eAAe;IAC1B,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;;;;OAIG;IACG,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAItF;;;;;;SAMK;IACC,mBAAmB,CACvB,IAAI,EAAE,uBAAuB,EAC7B,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAuBlC;;;;;OAKG;IACG,cAAc,CAClB,IAAI,EAAE,eAAe,EACrB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAkElC;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAI3E;;;;;;OAMG;IACG,cAAc,CAClB,IAAI,EAAE,eAAe,EACrB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAyBlC;;;;;;OAMG;IACG,YAAY,CAChB,IAAI,EAAE,eAAe,EACrB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IA0BlC;;;;;;;;OAQG;IACG,cAAc,CAClB,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,SAAS,EACjB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,EAC7B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC;IAuDlC;;;;;;OAMG;IACG,gCAAgC,CACpC,IAAI,EAAE,iCAAiC,EACvC,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAsBlC;;;;;;;OAOG;IACG,cAAc,CAClB,IAAI,EAAE,eAAe,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;CA2FnC"}
1
+ {"version":3,"file":"AssetController.d.ts","sourceRoot":"","sources":["../../src/client/AssetController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,SAAS,EAET,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EACL,eAAe,EAEf,iCAAiC,EAClC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAEL,uBAAuB,EACvB,eAAe,EAkBf,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAMvC;;GAEG;AACH,qBAAa,eAAe;IAC1B,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;;;;OAIG;IACG,gBAAgB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAItF;;;;;;SAMK;IACC,mBAAmB,CACvB,IAAI,EAAE,uBAAuB,EAC7B,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAuBlC;;;;;OAKG;IACG,cAAc,CAClB,IAAI,EAAE,eAAe,EACrB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAkElC;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAI3E;;;;;;OAMG;IACG,cAAc,CAClB,IAAI,EAAE,eAAe,EACrB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAyBlC;;;;;;OAMG;IACG,YAAY,CAChB,IAAI,EAAE,eAAe,EACrB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAyBlC;;;;;;;;OAQG;IACG,cAAc,CAClB,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,SAAS,EACjB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,EAC7B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC;IAuDlC;;;;;;OAMG;IACG,gCAAgC,CACpC,IAAI,EAAE,iCAAiC,EACvC,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAsBlC;;;;;;;OAOG;IACG,cAAc,CAClB,IAAI,EAAE,eAAe,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,EAAE,SAAS,GAC5B,OAAO,CAAC,sBAAsB,CAAC;CA2FnC"}
@@ -0,0 +1,343 @@
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, SystemProgram, } from "@solana/web3.js";
11
+ import { ASSOCIATED_TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID, } from "@solana/spl-token";
12
+ import { assetControllerProgramId, getAssetControllerEventAuthority, getAssetControllerPda, getCreateAssetControllerIx, getExtraMetasListPda, getFreezeTokenIx, getIdentityAccountPda, getIdentityRegistryPda, getIssueTokensIx, getPolicyEnginePda, getRevokeTokensIx, getSeizeTokensIx, getThawTokenIx, getTrackerAccountPda, getUpdateInterestBearingMintRateIx, getWalletIdentityAccountPda, identityRegistryProgramId, policyEngineProgramId, } from "@dstoken-solana/rwa-token-sdk";
13
+ import { deriveControllerAuthorityPda, deriveInvestorPda, } from "../pdas";
14
+ /**
15
+ * Represents the role-based access client for Asset Controller for an RWA.
16
+ */
17
+ export class AssetController {
18
+ constructor(rwaClient, rbacProgram) {
19
+ this.rwaClient = rwaClient;
20
+ this.rbacProgram = rbacProgram;
21
+ }
22
+ /**
23
+ * Asynchronously generates instructions to setup a new asset controller.
24
+ * @param args - {@link CreateAssetControllerIx}
25
+ * @returns A Promise that resolves to the instructions to create an asset controller.
26
+ */
27
+ setupNewRegistry(args) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ return getCreateAssetControllerIx(args, this.rwaClient.provider);
30
+ });
31
+ }
32
+ /**
33
+ * Update the asset controller's metadata.
34
+ * @param args - {@link UpdateAssetMetadataArgs}
35
+ * @param assetAccessController - RBAC AssetAccessController account.
36
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
37
+ * @returns A Promise that resolves to the instructions to update the asset controller's metadata.
38
+ * */
39
+ updateAssetMetadata(args, assetAccessController, authorizedUserRole) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ const updateIx = yield this.rwaClient.assetController.updateAssetMetadata(args);
42
+ const ixData = updateIx.data;
43
+ return this.rbacProgram.methods
44
+ .updateAssetMetadata(ixData)
45
+ .accountsStrict({
46
+ payer: args.payer,
47
+ user: args.signer,
48
+ controllerAuthority: args.authority,
49
+ assetAccessController,
50
+ authorizedUserRole: authorizedUserRole || null,
51
+ assetMint: args.assetMint,
52
+ assetController: getAssetControllerPda(args.assetMint),
53
+ assetControllerProgram: assetControllerProgramId,
54
+ tokenProgram: TOKEN_2022_PROGRAM_ID,
55
+ eventAuthority: getAssetControllerEventAuthority(),
56
+ systemProgram: SystemProgram.programId,
57
+ })
58
+ .instruction();
59
+ });
60
+ }
61
+ /**
62
+ * Asynchronously generates instructions to issue tokens and lock tokens according to issuance policy.
63
+ * @param args - {@link IssueTokensWithLockArgs}
64
+ * @param assetAccessController - RBAC AssetAccessController account.
65
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
66
+ */
67
+ issueTokenIxns(args, assetAccessController, authorizedUserRole) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
70
+ const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
71
+ const investorPda = deriveInvestorPda(args.investorId, identityRegistry);
72
+ const issueTokensIxs = yield getIssueTokensIx({
73
+ payer: args.payer,
74
+ signer: args.signer,
75
+ wallet: args.wallet,
76
+ assetMint: args.assetMint,
77
+ amount: args.amount,
78
+ timestamp: args.issuanceTimestamp,
79
+ authority: controllerAuthority.toString(),
80
+ owner: investorPda.toString(),
81
+ }, this.rwaClient.provider);
82
+ const trackerAccount = getTrackerAccountPda(args.assetMint, investorPda.toString());
83
+ const ixData = issueTokensIxs[0].data;
84
+ const tokenAccount = getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.wallet), false, TOKEN_2022_PROGRAM_ID);
85
+ return yield this.rbacProgram.methods
86
+ .issueTokens(ixData)
87
+ .accountsStrict({
88
+ payer: args.payer,
89
+ user: args.signer,
90
+ controllerAuthority: controllerAuthority,
91
+ assetAccessController: assetAccessController,
92
+ authorizedUserRole: authorizedUserRole || null,
93
+ assetControllerProgram: assetControllerProgramId,
94
+ assetMint: args.assetMint,
95
+ assetController: getAssetControllerPda(args.assetMint),
96
+ to: args.wallet,
97
+ tokenAccount: tokenAccount,
98
+ policyEngine: getPolicyEnginePda(args.assetMint),
99
+ policyEngineProgram: policyEngineProgramId,
100
+ identityAccount: getIdentityAccountPda(args.assetMint, investorPda.toString()),
101
+ trackerAccount,
102
+ identityRegistry,
103
+ tokenProgram: TOKEN_2022_PROGRAM_ID,
104
+ associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
105
+ systemProgram: SystemProgram.programId,
106
+ walletIdentityAccount: getWalletIdentityAccountPda(args.assetMint, args.wallet),
107
+ eventAuthority: getAssetControllerEventAuthority(),
108
+ })
109
+ .instruction();
110
+ });
111
+ }
112
+ /**
113
+ * Executes a token transfer.
114
+ * @param args - {@link TransferTokensArgs}
115
+ * @returns A promise that resolves to transaction instruction.
116
+ */
117
+ transfer(args) {
118
+ return __awaiter(this, void 0, void 0, function* () {
119
+ return this.rwaClient.assetController.transfer(args);
120
+ });
121
+ }
122
+ /**
123
+ * Asynchronously generates instruction to freeze a token account.
124
+ * @param args - {@link FreezeTokenArgs}
125
+ * @param assetAccessController - RBAC AssetAccessController account.
126
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
127
+ * @returns A Promise that resolves to the instruction to freeze.
128
+ */
129
+ freezeTokenIxn(args, assetAccessController, authorizedUserRole) {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ const freezeIx = yield getFreezeTokenIx(args, this.rwaClient.provider);
132
+ const ixData = freezeIx.data;
133
+ const tokenAccount = getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.owner), false, TOKEN_2022_PROGRAM_ID);
134
+ return this.rbacProgram.methods
135
+ .freezeTokenAccount(ixData)
136
+ .accountsStrict({
137
+ user: args.signer,
138
+ controllerAuthority: args.authority,
139
+ assetAccessController: assetAccessController,
140
+ authorizedUserRole: authorizedUserRole || null,
141
+ assetControllerProgram: assetControllerProgramId,
142
+ assetMint: args.assetMint,
143
+ assetController: getAssetControllerPda(args.assetMint),
144
+ tokenAccount,
145
+ tokenProgram: TOKEN_2022_PROGRAM_ID,
146
+ })
147
+ .instruction();
148
+ });
149
+ }
150
+ /**
151
+ * Asynchronously generates instruction to thaw a token account.
152
+ * @param args - {@link FreezeTokenArgs}
153
+ * @param assetAccessController - RBAC AssetAccessController account.
154
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
155
+ * @returns A Promise that resolves to the instruction to thaw.
156
+ */
157
+ thawTokenIxn(args, assetAccessController, authorizedUserRole) {
158
+ return __awaiter(this, void 0, void 0, function* () {
159
+ const thawIx = yield getThawTokenIx(args, this.rwaClient.provider);
160
+ const ixData = thawIx.data;
161
+ const tokenAccount = getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.owner), false, TOKEN_2022_PROGRAM_ID);
162
+ return this.rbacProgram.methods
163
+ .thawTokenAccount(ixData)
164
+ .accountsStrict({
165
+ user: args.signer,
166
+ controllerAuthority: args.authority,
167
+ assetAccessController: assetAccessController,
168
+ authorizedUserRole: authorizedUserRole || null,
169
+ assetControllerProgram: assetControllerProgramId,
170
+ assetMint: args.assetMint,
171
+ assetController: getAssetControllerPda(args.assetMint),
172
+ tokenAccount,
173
+ tokenProgram: TOKEN_2022_PROGRAM_ID,
174
+ })
175
+ .instruction();
176
+ });
177
+ }
178
+ /**
179
+ * Asynchronously generates instructions to revoke tokens from a user.
180
+ * @param args - {@link RevokeTokensArgs}
181
+ * @param signer - User signer public key.
182
+ * @param assetAccessController - RBAC AssetAccessController account.
183
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
184
+ * @param investorId - Optional investorId. Required if user is not an investor.
185
+ * @returns A Promise that resolves to the instructions to revoke.
186
+ */
187
+ revokeTokenIxn(args, signer, assetAccessController, authorizedUserRole, investorId) {
188
+ return __awaiter(this, void 0, void 0, function* () {
189
+ if (!args.wallet) {
190
+ throw new Error("Use wallet arg for wallet to revoke tokens from.");
191
+ }
192
+ // Set owner (even though it is InvestorPda) as wallet to generate ix data.
193
+ args.owner = args.wallet;
194
+ const revokeIx = yield getRevokeTokensIx(args, this.rwaClient.provider);
195
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
196
+ const investorPda = investorId
197
+ ? deriveInvestorPda(investorId, identityRegistry)
198
+ : null;
199
+ const ixData = revokeIx.data;
200
+ const assetController = getAssetControllerPda(args.assetMint);
201
+ const revokeTokenAccount = getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.wallet), false, TOKEN_2022_PROGRAM_ID);
202
+ return yield this.rbacProgram.methods
203
+ .revokeTokens(ixData)
204
+ .accountsStrict({
205
+ user: signer,
206
+ controllerAuthority: args.authority,
207
+ assetAccessController: assetAccessController,
208
+ authorizedUserRole: authorizedUserRole || null,
209
+ assetControllerProgram: assetControllerProgramId,
210
+ assetMint: args.assetMint,
211
+ assetController,
212
+ revokeTokenAccount,
213
+ identityRegistry,
214
+ identityAccount: getIdentityAccountPda(args.assetMint, investorId ? investorPda.toString() : args.owner),
215
+ trackerAccount: getTrackerAccountPda(args.assetMint, investorId ? investorPda.toString() : args.owner),
216
+ policyEngineProgram: policyEngineProgramId,
217
+ policyEngine: getPolicyEnginePda(args.assetMint),
218
+ walletIdentityAccount: getWalletIdentityAccountPda(args.assetMint, args.wallet),
219
+ tokenProgram: TOKEN_2022_PROGRAM_ID,
220
+ associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
221
+ systemProgram: SystemProgram.programId,
222
+ eventAuthority: getAssetControllerEventAuthority(),
223
+ })
224
+ .instruction();
225
+ });
226
+ }
227
+ /**
228
+ * Asynchronously generates instruction to update mint interest rate.
229
+ * @param args - {@link UpdateInterestBearingMintRateArgs}
230
+ * @param assetAccessController - RBAC AssetAccessController account.
231
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
232
+ * @returns A Promise that resolves to the instruction to update mint interest rate.
233
+ */
234
+ updateInterestBearingMintRateIxn(args, assetAccessController, authorizedUserRole) {
235
+ return __awaiter(this, void 0, void 0, function* () {
236
+ const updateIx = yield getUpdateInterestBearingMintRateIx(args, this.rwaClient.provider);
237
+ const ixData = updateIx.data;
238
+ return this.rbacProgram.methods
239
+ .updateInterestBearingMintRate(ixData)
240
+ .accountsStrict({
241
+ user: args.signer,
242
+ controllerAuthority: args.authority,
243
+ assetAccessController: assetAccessController,
244
+ authorizedUserRole: authorizedUserRole || null,
245
+ assetControllerProgram: assetControllerProgramId,
246
+ assetMint: args.assetMint,
247
+ assetController: getAssetControllerPda(args.assetMint),
248
+ eventAuthority: getAssetControllerEventAuthority(),
249
+ tokenProgram: TOKEN_2022_PROGRAM_ID,
250
+ })
251
+ .instruction();
252
+ });
253
+ }
254
+ /**
255
+ * Asynchronously generates instruction to seize tokens.
256
+ * @param args - {@link SeizeTokensArgs}
257
+ * @param signer - User signer public key.
258
+ * @param assetAccessController - RBAC AssetAccessController account.
259
+ * @param authorizedUserRole - UserRole authorized to invoke instruction.
260
+ * @returns A Promise that resolves to the instruction to seize.
261
+ */
262
+ seizeTokensIxn(args, investorId, signer, assetAccessController, authorizedUserRole) {
263
+ return __awaiter(this, void 0, void 0, function* () {
264
+ const identityRegistry = getIdentityRegistryPda(args.assetMint);
265
+ const investorPda = deriveInvestorPda(investorId, identityRegistry);
266
+ const [_, seizeIx] = yield getSeizeTokensIx(Object.assign(Object.assign({}, args), { wallet: args.from, from: investorPda.toString() }), this.rwaClient.provider);
267
+ return this.rbacProgram.methods
268
+ .seizeTokens(seizeIx.data)
269
+ .accountsStrict({
270
+ user: signer,
271
+ controllerAuthority: args.authority,
272
+ assetAccessController: assetAccessController,
273
+ authorizedUserRole: authorizedUserRole || null,
274
+ assetControllerProgram: assetControllerProgramId,
275
+ assetMint: args.assetMint,
276
+ assetController: getAssetControllerPda(args.assetMint),
277
+ sourceTokenAccount: getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.from), false, TOKEN_2022_PROGRAM_ID),
278
+ destinationTokenAccount: getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.to), true, TOKEN_2022_PROGRAM_ID),
279
+ tokenProgram: TOKEN_2022_PROGRAM_ID,
280
+ eventAuthority: getAssetControllerEventAuthority(),
281
+ })
282
+ .remainingAccounts([
283
+ {
284
+ pubkey: getPolicyEnginePda(args.assetMint),
285
+ isWritable: true,
286
+ isSigner: false,
287
+ },
288
+ {
289
+ pubkey: identityRegistryProgramId,
290
+ isWritable: false,
291
+ isSigner: false,
292
+ },
293
+ {
294
+ pubkey: policyEngineProgramId,
295
+ isWritable: false,
296
+ isSigner: false,
297
+ },
298
+ {
299
+ pubkey: getIdentityRegistryPda(args.assetMint),
300
+ isWritable: false,
301
+ isSigner: false,
302
+ },
303
+ {
304
+ pubkey: getIdentityAccountPda(args.assetMint, args.to),
305
+ isWritable: false,
306
+ isSigner: false,
307
+ },
308
+ {
309
+ pubkey: getIdentityAccountPda(args.assetMint, investorPda.toString()),
310
+ isWritable: false,
311
+ isSigner: false,
312
+ },
313
+ {
314
+ pubkey: getTrackerAccountPda(args.assetMint, args.to),
315
+ isWritable: true,
316
+ isSigner: false,
317
+ },
318
+ {
319
+ pubkey: getTrackerAccountPda(args.assetMint, investorPda.toString()),
320
+ isWritable: true,
321
+ isSigner: false,
322
+ },
323
+ {
324
+ pubkey: getExtraMetasListPda(args.assetMint),
325
+ isWritable: false,
326
+ isSigner: false,
327
+ },
328
+ {
329
+ pubkey: getWalletIdentityAccountPda(args.assetMint, args.to),
330
+ isWritable: false,
331
+ isSigner: false,
332
+ },
333
+ {
334
+ pubkey: getWalletIdentityAccountPda(args.assetMint, args.from),
335
+ isWritable: false,
336
+ isSigner: false,
337
+ },
338
+ ])
339
+ .instruction();
340
+ });
341
+ }
342
+ }
343
+ //# sourceMappingURL=AssetController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetController.js","sourceRoot":"","sources":["../../src/client/AssetController.ts"],"names":[],"mappings":"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"}