/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { type MutableRefObject } from 'react';
import { type PartListUnion } from '@google/genai';
import type { UseHistoryManagerReturn } from './useHistoryManager.js';
import type { ArenaDialogType } from './useArenaCommand.js';
import { type Logger, type Config, ToolConfirmationOutcome, type SessionListItem } from '@hoptrendy/hopcode-core';
import type { HistoryItemWithoutId, HistoryItemBtw, SlashCommandProcessorResult, HistoryItem, ConfirmationRequest } from '../types.js';
import type { LoadedSettings } from '../../config/settings.js';
import { type CommandContext, type SlashCommand } from '../commands/types.js';
import { type ExtensionUpdateAction, type ExtensionUpdateStatus } from '../state/extensions.js';
interface SlashCommandProcessorActions {
    openAuthDialog: () => void;
    openArenaDialog?: (type: Exclude<ArenaDialogType, null>) => void;
    openThemeDialog: () => void;
    openEditorDialog: () => void;
    openMemoryDialog: () => void;
    openSettingsDialog: () => void;
    openModelDialog: (options?: {
        fastModelMode?: boolean;
    }) => void;
    openManageModelsDialog: () => void;
    openTrustDialog: () => void;
    openPermissionsDialog: () => void;
    openApprovalModeDialog: () => void;
    openResumeDialog: (matchedSessions?: SessionListItem[]) => void;
    handleResume: (sessionId: string) => void;
    openDeleteDialog: () => void;
    quit: (messages: HistoryItem[]) => void;
    setDebugMessage: (message: string) => void;
    dispatchExtensionStateUpdate: (action: ExtensionUpdateAction) => void;
    addConfirmUpdateExtensionRequest: (request: ConfirmationRequest) => void;
    openSubagentCreateDialog: () => void;
    openAgentsManagerDialog: () => void;
    openExtensionsManagerDialog: () => void;
    openMcpDialog: () => void;
    openHooksDialog: () => void;
    openRewindSelector: () => void;
}
/**
 * Hook to define and process slash commands (e.g., /help, /clear).
 */
export declare const useSlashCommandProcessor: (config: Config | null, settings: LoadedSettings, addItem: UseHistoryManagerReturn["addItem"], clearItems: UseHistoryManagerReturn["clearItems"], loadHistory: UseHistoryManagerReturn["loadHistory"], refreshStatic: () => void, toggleVimEnabled: () => Promise<boolean>, isProcessing: boolean, setIsProcessing: (isProcessing: boolean) => void, isIdleRef: MutableRefObject<boolean>, setGeminiMdFileCount: (count: number) => void, actions: SlashCommandProcessorActions, extensionsUpdateState: Map<string, ExtensionUpdateStatus>, isConfigInitialized: boolean, logger: Logger | null, setSessionName?: (name: string | null) => void) => {
    handleSlashCommand: (rawQuery: PartListUnion, oneTimeShellAllowlist?: Set<string>, overwriteConfirmed?: boolean) => Promise<SlashCommandProcessorResult | false>;
    slashCommands: readonly SlashCommand[];
    pendingHistoryItems: HistoryItemWithoutId[];
    btwItem: HistoryItemBtw;
    setBtwItem: import("react").Dispatch<import("react").SetStateAction<HistoryItemBtw>>;
    cancelBtw: () => void;
    commandContext: CommandContext;
    shellConfirmationRequest: {
        commands: string[];
        onConfirm: (outcome: ToolConfirmationOutcome, approvedCommands?: string[]) => void;
    };
    confirmationRequest: {
        prompt: React.ReactNode;
        onConfirm: (confirmed: boolean) => void;
    };
};
export {};
