import type { AgentEventMap, DextoAgent, EventArgs, EventListener, SessionMetadata, SkillManager } from '@dexto/core';
import type { CommandDefinition } from './interactive-commands/command-parser.js';
export interface TuiAgentCapabilities {
    supportedCommands?: readonly string[];
    prompts?: boolean;
    skills?: boolean;
    resources?: boolean;
    attachments?: boolean;
    reasoningCycle?: boolean;
    contextStats?: boolean;
    startupInfo?: boolean;
}
type RootLogger = Pick<DextoAgent['logger'], 'debug' | 'info' | 'warn' | 'error' | 'getLevel' | 'getLogFilePath'>;
interface TuiSessionStats {
    totalSessions: number;
    inMemorySessions: number;
    maxSessions: number;
}
export interface TuiEffectiveConfig {
    llm: {
        provider: string;
        model: string;
        maxOutputTokens?: number | null | undefined;
        temperature?: number | null | undefined;
    };
    permissions: {
        mode: string;
    };
    sessions?: {
        maxSessions?: number | undefined;
        sessionTTL?: number | undefined;
    } | undefined;
    mcpServers?: Record<string, unknown> | undefined;
    prompts?: unknown[] | undefined;
    [key: string]: unknown;
}
export interface TuiAgentBackend extends Pick<DextoAgent, 'stream' | 'stop' | 'run' | 'listSessions' | 'getSessionMetadata' | 'getSessionHistory' | 'getSessionTitle' | 'setSessionTitle' | 'generateSessionTitle' | 'forkSession' | 'getCurrentLLMConfig' | 'hasSessionLLMOverride' | 'switchLLM' | 'getSupportedProviders' | 'getSupportedModels' | 'getContextStats' | 'clearContext' | 'compactContext' | 'steer' | 'followUp' | 'getSteerMessages' | 'getFollowUpMessages' | 'removeSteerMessage' | 'removeFollowUpMessage' | 'clearSteerQueue' | 'clearFollowUpQueue' | 'cancel' | 'searchMessages' | 'listPrompts' | 'refreshPrompts' | 'resolvePrompt' | 'getSystemPrompt' | 'loadToolkits' | 'listResources' | 'setLogLevel' | 'getAllTools' | 'getEnabledTools' | 'getAllMcpTools' | 'setGlobalDisabledTools' | 'setSessionDisabledTools' | 'setSessionAutoApproveTools' | 'getSessionAutoApproveTools' | 'getMcpServersWithStatus' | 'addMcpServer' | 'enableMcpServer' | 'disableMcpServer' | 'removeMcpServer' | 'restartMcpServer' | 'getMcpClients' | 'getMcpFailedConnections'> {
    createSession: (sessionId?: string) => Promise<{
        id: string;
        logger: Pick<RootLogger, 'getLevel' | 'getLogFilePath'>;
    }>;
    getSession: (sessionId: string) => Promise<{
        id: string;
        logger: Pick<RootLogger, 'getLevel' | 'getLogFilePath'>;
    } | undefined>;
    getEffectiveConfig: (sessionId?: string) => TuiEffectiveConfig;
    on: <K extends keyof AgentEventMap>(event: K, listener: EventListener<AgentEventMap[K]>, options?: {
        signal?: AbortSignal;
    }) => void;
    emit: <K extends keyof AgentEventMap>(event: K, ...args: EventArgs<AgentEventMap[K]>) => boolean;
    logger: RootLogger;
    config: {
        agentId: string;
    };
    sessionManager: {
        getSessionMetadata: (sessionId: string) => Promise<SessionMetadata | undefined>;
        getSessionStats: () => Promise<TuiSessionStats>;
    };
    mcpManager: {
        getClients: () => Map<string, unknown>;
        getFailedConnections: () => Record<string, unknown>;
    };
    toolManager: {
        addSessionAutoApproveTools: (sessionId: string, toolNames: string[]) => void | Promise<void>;
    };
    services: {
        hookManager: {
            getHookNames: () => string[];
        };
    };
    skillManager?: SkillManager | undefined;
    capabilities?: TuiAgentCapabilities;
}
export declare function getTuiCapabilities(agent: TuiAgentBackend): TuiAgentCapabilities;
export declare function isCommandSupported(agent: TuiAgentBackend, command: string, definition?: Pick<CommandDefinition, 'name' | 'aliases'>): boolean;
export declare function isCommandDefinitionSupported(agent: TuiAgentBackend, definition: Pick<CommandDefinition, 'name' | 'aliases'>): boolean;
export declare function supportsPrompts(agent: TuiAgentBackend): boolean;
export declare function supportsSkills(agent: TuiAgentBackend): boolean;
export declare function supportsResources(agent: TuiAgentBackend): boolean;
export declare function supportsAttachments(agent: TuiAgentBackend): boolean;
export declare function supportsReasoningCycle(agent: TuiAgentBackend): boolean;
export declare function supportsContextStats(agent: TuiAgentBackend): boolean;
export declare function supportsStartupInfo(agent: TuiAgentBackend): boolean;
export {};
//# sourceMappingURL=agent-backend.d.ts.map