/**
 * @typedef {import('@libp2p/interface-pubsub').Message} Message
 * @typedef {import('@libp2p/interfaces/events').EventHandler<CustomEvent<Message>>} EventHandler
 * @typedef {import('@libp2p/interfaces/events').EventHandler<Message>} MessageEventHandler
 */
/**
 * @param {object} config
 * @param {import('../types').NetworkService} config.network
 * @param {import('ipfs-core-types/src/config').Config} [config.config]
 */
export function createPubsub({ network, config }: {
    network: import('../types').NetworkService;
    config?: import("ipfs-core-types/src/config").Config | undefined;
}): {
    subscribe: (topic: string, handler: import("@libp2p/interfaces/events").EventHandler<import("@libp2p/interface-pubsub").Message>, options?: import("ipfs-core-types/src/pubsub").SubscribeOptions | undefined) => Promise<void>;
    unsubscribe: (topic: string, handler?: import("@libp2p/interfaces/events").EventHandler<import("@libp2p/interface-pubsub").Message> | undefined, options?: import("ipfs-core-types").AbortOptions | undefined) => Promise<void>;
    publish: (topic: string, data: Uint8Array, options?: import("ipfs-core-types").AbortOptions | undefined) => Promise<void>;
    ls: (options?: import("ipfs-core-types").AbortOptions | undefined) => Promise<string[]>;
    peers: (topic: string, options?: import("ipfs-core-types").AbortOptions | undefined) => Promise<import("@libp2p/interface-peer-id").PeerId[]>;
};
export type Message = import('@libp2p/interface-pubsub').Message;
export type EventHandler = import('@libp2p/interfaces/events').EventHandler<CustomEvent<Message>>;
export type MessageEventHandler = import('@libp2p/interfaces/events').EventHandler<Message>;
//# sourceMappingURL=pubsub.d.ts.map