// Type definitions for levelup 5.1 // Project: https://github.com/Level/levelup // Definitions by: Meirion Hughes // Daniel Byrne // Carson Farmer // Steffen Park // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 /// import { EventEmitter } from 'events'; import { AbstractLevelDOWN, AbstractIteratorOptions, AbstractBatch, ErrorCallback, AbstractOptions, ErrorValueCallback, AbstractGetOptions, AbstractIterator } from 'abstract-leveldown'; import { LevelUPError, InitializationError, OpenError, ReadError, WriteError, NotFoundError, EncodingError } from 'level-errors'; type LevelUpPut = ((key: K, value: V, callback: ErrorCallback) => void) & ((key: K, value: V, options: O, callback: ErrorCallback) => void) & ((key: K, value: V, options?: O) => Promise); type LevelUpGet = ((key: K, callback: ErrorValueCallback) => void) & ((key: K, options: O, callback: ErrorValueCallback) => void) & ((key: K, options?: O) => Promise); type LevelUpGetMany = ((keys: K[], callback: ErrorValueCallback) => void) & ((keys: K[], options: O, callback: ErrorValueCallback) => void) & ((keys: K[], options?: O) => Promise); type LevelUpDel = ((key: K, callback: ErrorCallback) => void) & ((key: K, options: O, callback: ErrorCallback) => void) & ((key: K, options?: O) => Promise); type LevelUpClear = ((callback: ErrorCallback) => void) & ((options: O, callback: ErrorCallback) => void) & ((options?: O) => Promise); type LevelUpBatch = ((key: K, callback: ErrorCallback) => void) & ((key: K, options: O, callback: ErrorCallback) => void) & ((key: K, options?: O) => Promise); type InferDBPut = DB extends { put: (key: infer K, value: infer V, options: infer O, cb: any) => void } ? LevelUpPut : LevelUpPut; type InferDBGet = DB extends { get: (key: infer K, options: infer O, callback: ErrorValueCallback) => void } ? LevelUpGet : LevelUpGet; type InferDBGetMany = DB extends { getMany: (keys: Array, options: infer O, callback: ErrorValueCallback>) => void } ? LevelUpGetMany : LevelUpGetMany; type InferDBDel = DB extends { del: (key: infer K, options: infer O, callback: ErrorCallback) => void } ? LevelUpDel : LevelUpDel; type InferDBClear = DB extends { clear: (options: infer O, callback: ErrorCallback) => void } ? LevelUpClear : LevelUpClear; interface AbstractClearOptions extends AbstractOptions { gt?: K | undefined; gte?: K | undefined; lt?: K | undefined; lte?: K | undefined; reverse?: boolean | undefined; limit?: number | undefined; } declare namespace levelup { interface LevelUpChain { readonly length: number; put(key: K, value: V): this; del(key: K): this; clear(): this; write(callback: ErrorCallback): this; write(): Promise; } interface LevelUp> extends EventEmitter { open(): Promise; open(callback?: ErrorCallback): void; close(): Promise; close(callback?: ErrorCallback): void; put: InferDBPut; get: InferDBGet; del: InferDBDel; clear: InferDBClear; getMany: InferDBGetMany; batch(array: AbstractBatch[], options?: any): Promise; batch(array: AbstractBatch[], options: any, callback: (err?: any) => any): void; batch(array: AbstractBatch[], callback: (err?: any) => any): void; batch(): LevelUpChain; iterator(options?: AbstractIteratorOptions): Iterator; isOpen(): boolean; isClosed(): boolean; readonly status: "closed" | "open" | "opening" | "new" | "closing"; isOperational(): boolean; createReadStream(options?: AbstractIteratorOptions): NodeJS.ReadableStream; createKeyStream(options?: AbstractIteratorOptions): NodeJS.ReadableStream; createValueStream(options?: AbstractIteratorOptions): NodeJS.ReadableStream; /* emitted when a new value is 'put' */ on(event: 'put', cb: (key: any, value: any) => void): this; /* emitted when a value is deleted */ on(event: 'del', cb: (key: any) => void): this; /* emitted when a batch operation has executed */ on(event: 'batch', cb: (ary: any[]) => void): this; /* emitted when clear is called */ on(event: 'clear', cb: (opts: any) => void): this; /* emitted on given event */ on(event: 'open' | 'ready' | 'closed' | 'opening' | 'closing', cb: () => void): this; } interface LevelUpConstructor { ( db: DB, options: any, cb?: ErrorCallback): LevelUp; ( db: DB, cb?: ErrorCallback): LevelUp; new ( db: DB, options: any, cb?: ErrorCallback): LevelUp; new ( db: DB, cb?: ErrorCallback): LevelUp; errors: { LevelUPError: typeof LevelUPError; InitializationError: typeof InitializationError; OpenError: typeof OpenError; ReadError: typeof ReadError; WriteError: typeof WriteError; NotFoundError: typeof NotFoundError; EncodingError: typeof EncodingError; }; } } declare const levelup: levelup.LevelUpConstructor; export = levelup;