import { type AccessController, type Identity, type Storage, type MetaData, type DagCborEncodable, type LogEntry, Log, InternalDatabase } from "@orbitdb/core";
import type { Helia } 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, signal, }: {
        ipfs: Helia<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;
        signal?: AbortSignal;
    }) => 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<void>;
        get: (key: string) => Promise<DagCborEncodable | undefined>;
        iterator: ({ amount, }?: {
            amount?: number;
        }) => AsyncGenerator<{
            key: string;
            value: DagCborEncodable;
            position: number;
            hash: string;
        }, void, unknown>;
        all: () => Promise<{
            key: string;
            value: DagCborEncodable;
            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: import("tiny-typed-emitter").TypedEmitter<import("@orbitdb/core").DatabaseEvents>;
        access: AccessController;
    }>;
    type: "ordered-keyvalue";
};
export declare const OrderedKeyValueApi: ({ database, }: {
    database: InternalDatabase;
}) => {
    get: (key: string) => Promise<DagCborEncodable | undefined>;
    set: (key: string, value: DagCborEncodable, position?: number) => Promise<string>;
    put: (key: string, value: DagCborEncodable, position?: number) => Promise<string>;
    move: (key: string, position: number) => Promise<void>;
    del: (key: string) => Promise<string>;
    iterator: ({ amount, }?: {
        amount?: number;
    }) => AsyncGenerator<{
        key: string;
        value: DagCborEncodable;
        position: number;
        hash: string;
    }, void, unknown>;
    all: () => Promise<{
        key: string;
        value: DagCborEncodable;
        hash: string;
    }[]>;
};
export default OrderedKeyValue;
