/**
 * @typedef {import('@libp2p/interface-keys').PrivateKey} PrivateKey
 * @typedef {import('@libp2p/interface-peer-id').PeerId} PeerId
 * @typedef {import('@libp2p/interfaces').AbortOptions} AbortOptions
 */
export class IPNS {
    /**
     * @param {import('ipfs-core-types/src/utils').BufferStore} routing
     * @param {import('interface-datastore').Datastore} datastore
     * @param {PeerId} peerId
     * @param {import('@libp2p/interface-keychain').KeyChain} keychain
     * @param {object} options
     * @param {string} options.pass
     * @param {number} [options.initialBroadcastInterval]
     * @param {number} [options.broadcastInterval]
     */
    constructor(routing: import('ipfs-core-types/src/utils').BufferStore, datastore: import('interface-datastore').Datastore, peerId: PeerId, keychain: import('@libp2p/interface-keychain').KeyChain, options: {
        pass: string;
        initialBroadcastInterval?: number | undefined;
        broadcastInterval?: number | undefined;
    });
    publisher: IpnsPublisher;
    republisher: IpnsRepublisher;
    resolver: IpnsResolver;
    cache: TLRU<any>;
    routing: import("ipfs-core-types/src/utils").BufferStore;
    /**
     * Publish
     *
     * @param {PeerId} peerId
     * @param {Uint8Array} value
     * @param {number} lifetime
     * @param {AbortOptions} [options]
     */
    publish(peerId: PeerId, value: Uint8Array, lifetime?: number, options?: import("@libp2p/interfaces").AbortOptions | undefined): Promise<{
        name: string;
        value: Uint8Array;
    }>;
    /**
     * Resolve
     *
     * @param {string} name
     * @param {object} options
     * @param {boolean} [options.nocache]
     * @param {boolean} [options.recursive]
     * @param {AbortSignal} [options.signal]
     */
    resolve(name: string, options?: {
        nocache?: boolean | undefined;
        recursive?: boolean | undefined;
        signal?: AbortSignal | undefined;
    }): Promise<any>;
    /**
     * Initialize keyspace
     *
     * Sets the ipns record for the given key to point to an empty directory
     *
     * @param {PeerId} peerId
     * @param {Uint8Array} value
     * @param {AbortOptions} [options]
     */
    initializeKeyspace(peerId: PeerId, value: Uint8Array, options?: import("@libp2p/interfaces").AbortOptions | undefined): Promise<{
        name: string;
        value: Uint8Array;
    }>;
}
export type PrivateKey = import('@libp2p/interface-keys').PrivateKey;
export type PeerId = import('@libp2p/interface-peer-id').PeerId;
export type AbortOptions = import('@libp2p/interfaces').AbortOptions;
import { IpnsPublisher } from "./publisher.js";
import { IpnsRepublisher } from "./republisher.js";
import { IpnsResolver } from "./resolver.js";
import { TLRU } from "../utils/tlru.js";
//# sourceMappingURL=index.d.ts.map