import { ICursorStore, CursorSnapshot } from './integration-cursor-store.protocol.js';
import { MemoryIntegrationSubscription } from './integration-run-recorder.memory-backend.js';
import './integration-run-recorder.protocol.js';
import './integration-field-diff.protocol.js';
import 'zod';

declare class MemoryCursorStore implements ICursorStore {
    /**
     * Subscription-id → last persisted cursor. Public so tests can inspect
     * or pre-seed state; production callers MUST go through `get`/`put`.
     */
    readonly cursors: Map<string, unknown>;
    /**
     * Seedable subscription metadata for `listAll` — the memory backend
     * stores only `subscriptionId → cursor` in its write path, so the
     * snapshot shape (`connectionId`, `adapter`, `domain`, `externalRef`,
     * timestamps) has no natural source without test seeding. Tests populate
     * this map; unseeded entries get empty-string metadata and `new Date(0)`
     * timestamps so the shape stays stable. Production paths go through the
     * Drizzle backend.
     */
    readonly subscriptions: Map<string, MemoryIntegrationSubscription>;
    get(subscriptionId: string, _tenantId?: string | null): Promise<unknown | null>;
    put(subscriptionId: string, cursor: unknown, _tenantId?: string | null): Promise<void>;
    listAll(_tenantId?: string | null): Promise<CursorSnapshot[]>;
    /** Reset state. Tests call this in `beforeEach`. */
    clear(): void;
}

export { MemoryCursorStore };
