import { KeyInfo, KeySequence, KeyboardMode } from '../keyboard/types';

export type { KeyInfo, KeySequence, KeyboardMode };
export interface HumanLikeConfig {
    speed: number;
    speedVariation: number;
    mistakeFrequency: number;
    mistakeTypes: {
        adjacent: boolean;
        random: boolean;
        doubleChar: boolean;
        commonTypos: boolean;
    };
    fatigueEffect: boolean;
    concentrationLapses: boolean;
    overcorrection: boolean;
    debug: boolean;
    sentencePause: number;
    wordPause: number;
    thinkingPause: number;
    minCharDelay: number;
    backspaceSpeed: number;
    realizationDelay: number;
    correctionPause: number;
    keyboardMode?: 'mobile' | 'desktop';
    onKey?: (keyInfo: KeyInfo) => void;
}
export interface HumanLikeProps {
    text: string;
    speed?: number;
    mistakeFrequency?: number;
    showCursor?: boolean;
    cursorChar?: string;
    cursorBlinkSpeed?: number;
    autoStart?: boolean;
    config?: Partial<HumanLikeConfig>;
    id?: string;
    onStart?: (id?: string) => void;
    onComplete?: (id?: string) => void;
    onChar?: (char: string, index: number, id?: string) => void;
    onMistake?: (mistake: MistakeInfo, id?: string) => void;
    onBackspace?: (id?: string) => void;
    onPause?: (id?: string) => void;
    onResume?: (id?: string) => void;
    keyboardMode?: 'mobile' | 'desktop';
    onKey?: (keyInfo: KeyInfo) => void;
    className?: string;
    style?: React.CSSProperties;
}
export type MistakeType = 'adjacent' | 'random' | 'doubleChar' | 'commonTypo';
export interface MistakeInfo {
    type: MistakeType;
    originalChar: string;
    mistakeChar: string;
    position: number;
    corrected: boolean;
    realizationTime: number;
}
export type TypingState = 'idle' | 'typing' | 'paused' | 'correcting' | 'thinking' | 'completed';
export interface TypingEvent {
    type: 'char' | 'backspace' | 'mistake' | 'correction' | 'pause';
    char?: string;
    position: number;
    timestamp: number;
    mistake?: MistakeInfo;
}
export interface HumanLikeHookReturn {
    displayText: string;
    isTyping: boolean;
    isPaused: boolean;
    isCompleted: boolean;
    isActive: boolean;
    currentState: TypingState;
    progress: number;
    currentWPM: number;
    mistakeCount: number;
    totalDuration: number;
    showCursor: boolean;
    cursorChar: string;
    cursorBlinkSpeed: number;
    start: () => void;
    stop: () => void;
    pause: () => void;
    resume: () => void;
    skip: () => void;
    rewind: () => void;
    reset: () => void;
    resetKeyboard: () => void;
    setCursorVisible: (visible: boolean) => void;
    setCursorChar: (char: string) => void;
    setCursorBlinkSpeed: (speed: number) => void;
}
export interface TypingStats {
    totalCharacters: number;
    charactersTyped: number;
    mistakesMade: number;
    mistakesCorrected: number;
    startTime: number;
    endTime?: number;
    currentWPM: number;
    averageCharDelay: number;
    totalDuration: number;
}
export interface CharacterTiming {
    char: string;
    delay: number;
    isMistake: boolean;
    isCorrection: boolean;
    timestamp: number;
}
export interface WordInfo {
    word: string;
    isCommon: boolean;
    difficulty: number;
    startIndex: number;
    endIndex: number;
}
export declare enum ShiftState {
    Off = "off",
    On = "on",
    Locked = "locked"
}
export declare enum KeyboardView {
    Letters = "letters",
    Numbers = "numbers",
    Symbols = "symbols"
}
export interface KeyPressEvent {
    id: string;
    key: string;
    view: KeyboardView;
    timestamp: number;
}
export interface StateChangeEvent {
    previousState: TypingState;
    currentState: TypingState;
    timestamp: number;
}
export interface ViewChangeEvent {
    previousView: KeyboardView;
    currentView: KeyboardView;
    timestamp: number;
}
export interface ShiftChangeEvent {
    previousState: ShiftState;
    currentState: ShiftState;
    timestamp: number;
}
export interface ErrorEvent {
    code: string;
    message: string;
    timestamp: number;
}
export interface KeyboardClasses {
    root?: string;
    row?: string;
    key?: string;
    keyActive?: string;
    keyModifier?: string;
}
export type LabelOverrides = Record<string, string>;
export type IconOverrides = Record<string, React.ReactNode>;
//# sourceMappingURL=index.d.ts.map