import { ApiPromise } from "@polkadot/api";
import { H256 } from "@polkadot/types/interfaces";
import { Network } from "bitcoinjs-lib";
import { ElectrsAPI } from "../external";
import { TransactionAPI } from "./transaction";
import { RefundRequestExt, WrappedCurrency } from "../types";
/**
 * @category BTC Bridge
 */
export interface RefundAPI {
    /**
     * Execute a refund request
     * @remarks If `txId` is not set, the `merkleProof` and `rawTx` must both be set.
     *
     * @param requestId The ID generated by the refund request transaction
     * @param btcTxId Bitcoin transaction ID
     */
    execute(requestId: string, btcTxId: string): Promise<void>;
    /**
     * @returns An array containing the refund requests
     */
    list(): Promise<RefundRequestExt[]>;
    /**
     * @param issueId The ID of the refund to fetch
     * @returns A refund object
     */
    getRequestById(refundId: H256): Promise<RefundRequestExt>;
    /**
     * @param issueId The ID of the refund request to fetch
     * @returns A refund request object
     */
    getRequestByIssueId(issueId: string): Promise<RefundRequestExt>;
}
export declare class DefaultRefundAPI implements RefundAPI {
    private api;
    private btcNetwork;
    private electrsAPI;
    private wrappedCurrency;
    private transactionAPI;
    constructor(api: ApiPromise, btcNetwork: Network, electrsAPI: ElectrsAPI, wrappedCurrency: WrappedCurrency, transactionAPI: TransactionAPI);
    execute(requestId: string, btcTxId: string): Promise<void>;
    list(): Promise<RefundRequestExt[]>;
    getRequestById(refundId: H256): Promise<RefundRequestExt>;
    getRequestByIssueId(issueId: string): Promise<RefundRequestExt>;
}
