How extensions work with Light Token
- Create a Token-2022 mint with one or more extensions
- Register an interface PDA to hold balances from that mint in Light Token accounts
- Use the same Light Token APIs (
transferInterface,wrap,unwrap) as any other token
Supported extensions
| Extension | Restriction | Description |
|---|---|---|
| MetadataPointer | - | Points a mint to the account that stores its metadata. |
| TokenMetadata | - | Stores token name, symbol, and URI directly on the mint. |
| TransferFeeConfig | Fees must be zero | Withholds a percentage of each transfer as a fee. |
| TransferHook | program_id must be nil | Invokes a custom program on every transfer via CPI. |
| InterestBearingConfig | - | Displays a UI-adjusted balance that accrues interest over time. |
| DefaultAccountState | No compressed transfer | Sets the initial state (e.g., frozen) for newly created token accounts. |
| PermanentDelegate | No compressed transfer | Grants an authority unrestricted transfer and burn rights over all accounts for the mint. |
| MintCloseAuthority | No compressed transfer | Allows a designated authority to close a mint account. |
| GroupPointer | - | Points a mint to the account that stores group configuration. |
| GroupMemberPointer | - | Points a mint to the account that stores group member configuration. |
| TokenGroup | - | Stores group configuration directly on the mint (e.g., NFT collections). |
| TokenGroupMember | - | Stores group member configuration directly on the mint. |
| Pausable | No compressed transfer | Allows an authority to pause all minting, burning, and transfers. |
| ConfidentialTransferMint | Initialized but not enabled | Configures auditor keys for confidential (encrypted) transfers. |
| ConfidentialTransferFeeConfig | Fees must be zero | Encrypts withheld transfer fees under an auditor’s public key. |
| ConfidentialMintBurn | Initialized but not enabled | Allows minting and burning of tokens with encrypted amounts. |