import { Address } from "./commonTypes";
import { IEventSubscription } from "./pubSubEventService";
export declare class AccountService {
    static AccountChangedEventTopic: string;
    /**
     * Initializes the system that watches for default account changes.
     *
     * `initiateAccountWatch` is called automatically by Arc.js when you pass `true`
     * for `watchForAccountChanges` to `InitializeArcJs`.  You may also call it manually yourself.
     *
     * Then you may request to be notified whenever the current account changes by calling
     * [AccountService.subscribeToAccountChanges](/api/classes/AccountService#subscribeToAccountChanges)
     *
     *
     * @param web3
     */
    static initiateAccountWatch(): Promise<void>;
    /**
     * Turn off the system that watches for default account changes.
     */
    static endAccountWatch(): void;
    /**
     * Subscribe to be notified whenever the current account changes, like this:
     * ```typescript
     * AccountService.subscribeToAccountChanges((account: Address) => { ... });`
     * ```
     * @param callback
     * @returns A subscription to the event.  Unsubscribe by calling `[theSubscription].unsubscribe()`.
     */
    static subscribeToAccountChanges(callback: (address: Address) => void): IEventSubscription;
    private static currentAccount;
    private static accountChangedLock;
    private static accountChangedTimerId;
}
