export declare type ObjectPath = string;
export declare type SigVal = [string, any];
export declare type Variant = any;

export type Interfaces = {
  "org.freedesktop.DBus": org.freedesktop.DBus
  "org.freedesktop.DBus.Debug.Stats": org.freedesktop.DBus.Debug.Stats
  "org.freedesktop.DBus.Introspectable": org.freedesktop.DBus.Introspectable
  "org.freedesktop.DBus.Monitoring": org.freedesktop.DBus.Monitoring
  "org.freedesktop.DBus.Peer": org.freedesktop.DBus.Peer
  "org.freedesktop.DBus.Properties": org.freedesktop.DBus.Properties
}
export namespace org {
  export namespace freedesktop {
    export interface DBus {
      on(ev: "NameOwnerChanged", cb: (v0: string, v1: string, v2: string) => void): Promise<void>
      on(ev: "NameLost", cb: (v0: string) => void): Promise<void>
      on(ev: "NameAcquired", cb: (v0: string) => void): Promise<void>
      on(ev: "ActivatableServicesChanged", cb: () => void): Promise<void>
      get Features(): Promise<string[]>
      get Interfaces(): Promise<string[]>
      Hello(): Promise<[/*v0*/string]>
      RequestName(name: string, flags: number): Promise<[/*v0*/number]>
      ReleaseName(name: string): Promise<[/*v0*/number]>
      StartServiceByName(name: string, flags: number): Promise<[/*v0*/number]>
      UpdateActivationEnvironment(environment: {[key:string]:string}): Promise<[]>
      NameHasOwner(name: string): Promise<[/*v0*/boolean]>
      ListNames(): Promise<[/*v0*/string[]]>
      ListActivatableNames(): Promise<[/*v0*/string[]]>
      AddMatch(rule: string): Promise<[]>
      RemoveMatch(rule: string): Promise<[]>
      GetNameOwner(name: string): Promise<[/*v0*/string]>
      ListQueuedOwners(name: string): Promise<[/*v0*/string[]]>
      GetConnectionUnixUser(bus_name: string): Promise<[/*v0*/number]>
      GetConnectionUnixProcessID(bus_name: string): Promise<[/*v0*/number]>
      GetAdtAuditSessionData(bus_name: string): Promise<[/*v0*/Buffer]>
      GetConnectionSELinuxSecurityContext(bus_name: string): Promise<[/*v0*/Buffer]>
      ReloadConfig(): Promise<[]>
      GetId(): Promise<[/*v0*/string]>
      GetConnectionCredentials(bus_name: string): Promise<[/*v0*/{[key:string]:Variant}]>
    }
    export namespace DBus {
      export interface Introspectable {
        Introspect(): Promise<[/*v0*/string]>
      }
      export interface Monitoring {
        BecomeMonitor(rule: string[], flags: number): Promise<[]>
      }
      export interface Peer {
        GetMachineId(): Promise<[/*v0*/string]>
        Ping(): Promise<[]>
      }
      export interface Properties {
        on(ev: "PropertiesChanged", cb: (interface_name: string, changed_properties: {[key:string]:Variant}, invalidated_properties: string[]) => void): Promise<void>
        Get(interface_name: string, property_name: string): Promise<[/*v0*/Variant]>
        GetAll(interface_name: string): Promise<[/*v0*/{[key:string]:Variant}]>
        Set(interface_name: string, property_name: string, value: SigVal): Promise<[]>
      }
      export namespace Debug {
        export interface Stats {
          GetStats(): Promise<[/*v0*/{[key:string]:Variant}]>
          GetConnectionStats(name: string): Promise<[/*v0*/{[key:string]:Variant}]>
          GetAllMatchRules(): Promise<[/*v0*/{[key:string]:string[]}]>
        }
      }
    }
  }
}
