import { default as Transport } from '@ledgerhq/hw-transport';
import { ResponsePublicKey, ResponseHashSign, ResponseTxSign, ResponseVersion, ResponseGeneric, TxFields, TxV1Fields, DeployAccountFields, DeployAccountV1Fields, ResponseStarkKey } from './types';
import { LedgerError } from './common';
import { Call, TypedData } from 'starknet';
export { LedgerError };
export * from './types';
/**
 * Starknet API
 *
 * @example
 * import Stark from "@ledgerhq/hw-app-starknet";
 * const stark = new StarknetClient(transport)
 */
export declare class StarknetClient {
    transport: Transport;
    constructor(transport: Transport);
    sendApdu(ins?: number, p1?: number, p2?: number, data?: Uint8Array): Promise<ResponseGeneric>;
    /**
     * get version of Nano Starknet application
     * @return an object with a major, minor, patch
     */
    getAppVersion(): Promise<ResponseVersion>;
    /**
     * get full starknet public key derived from provided derivation path
     * @param path a path in EIP-2645 format (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2645.md)
     * @return an object with publicKey
     * @example
     * stark.getPubKey("m/2645'/579218131'/0'/0'").then(o => o.publicKey)
     */
    getPubKey(path: string, show?: boolean): Promise<ResponsePublicKey>;
    /**
     * get stark key derived from provided derivation path
     * @param path a path in EIP-2645 format (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2645.md)
     * @return an object with publicKey
     * @example
     * stark.getPubKey("m/2645'/579218131'/0'/0'").then(o => o.publicKey)
     */
    getStarkKey(path: string, show?: boolean): Promise<ResponseStarkKey>;
    /**
     * sign the given hash over the staRknet elliptic curve
     * @param path Derivation path in EIP-2645 format
     * @param hash Pedersen hash to be signed
     * @return an object with (r, s, v) signature
     */
    signHash(path: string, hash: string): Promise<ResponseHashSign>;
    /**
     * sign a Starknet Tx v3 Invoke transaction
     * @param path Derivation path in EIP-2645 format
     * @param calls List of calls [(to, selector, calldata), (), ...]
     * @param tx Tx fields (account address, tip, l1_gas_bounds, l2_gas_bounds, chainID, nonce, data_availability_mode)
     * @return an object with Tx hash + (r, s, v) signature
     */
    signTx(path: string, calls: Call[], tx: TxFields): Promise<ResponseTxSign>;
    /**
     * sign a Starknet Tx v1 Invoke transaction
     * @param path Derivation path in EIP-2645 format
     * @param calls List of calls [(to, selector, calldata), (), ...]
     * @param tx Tx fields (account address, max_fee, chainID, nonce)
     * @return an object with Tx hash + (r, s, v) signature
     */
    signTxV1(path: string, calls: Call[], tx: TxV1Fields): Promise<ResponseTxSign>;
    /**
     * sign a Starknet Tx v3 DeployAccount transaction
     * @param path Derivation path in EIP-2645 format
     * @param tx Tx fields (contract_address, tip, resourceBounds, paymaster_data, chain_id, nonce, nonceDataAvailabilityMode, feeDataAvailabilityMode, constructor_calldata, class_hash, contract_address_salt)
     * @return an object with Tx hash + (r, s, v) signature
     */
    signDeployAccount(path: string, tx: DeployAccountFields): Promise<ResponseTxSign>;
    /**
     * sign a Starknet Tx v1 DeployAccount transaction
     * @param path Derivation path in EIP-2645 format
     * @param tx Tx fields (contract_address, class_hash, contract_address_salt, constructor_calldata, max_fee, chainID, nonce)
     * @return an object with Tx hash + (r, s, v) signature
     */
    signDeployAccountV1(path: string, tx: DeployAccountV1Fields): Promise<ResponseTxSign>;
    /**
     * sign a SNIP-12 encoded message
     * @param path Derivation path in EIP-2645 format
     * @param message message to be signed
     * @param account accound address to sign the message
     * @return an object with (r, s, v) signature
     */
    signMessage(path: string, message: TypedData, account: string): Promise<ResponseHashSign>;
    private encodeResourceBounds;
    private encodeDataAvailabilityMode;
}
