function getClient () {
  return client
}
@typedef {Object} DaemonHyperdrive
@prop {number} sessionId
@prop {Buffer} key
@prop {Buffer} discoveryKey
@prop {string} url
@prop {string} domain
@prop {boolean} writable
@prop {Boolean} persistSession
@prop {Object} session
@prop {Object} session.drive
@prop {function(): Promise<void>} session.close
@prop {function(Object): Promise<void>} session.configureNetwork
@prop {function(): Promise<Object>} getInfo
@prop {DaemonHyperdrivePDA} pda

@typedef {Object} DaemonHyperdrivePDA
@prop {Number} lastCallTime
@prop {Number} numActiveStreams
@prop {function(string): Promise<Object>} stat
@prop {function(string, Object=): Promise<any>} readFile
@prop {function(string, Object=): Promise<Array<Object>>} readdir
@prop {function(string): Promise<number>} readSize
@prop {function(number, string?): Promise<Array<Object>>} diff
@prop {function(string, any, Object=): Promise<void>} writeFile
@prop {function(string): Promise<void>} mkdir
@prop {function(string, string): Promise<void>} copy
@prop {function(string, string): Promise<void>} rename
@prop {function(string, Object): Promise<void>} updateMetadata
@prop {function(string, string|string[]): Promise<void>} deleteMetadata
@prop {function(string): Promise<void>} unlink
@prop {function(string, Object=): Promise<void>} rmdir
@prop {function(string, string|Buffer): Promise<void>} mount
@prop {function(string): Promise<void>} unmount
@prop {function(string=): NodeJS.ReadableStream} watch
@prop {function(): NodeJS.ReadableStream} createNetworkActivityStream
@prop {function(): Promise<Object>} readManifest
@prop {function(Object): Promise<void>} writeManifest
@prop {function(Object): Promise<void>} updateManifest