import { OfflineAminoSigner, StdSignDoc, AminoSignResponse } from '@cosmjs/amino';
import { AccountData } from '@cosmjs/proto-signing';
import { SeiApp } from '@zondax/ledger-sei';
import Transport from '@ledgerhq/hw-transport-node-hid';
import { GenericeResponseAddress } from '@zondax/ledger-sei/dist/types';

/**
 *  A signer implementation that uses a Ledger device to sign transactions
 */
declare class SeiLedgerOfflineAminoSigner implements OfflineAminoSigner {
    private readonly path;
    private readonly app;
    /**
     * Creates a new SeiLedgerOfflineAminoSigner
     * @param app Ledger Sei app instance
     * @param path hd derivation path (e.g. "m/44'/60'/0'/0/0")
     */
    constructor(app: SeiApp, path: string);
    getAccounts(): Promise<readonly AccountData[]>;
    signAmino(_signerAddress: string, signDoc: StdSignDoc): Promise<AminoSignResponse>;
}

type CreateSeiAppResponse = {
    app: SeiApp;
    transport: Transport;
};
/**
 * Creates a transport and app instance
 *
 * @returns {Promise<{transport: Transport, app: SeiApp}>} transport and app instances
 */
declare const createTransportAndApp: () => Promise<CreateSeiAppResponse>;
type GetAddressesResponse = {
    evmAddress: {
        publicKey: string;
        address: string;
        chainCode?: string | undefined;
    };
    nativeAddress: GenericeResponseAddress;
};
/**
 * Get the EVM and Cosmos addresses from the Ledger device
 * @param app Ledger Sei app instance
 * @param path hd derivation path (e.g. "m/44'/60'/0'/0/0")
 *
 * @returns {Promise<{evmAddress: string, nativeAddress: string}>} EVM and Cosmos address objects containing
 * address and public key
 */
declare const getAddresses: (app: SeiApp, path: string) => Promise<GetAddressesResponse>;

export { type CreateSeiAppResponse, type GetAddressesResponse, SeiLedgerOfflineAminoSigner, createTransportAndApp, getAddresses };
