import { type Address, type Instruction, type InstructionWithData, type ReadonlyUint8Array } from "@solana/kit";
import { type ParsedAcceptOwnershipInstruction, type ParsedAddLocalTokenInstruction, type ParsedAddRemoteTokenMessengerInstruction, type ParsedBurnTokenCustodyInstruction, type ParsedDepositForBurnInstruction, type ParsedDepositForBurnWithCallerInstruction, type ParsedHandleReceiveMessageInstruction, type ParsedInitializeInstruction, type ParsedLinkTokenPairInstruction, type ParsedPauseInstruction, type ParsedRemoveLocalTokenInstruction, type ParsedRemoveRemoteTokenMessengerInstruction, type ParsedReplaceDepositForBurnInstruction, type ParsedSetMaxBurnAmountPerMessageInstruction, type ParsedSetTokenControllerInstruction, type ParsedTransferOwnershipInstruction, type ParsedUnlinkTokenPairInstruction, type ParsedUnpauseInstruction, type ParsedUpdatePauserInstruction } from "../instructions";
export declare const TOKEN_MESSENGER_MINTER_PROGRAM_ADDRESS: Address<"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3">;
export declare enum TokenMessengerMinterAccount {
    TokenMessenger = 0,
    RemoteTokenMessenger = 1,
    TokenMinter = 2,
    TokenPair = 3,
    LocalToken = 4
}
export declare function identifyTokenMessengerMinterAccount(account: {
    data: ReadonlyUint8Array;
} | ReadonlyUint8Array): TokenMessengerMinterAccount;
export declare enum TokenMessengerMinterInstruction {
    Initialize = 0,
    TransferOwnership = 1,
    AcceptOwnership = 2,
    AddRemoteTokenMessenger = 3,
    RemoveRemoteTokenMessenger = 4,
    DepositForBurn = 5,
    DepositForBurnWithCaller = 6,
    ReplaceDepositForBurn = 7,
    HandleReceiveMessage = 8,
    SetTokenController = 9,
    Pause = 10,
    Unpause = 11,
    UpdatePauser = 12,
    SetMaxBurnAmountPerMessage = 13,
    AddLocalToken = 14,
    RemoveLocalToken = 15,
    LinkTokenPair = 16,
    UnlinkTokenPair = 17,
    BurnTokenCustody = 18
}
export declare function identifyTokenMessengerMinterInstruction(instruction: {
    data: ReadonlyUint8Array;
} | ReadonlyUint8Array): TokenMessengerMinterInstruction;
export type ParsedTokenMessengerMinterInstruction<TProgram extends string = "CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3"> = ({
    instructionType: TokenMessengerMinterInstruction.Initialize;
} & ParsedInitializeInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.TransferOwnership;
} & ParsedTransferOwnershipInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.AcceptOwnership;
} & ParsedAcceptOwnershipInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.AddRemoteTokenMessenger;
} & ParsedAddRemoteTokenMessengerInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.RemoveRemoteTokenMessenger;
} & ParsedRemoveRemoteTokenMessengerInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.DepositForBurn;
} & ParsedDepositForBurnInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.DepositForBurnWithCaller;
} & ParsedDepositForBurnWithCallerInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.ReplaceDepositForBurn;
} & ParsedReplaceDepositForBurnInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.HandleReceiveMessage;
} & ParsedHandleReceiveMessageInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.SetTokenController;
} & ParsedSetTokenControllerInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.Pause;
} & ParsedPauseInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.Unpause;
} & ParsedUnpauseInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.UpdatePauser;
} & ParsedUpdatePauserInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.SetMaxBurnAmountPerMessage;
} & ParsedSetMaxBurnAmountPerMessageInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.AddLocalToken;
} & ParsedAddLocalTokenInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.RemoveLocalToken;
} & ParsedRemoveLocalTokenInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.LinkTokenPair;
} & ParsedLinkTokenPairInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.UnlinkTokenPair;
} & ParsedUnlinkTokenPairInstruction<TProgram>) | ({
    instructionType: TokenMessengerMinterInstruction.BurnTokenCustody;
} & ParsedBurnTokenCustodyInstruction<TProgram>);
export declare function parseTokenMessengerMinterInstruction<TProgram extends string>(instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>): ParsedTokenMessengerMinterInstruction<TProgram>;
