/**
 * Global Session Store
 *
 * Tracks agent sessions across all repos on the machine.
 * Works without HQ / PMO — just needs ~/.proletariat/sessions.db.
 *
 * Schema: id, agentName, runner, task, workdir, sessionName,
 *         environment, permissionMode, status, startedAt, endedAt
 */
export interface SessionRecord {
    id: string;
    agentName: string;
    runner: string;
    task: string;
    workdir: string;
    sessionName: string;
    environment: 'host' | 'docker' | 'podman';
    permissionMode: 'danger' | 'safe';
    status: 'running' | 'done' | 'error' | 'stopped';
    startedAt: Date;
    endedAt?: Date;
}
export declare class SessionStore {
    private db;
    constructor(dbPath?: string);
    private ensureSchema;
    /**
     * Create a new session record.
     */
    create(params: {
        agentName: string;
        runner: string;
        task: string;
        workdir: string;
        sessionName: string;
        environment: SessionRecord['environment'];
        permissionMode: SessionRecord['permissionMode'];
    }): SessionRecord;
    /**
     * Get a session by ID or agent name.
     */
    get(idOrName: string): SessionRecord | null;
    /**
     * Get a session by tmux session name.
     */
    getBySessionName(sessionName: string): SessionRecord | null;
    /**
     * List sessions, optionally filtered by status.
     */
    list(status?: SessionRecord['status']): SessionRecord[];
    /**
     * Update session status.
     */
    updateStatus(id: string, status: SessionRecord['status']): void;
    /**
     * Reconcile session statuses with actual tmux sessions.
     * Marks sessions as 'done' if their tmux session no longer exists.
     */
    reconcile(): void;
    /**
     * Resolve an identifier to a session.
     * Tries: exact ID match, agent name, partial match on agent name or session name.
     */
    resolve(identifier: string): SessionRecord | null;
    /**
     * Check if a tmux session is alive.
     */
    private isTmuxSessionAlive;
    close(): void;
}
