import { Observable } from 'rxjs/Observable'; import { ErrorObservable } from 'rxjs/observable/ErrorObservable'; import { OperatorFunction } from 'rxjs/interfaces'; import { Clause, ExecutorResult, JoinMode, Predicate, Query, SchemaDef, Transaction, TransactionEffects } from 'reactivedb/interface'; import { QueryToken as RDBQueryToken, SelectorMeta } from 'reactivedb/proxy'; export * from 'reactivedb/interface'; export { ProxySelector, SelectorMeta } from 'reactivedb/proxy'; export interface Database { readonly inTransaction: boolean; defineSchema: (tableName: string, schema: SchemaDef) => this; connect: () => void; dump: () => Observable; load: (data: any) => Observable; insert(tableName: string, raw: T[]): Observable; insert(tableName: string, raw: T): Observable; insert(tableName: string, raw: T | T[]): Observable; get: (tableName: string, query?: Query, mode?: JoinMode) => QueryToken; update: (tableName: string, clause: Predicate, raw: Partial) => Observable; delete: (tableName: string, clause?: Predicate) => Observable; upsert(tableName: string, raw: T): Observable; upsert(tableName: string, raw: T[]): Observable; upsert(tableName: string, raw: T | T[]): Observable; remove: (tableName: string, clause?: Clause) => Observable; dispose: () => ErrorObservable | Observable; attachTx: (effects: TransactionEffects) => void; transaction: () => Observable>; } export interface QueryToken extends RDBQueryToken { selector$: Observable>; map: (fn: OperatorFunction) => QueryToken; values: () => Observable; changes: () => Observable; concat: (...tokens: QueryToken[]) => QueryToken; combine: (...tokens: QueryToken[]) => QueryToken; toString: () => Observable; } export declare function createQueryToken(selector$: Observable>): QueryToken;