/**
 * @packageDocumentation
 *
 * A Datastore implementation that uses a flavour of [Level](https://leveljs.org/) as a backend.
 *
 * This module is targetted at Node.js. It is possible to use it in a browser but you should probably use IDBDatastore instead.
 *
 * @example
 *
 * ```js
 * import { LevelDatastore } from 'datastore-level'
 *
 * // Default using level as backend for node or the browser
 * const store = new LevelDatastore('path/to/store')
 *
 * // another leveldown compliant backend like memory-level
 * const memStore = new LevelDatastore(
 *   new MemoryLevel({
 *     keyEncoding: 'utf8',
 *     valueEncoding: 'view'
 *   })
 * )
 * ```
 *
 * ## Browser Shimming Leveldown
 *
 * `LevelStore` uses the `level` module to automatically use `level` if a modern bundler is used which can detect bundle targets based on the `pkg.browser` property in your `package.json`.
 *
 * If you are using a bundler that does not support `pkg.browser`, you will need to handle the shimming yourself, as was the case with versions of `LevelStore` 0.7.0 and earlier.
 *
 * ## Database names
 *
 * `level-js@3` changed the database prefix from `IDBWrapper-` to `level-js-`, so please specify the old prefix if you wish to continue using databases created using `datastore-level` prior to `v0.12.0`.  E.g.
 *
 * ```javascript
 * import leveljs from 'level-js'
 * import browserStore = new LevelDatastore(
 *   new Level('my/db/name', {
 *     prefix: 'IDBWrapper-'
 *   })
 * })
 * ```
 *
 * More information: [https://github.com/Level/level-js/blob/master/UPGRADING.md#new-database-prefix](https://github.com/Level/level-js/blob/99831913e905d19e5f6dee56d512b7264fbed7bd/UPGRADING.md#new-database-prefix)
 */
import { BaseDatastore } from 'datastore-core';
import { Key } from 'interface-datastore';
import { Level } from 'level';
import type { AbortOptions } from 'abort-error';
import type { Batch, KeyQuery, Pair, Query } from 'interface-datastore';
import type { DatabaseOptions, OpenOptions } from 'level';
/**
 * A datastore backed by leveldb
 */
export declare class LevelDatastore extends BaseDatastore {
    db: Level<string, Uint8Array>;
    private readonly opts;
    constructor(path: string | Level<string, Uint8Array>, opts?: DatabaseOptions<string, Uint8Array> & OpenOptions);
    open(): Promise<void>;
    put(key: Key, value: Uint8Array, options?: AbortOptions): Promise<Key>;
    get(key: Key, options?: AbortOptions): Promise<Uint8Array>;
    has(key: Key, options?: AbortOptions): Promise<boolean>;
    delete(key: Key, options?: AbortOptions): Promise<void>;
    close(): Promise<void>;
    batch(): Batch;
    query(q: Query, options?: AbortOptions): Generator<Pair> | AsyncGenerator<Pair>;
    queryKeys(q: KeyQuery, options?: AbortOptions): Generator<Key> | AsyncGenerator<Key>;
    _query(opts: {
        values: boolean;
        prefix?: string;
    }): AsyncIterable<Pair>;
}
//# sourceMappingURL=index.d.ts.map