import { HexString } from '@polkadot/util/types';
import { UnsubscribePromise } from '@polkadot/api/types';
import { IBalanceCallback, IBlocksCallback } from '../types';
import { IGearEvent, IGearVoucherEvent } from './types';
import { Transfer, UserMessageSent } from './GearEvents';
import { GearApi } from '../GearApi';
export declare class GearEvents {
    #private;
    private api;
    constructor(gearApi: GearApi);
    subscribeToGearEvent<M extends keyof IGearEvent>(method: M, callback: (event: IGearEvent[M]) => void | Promise<void>, fromBlock?: number | HexString, blocks?: 'finalized' | 'latest'): Promise<() => void>;
    subscribeToGearVoucherEvent<M extends keyof IGearVoucherEvent>(method: M, callback: (event: IGearVoucherEvent[M]) => void | Promise<void>): UnsubscribePromise;
    subscribeToUserMessageSentByActor(options: {
        from?: HexString;
        to?: HexString;
    }, callback: (event: UserMessageSent) => void): UnsubscribePromise;
    subscribeToTransferEvents(callback: (event: Transfer) => void | Promise<void>): UnsubscribePromise;
    /**
     * @deprecated Use api.blocks.subscribeNewHeads instead
     */
    subscribeToNewBlocks(callback: IBlocksCallback): UnsubscribePromise;
    subscribeToBalanceChanges(accountAddress: string, callback: IBalanceCallback): UnsubscribePromise;
}
