/// declare module "@insertish/zangodb" { export interface Callback { (error: Error): void; } export interface ResultCallback { (error: Error, result: T): void; } export interface IteratorCallback { (doc: any): void; } export class Cursor { filter(expr: Object): Cursor; forEach(fn: IteratorCallback, cb?: Callback): Promise; group(spec: Object): Cursor; hint(path: string): Cursor; limit(num: number): Cursor; project(spec: Object): Cursor; skip(num: number): Cursor; sort(spec: Object): Cursor; toArray(cb?: ResultCallback): Promise; unwind(path: string): Cursor; } export class Collection { name: string; aggregate(pipeline: Object[]): Cursor; find(expr: Object, projection_spec?: Object): Cursor; findOne(expr: Object, projection_spec?: Object, cb?: ResultCallback): Promise; insert(docs: Object|Object[], cb?: Callback): Promise; remove(expr: Object, cb?: Callback): Promise; update(expr: Object, spec: Object, cb?: Callback): Promise; } export class Db { constructor(name: string, version?: number, config?: string[]|Object); name: string; version: number; open(cb?: Callback): ResultCallback; close(): void; collection(name: string): Collection; drop(cb?: Callback): Promise; } }