import { Address, AirGapProtocol, AirGapTransaction, AirGapTransactionsWithCursor, Amount, Balance, CryptoDerivative, FeeDefaults, KeyPair, ProtocolMetadata, PublicKey, RecursivePartial, SecretKey, Signature, TransactionFullConfiguration, TransactionDetails, TransactionSimpleConfiguration } from '@airgap/module-kit';
import { AeternityCryptoConfiguration } from '../types/crypto';
import { AeternityProtocolNetwork, AeternityProtocolOptions, AeternityUnits } from '../types/protocol';
import { AeternitySignedTransaction, AeternityTransactionCursor, AeternityUnsignedTransaction } from '../types/transaction';
export interface AeternityProtocol extends AirGapProtocol<{
    AddressResult: Address;
    ProtocolNetwork: AeternityProtocolNetwork;
    CryptoConfiguration: AeternityCryptoConfiguration;
    SignedTransaction: AeternitySignedTransaction;
    TransactionCursor: AeternityTransactionCursor;
    Units: AeternityUnits;
    FeeEstimation: FeeDefaults<AeternityUnits>;
    UnsignedTransaction: AeternityUnsignedTransaction;
}, 'Crypto', 'FetchDataForAddress'> {
    convertTransactionToBase58(preparedTx: AeternityUnsignedTransaction): Promise<AeternityUnsignedTransaction>;
}
export declare class AeternityProtocolImpl implements AeternityProtocol {
    private readonly cryptoClient;
    private readonly options;
    constructor(options?: RecursivePartial<AeternityProtocolOptions>);
    private readonly units;
    private readonly feeDefaults;
    private readonly metadata;
    getMetadata(): Promise<ProtocolMetadata<AeternityUnits>>;
    getAddressFromPublicKey(publicKey: PublicKey): Promise<string>;
    getDetailsFromTransaction(transaction: AeternitySignedTransaction | AeternityUnsignedTransaction, _publicKey: PublicKey): Promise<AirGapTransaction<AeternityUnits>[]>;
    private getDetailsFromEncodedTransaction;
    verifyMessageWithPublicKey(message: string, signature: Signature, publicKey: PublicKey): Promise<boolean>;
    encryptAsymmetricWithPublicKey(payload: string, publicKey: PublicKey): Promise<string>;
    private readonly cryptoConfiguration;
    getCryptoConfiguration(): Promise<AeternityCryptoConfiguration>;
    getKeyPairFromDerivative(derivative: CryptoDerivative): Promise<KeyPair>;
    signTransactionWithSecretKey(transaction: AeternityUnsignedTransaction, secretKey: SecretKey): Promise<AeternitySignedTransaction>;
    signMessageWithKeyPair(message: string, keyPair: KeyPair): Promise<Signature>;
    decryptAsymmetricWithKeyPair(payload: string, keyPair: KeyPair): Promise<string>;
    encryptAESWithSecretKey(payload: string, secretKey: SecretKey): Promise<string>;
    decryptAESWithSecretKey(payload: string, secretKey: SecretKey): Promise<string>;
    getNetwork(): Promise<AeternityProtocolNetwork>;
    getTransactionsForPublicKey(publicKey: PublicKey, limit: number, cursor?: AeternityTransactionCursor): Promise<AirGapTransactionsWithCursor<AeternityTransactionCursor, AeternityUnits>>;
    getTransactionsForAddress(address: string, limit: number, cursor?: AeternityTransactionCursor): Promise<AirGapTransactionsWithCursor<AeternityTransactionCursor, AeternityUnits>>;
    getBalanceOfPublicKey(publicKey: PublicKey): Promise<Balance<AeternityUnits>>;
    getBalanceOfAddress(address: string): Promise<Balance<AeternityUnits>>;
    getTransactionMaxAmountWithPublicKey(publicKey: PublicKey, to: string[], configuration?: TransactionFullConfiguration<AeternityUnits>): Promise<Amount<AeternityUnits>>;
    getTransactionFeeWithPublicKey(_publicKey: PublicKey, _details: TransactionDetails<AeternityUnits>[], _configuration?: TransactionSimpleConfiguration): Promise<FeeDefaults<AeternityUnits>>;
    prepareTransactionWithPublicKey(publicKey: PublicKey, details: TransactionDetails<AeternityUnits>[], configuration?: TransactionFullConfiguration<AeternityUnits>): Promise<AeternityUnsignedTransaction>;
    private networkId;
    broadcastTransaction(transaction: AeternitySignedTransaction): Promise<string>;
    convertTransactionToBase58(preparedTx: AeternityUnsignedTransaction): Promise<AeternityUnsignedTransaction>;
}
export declare function createAeternityProtocol(options?: RecursivePartial<AeternityProtocolOptions>): AeternityProtocol;
export declare const AETERNITY_MAINNET_PROTOCOL_NETWORK: AeternityProtocolNetwork;
export declare function createAeternityProtocolOptions(network?: Partial<AeternityProtocolNetwork>): AeternityProtocolOptions;
