/**
 * Session-related data models
 */
import { DebugProtocol } from '@vscode/debugprotocol';
/**
 * Custom launch arguments interface extending DebugProtocol.LaunchRequestArguments
 */
export interface CustomLaunchRequestArguments extends DebugProtocol.LaunchRequestArguments {
    stopOnEntry?: boolean;
    justMyCode?: boolean;
}
/**
 * Supported debugger languages
 */
export declare enum DebugLanguage {
    PYTHON = "python",
    MOCK = "mock"
}
/**
 * Session lifecycle state - represents the session's existence
 */
export declare enum SessionLifecycleState {
    /** Session is created but not initialized */
    CREATED = "created",
    /** Session is active and can accept debug operations */
    ACTIVE = "active",
    /** Session has been terminated and cannot accept operations */
    TERMINATED = "terminated"
}
/**
 * Execution state - represents the debugger's execution state
 * Only meaningful when SessionLifecycleState is ACTIVE
 */
export declare enum ExecutionState {
    /** Debug adapter is initializing */
    INITIALIZING = "initializing",
    /** Program is running */
    RUNNING = "running",
    /** Program is paused (at breakpoint, step, etc.) */
    PAUSED = "paused",
    /** Program has terminated but session is still active */
    TERMINATED = "terminated",
    /** Debug adapter encountered an error */
    ERROR = "error"
}
/**
 * Debug session state (legacy - for backward compatibility)
 * @deprecated Use SessionLifecycleState and ExecutionState instead
 */
export declare enum SessionState {
    /** Session is created but not initialized */
    CREATED = "created",
    /** Session is initializing */
    INITIALIZING = "initializing",
    /** Session is ready to start debugging */
    READY = "ready",
    /** Session is running */
    RUNNING = "running",
    /** Session is paused at a breakpoint */
    PAUSED = "paused",
    /** Session has stopped */
    STOPPED = "stopped",
    /** Session encountered an error */
    ERROR = "error"
}
/**
 * Maps legacy SessionState to new state model
 */
export declare function mapLegacyState(legacyState: SessionState): {
    lifecycle: SessionLifecycleState;
    execution?: ExecutionState;
};
/**
 * Maps new state model to legacy SessionState
 */
export declare function mapToLegacyState(lifecycle: SessionLifecycleState, execution?: ExecutionState): SessionState;
/**
 * Debug session configuration
 */
export interface SessionConfig {
    /** Programming language */
    language: DebugLanguage;
    /** Session name */
    name: string;
    /** Optional executable path for the language runtime */
    executablePath?: string;
}
/**
 * Breakpoint definition
 */
export interface Breakpoint {
    /** Unique identifier */
    id: string;
    /** File path */
    file: string;
    /** Line number */
    line: number;
    /** Conditional expression (if any) */
    condition?: string;
    /** Whether the breakpoint is verified */
    verified: boolean;
}
/**
 * Debug session information
 */
export interface DebugSession {
    /** Unique session ID */
    id: string;
    /** Programming language */
    language: DebugLanguage;
    /** Session name */
    name: string;
    /** Session state (legacy) */
    state: SessionState;
    /** Session lifecycle state */
    sessionLifecycle: SessionLifecycleState;
    /** Execution state */
    executionState?: ExecutionState;
    /** Current file */
    currentFile?: string;
    /** Current line */
    currentLine?: number;
    /** Created timestamp */
    createdAt: Date;
    /** Updated timestamp */
    updatedAt: Date;
    /** Active breakpoints mapped by ID */
    breakpoints: Map<string, Breakpoint>;
}
/**
 * Subset of DebugSession for list operations (if needed, otherwise use DebugSession)
 */
export interface DebugSessionInfo {
    id: string;
    language: DebugLanguage;
    name: string;
    state: SessionState;
    createdAt: Date;
    updatedAt?: Date;
}
/**
 * Variable information
 */
export interface Variable {
    /** Variable name */
    name: string;
    /** Variable value */
    value: string;
    /** Variable type */
    type: string;
    /** Whether the variable is expandable */
    expandable: boolean;
    /** Variable children (for complex objects) */
    children?: Variable[];
}
/**
 * Stack frame information
 */
export interface StackFrame {
    /** Frame ID */
    id: number;
    /** Frame name */
    name: string;
    /** Source file */
    file: string;
    /** Line number */
    line: number;
    /** Column number */
    column?: number;
}
/**
 * Debug location information
 */
export interface DebugLocation {
    /** Source file */
    file: string;
    /** Line number */
    line: number;
    /** Column number */
    column?: number;
    /** Source code around the location */
    sourceLines?: string[];
    /** The specific line number in the source lines array that corresponds to the current location */
    sourceLine?: number;
}
