import { AssetAdapter, SwapAsset } from './IAssetAdapter';
export type TransactionDetails = import('@nimiq/core').PlainTransactionDetails;
export type ConsensusState = import('@nimiq/core').ConsensusState;
export interface NimiqClient {
    addTransactionListener(listener: (tx: TransactionDetails) => any, addresses: string[]): number | Promise<number>;
    getTransactionsByAddress(address: string, sinceBlockHeight?: number, knownTransactions?: TransactionDetails[]): Promise<TransactionDetails[]>;
    removeListener(handle: number): Promise<void>;
    sendTransaction(tx: TransactionDetails | string): Promise<TransactionDetails>;
    addConsensusChangedListener(listener: (consensusState: ConsensusState) => any): Promise<number>;
}
export declare class NimiqAssetAdapter implements AssetAdapter<SwapAsset.NIM> {
    client: NimiqClient;
    private cancelCallback;
    private stopped;
    constructor(client: NimiqClient);
    private findTransaction;
    awaitHtlcFunding(address: string, value: number, data: string, confirmations?: number, onPending?: (tx: TransactionDetails) => any): Promise<TransactionDetails>;
    fundHtlc(serializedTx: string, onPending?: (tx: TransactionDetails) => any, serializedProxyTx?: string): Promise<TransactionDetails>;
    awaitHtlcSettlement(address: string): Promise<TransactionDetails>;
    awaitSwapSecret(address: string): Promise<string>;
    settleHtlc(serializedTx: string, secret: string, hash: string): Promise<TransactionDetails>;
    awaitSettlementConfirmation(address: string, onUpdate?: (tx: TransactionDetails) => any): Promise<TransactionDetails>;
    stop(reason: Error): void;
    private sendTransaction;
}
