import { type Mortice } from 'mortice';
import { Peer as PeerPB } from './pb/peer.js';
import type { PersistentPeerStoreComponents, PersistentPeerStoreInit } from './index.js';
import type { PeerUpdate as PeerUpdateExternal, PeerId, Peer, PeerData, PeerQuery } from '@libp2p/interface';
/**
 * Event detail emitted when peer data changes
 */
export interface PeerUpdate extends PeerUpdateExternal {
    updated: boolean;
}
export interface ExistingPeer {
    peerPB: PeerPB;
    peer: Peer;
}
export declare class PersistentStore {
    #private;
    private readonly peerId;
    private readonly datastore;
    readonly lock: Mortice;
    private readonly addressFilter?;
    private readonly log;
    private readonly maxAddressAge;
    private readonly maxPeerAge;
    constructor(components: PersistentPeerStoreComponents, init?: PersistentPeerStoreInit);
    has(peerId: PeerId): Promise<boolean>;
    delete(peerId: PeerId): Promise<void>;
    load(peerId: PeerId): Promise<Peer>;
    save(peerId: PeerId, data: PeerData): Promise<PeerUpdate>;
    patch(peerId: PeerId, data: Partial<PeerData>): Promise<PeerUpdate>;
    merge(peerId: PeerId, data: PeerData): Promise<PeerUpdate>;
    all(query?: PeerQuery): AsyncGenerator<Peer, void, unknown>;
}
//# sourceMappingURL=store.d.ts.map