import { ApiPromise } from "@polkadot/api";
import { Header, BlockHash } from "@polkadot/types/interfaces";
import { SecurityStatusCode } from "@polkadot/types/lookup";
import { TransactionAPI } from "./transaction";
/**
 * @category BTC Bridge
 */
export interface SystemAPI {
    /**
     * @returns The current block number being processed.
     */
    getCurrentBlockNumber(): Promise<number>;
    /**
     * @returns The current active block number being processed.
     */
    getCurrentActiveBlockNumber(atBlock?: BlockHash): Promise<number>;
    /**
     * On every new parachain block, call the callback function with the new block header
     * @param callback Function to be called with every new block header
     */
    subscribeToFinalizedBlockHeads(callback: (blockHeader: Header) => void): Promise<() => void>;
    /**
     * On every new parachain block, call the callback function with the new block header
     * @param callback Function to be called with every new unfinalized block header
     */
    subscribeToCurrentBlockHeads(callback: (blockHeader: Header) => void): Promise<() => void>;
    /**
     * @returns The parachain status code object.
     */
    getStatusCode(): Promise<SecurityStatusCode>;
    /**
     * @remarks Upgrades runtime using `sudoUncheckedWeight`
     * @param code Hex-encoded wasm blob
     */
    setCode(code: string): Promise<void>;
    /**
     * @param blockNumber The block number to get the hash for
     * @returns The block hash for the given block number
     */
    getBlockHash(blockNumber: number): Promise<BlockHash>;
}
export declare class DefaultSystemAPI {
    private api;
    private transactionAPI;
    constructor(api: ApiPromise, transactionAPI: TransactionAPI);
    getCurrentBlockNumber(): Promise<number>;
    getCurrentActiveBlockNumber(atBlock?: BlockHash): Promise<number>;
    subscribeToFinalizedBlockHeads(callback: (blockHeader: Header) => void): Promise<() => void>;
    subscribeToCurrentBlockHeads(callback: (blockHeader: Header) => void): Promise<() => void>;
    getStatusCode(): Promise<SecurityStatusCode>;
    setCode(code: string): Promise<void>;
    getBlockHash(blockNumber: number): Promise<BlockHash>;
}
