Master Matrix: Write Methods and Admin Roles
Role Definitions
| Role | Description | Source |
|---|---|---|
| Contract Admin | Manages roles, upgrades, core config | EasyAccessControl.sol |
| Reserve Admin | Token minting, burning, max supply, token type changes | EasyAccessControl |
| Wallets Admin | Identity/KYC, holder management, freeze | EasyAccessControl |
| Transfer Admin | Transfer rules, payments, reclaim, pause | EasyAccessControl |
| Soft Burn Admin | Soft burn (requires allowance) | EasyAccessControl |
| Mint Admin | Mint/timelock mint (alongside Reserve Admin) | EasyAccessControl |
| Owner | PurchaseContract ownership (Ownable) | PurchaseContract.sol |
| Automation Admin | Execute purchases, cancellations | PurchaseContract |
Matrix: Contract | Method | Contract Admin | Reserve Admin | Transfer Admin | Wallets Admin | Soft Burn Admin | Mint Admin | Owner | Automation Admin
AccessControl / EasyAccessControl
| Contract | Method | Contract | Reserve | Transfer | Wallets | Soft Burn | Mint | Owner | Automation |
|---|---|---|---|---|---|---|---|---|---|
| EasyAccessControl | grantRole | X | |||||||
| EasyAccessControl | revokeRole | X | |||||||
| EasyAccessControl | batchGrantRoles | X | |||||||
| EasyAccessControl | batchRevokeRoles | X |
IdentityRegistry
| Contract | Method | Contract | Reserve | Transfer | Wallets | Soft Burn | Mint | Owner | Automation |
|---|---|---|---|---|---|---|---|---|---|
| IdentityRegistry | setIdentity | X | |||||||
| IdentityRegistry | batchSetIdentity | X | |||||||
| IdentityRegistry | removeIdentity | X | |||||||
| IdentityRegistry | setRegions | X | |||||||
| IdentityRegistry | addRegion | X | |||||||
| IdentityRegistry | removeRegion | X | |||||||
| IdentityRegistry | grantAmlKyc | X | |||||||
| IdentityRegistry | revokeAmlKyc | X | |||||||
| IdentityRegistry | grantAccreditation | X | |||||||
| IdentityRegistry | revokeAccreditation | X | |||||||
| IdentityRegistry | setAmlKycValidityDuration | X |
PurchaseContract
| Contract | Method | Contract | Reserve | Transfer | Wallets | Soft Burn | Mint | Owner | Automation |
|---|---|---|---|---|---|---|---|---|---|
| PurchaseContract | updateAutomationAdmin | X | |||||||
| PurchaseContract | updateAdminFeeWallet | X | |||||||
| PurchaseContract | updateCanceledPurchaseWallet | X | |||||||
| PurchaseContract | updateOriginatorPaymentWallet | X | |||||||
| PurchaseContract | executePurchaseWithInterest | X | |||||||
| PurchaseContract | executePurchase | X | |||||||
| PurchaseContract | cancelPurchase | X |
RestrictedLockupToken (main contract - non-delegated)
| Contract | Method | Contract | Reserve | Transfer | Wallets | Soft Burn | Mint | Owner | Automation |
|---|---|---|---|---|---|---|---|---|---|
| RestrictedLockupToken | mint | X | X | ||||||
| RestrictedLockupToken | mintTokenType | X | X | ||||||
| RestrictedLockupToken | forceTransferBetween | X | |||||||
| RestrictedLockupToken | setRecordMintTimestamp | X |
RestrictedLockupToken (via Management Extension delegatecall)
| Contract | Method | Contract | Reserve | Transfer | Wallets | Soft Burn | Mint | Owner | Automation |
|---|---|---|---|---|---|---|---|---|---|
| RestrictedLockupToken | createHolderFromAddress | X | X | ||||||
| RestrictedLockupToken | appendHolderAddress | X | X | ||||||
| RestrictedLockupToken | addHolderWithAddresses | X | X | ||||||
| RestrictedLockupToken | setHolderMax | X | |||||||
| RestrictedLockupToken | removeHolder | X | X | ||||||
| RestrictedLockupToken | removeWalletFromHolder | X | X | ||||||
| RestrictedLockupToken | batchRemoveWalletFromHolder | X | X | ||||||
| RestrictedLockupToken | pause | X | X | ||||||
| RestrictedLockupToken | freeze | X | X | ||||||
| RestrictedLockupToken | upgradeTransferRules | X | |||||||
| RestrictedLockupToken | upgradeIdentityRegistry | X |
RestrictedLockupToken (via Extension delegatecall)
| Contract | Method | Contract | Reserve | Transfer | Wallets | Soft Burn | Mint | Owner | Automation |
|---|---|---|---|---|---|---|---|---|---|
| RestrictedLockupToken | updateHoldingTokenType | X | |||||||
| RestrictedLockupToken | burn | X | |||||||
| RestrictedLockupToken | burnHolding | X | |||||||
| RestrictedLockupToken | softBurn | X | |||||||
| RestrictedLockupToken | createReleaseSchedule | X | X | X | X | ||||
| RestrictedLockupToken | fundReleaseScheduleWithHolding | X | X | X | X | ||||
| RestrictedLockupToken | fundReleaseSchedule | X | X | X | X | ||||
| RestrictedLockupToken | mintReleaseScheduleTokenType | X | X | ||||||
| RestrictedLockupToken | mintReleaseSchedule | X | X | ||||||
| RestrictedLockupToken | updateTimelockTokenType | X | |||||||
| RestrictedLockupToken | batchFundReleaseScheduleWithHolding | X | X | X | X | ||||
| RestrictedLockupToken | batchFundReleaseSchedule | X | X | X | X | ||||
| RestrictedLockupToken | batchMintReleaseScheduleTokenType | X | X | ||||||
| RestrictedLockupToken | batchMintReleaseSchedule | X | X | ||||||
| RestrictedLockupToken | setMaxTotalSupply | X |
TransferRules
| Contract | Method | Contract | Reserve | Transfer | Wallets | Soft Burn | Mint | Owner | Automation |
|---|---|---|---|---|---|---|---|---|---|
| TransferRules | setTokenTypeRule | X | |||||||
| TransferRules | setDefaultTokenTypeRule | X | |||||||
| TransferRules | resetDefaultTokenTypeRule | X | |||||||
| TransferRules | removeTokenTypeRule | X | |||||||
| TransferRules | batchSetTokenTypeRules | X | |||||||
| TransferRules | setTransferRule | X | |||||||
| TransferRules | removeTransferRule | X | |||||||
| TransferRules | batchSetTransferRules | X |
InterestPayment
| Contract | Method | Contract | Reserve | Transfer | Wallets | Soft Burn | Mint | Owner | Automation |
|---|---|---|---|---|---|---|---|---|---|
| InterestPayment | pausePaymentPeriod | X | X | ||||||
| InterestPayment | unpausePaymentPeriod | X | X | ||||||
| InterestPayment | pause | X | X | ||||||
| InterestPayment | pausePaymentAfter | X | X | ||||||
| InterestPayment | unpausePaymentAfter | X | X | ||||||
| InterestPayment | setReclaimerAddress | X | |||||||
| InterestPayment | shiftInterestAccrualEnd | X | X | ||||||
| InterestPayment | setMaxInterestRate | X | |||||||
| InterestPayment | updateInterestRateForPeriod | X | |||||||
| InterestPayment | createPaymentPeriod | X | |||||||
| InterestPayment | forceClaim | X | |||||||
| InterestPayment | reclaimInterestForPeriod | X | |||||||
| InterestPayment | reclaimInterest | X | |||||||
| InterestPayment | batchReclaimInterest | X | |||||||
| InterestPayment | batchForceClaimInterest | X | |||||||
| InterestPayment | reclaimInterestForAllRecipients | X | |||||||
| InterestPayment | reclaimTotalInterest | X | |||||||
| InterestPayment | fundPrincipal | X | |||||||
| InterestPayment | forceClaimPrincipal | X | |||||||
| InterestPayment | reclaimPrincipal | X | |||||||
| InterestPayment | forceClaimForPeriod | X | |||||||
| InterestPayment | reclaimDividend | X | |||||||
| InterestPayment | fundDividend | X | |||||||
| InterestPayment | reclaimTotalDividend | X | |||||||
| InterestPayment | earlyRepayment | X | X |
RestrictedSwap
| Contract | Method | Contract | Reserve | Transfer | Wallets | Soft Burn | Mint | Owner | Automation |
|---|---|---|---|---|---|---|---|---|---|
| RestrictedSwap | pause | X | X |
SnapshotPeriods
| Contract | Method | Contract | Reserve | Transfer | Wallets | Soft Burn | Mint | Owner | Automation |
|---|---|---|---|---|---|---|---|---|---|
| SnapshotPeriods | onUpdate | Token only |
Note: onUpdate is callable only by the token contract (msg.sender == tokenAddress), not by any admin role.
User/External Methods (No Admin Required)
These write methods are callable by token holders or external addresses without admin roles:
- RestrictedLockupToken:
transfer,transferFrom,transferHolding,transferTimelock,batchTransfer,cancelTimelock,safeApprove,approve - InterestPayment:
fundInterest(anyone with tokens),claimInterest,claimInterestForPeriod,batchClaimInterestForPeriods,claimPrincipal,claimDividend,batchClaimDividend - RestrictedSwap:
configureSell,configureBuy,completeSwapWithQuoteToken,completeSwapWithRestrictedToken,cancelSwap