import { type AccessController, type Identity, type Storage, type DagCborEncodable, type MetaData, type Log, type LogEntry } from "@orbitdb/core";
import type { HeliaLibp2p } from "helia";
import type { Libp2p } from "libp2p";
import type { ServiceMap } from "@libp2p/interface";
export type FeedDatabaseType = Awaited<ReturnType<ReturnType<typeof Feed>>>;
declare const Feed: {
    (): <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: "feed";
        add: (value: DagCborEncodable) => Promise<string>;
        remove: (hash: string) => Promise<string>;
        iterator: ({ amount, }?: {
            amount?: number;
        }) => AsyncGenerator<{
            value: unknown;
            hash: string;
        }, void, unknown>;
        all: () => Promise<{
            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: "feed";
};
export default Feed;
