import { EncryptedSessionKey } from './encryption';
/**
 * Session status enum
 */
export declare enum SessionStatus {
    ACTIVE = "ACTIVE",
    INACTIVE = "INACTIVE",
    PAUSED = "PAUSED"
}
/**
 * Agent type for multi-agent support
 */
export declare enum AgentType {
    CLAUDE = "CLAUDE",
    GEMINI = "GEMINI",
    CODEX = "CODEX"
}
/**
 * Session type
 */
export interface Session {
    sessionId: string;
    userId: string;
    agentType: AgentType;
    projectPath: string;
    status: SessionStatus;
    createdAt: string;
    updatedAt: string;
    metadata?: Record<string, any>;
    isEncrypted?: boolean;
    encryptedKeys?: EncryptedSessionKey[];
    creatorDeviceId?: string;
    encryptionVersion?: number;
    lastHeartbeatAt?: string;
}
/**
 * GraphQL input for creating sessions
 */
export interface CreateSessionInput {
    sessionId?: string;
    userId: string;
    agentType?: AgentType;
    projectPath: string;
    status?: SessionStatus;
    metadata?: Record<string, any>;
    encryptedKeys?: EncryptedSessionKey[];
    creatorDeviceId?: string;
    isEncrypted?: boolean;
    encryptionVersion?: number;
}
/**
 * GraphQL input for updating sessions
 */
export interface UpdateSessionInput {
    sessionId: string;
    status?: SessionStatus;
    metadata?: Record<string, any>;
    lastHeartbeatAt?: string;
}
