import {
  _n as DynamicAgentClass,
  c as Agent,
  vn as DynamicAgentStub
} from "../agent-routing-B2XLNMxq.js";
import { Lock, QueueEntry, StateAdapter } from "chat";

//#region src/chat-sdk/agent.d.ts
interface StoredLock {
  threadId: string;
  token: string;
  expiresAt: number;
}
declare class ChatSdkStateAgent extends Agent {
  onStart(): Promise<void>;
  subscribe(threadId: string): void;
  unsubscribe(threadId: string): void;
  isSubscribed(threadId: string): boolean;
  acquireLock(threadId: string, ttlMs: number): Promise<StoredLock | null>;
  releaseLock(threadId: string, token: string): void;
  extendLock(threadId: string, token: string, ttlMs: number): Promise<boolean>;
  forceReleaseLock(threadId: string): void;
  enqueue(threadId: string, value: string, maxSize: number): Promise<number>;
  popQueue(threadId: string): string | null;
  queueDepth(threadId: string): number;
  listAppend(
    key: string,
    value: string,
    maxLength?: number,
    ttlMs?: number
  ): Promise<void>;
  listGet(key: string): string[];
  cacheGet(key: string): string | null;
  cacheSet(key: string, value: string, ttlMs?: number): Promise<void>;
  cacheSetIfNotExists(
    key: string,
    value: string,
    ttlMs?: number
  ): Promise<boolean>;
  cacheDelete(key: string): void;
  cleanupExpired(payload?: { expiresAt?: number }): Promise<void>;
  private migrate;
  private readCacheValue;
  private upsertCacheValue;
  private scheduleCleanupForExpiry;
  private scheduleNextCleanup;
  private ensureCleanupScheduled;
  private nextExpiry;
  private readCleanupMetadata;
  private writeCleanupMetadata;
  private clearCleanupMetadata;
}
//#endregion
//#region src/chat-sdk/types.d.ts
interface ChatSdkStateParent {
  subAgent<T extends ChatSdkStateAgent>(
    agentClass: DynamicAgentClass<T>,
    name: string
  ): Promise<DynamicAgentStub<T>>;
}
interface ChatSdkStateAdapterOptions {
  agent?: DynamicAgentClass<ChatSdkStateAgent>;
  parent?: ChatSdkStateParent;
  name?: string;
  keyShard?: (key: string) => string | undefined;
  shardKey?: (threadId: string) => string;
}
//#endregion
//#region src/chat-sdk/adapter.d.ts
declare function defaultThreadShard(threadId: string): string;
declare function defaultKeyShard(
  key: string,
  shardThread?: (threadId: string) => string
): string | undefined;
declare class ChatSdkStateAdapter implements StateAdapter {
  private readonly parent;
  private readonly agentClass;
  private readonly defaultName;
  private readonly keyShard?;
  private readonly shardKey;
  private connected;
  constructor(options?: ChatSdkStateAdapterOptions);
  connect(): Promise<void>;
  disconnect(): Promise<void>;
  subscribe(threadId: string): Promise<void>;
  unsubscribe(threadId: string): Promise<void>;
  isSubscribed(threadId: string): Promise<boolean>;
  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>;
  appendToList(
    key: string,
    value: unknown,
    options?: {
      maxLength?: number;
      ttlMs?: number;
    }
  ): Promise<void>;
  getList<T = unknown>(key: string): Promise<T[]>;
  get<T = unknown>(key: string): Promise<T | null>;
  set<T = unknown>(key: string, value: T, ttlMs?: number): Promise<void>;
  setIfNotExists<T = unknown>(
    key: string,
    value: T,
    ttlMs?: number
  ): Promise<boolean>;
  delete(key: string): Promise<void>;
  private stateAgent;
  private stateAgentForKey;
  private ensureConnected;
}
//#endregion
//#region src/chat-sdk/index.d.ts
declare function createChatSdkState(
  options?: ChatSdkStateAdapterOptions
): ChatSdkStateAdapter;
//#endregion
export {
  ChatSdkStateAdapter,
  type ChatSdkStateAdapterOptions,
  ChatSdkStateAgent,
  type ChatSdkStateParent,
  createChatSdkState,
  defaultKeyShard,
  defaultThreadShard
};
//# sourceMappingURL=index.d.ts.map
