import { EncodeObject, Registry } from "@cosmjs/proto-signing";
import { TxRaw } from "cosmjs-types/cosmos/tx/v1beta1/tx";
import { SignAndBroadcastOptions } from "./TxCommon";
export interface LedgerWalletInterface {
    getAddress(): Promise<string>;
    sign(message: string): Promise<Uint8Array>;
    getPublicKey(): Promise<Uint8Array>;
    getAddressAndPublicKey(): Promise<{
        address: string;
        publicKey: Uint8Array;
    }>;
    showAddressOnDevice?(): Promise<void>;
}
export interface SignerData {
    readonly account_number: number;
    readonly sequence: number;
    readonly chain_id: string;
}
/**
 * Signs a protobuf-based Cosmos transaction using a general Signer
 * compatible with SIGN_MODE_DIRECT (e.g. Ledger, Keplr, etc.)
 *
 * @param signer - SignerInterface instance
 * @param messages - Cosmos transaction messages
 * @param signerData - Chain ID, account number, sequence
 * @param option - Fee, memo, granter info
 * @param registry - Protobuf registry for message encoding
 * @returns TxRaw - fully signed transaction
 */
export declare function signWithSignerProtobuf(signer: LedgerWalletInterface, messages: EncodeObject[], signerData: SignerData, option: SignAndBroadcastOptions, registry: Registry): Promise<TxRaw>;
