import WebSocket from 'isomorphic-ws';
import { BaseError } from './utils/errors.js';
import { Encoded } from './utils/encoder.js';
export declare class MiddlewareSubscriberError extends BaseError {
    constructor(message: string);
}
export declare class MiddlewareSubscriberDisconnected extends MiddlewareSubscriberError {
    readonly closeEvent: WebSocket.CloseEvent;
    constructor(closeEvent: WebSocket.CloseEvent);
}
/**
 * @category middleware
 */
export default class MiddlewareSubscriber {
    #private;
    readonly url: string;
    get webSocket(): WebSocket | undefined;
    constructor(url: string);
    reconnect(): Promise<void>;
    subscribeKeyBlocks(cb: (p?: any, e?: Error) => void): () => void;
    subscribeKeyBlocksNode(cb: (p?: any, e?: Error) => void): () => void;
    subscribeKeyBlocksAll(cb: (p?: any, e?: Error) => void): () => void;
    subscribeMicroBlocks(cb: (p?: any, e?: Error) => void): () => void;
    subscribeMicroBlocksNode(cb: (p?: any, e?: Error) => void): () => void;
    subscribeMicroBlocksAll(cb: (p?: any, e?: Error) => void): () => void;
    subscribeTransactions(cb: (p?: any, e?: Error) => void): () => void;
    subscribeTransactionsNode(cb: (p?: any, e?: Error) => void): () => void;
    subscribeTransactionsAll(cb: (p?: any, e?: Error) => void): () => void;
    subscribeObject(target: Encoded.KeyBlockHash | Encoded.Channel | Encoded.ContractAddress | Encoded.OracleAddress | Encoded.OracleQueryId | Encoded.AccountAddress | Encoded.Name | `${string}.chain`, cb: (p?: any, e?: Error) => void): () => void;
    subscribeObjectNode(target: Encoded.KeyBlockHash | Encoded.Channel | Encoded.ContractAddress | Encoded.OracleAddress | Encoded.OracleQueryId | Encoded.AccountAddress | Encoded.Name | `${string}.chain`, cb: (p?: any, e?: Error) => void): () => void;
    subscribeObjectAll(target: Encoded.KeyBlockHash | Encoded.Channel | Encoded.ContractAddress | Encoded.OracleAddress | Encoded.OracleQueryId | Encoded.AccountAddress | Encoded.Name | `${string}.chain`, cb: (p?: any, e?: Error) => void): () => void;
}
