import { ApiPromise } from "@polkadot/api";
import { AddressOrPair } from "@polkadot/api/submittable/types";
import { Signer } from "@polkadot/api/types";
import { BitcoinUnit, Currency } from "@interlay/monetary-js";
import { ElectrsAPI } from "./external/electrs";
import { NominationAPI } from "./parachain/nomination";
import { IssueAPI } from "./parachain/issue";
import { OracleAPI } from "./parachain/oracle";
import { RedeemAPI } from "./parachain/redeem";
import { RefundAPI } from "./parachain/refund";
import { FeeAPI } from "./parachain/fee";
import { VaultsAPI } from "./parachain/vaults";
import { SystemAPI } from "./parachain/system";
import { TokensAPI } from "./parachain/tokens";
import { FaucetClient } from "./clients";
import { BTCRelayAPI } from "./parachain/btc-relay";
import { ReplaceAPI } from "./parachain/replace";
import { Network } from "bitcoinjs-lib";
import { BitcoinNetwork } from "./types/bitcoinTypes";
import { RewardsAPI } from "./parachain/rewards";
import { GovernanceUnit } from "./types";
import { EscrowAPI } from ".";
export * from "./factory";
export * from "./parachain/transaction";
export declare function getBitcoinNetwork(network?: BitcoinNetwork): Network;
export interface InterBtcApi {
    readonly api: ApiPromise;
    readonly vaults: VaultsAPI;
    readonly issue: IssueAPI;
    readonly redeem: RedeemAPI;
    readonly refund: RefundAPI;
    readonly faucet: FaucetClient;
    readonly oracle: OracleAPI;
    readonly electrsAPI: ElectrsAPI;
    readonly btcRelay: BTCRelayAPI;
    readonly tokens: TokensAPI;
    readonly system: SystemAPI;
    readonly replace: ReplaceAPI;
    readonly fee: FeeAPI;
    readonly nomination: NominationAPI;
    readonly rewards: RewardsAPI;
    readonly escrow: EscrowAPI;
    setAccount(account: AddressOrPair, signer?: Signer): void;
    removeAccount(): void;
    readonly account: AddressOrPair | undefined;
    getGovernanceCurrency(): Currency<GovernanceUnit>;
    getWrappedCurrency(): Currency<BitcoinUnit>;
}
/**
 * @category BTC Bridge
 */
export declare class DefaultInterBtcApi implements InterBtcApi {
    readonly api: ApiPromise;
    readonly vaults: VaultsAPI;
    readonly issue: IssueAPI;
    readonly redeem: RedeemAPI;
    readonly refund: RefundAPI;
    readonly faucet: FaucetClient;
    readonly oracle: OracleAPI;
    readonly electrsAPI: ElectrsAPI;
    readonly btcRelay: BTCRelayAPI;
    readonly tokens: TokensAPI;
    readonly system: SystemAPI;
    readonly replace: ReplaceAPI;
    readonly fee: FeeAPI;
    readonly nomination: NominationAPI;
    readonly rewards: RewardsAPI;
    readonly escrow: EscrowAPI;
    private transactionAPI;
    constructor(api: ApiPromise, bitcoinNetwork?: BitcoinNetwork, _account?: AddressOrPair, esploraNetwork?: string);
    setAccount(account: AddressOrPair, signer?: Signer): void;
    removeAccount(): void;
    get account(): AddressOrPair | undefined;
    getGovernanceCurrency(): Currency<GovernanceUnit>;
    getWrappedCurrency(): Currency<BitcoinUnit>;
}
