import { BusNameBasicInfo, DBus, DBusInterface, DBusMessage, DBusObject, DBusService, DBusSignalEmitter, InvokeOpts, ServiceBasicInfo } from 'dbus-sdk';
import { Provider, ProviderOptionsBuilder } from 'lakutata';
import { DBusClientOptions } from '../interfaces/DBusClientOptions';
export declare const buildDBusClientOptions: ProviderOptionsBuilder<DBusClientOptions>;
export declare class DBusClientProvider extends Provider {
    protected readonly busAddress: string;
    protected readonly timeout: number;
    protected readonly advancedResponse: boolean;
    protected readonly convertBigIntToNumber: boolean;
    protected dbus: DBus;
    get uniqueName(): string;
    /**
     * Initializer
     * @protected
     */
    protected init(): Promise<void>;
    /**
     * Destroyer
     * @protected
     */
    protected destroy(): Promise<void>;
    invoke(opts: InvokeOpts, noReply: true): void;
    invoke(opts: InvokeOpts, noReply: false): Promise<any[]>;
    invoke(opts: InvokeOpts): Promise<any[]>;
    on(eventName: 'online', listener: (name: string) => void): this;
    on(eventName: 'offline', listener: (name: string) => void): this;
    on(eventName: 'replaced', listener: (name: string) => void): this;
    on(eventName: 'methodCall', listener: (message: DBusMessage) => void): this;
    on(eventName: 'NameOwnerChanged', listener: (name: string, oldOwner: string, newOwner: string) => void): this;
    on(eventName: 'NameLost', listener: (name: string) => void): this;
    on(eventName: 'NameAcquired', listener: (name: string) => void): this;
    on(eventName: 'connectionClose', listener: () => void): this;
    on(eventName: 'connectionError', listener: (error: Error) => void): this;
    once(eventName: 'online', listener: (name: string) => void): this;
    once(eventName: 'offline', listener: (name: string) => void): this;
    once(eventName: 'replaced', listener: (name: string) => void): this;
    once(eventName: 'methodCall', listener: (message: DBusMessage) => void): this;
    once(eventName: 'NameOwnerChanged', listener: (name: string, oldOwner: string, newOwner: string) => void): this;
    once(eventName: 'NameLost', listener: (name: string) => void): this;
    once(eventName: 'NameAcquired', listener: (name: string) => void): this;
    once(eventName: 'connectionClose', listener: () => void): this;
    once(eventName: 'connectionError', listener: (error: Error) => void): this;
    off(eventName: 'online', listener: (name: string) => void): this;
    off(eventName: 'offline', listener: (name: string) => void): this;
    off(eventName: 'replaced', listener: (name: string) => void): this;
    off(eventName: 'methodCall', listener: (message: DBusMessage) => void): this;
    off(eventName: 'NameOwnerChanged', listener: (name: string, oldOwner: string, newOwner: string) => void): this;
    off(eventName: 'NameLost', listener: (name: string) => void): this;
    off(eventName: 'NameAcquired', listener: (name: string) => void): this;
    off(eventName: 'connectionClose', listener: () => void): this;
    off(eventName: 'connectionError', listener: (error: Error) => void): this;
    removeListener(eventName: 'online', listener: (name: string) => void): this;
    removeListener(eventName: 'offline', listener: (name: string) => void): this;
    removeListener(eventName: 'replaced', listener: (name: string) => void): this;
    removeListener(eventName: 'methodCall', listener: (message: DBusMessage) => void): this;
    removeListener(eventName: 'NameOwnerChanged', listener: (name: string, oldOwner: string, newOwner: string) => void): this;
    removeListener(eventName: 'NameLost', listener: (name: string) => void): this;
    removeListener(eventName: 'NameAcquired', listener: (name: string) => void): this;
    removeListener(eventName: 'connectionClose', listener: () => void): this;
    removeListener(eventName: 'connectionError', listener: (error: Error) => void): this;
    addMatch(rule: string): void;
    removeMatch(rule: string): void;
    getNameOwner(name: string): Promise<string | undefined>;
    listActivatableNames(): Promise<string[]>;
    listNames(): Promise<string[]>;
    nameHasOwner(name: string): Promise<boolean>;
    listBusNames(): Promise<BusNameBasicInfo[]>;
    listServices(): Promise<ServiceBasicInfo[]>;
    services(): Promise<DBusService[]>;
    service(service: string): Promise<DBusService>;
    object(service: string, objectPath: string): Promise<DBusObject>;
    interface(service: string, objectPath: string, iface: string): Promise<DBusInterface>;
    interfaceSignal(service: string, objectPath: string, iface: string): Promise<DBusSignalEmitter>;
}
//# sourceMappingURL=DBusClientProvider.d.ts.map