import type { AccessController, Identity, Storage, DagCborEncodable, MetaData, Log, LogEntry, InternalDatabase } from "@orbitdb/core";
import type { Helia } 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, 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: "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: import("tiny-typed-emitter").TypedEmitter<import("@orbitdb/core").DatabaseEvents>;
        access: AccessController;
    }>;
    type: "feed";
};
export declare const FeedApi: {
    ({ database }: {
        database: InternalDatabase;
    }): {
        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;
        }[]>;
    };
    type: "feed";
};
export default Feed;
