import { type AccessController, type Identity, type Storage, type MetaData, type DagCborEncodable, type LogEntry, Log } from "@orbitdb/core";
import type { HeliaLibp2p } from "helia";
import type { Libp2p } from "libp2p";
import type { ServiceMap } from "@libp2p/interface";
export type OrderedKeyValueDatabaseType = Awaited<ReturnType<ReturnType<typeof OrderedKeyValue>>>;
declare const OrderedKeyValue: {
    (): <T extends ServiceMap = ServiceMap>({ ipfs, identity, address, name, access, directory, meta, headsStorage, entryStorage, indexStorage, referencesCount, syncAutomatically, onUpdate, }: {
        ipfs: HeliaLibp2p<Libp2p<T>>;
        identity?: Identity;
        address: string;
        name?: string;
        access?: AccessController;
        directory?: string;
        meta?: MetaData;
        headsStorage?: Storage;
        entryStorage?: Storage;
        indexStorage?: Storage;
        referencesCount?: number;
        syncAutomatically?: boolean;
        onUpdate?: (log: Log, entry: LogEntry) => void;
    }) => Promise<{
        type: "ordered-keyvalue";
        put: (key: string, value: DagCborEncodable, position?: number) => Promise<string>;
        set: (key: string, value: DagCborEncodable, position?: number) => Promise<string>;
        del: (key: string) => Promise<string>;
        move: (key: string, position: number) => Promise<string>;
        get: (key: string) => Promise<{
            value: unknown;
            position?: number;
        } | undefined>;
        iterator: ({ amount, }?: {
            amount?: number;
        }) => AsyncGenerator<{
            key: string;
            value: unknown;
            position: number;
            hash: string;
        }, void, unknown>;
        all: () => Promise<{
            key: string;
            value: unknown;
            hash: string;
        }[]>;
        address: string;
        name: string;
        identity: Identity;
        meta: MetaData;
        close: () => Promise<void>;
        drop: () => Promise<void>;
        addOperation: (op: DagCborEncodable) => Promise<string>;
        log: Log;
        sync: import("@orbitdb/core").Sync;
        peers: Set<string>;
        events: TypedEmitter<import("@orbitdb/core").DatabaseEvents>;
        access: AccessController;
    }>;
    type: "ordered-keyvalue";
};
export default OrderedKeyValue;
