export interface ACodeMcpServerSpec {
    type?: "stdio" | "sse" | "http";
    command?: string;
    args?: string[];
    env?: Record<string, string>;
    cwd?: string;
    url?: string;
    headers?: Record<string, string>;
    [key: string]: unknown;
}
export interface ACodeConfigFile {
    model?: string;
    systemPrompt?: string;
    commandDirs?: string[];
    commands?: {
        directories?: string[];
        [key: string]: unknown;
    };
    permissions?: ACodePermissionConfig;
    allowedTools?: string[];
    deniedTools?: string[];
    mcpServers?: Record<string, ACodeMcpServerSpec>;
    provider?: Record<string, {
        model?: string;
        options?: {
            baseURL?: string;
            baseUrl?: string;
            apiKey?: string;
            supportsImageInput?: boolean;
            stream?: boolean;
            timeoutMs?: number;
            requestTimeoutMs?: number;
            requestRetryCount?: number;
            mcpToolTimeoutMs?: number;
            mcpPollingToolTimeoutMs?: number;
            [key: string]: unknown;
        };
        models?: Record<string, unknown>;
        [key: string]: unknown;
    }>;
    [key: string]: unknown;
}
export interface ACodeSkillMetadata {
    name: string;
    description?: string;
    directory: string;
}
export type ACodeEventType = "session_started" | "ai_request" | "thinking_delta" | "assistant_delta" | "command_output" | "command_status" | "mcp_status" | "skill_status" | "warning" | "turn_complete" | "session_complete" | "error";
export interface ACodeEvent {
    type: ACodeEventType;
    sessionId: string;
    timestamp: string;
    data: Record<string, unknown>;
}
export interface ACodeCommandSpec {
    name: string;
    description?: string;
    allowedTools?: string[];
    argumentHint?: string;
    body: string;
    sourcePath: string;
}
export type ACodePermissionMode = "default" | "bypassPermissions";
export interface ACodePermissionConfig {
    mode?: ACodePermissionMode;
    allow?: string[];
    deny?: string[];
}
export interface ACodeResolvedPermissionConfig {
    mode: ACodePermissionMode;
    allow: string[];
    deny: string[];
}
export type ACodeHookEventName = "SessionStart" | "UserPromptSubmit" | "PreToolUse" | "PostToolUse" | "Stop";
export interface ACodeHookEvent {
    name: ACodeHookEventName;
    sessionId: string;
    timestamp: string;
    data: Record<string, unknown>;
}
export interface ACodeHookResult {
    decision?: "allow" | "deny" | "modify";
    message?: string;
    data?: Record<string, unknown>;
}
export type ACodeHookHandler = (event: ACodeHookEvent) => ACodeHookResult | undefined | Promise<ACodeHookResult | undefined>;
export interface ACodeRuntimeConfig {
    sessionId: string;
    workingDirectory: string;
    configPath?: string;
    skillsDir?: string;
    initialPrompt?: string;
    model?: string;
    systemPrompt?: string;
    env?: Record<string, string>;
    commandDirs?: string[];
    hooks?: ACodeHookHandler[];
    permissions?: ACodePermissionConfig;
}
export interface ACodeResolvedProviderConfig {
    model: string;
    baseURL?: string;
    apiKey?: string;
    systemPrompt?: string;
    stream: boolean;
    requestTimeoutMs: number;
    requestRetryCount: number;
    mcpToolTimeoutMs: number;
    mcpPollingToolTimeoutMs: number;
    supportsImageInput: boolean;
}
//# sourceMappingURL=types.d.ts.map