import type { Lock, QueueEntry, StateAdapter } from 'chat';
import type { MemoryStorage } from '../storage/domains/memory/base.js';
/**
 * Chat SDK StateAdapter backed by Mastra storage.
 *
 * Thread subscriptions are persisted to the Mastra `MemoryStorage` domain
 * using thread metadata (`channel_subscribed`), so they survive restarts.
 *
 * Cache, locks, and dedup keys remain in-memory — they are inherently
 * short-lived (seconds to minutes) and don't need persistence.
 */
export declare class MastraStateAdapter implements StateAdapter {
    private memoryStore;
    private connected;
    private connectPromise;
    private readonly cache;
    private readonly locks;
    private readonly lists;
    private readonly queues;
    constructor(memoryStore: MemoryStorage);
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    subscribe(threadId: string): Promise<void>;
    unsubscribe(threadId: string): Promise<void>;
    isSubscribed(threadId: string): Promise<boolean>;
    get<T = unknown>(key: string): Promise<T | null>;
    set<T = unknown>(key: string, value: T, ttlMs?: number): Promise<void>;
    setIfNotExists(key: string, value: unknown, ttlMs?: number): Promise<boolean>;
    delete(key: string): Promise<void>;
    appendToList(key: string, value: unknown, options?: {
        maxLength?: number;
        ttlMs?: number;
    }): Promise<void>;
    getList<T = unknown>(key: string): Promise<T[]>;
    acquireLock(threadId: string, ttlMs: number): Promise<Lock | null>;
    releaseLock(lock: Lock): Promise<void>;
    extendLock(lock: Lock, ttlMs: number): Promise<boolean>;
    forceReleaseLock(threadId: string): Promise<void>;
    enqueue(threadId: string, entry: QueueEntry, maxSize: number): Promise<number>;
    dequeue(threadId: string): Promise<QueueEntry | null>;
    queueDepth(threadId: string): Promise<number>;
    private cleanExpiredLocks;
    /**
     * Find a Mastra thread by its external (SDK) thread ID.
     * External thread IDs are stored in `channel_externalThreadId` metadata.
     */
    private findThreadByExternalId;
}
//# sourceMappingURL=state-adapter.d.ts.map