/**
 * @fileoverview VAPID key auto-generation and push subscription CRUD.
 *
 * Persists VAPID keys to ~/.codeman/push-keys.json and subscriptions
 * to ~/.codeman/push-subscriptions.json. Debounced saves prevent
 * excessive disk I/O during rapid subscription updates.
 */
import type { VapidKeys, PushSubscriptionRecord } from './types.js';
export declare class PushSubscriptionStore {
    private vapidKeys;
    private subscriptions;
    private saveDeb;
    private _disposed;
    constructor();
    get isDisposed(): boolean;
    /** Get or generate VAPID keys */
    getVapidKeys(): VapidKeys;
    /** Get the public VAPID key for client subscription */
    getPublicKey(): string;
    /** Register or update a push subscription (deduplicates by endpoint) */
    addSubscription(sub: Omit<PushSubscriptionRecord, 'lastUsedAt'>): PushSubscriptionRecord;
    /** Update push preferences for a subscription */
    updatePreferences(id: string, preferences: Record<string, boolean>): PushSubscriptionRecord | null;
    /** Remove a subscription */
    removeSubscription(id: string): boolean;
    /** Remove subscription by endpoint (used for auto-cleanup of expired subs) */
    removeByEndpoint(endpoint: string): void;
    /** Get all subscriptions */
    getAll(): PushSubscriptionRecord[];
    /** Get a single subscription by ID */
    get(id: string): PushSubscriptionRecord | null;
    /** Load subscriptions from disk */
    private loadSubscriptions;
    /** Schedule a debounced save */
    private scheduleSave;
    /** Immediately persist subscriptions to disk */
    private flushSave;
    /** Clean shutdown */
    dispose(): void;
}
//# sourceMappingURL=push-store.d.ts.map