import { Connection, PublicKey, TransactionInstruction, Keypair } from '@solana/web3.js';
/**
 * Create instruction to initialize CPI Guard for mint
 * @param mint - Mint address
 * @param authority - (Optional) Authority address that can enable/disable CPI Guard
 * @param programId - Token Extension Program ID
 * @returns Instruction to initialize CPI Guard
 */
export declare function createInitializeCpiGuardInstruction(mint: PublicKey, authority?: PublicKey | null, programId?: PublicKey): TransactionInstruction;
/**
 * Class for protection against CPI attacks
 */
export declare class CpiGuardExtension {
    private connection;
    private mint;
    /**
     * Create a new CpiGuardExtension instance
     * @param connection - Connection to Solana cluster
     * @param mint - Mint address
     */
    constructor(connection: Connection, mint: PublicKey);
    /**
     * Create instruction to initialize CPI Guard for mint
     * @param mint - Mint address
     * @param authority - (Optional) Authority address that can enable/disable CPI Guard
     * @param programId - Token Extension Program ID
     * @returns Instruction to initialize CPI Guard
     */
    static createInitializeCpiGuardInstruction(mint: PublicKey, authority?: PublicKey | null, programId?: PublicKey): TransactionInstruction;
    /**
     * Create instruction to enable CPI Guard for a mint
     * @param mint - Mint address
     * @param authority - Authority address that can enable/disable CPI Guard
     * @param programId - Token Extension Program ID
     * @returns Instruction to enable CPI Guard
     */
    static createEnableCpiGuardInstruction(mint: PublicKey, authority: PublicKey, programId?: PublicKey): TransactionInstruction;
    /**
     * Create instruction to disable CPI Guard for a mint
     * @param mint - Mint address
     * @param authority - Authority address that can enable/disable CPI Guard
     * @param programId - Token Extension Program ID
     * @returns Instruction to disable CPI Guard
     */
    static createDisableCpiGuardInstruction(mint: PublicKey, authority: PublicKey, programId?: PublicKey): TransactionInstruction;
    /**
     * Check if CPI Guard is enabled for a mint
     * @param connection - Connection to Solana cluster
     * @param mint - Mint address
     * @param programId - Token Extension Program ID
     * @returns Promise resolving to boolean indicating if CPI Guard is enabled
     */
    static isCpiGuardEnabled(connection: Connection, mint: PublicKey, programId?: PublicKey): Promise<boolean>;
    /**
     * Get CPI Guard authority for a mint
     * @param connection - Connection to Solana cluster
     * @param mint - Mint address
     * @param programId - Token Extension Program ID
     * @returns Promise resolving to the authority public key or null if no authority
     */
    static getCpiGuardAuthority(connection: Connection, mint: PublicKey, programId?: PublicKey): Promise<PublicKey | null>;
    /**
     * Create instructions to create a new token with CPI Guard
     * @param connection - Connection to Solana cluster
     * @param payer - Public key of the fee payer
     * @param mintAuthority - Mint authority
     * @param decimals - Number of decimals
     * @param cpiGuardAuthority - (Optional) Authority that can enable/disable CPI Guard
     * @returns Instructions, signers, and mint address
     */
    static createTokenWithCpiGuardInstructions(connection: Connection, payer: PublicKey, mintAuthority: PublicKey, decimals: number, cpiGuardAuthority?: PublicKey): Promise<{
        instructions: TransactionInstruction[];
        signers: Keypair[];
        mint: PublicKey;
    }>;
    /**
     * Check if this mint has CPI Guard enabled
     * @returns Promise resolving to boolean indicating if CPI Guard is enabled
     */
    isCpiGuardEnabled(): Promise<boolean>;
    /**
     * Get the CPI Guard authority for this mint
     * @returns Promise resolving to the authority public key or null if no authority
     */
    getCpiGuardAuthority(): Promise<PublicKey | null>;
    /**
     * Create instruction to enable CPI Guard for this mint
     * @param authority - Authority address that can enable/disable CPI Guard
     * @returns Instruction to enable CPI Guard
     */
    createEnableCpiGuardInstruction(authority: PublicKey): TransactionInstruction;
    /**
     * Create instruction to disable CPI Guard for this mint
     * @param authority - Authority address that can enable/disable CPI Guard
     * @returns Instruction to disable CPI Guard
     */
    createDisableCpiGuardInstruction(authority: PublicKey): TransactionInstruction;
}
