import type { OpenClawConfig } from "../../config/types.openclaw.js"; import { type BindingTargetKind } from "./session-binding-service.js"; export type AccountScopedConversationBindingRecord = { accountId: string; conversationId: string; targetKind: TKind; targetSessionKey: string; agentId?: string; label?: string; boundBy?: string; boundAt: number; lastActivityAt: number; }; export type AccountScopedConversationBindingManager = { accountId: string; getByConversationId: (conversationId: string) => AccountScopedConversationBindingRecord | undefined; listBySessionKey: (targetSessionKey: string) => AccountScopedConversationBindingRecord[]; bindConversation: (params: { conversationId: string; targetKind: BindingTargetKind; targetSessionKey: string; metadata?: Record; }) => AccountScopedConversationBindingRecord | null; touchConversation: (conversationId: string, at?: number) => AccountScopedConversationBindingRecord | null; unbindConversation: (conversationId: string) => AccountScopedConversationBindingRecord | null; unbindBySessionKey: (targetSessionKey: string) => AccountScopedConversationBindingRecord[]; stop: () => void; }; export declare function createAccountScopedConversationBindingManager(params: { channel: string; cfg: OpenClawConfig; stateKey: symbol; accountId?: string | null; toStoredTargetKind: (raw: BindingTargetKind) => TKind; toSessionBindingTargetKind: (raw: TKind) => BindingTargetKind; }): AccountScopedConversationBindingManager; export declare function resetAccountScopedConversationBindingsForTests(params: { stateKey: symbol; }): void;