@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.
- package/dist/client/AssetController.d.ts +98 -0
- package/dist/client/AssetController.d.ts.map +1 -0
- package/dist/client/AssetController.js +394 -0
- package/dist/client/AssetController.js.map +1 -0
- package/dist/client/IdentityMetadataRegistry.d.ts +64 -0
- package/dist/client/IdentityMetadataRegistry.d.ts.map +1 -0
- package/dist/client/IdentityMetadataRegistry.js +296 -0
- package/dist/client/IdentityMetadataRegistry.js.map +1 -0
- package/dist/client/IdentityRegistry.d.ts +65 -0
- package/dist/client/IdentityRegistry.d.ts.map +1 -0
- package/dist/client/IdentityRegistry.js +230 -0
- package/dist/client/IdentityRegistry.js.map +1 -0
- package/dist/client/PolicyEngine.d.ts +74 -0
- package/dist/client/PolicyEngine.d.ts.map +1 -0
- package/dist/client/PolicyEngine.js +182 -0
- package/dist/client/PolicyEngine.js.map +1 -0
- package/dist/client/RwaRbacClient.d.ts +70 -0
- package/dist/client/RwaRbacClient.d.ts.map +1 -0
- package/dist/client/RwaRbacClient.js +159 -0
- package/dist/client/RwaRbacClient.js.map +1 -0
- package/dist/client/TokenLocks.d.ts +55 -0
- package/dist/client/TokenLocks.d.ts.map +1 -0
- package/dist/client/TokenLocks.js +249 -0
- package/dist/client/TokenLocks.js.map +1 -0
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -0
- package/dist/constants.d.ts +5 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +5 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/pdas.d.ts +9 -0
- package/dist/pdas.d.ts.map +1 -0
- package/dist/pdas.js +37 -0
- package/dist/pdas.js.map +1 -0
- package/dist/types/flags.d.ts +43 -0
- package/dist/types/flags.d.ts.map +1 -0
- package/dist/types/flags.js +45 -0
- package/dist/types/flags.js.map +1 -0
- package/dist/types/generated/rwa_imr.d.ts +592 -0
- package/dist/types/generated/rwa_imr.d.ts.map +1 -0
- package/dist/types/generated/rwa_imr.js +2 -0
- package/dist/types/generated/rwa_imr.js.map +1 -0
- package/dist/types/generated/rwa_imr.json +585 -0
- package/dist/types/generated/rwa_rbac.d.ts +2671 -0
- package/dist/types/generated/rwa_rbac.d.ts.map +1 -0
- package/dist/types/generated/rwa_rbac.js +2 -0
- package/dist/types/generated/rwa_rbac.js.map +1 -0
- package/dist/types/generated/rwa_rbac.json +2664 -0
- package/dist/types/generated/token_locks.d.ts +649 -0
- package/dist/types/generated/token_locks.d.ts.map +1 -0
- package/dist/types/generated/token_locks.js +2 -0
- package/dist/types/generated/token_locks.js.map +1 -0
- package/dist/types/generated/token_locks.json +642 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/instructions.d.ts +213 -0
- package/dist/types/instructions.d.ts.map +1 -0
- package/dist/types/instructions.js +2 -0
- package/dist/types/instructions.js.map +1 -0
- package/dist/utils.d.ts +7 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +8 -0
- package/dist/utils.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Program } from "@coral-xyz/anchor";
|
|
2
|
+
import { PublicKey, TransactionInstruction } from "@solana/web3.js";
|
|
3
|
+
import { IssueTokensWithLockArgs, UpdateInterestBearingMintRateArgs } from "../types/instructions";
|
|
4
|
+
import { RwaRbac } from "../types/generated/rwa_rbac";
|
|
5
|
+
import { CloseMintArgs, CreateAssetControllerIx, FreezeTokenArgs, RevokeTokensArgs, RwaClient, SeizeTokensArgs, TransferTokensArgs, UpdateAssetMetadataArgs, VoidTokensArgs } from "@dstoken-solana/rwa-token-sdk";
|
|
6
|
+
/**
|
|
7
|
+
* Represents the role-based access client for Asset Controller for an RWA.
|
|
8
|
+
*/
|
|
9
|
+
export declare class AssetController {
|
|
10
|
+
rwaClient: RwaClient;
|
|
11
|
+
rbacProgram: Program<RwaRbac>;
|
|
12
|
+
constructor(rwaClient: RwaClient, rbacProgram: Program<RwaRbac>);
|
|
13
|
+
/**
|
|
14
|
+
* Asynchronously generates instructions to setup a new asset controller.
|
|
15
|
+
* @param args - {@link CreateAssetControllerIx}
|
|
16
|
+
* @returns A Promise that resolves to the instructions to create an asset controller.
|
|
17
|
+
*/
|
|
18
|
+
setupNewRegistry(args: CreateAssetControllerIx): Promise<TransactionInstruction>;
|
|
19
|
+
/**
|
|
20
|
+
* Update the asset controller's metadata.
|
|
21
|
+
* @param args - {@link UpdateAssetMetadataArgs}
|
|
22
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
23
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
24
|
+
* @returns A Promise that resolves to the instructions to update the asset controller's metadata.
|
|
25
|
+
* */
|
|
26
|
+
updateAssetMetadata(args: UpdateAssetMetadataArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
|
|
27
|
+
/**
|
|
28
|
+
* Asynchronously generates instructions to issue tokens and lock tokens according to issuance policy.
|
|
29
|
+
* @param args - {@link IssueTokensWithLockArgs}
|
|
30
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
31
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
32
|
+
*/
|
|
33
|
+
issueTokenIxns(args: IssueTokensWithLockArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Asynchronously generates instructions to revoke assets.
|
|
36
|
+
* @param args - {@link VoidTokensArgs}
|
|
37
|
+
* @returns A Promise that resolves to the instructions to revoke assets.
|
|
38
|
+
*/
|
|
39
|
+
voidTokenIxns(args: VoidTokensArgs): Promise<TransactionInstruction>;
|
|
40
|
+
/**
|
|
41
|
+
* Executes a token transfer.
|
|
42
|
+
* @param args - {@link TransferTokensArgs}
|
|
43
|
+
* @returns A promise that resolves to transaction instruction.
|
|
44
|
+
*/
|
|
45
|
+
transfer(args: TransferTokensArgs): Promise<TransactionInstruction[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Asynchronously generates instruction to freeze a token account.
|
|
48
|
+
* @param args - {@link FreezeTokenArgs}
|
|
49
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
50
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
51
|
+
* @returns A Promise that resolves to the instruction to freeze.
|
|
52
|
+
*/
|
|
53
|
+
freezeTokenIxn(args: FreezeTokenArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
|
|
54
|
+
/**
|
|
55
|
+
* Asynchronously generates instruction to thaw a token account.
|
|
56
|
+
* @param args - {@link FreezeTokenArgs}
|
|
57
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
58
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
59
|
+
* @returns A Promise that resolves to the instruction to thaw.
|
|
60
|
+
*/
|
|
61
|
+
thawTokenIxn(args: FreezeTokenArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
|
|
62
|
+
/**
|
|
63
|
+
* Asynchronously generates instructions to revoke tokens from a user.
|
|
64
|
+
* @param args - {@link RevokeTokensArgs}
|
|
65
|
+
* @param payer - Payer public key.
|
|
66
|
+
* @param signer - User signer public key.
|
|
67
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
68
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
69
|
+
* @returns A Promise that resolves to the instructions to revoke.
|
|
70
|
+
*/
|
|
71
|
+
revokeTokenIxn(args: RevokeTokensArgs, investorId: string, signer: PublicKey, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
|
|
72
|
+
/**
|
|
73
|
+
* Asynchronously generates instruction to close mint.
|
|
74
|
+
* @param args - {@link CloseMintArgs}
|
|
75
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
76
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
77
|
+
* @returns A Promise that resolves to the instruction to close mint.
|
|
78
|
+
*/
|
|
79
|
+
closeMintIxn(args: CloseMintArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
|
|
80
|
+
/**
|
|
81
|
+
* Asynchronously generates instruction to update mint interest rate.
|
|
82
|
+
* @param args - {@link UpdateInterestBearingMintRateArgs}
|
|
83
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
84
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
85
|
+
* @returns A Promise that resolves to the instruction to update mint interest rate.
|
|
86
|
+
*/
|
|
87
|
+
updateInterestBearingMintRateIxn(args: UpdateInterestBearingMintRateArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
|
|
88
|
+
/**
|
|
89
|
+
* Asynchronously generates instruction to seize tokens.
|
|
90
|
+
* @param args - {@link SeizeTokensArgs}
|
|
91
|
+
* @param signer - User signer public key.
|
|
92
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
93
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
94
|
+
* @returns A Promise that resolves to the instruction to seize.
|
|
95
|
+
*/
|
|
96
|
+
seizeTokensIxn(args: SeizeTokensArgs, investorId: string, signer: PublicKey, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=AssetController.d.ts.map
|
|
@@ -0,0 +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,EAGT,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EACL,uBAAuB,EACvB,iCAAiC,EAClC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAEL,aAAa,EACb,uBAAuB,EACvB,eAAe,EAkBf,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACf,MAAM,+BAA+B,CAAC;AASvC;;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;IAIpD;;;;;;SAMK;IACC,mBAAmB,CACvB,IAAI,EAAE,uBAAuB,EAC7B,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IAuBlC;;;;;OAKG;IACG,cAAc,CAClB,IAAI,EAAE,uBAAuB,EAC7B,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,EAAE,CAAC;IA0IpC;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI1E;;;;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,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IAyBlC;;;;;;OAMG;IACG,YAAY,CAChB,IAAI,EAAE,eAAe,EACrB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IA0BlC;;;;;;;;OAQG;IACG,cAAc,CAClB,IAAI,EAAE,gBAAgB,EACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,EACjB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IAoDlC;;;;;;OAMG;IACG,YAAY,CAChB,IAAI,EAAE,aAAa,EACnB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IAkBlC;;;;;;OAMG;IACG,gCAAgC,CACpC,IAAI,EAAE,iCAAiC,EACvC,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,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,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;CAuFnC"}
|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
import { PublicKey, SystemProgram, } from "@solana/web3.js";
|
|
2
|
+
import { ASSOCIATED_TOKEN_PROGRAM_ID, createAssociatedTokenAccountInstruction, getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID, } from "@solana/spl-token";
|
|
3
|
+
import { assetControllerProgramId, getAssetControllerEventAuthority, getAssetControllerPda, getCloseMintIx, getCreateAssetControllerIx, getExtraMetasListPda, getFreezeTokenIx, getIdentityAccountPda, getIdentityRegistryPda, getPolicyEnginePda, getRevokeTokensIx, getSeizeTokensIx, getThawTokenIx, getTrackerAccountPda, getUpdateInterestBearingMintRateIx, getWalletIdentityAccountPda, identityRegistryProgramId, policyEngineProgramId, } from "@dstoken-solana/rwa-token-sdk";
|
|
4
|
+
import { TL_PROGRAM } from "../constants";
|
|
5
|
+
import { deriveInvestorLocks, deriveControllerAuthorityPda, deriveInvestorPda, deriveLockedTokenAccount, } from "../pdas";
|
|
6
|
+
/**
|
|
7
|
+
* Represents the role-based access client for Asset Controller for an RWA.
|
|
8
|
+
*/
|
|
9
|
+
export class AssetController {
|
|
10
|
+
constructor(rwaClient, rbacProgram) {
|
|
11
|
+
this.rwaClient = rwaClient;
|
|
12
|
+
this.rbacProgram = rbacProgram;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Asynchronously generates instructions to setup a new asset controller.
|
|
16
|
+
* @param args - {@link CreateAssetControllerIx}
|
|
17
|
+
* @returns A Promise that resolves to the instructions to create an asset controller.
|
|
18
|
+
*/
|
|
19
|
+
async setupNewRegistry(args) {
|
|
20
|
+
return getCreateAssetControllerIx(args, this.rwaClient.provider);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Update the asset controller's metadata.
|
|
24
|
+
* @param args - {@link UpdateAssetMetadataArgs}
|
|
25
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
26
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
27
|
+
* @returns A Promise that resolves to the instructions to update the asset controller's metadata.
|
|
28
|
+
* */
|
|
29
|
+
async updateAssetMetadata(args, assetAccessController, authorizedUserRole) {
|
|
30
|
+
const updateIx = await this.rwaClient.assetController.updateAssetMetadata(args);
|
|
31
|
+
const ixData = updateIx.data;
|
|
32
|
+
return this.rbacProgram.methods
|
|
33
|
+
.updateAssetMetadata(ixData)
|
|
34
|
+
.accountsStrict({
|
|
35
|
+
payer: args.payer,
|
|
36
|
+
user: args.signer,
|
|
37
|
+
controllerAuthority: args.authority,
|
|
38
|
+
assetAccessController,
|
|
39
|
+
authorizedUserRole: authorizedUserRole || null,
|
|
40
|
+
assetMint: args.assetMint,
|
|
41
|
+
assetController: getAssetControllerPda(args.assetMint),
|
|
42
|
+
assetControllerProgram: assetControllerProgramId,
|
|
43
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
44
|
+
eventAuthority: getAssetControllerEventAuthority(),
|
|
45
|
+
systemProgram: SystemProgram.programId,
|
|
46
|
+
})
|
|
47
|
+
.instruction();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Asynchronously generates instructions to issue tokens and lock tokens according to issuance policy.
|
|
51
|
+
* @param args - {@link IssueTokensWithLockArgs}
|
|
52
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
53
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
54
|
+
*/
|
|
55
|
+
async issueTokenIxns(args, assetAccessController, authorizedUserRole) {
|
|
56
|
+
const identityRegistry = getIdentityRegistryPda(args.assetMint);
|
|
57
|
+
const investorPda = deriveInvestorPda(args.investorId, identityRegistry);
|
|
58
|
+
const unlockedTokenAccount = getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.wallet), false, TOKEN_2022_PROGRAM_ID);
|
|
59
|
+
const trackerAccount = getTrackerAccountPda(args.assetMint, investorPda.toString());
|
|
60
|
+
const controllerAuthority = deriveControllerAuthorityPda(assetAccessController);
|
|
61
|
+
const ixs = [];
|
|
62
|
+
// Check if unlockedTokenAccount exists.
|
|
63
|
+
const tokenAccountData = await this.rbacProgram.provider.connection.getAccountInfo(unlockedTokenAccount);
|
|
64
|
+
if (!tokenAccountData) {
|
|
65
|
+
// ATA needs to be created separately as controller_pda cannot be payer.
|
|
66
|
+
const createAtaIx = createAssociatedTokenAccountInstruction(new PublicKey(args.payer), unlockedTokenAccount, new PublicKey(args.wallet), new PublicKey(args.assetMint), TOKEN_2022_PROGRAM_ID);
|
|
67
|
+
ixs.push(createAtaIx);
|
|
68
|
+
}
|
|
69
|
+
ixs.push(await this.rbacProgram.methods
|
|
70
|
+
.issueTokens(args.amount, args.issuanceTimestamp, args.reasonCode == undefined ? null : args.reasonCode, args.reasonString == undefined ? null : args.reasonString)
|
|
71
|
+
.accountsStrict({
|
|
72
|
+
payer: args.payer,
|
|
73
|
+
user: args.signer,
|
|
74
|
+
controllerAuthority,
|
|
75
|
+
assetAccessController: assetAccessController,
|
|
76
|
+
authorizedUserRole: authorizedUserRole || null,
|
|
77
|
+
assetControllerProgram: assetControllerProgramId,
|
|
78
|
+
assetMint: args.assetMint,
|
|
79
|
+
assetController: getAssetControllerPda(args.assetMint),
|
|
80
|
+
to: args.wallet,
|
|
81
|
+
tokenAccount: unlockedTokenAccount,
|
|
82
|
+
policyEngine: getPolicyEnginePda(args.assetMint),
|
|
83
|
+
policyEngineProgram: policyEngineProgramId,
|
|
84
|
+
identityAccount: getIdentityAccountPda(args.assetMint, investorPda.toString()),
|
|
85
|
+
trackerAccount,
|
|
86
|
+
identityRegistry,
|
|
87
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
88
|
+
associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
89
|
+
systemProgram: SystemProgram.programId,
|
|
90
|
+
walletIdentityAccount: getWalletIdentityAccountPda(args.assetMint, args.wallet),
|
|
91
|
+
tokenLocksProgram: TL_PROGRAM,
|
|
92
|
+
investorLocks: deriveInvestorLocks(args.investorId, identityRegistry),
|
|
93
|
+
investor: investorPda,
|
|
94
|
+
lockedTokenAccount: deriveLockedTokenAccount(args.investorId, identityRegistry),
|
|
95
|
+
})
|
|
96
|
+
.remainingAccounts([
|
|
97
|
+
{
|
|
98
|
+
pubkey: getPolicyEnginePda(args.assetMint),
|
|
99
|
+
isWritable: true,
|
|
100
|
+
isSigner: false,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
pubkey: identityRegistryProgramId,
|
|
104
|
+
isWritable: false,
|
|
105
|
+
isSigner: false,
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
pubkey: policyEngineProgramId,
|
|
109
|
+
isWritable: false,
|
|
110
|
+
isSigner: false,
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
pubkey: identityRegistry,
|
|
114
|
+
isWritable: false,
|
|
115
|
+
isSigner: false,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
pubkey: getIdentityAccountPda(args.assetMint, investorPda.toString()),
|
|
119
|
+
isWritable: false,
|
|
120
|
+
isSigner: false,
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
pubkey: getIdentityAccountPda(args.assetMint, args.wallet.toString()),
|
|
124
|
+
isWritable: false,
|
|
125
|
+
isSigner: false,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
pubkey: trackerAccount,
|
|
129
|
+
isWritable: true,
|
|
130
|
+
isSigner: false,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
pubkey: getExtraMetasListPda(args.assetMint),
|
|
134
|
+
isWritable: false,
|
|
135
|
+
isSigner: false,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
pubkey: getWalletIdentityAccountPda(args.assetMint, investorPda.toString()),
|
|
139
|
+
isWritable: false,
|
|
140
|
+
isSigner: false,
|
|
141
|
+
},
|
|
142
|
+
])
|
|
143
|
+
.instruction());
|
|
144
|
+
return ixs;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Asynchronously generates instructions to revoke assets.
|
|
148
|
+
* @param args - {@link VoidTokensArgs}
|
|
149
|
+
* @returns A Promise that resolves to the instructions to revoke assets.
|
|
150
|
+
*/
|
|
151
|
+
async voidTokenIxns(args) {
|
|
152
|
+
return this.rwaClient.assetController.voidTokenIxns(args);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Executes a token transfer.
|
|
156
|
+
* @param args - {@link TransferTokensArgs}
|
|
157
|
+
* @returns A promise that resolves to transaction instruction.
|
|
158
|
+
*/
|
|
159
|
+
async transfer(args) {
|
|
160
|
+
return this.rwaClient.assetController.transfer(args);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Asynchronously generates instruction to freeze a token account.
|
|
164
|
+
* @param args - {@link FreezeTokenArgs}
|
|
165
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
166
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
167
|
+
* @returns A Promise that resolves to the instruction to freeze.
|
|
168
|
+
*/
|
|
169
|
+
async freezeTokenIxn(args, assetAccessController, authorizedUserRole) {
|
|
170
|
+
const freezeIx = await getFreezeTokenIx(args, this.rwaClient.provider);
|
|
171
|
+
const ixData = freezeIx.data;
|
|
172
|
+
const tokenAccount = getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.owner), false, TOKEN_2022_PROGRAM_ID);
|
|
173
|
+
return this.rbacProgram.methods
|
|
174
|
+
.freezeTokenAccount(ixData)
|
|
175
|
+
.accountsStrict({
|
|
176
|
+
user: args.signer,
|
|
177
|
+
controllerAuthority: args.authority,
|
|
178
|
+
assetAccessController: assetAccessController,
|
|
179
|
+
authorizedUserRole: authorizedUserRole || null,
|
|
180
|
+
assetControllerProgram: assetControllerProgramId,
|
|
181
|
+
assetMint: args.assetMint,
|
|
182
|
+
assetController: getAssetControllerPda(args.assetMint),
|
|
183
|
+
tokenAccount,
|
|
184
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
185
|
+
})
|
|
186
|
+
.instruction();
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Asynchronously generates instruction to thaw a token account.
|
|
190
|
+
* @param args - {@link FreezeTokenArgs}
|
|
191
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
192
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
193
|
+
* @returns A Promise that resolves to the instruction to thaw.
|
|
194
|
+
*/
|
|
195
|
+
async thawTokenIxn(args, assetAccessController, authorizedUserRole) {
|
|
196
|
+
const thawIx = await getThawTokenIx(args, this.rwaClient.provider);
|
|
197
|
+
const ixData = thawIx.data;
|
|
198
|
+
const tokenAccount = getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.owner), false, TOKEN_2022_PROGRAM_ID);
|
|
199
|
+
return this.rbacProgram.methods
|
|
200
|
+
.thawTokenAccount(ixData)
|
|
201
|
+
.accountsStrict({
|
|
202
|
+
user: args.signer,
|
|
203
|
+
controllerAuthority: args.authority,
|
|
204
|
+
assetAccessController: assetAccessController,
|
|
205
|
+
authorizedUserRole: authorizedUserRole || null,
|
|
206
|
+
assetControllerProgram: assetControllerProgramId,
|
|
207
|
+
assetMint: args.assetMint,
|
|
208
|
+
assetController: getAssetControllerPda(args.assetMint),
|
|
209
|
+
identityRegistryAccount: getIdentityRegistryPda(args.assetMint),
|
|
210
|
+
tokenAccount,
|
|
211
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
212
|
+
})
|
|
213
|
+
.instruction();
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Asynchronously generates instructions to revoke tokens from a user.
|
|
217
|
+
* @param args - {@link RevokeTokensArgs}
|
|
218
|
+
* @param payer - Payer public key.
|
|
219
|
+
* @param signer - User signer public key.
|
|
220
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
221
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
222
|
+
* @returns A Promise that resolves to the instructions to revoke.
|
|
223
|
+
*/
|
|
224
|
+
async revokeTokenIxn(args, investorId, signer, assetAccessController, authorizedUserRole) {
|
|
225
|
+
if (!args.wallet) {
|
|
226
|
+
throw new Error("Use wallet arg for wallet to revoke tokens from.");
|
|
227
|
+
}
|
|
228
|
+
// Set owner (even though it is InvestorPda) as wallet to generate ix data.
|
|
229
|
+
args.owner = args.wallet;
|
|
230
|
+
const revokeIx = await getRevokeTokensIx(args, this.rwaClient.provider);
|
|
231
|
+
const identityRegistry = getIdentityRegistryPda(args.assetMint);
|
|
232
|
+
const investorPda = deriveInvestorPda(investorId, identityRegistry);
|
|
233
|
+
const ixData = revokeIx.data;
|
|
234
|
+
const assetController = getAssetControllerPda(args.assetMint);
|
|
235
|
+
const revokeTokenAccount = getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.wallet), false, TOKEN_2022_PROGRAM_ID);
|
|
236
|
+
return await this.rbacProgram.methods
|
|
237
|
+
.revokeTokens(ixData)
|
|
238
|
+
.accountsStrict({
|
|
239
|
+
user: signer,
|
|
240
|
+
controllerAuthority: args.authority,
|
|
241
|
+
assetAccessController: assetAccessController,
|
|
242
|
+
authorizedUserRole: authorizedUserRole || null,
|
|
243
|
+
assetControllerProgram: assetControllerProgramId,
|
|
244
|
+
assetMint: args.assetMint,
|
|
245
|
+
assetController,
|
|
246
|
+
revokeTokenAccount,
|
|
247
|
+
identityRegistry,
|
|
248
|
+
identityAccount: getIdentityAccountPda(args.assetMint, investorPda.toString()),
|
|
249
|
+
trackerAccount: getTrackerAccountPda(args.assetMint, investorPda.toString()),
|
|
250
|
+
policyEngineProgram: policyEngineProgramId,
|
|
251
|
+
policyEngine: getPolicyEnginePda(args.assetMint),
|
|
252
|
+
walletIdentityAccount: getWalletIdentityAccountPda(args.assetMint, args.wallet),
|
|
253
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
254
|
+
associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
255
|
+
systemProgram: SystemProgram.programId,
|
|
256
|
+
})
|
|
257
|
+
.instruction();
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Asynchronously generates instruction to close mint.
|
|
261
|
+
* @param args - {@link CloseMintArgs}
|
|
262
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
263
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
264
|
+
* @returns A Promise that resolves to the instruction to close mint.
|
|
265
|
+
*/
|
|
266
|
+
async closeMintIxn(args, assetAccessController, authorizedUserRole) {
|
|
267
|
+
const closeIx = await getCloseMintIx(args, this.rwaClient.provider);
|
|
268
|
+
const ixData = closeIx.data;
|
|
269
|
+
return this.rbacProgram.methods
|
|
270
|
+
.closeMintAccount(ixData)
|
|
271
|
+
.accountsStrict({
|
|
272
|
+
user: args.signer,
|
|
273
|
+
controllerAuthority: args.authority,
|
|
274
|
+
assetAccessController,
|
|
275
|
+
authorizedUserRole: authorizedUserRole || null,
|
|
276
|
+
assetControllerProgram: assetControllerProgramId,
|
|
277
|
+
assetMint: args.assetMint,
|
|
278
|
+
assetController: getAssetControllerPda(args.assetMint),
|
|
279
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
280
|
+
})
|
|
281
|
+
.instruction();
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Asynchronously generates instruction to update mint interest rate.
|
|
285
|
+
* @param args - {@link UpdateInterestBearingMintRateArgs}
|
|
286
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
287
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
288
|
+
* @returns A Promise that resolves to the instruction to update mint interest rate.
|
|
289
|
+
*/
|
|
290
|
+
async updateInterestBearingMintRateIxn(args, assetAccessController, authorizedUserRole) {
|
|
291
|
+
const updateIx = await getUpdateInterestBearingMintRateIx(args, this.rwaClient.provider);
|
|
292
|
+
const ixData = updateIx.data;
|
|
293
|
+
return this.rbacProgram.methods
|
|
294
|
+
.updateInterestBearingMintRate(ixData)
|
|
295
|
+
.accountsStrict({
|
|
296
|
+
user: args.signer,
|
|
297
|
+
controllerAuthority: args.authority,
|
|
298
|
+
assetAccessController: assetAccessController,
|
|
299
|
+
authorizedUserRole: authorizedUserRole || null,
|
|
300
|
+
assetControllerProgram: assetControllerProgramId,
|
|
301
|
+
assetMint: args.assetMint,
|
|
302
|
+
assetController: getAssetControllerPda(args.assetMint),
|
|
303
|
+
eventAuthority: getAssetControllerEventAuthority(),
|
|
304
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
305
|
+
})
|
|
306
|
+
.instruction();
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Asynchronously generates instruction to seize tokens.
|
|
310
|
+
* @param args - {@link SeizeTokensArgs}
|
|
311
|
+
* @param signer - User signer public key.
|
|
312
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
313
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
314
|
+
* @returns A Promise that resolves to the instruction to seize.
|
|
315
|
+
*/
|
|
316
|
+
async seizeTokensIxn(args, investorId, signer, assetAccessController, authorizedUserRole) {
|
|
317
|
+
const identityRegistry = getIdentityRegistryPda(args.assetMint);
|
|
318
|
+
const investorPda = deriveInvestorPda(investorId, identityRegistry);
|
|
319
|
+
const [_, seizeIx] = await getSeizeTokensIx({ ...args, wallet: args.from, from: investorPda.toString() }, this.rwaClient.provider);
|
|
320
|
+
return this.rbacProgram.methods
|
|
321
|
+
.seizeTokens(seizeIx.data)
|
|
322
|
+
.accountsStrict({
|
|
323
|
+
user: signer,
|
|
324
|
+
controllerAuthority: args.authority,
|
|
325
|
+
assetAccessController: assetAccessController,
|
|
326
|
+
authorizedUserRole: authorizedUserRole || null,
|
|
327
|
+
assetControllerProgram: assetControllerProgramId,
|
|
328
|
+
assetMint: args.assetMint,
|
|
329
|
+
assetController: getAssetControllerPda(args.assetMint),
|
|
330
|
+
sourceTokenAccount: getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.from), false, TOKEN_2022_PROGRAM_ID),
|
|
331
|
+
destinationTokenAccount: getAssociatedTokenAddressSync(new PublicKey(args.assetMint), new PublicKey(args.to), true, TOKEN_2022_PROGRAM_ID),
|
|
332
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
333
|
+
})
|
|
334
|
+
.remainingAccounts([
|
|
335
|
+
{
|
|
336
|
+
pubkey: getPolicyEnginePda(args.assetMint),
|
|
337
|
+
isWritable: true,
|
|
338
|
+
isSigner: false,
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
pubkey: identityRegistryProgramId,
|
|
342
|
+
isWritable: false,
|
|
343
|
+
isSigner: false,
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
pubkey: policyEngineProgramId,
|
|
347
|
+
isWritable: false,
|
|
348
|
+
isSigner: false,
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
pubkey: getIdentityRegistryPda(args.assetMint),
|
|
352
|
+
isWritable: false,
|
|
353
|
+
isSigner: false,
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
pubkey: getIdentityAccountPda(args.assetMint, args.to),
|
|
357
|
+
isWritable: false,
|
|
358
|
+
isSigner: false,
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
pubkey: getIdentityAccountPda(args.assetMint, investorPda.toString()),
|
|
362
|
+
isWritable: false,
|
|
363
|
+
isSigner: false,
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
pubkey: getTrackerAccountPda(args.assetMint, args.to),
|
|
367
|
+
isWritable: true,
|
|
368
|
+
isSigner: false,
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
pubkey: getTrackerAccountPda(args.assetMint, investorPda.toString()),
|
|
372
|
+
isWritable: true,
|
|
373
|
+
isSigner: false,
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
pubkey: getExtraMetasListPda(args.assetMint),
|
|
377
|
+
isWritable: false,
|
|
378
|
+
isSigner: false,
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
pubkey: getWalletIdentityAccountPda(args.assetMint, args.to),
|
|
382
|
+
isWritable: false,
|
|
383
|
+
isSigner: false,
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
pubkey: getWalletIdentityAccountPda(args.assetMint, args.from),
|
|
387
|
+
isWritable: false,
|
|
388
|
+
isSigner: false,
|
|
389
|
+
},
|
|
390
|
+
])
|
|
391
|
+
.instruction();
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
//# 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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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
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 { RwaImr } from "../types/generated/rwa_imr";
|
|
5
|
+
import { IxReturn, RwaClient } from "@dstoken-solana/rwa-token-sdk";
|
|
6
|
+
import { AddLevelsArgs, AttachWalletByInvestorArgs, ChangeCountryArgs, RemoveInvestorArgs, RemoveLevelsArgs, SetupInvestorArgs } from "../types/instructions";
|
|
7
|
+
/**
|
|
8
|
+
* Role-based access client for accessing Identity Metadata Registry.
|
|
9
|
+
*/
|
|
10
|
+
export declare class IdentityMetadataRegistry {
|
|
11
|
+
rwaClient: RwaClient;
|
|
12
|
+
rbacProgram: Program<RwaRbac>;
|
|
13
|
+
imrProgram: Program<RwaImr>;
|
|
14
|
+
constructor(rwaClient: RwaClient, rbacProgram: Program<RwaRbac>, imrProgram: Program<RwaImr>);
|
|
15
|
+
/**
|
|
16
|
+
* Asynchronously generates instructions to setup an investor.
|
|
17
|
+
* @param args - {@link SetupInvestorArgs}
|
|
18
|
+
* @param authority - RBAC AssetAccessController ControllerAuthority.
|
|
19
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
20
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
21
|
+
* @returns A Promise that resolves to the instructions to setup an investor.
|
|
22
|
+
*
|
|
23
|
+
* It is required for at least a single user to be setup before issuing tokens.
|
|
24
|
+
*/
|
|
25
|
+
setupUserIxns(args: SetupInvestorArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<IxReturn>;
|
|
26
|
+
/**
|
|
27
|
+
* Asynchronously add levels to investor.
|
|
28
|
+
* @param args - {@link AddLevelsArgs}
|
|
29
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
30
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
31
|
+
* @returns A Promise that resolves to the instructions to add levels.
|
|
32
|
+
* */
|
|
33
|
+
addLevels(args: AddLevelsArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
|
|
34
|
+
/**
|
|
35
|
+
* Asynchronously change country for the Investor.
|
|
36
|
+
* @param args - {@link ChangeCountryArgs}
|
|
37
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
38
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
39
|
+
* @returns A Promise that resolves to the instructions to change the country.
|
|
40
|
+
* */
|
|
41
|
+
changeCountry(args: ChangeCountryArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
|
|
42
|
+
/**
|
|
43
|
+
* Asynchronously remove levels from an investor.
|
|
44
|
+
* @param args - {@link RemoveLevelsArgs}
|
|
45
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
46
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
47
|
+
* @returns A Promise that resolves to the instructions to remove levels.
|
|
48
|
+
* */
|
|
49
|
+
removeLevels(args: RemoveLevelsArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
|
|
50
|
+
/**
|
|
51
|
+
* Asynchronously remove an investor.
|
|
52
|
+
* @param args - {@link RemoveLevelsArgs}
|
|
53
|
+
* @param assetAccessController - RBAC AssetAccessController account.
|
|
54
|
+
* @param authorizedUserRole - Optional UserRole account. Required if user is not an admin.
|
|
55
|
+
* @returns A Promise that resolves to the instructions to remove an investor.
|
|
56
|
+
* */
|
|
57
|
+
removeInvestor(args: RemoveInvestorArgs, assetAccessController: PublicKey, authorizedUserRole?: PublicKey): Promise<TransactionInstruction>;
|
|
58
|
+
/**
|
|
59
|
+
* Asynchronously attach a wallet to IdentityAccouont for the Investor.
|
|
60
|
+
* @param args - {@link AttachWalletByInvestorArgs}
|
|
61
|
+
* */
|
|
62
|
+
attachWalletByInvestor(args: AttachWalletByInvestorArgs): Promise<TransactionInstruction>;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=IdentityMetadataRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdentityMetadataRegistry.d.ts","sourceRoot":"","sources":["../../src/client/IdentityMetadataRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,SAAS,EAET,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EASL,QAAQ,EAER,SAAS,EACV,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,qBAAa,wBAAwB;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAG1B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,EAC7B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC;IAO7B;;;;;;;;;OASG;IACG,aAAa,CACjB,IAAI,EAAE,iBAAiB,EACvB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,QAAQ,CAAC;IA2GpB;;;;;;SAMK;IACC,SAAS,CACb,IAAI,EAAE,aAAa,EACnB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IA2DlC;;;;;;SAMK;IACC,aAAa,CACjB,IAAI,EAAE,iBAAiB,EACvB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IAoDlC;;;;;;SAMK;IACC,YAAY,CAChB,IAAI,EAAE,gBAAgB,EACtB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IAsDlC;;;;;;SAMK;IACC,cAAc,CAClB,IAAI,EAAE,kBAAkB,EACxB,qBAAqB,EAAE,SAAS,EAChC,kBAAkB,CAAC,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IA4BlC;;;SAGK;IACC,sBAAsB,CAC1B,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,sBAAsB,CAAC;CA6BnC"}
|