/**
 * Interactive slash-command handlers for the TUI.
 *
 * Maps user-typed commands (/dev, /docs, /mcp, /sandbox, /connect, /mog,
 * /action, /plan, /ask, /manage, /loop) to their implementations. Also provides
 * factories for downloading and uploading cloud skills on demand.
 */
import type { AgentSession } from '../app/agent-session.js';
import type { AuthStorage } from '../app/auth/auth-storage.js';
import { type McpManager } from '../app/mcp/index.js';
import { McpOAuthStore } from '../app/mcp/oauth-state-store.js';
import { SettingsManager } from '../app/settings-manager.js';
import { downloadSkillsWithApproval, type SkillDownloadApprovalHandler } from '../app/sync/skills-download.js';
import { type SkillUploadApprovalRequest, uploadSkills } from '../app/sync/skills-upload.js';
import type { SelectItem } from '../tui/index.js';
interface TraceCommandHooks {
    onCommand: (command: string, showStatus: (msg: string) => void) => boolean;
}
interface DevCommandContext {
    getMcpManager: () => McpManager | null;
    authStorage: AuthStorage;
    mcpOAuthStore: McpOAuthStore;
    session: AgentSession;
    settingsManager: SettingsManager;
    traceHooks: TraceCommandHooks;
}
type ShowStatus = (msg: string) => void;
type Select = (title: string, options: string[] | SelectItem[]) => Promise<string | undefined>;
type Input = (title: string, placeholder?: string) => Promise<string | undefined>;
/** Create a handler that dispatches interactive slash-commands to their implementations. */
export declare function createInteractiveCommandHandler(context: DevCommandContext): (command: string, showStatus: ShowStatus, select: Select, input: Input, triggerLogin?: (providerId?: string) => Promise<void>, triggerLogout?: (providerId?: string) => Promise<void>) => Promise<boolean>;
/** Create a handler that downloads cloud skills using the current OAuth token. */
export declare function createInteractiveSkillDownloadHandler(authStorage: AuthStorage): (approve: SkillDownloadApprovalHandler) => Promise<Awaited<ReturnType<typeof downloadSkillsWithApproval>>>;
/** Create a handler that uploads local managed skills using the current OAuth token. */
export declare function createSkillUploadHandler(authStorage: AuthStorage): (approve: (request: SkillUploadApprovalRequest) => Promise<boolean>) => Promise<Awaited<ReturnType<typeof uploadSkills>>>;
/**
 * Create the read-only skill drift check used by interactive startup.
 *
 * The returned function reads the current OAuth token at call time so a /login
 * performed earlier in the same process is respected.
 */
export declare function createSkillSyncStatusHandler(authStorage: AuthStorage): () => Promise<import("../app/sync/skills-status.js").SkillsSyncStatus>;
export {};
//# sourceMappingURL=interactive-commands.d.ts.map