import { InMemorySessionService } from "@iqai/adk";
import type { CreateSessionRequest, EventsResponse, LoadedAgent, SessionResponse, SessionsResponse, StateResponse } from "../../common/types";
import { AgentManager } from "../providers/agent-manager.service";
import { HotReloadService } from "../reload/hot-reload.service";
export declare class SessionsService {
    private readonly agentManager;
    private readonly sessionService;
    private readonly quiet;
    private readonly hotReload?;
    private logger;
    constructor(agentManager: AgentManager, sessionService: InMemorySessionService, quiet: boolean, hotReload?: HotReloadService | undefined);
    ensureAgentLoaded(agentPath: string): Promise<LoadedAgent | null>;
    listSessions(agentPath: string): Promise<SessionsResponse>;
    createSession(agentPath: string, request: CreateSessionRequest): Promise<SessionResponse | {
        error: string;
    }>;
    deleteSession(agentPath: string, sessionId: string): Promise<{
        success: boolean;
    } | {
        error: string;
    }>;
    switchSession(agentPath: string, sessionId: string): Promise<{
        success: boolean;
    } | {
        error: string;
    }>;
    getSessionMessages(loadedAgent: LoadedAgent): Promise<{
        id: number;
        type: "user" | "assistant";
        content: string;
        timestamp: string;
    }[]>;
    /**
     * Get all sessions for a loaded agent
     */
    getAgentSessions(loadedAgent: LoadedAgent): Promise<SessionsResponse>;
    /**
     * Create a new session for a loaded agent
     */
    createAgentSession(loadedAgent: LoadedAgent, request?: CreateSessionRequest): Promise<SessionResponse>;
    private getAgentPathFromUserId;
    /**
     * Delete a session for a loaded agent
     */
    deleteAgentSession(loadedAgent: LoadedAgent, sessionId: string): Promise<void>;
    /**
     * Get events for a specific session
     */
    getSessionEvents(loadedAgent: LoadedAgent, sessionId: string): Promise<EventsResponse>;
    /**
     * Switch the loaded agent to use a different session
     */
    switchAgentSession(loadedAgent: LoadedAgent, sessionId: string): Promise<void>;
    /**
     * Get state for specific session
     */
    getSessionState(loadedAgent: LoadedAgent, sessionId: string): Promise<StateResponse>;
    /**
     * Update session state
     */
    updateSessionState(loadedAgent: LoadedAgent, sessionId: string, path: string, value: unknown): Promise<void>;
    /**
     * Helper method to set nested values using dot notation
     */
    private setNestedValue;
}
//# sourceMappingURL=sessions.service.d.ts.map