import KeepKey from './keepkey';
import eventemitter2 from 'eventemitter2';
import { WebUSBDeviceConfig } from './webUSBDevice';
export declare type USBDeviceEventCallback = (deviceID: string) => void;
export interface KeepKeyManagerConfig {
    onConnectCallback?: USBDeviceEventCallback;
    onDisconnectCallback?: USBDeviceEventCallback;
}
export default class KeepKeyManager {
    deviceEvents: eventemitter2.EventEmitter2;
    keepkeys: {
        [deviceID: string]: KeepKey;
    };
    protected onConnectCallback: USBDeviceEventCallback;
    protected onDisconnectCallback: USBDeviceEventCallback;
    constructor(config?: KeepKeyManagerConfig);
    readonly initializedCount: number;
    initializeWebUSBDevices(webusbConfig?: WebUSBDeviceConfig, devices?: USBDevice[]): Promise<number>;
    add(keepkey: KeepKey, deviceID?: string): boolean;
    exec(method: string, ...args: any[]): Promise<{
        [deviceID: string]: any;
    }>;
    get(deviceID?: string): KeepKey;
    remove(deviceID: string): Promise<void>;
    removeAll(): Promise<void>;
    decorateEvents(deviceID: string, events: eventemitter2.EventEmitter2): void;
    protected handleConnectKeepKey(e: USBConnectionEvent): void;
    protected handleDisconnectKeepKey(e: USBConnectionEvent): void;
}
