/**
 * An implementation of this abstract class provides functions for direct database access.
 * This interface is an extension of the [PouchDB API](https://pouchdb.com/api.html).
 *
 * A `Database` instance is injected into the app through the  databaseServiceProvider * with the help of the  SessionService .
  export abstract class Database { param id param options abstract get ( id , options ? ) ; param options abstract allDocs ( options ? ) ; param object param forceUpdate abstract put ( object , forceUpdate ? ) ; param object abstract remove ( object ) ; /**
     * Query data from the database based on a more complex, indexed request.
     *
     * This is directly calling the PouchDB implementation of this function.
     * Also see the documentation there:  https param fun param options abstract query ( fun , options ? ) ; /**
     * Create a database index to `query()` certain data more efficiently in the future.
     *
     * Also see the PouchDB documentation regarding indices and queries:  https param designDoc abstract saveDatabaseIndex ( designDoc ) ; param prefix getAll ( prefix = "" ) { return this . allDocs ( { include_docs : true , startkey : prefix , endkey : prefix + "\ufff0" , } ) ; } abstract destroy ( ) ; } /**
 * Basic query options supported by  Database .
 *
 * also see https://pouchdb.com/guides/queries.html
  export type QueryOptions = PouchDB . Query . Options < any , any > ; /**
 * Basic database read options supported by  Database .
 *
 * also see https://pouchdb.com/api.html#fetch_document
  export type GetAllOptions = PouchDB . Core . AllDocsWithKeyOptions | PouchDB . Core . AllDocsWithKeysOptions | PouchDB . Core . AllDocsWithinRangeOptions | PouchDB . Core . AllDocsOptions ; /**
 * Basic database read options supported by  Database .
 *
 * also see https://pouchdb.com/api.html#fetch_document
  export type GetOptions = PouchDB . Core . GetOptions ;