import { AccountKeysFromLookups } from '../message/account-keys.js';
import { Blockhash } from '../blockhash.js';
import { Message, MessageV0, VersionedMessage } from '../message/index.js';
import { PublicKey } from '../publickey.js';
import { AddressLookupTableAccount } from '../programs/index.js';
import { TransactionInstruction } from './legacy.js';
export declare type TransactionMessageArgs = {
    payerKey: PublicKey;
    instructions: Array<TransactionInstruction>;
    recentBlockhash: Blockhash;
};
export declare type DecompileArgs = {
    accountKeysFromLookups: AccountKeysFromLookups;
} | {
    addressLookupTableAccounts: AddressLookupTableAccount[];
};
export declare class TransactionMessage {
    payerKey: PublicKey;
    instructions: Array<TransactionInstruction>;
    recentBlockhash: Blockhash;
    constructor(args: TransactionMessageArgs);
    static decompile(message: VersionedMessage, args?: DecompileArgs): TransactionMessage;
    compileToLegacyMessage(): Message;
    compileToV0Message(addressLookupTableAccounts?: AddressLookupTableAccount[]): MessageV0;
}
