import { ChalkInstance } from 'chalk'; import { LineState, PendingChange } from '../state-manager.js'; import { DiffLine } from '../diff-engine.js'; import { NavigationPosition } from './keyboard-handler.js'; import { TUITheme } from './tui-renderer.js'; export interface WidgetStyles { pending: { indicator: string; color: ChalkInstance; bgColor: ChalkInstance; }; accepted: { indicator: string; color: ChalkInstance; bgColor: ChalkInstance; }; rejected: { indicator: string; color: ChalkInstance; bgColor: ChalkInstance; }; currentLine: { indicator: string; color: ChalkInstance; }; } export declare const DEFAULT_WIDGET_STYLES: WidgetStyles; export interface WidgetPosition { hunkIndex: number; lineIndex: number; absoluteLine: number; } export interface LineWidget { position: WidgetPosition; lineId: string; state: LineState; isCurrent: boolean; isChangeable: boolean; lineType: DiffLine['type']; } export declare class WidgetManager { private pendingChange; private currentPosition; private styles; private widgets; private visibleWidgets; private showCurrentIndicator; private showStateIndicators; private compactMode; constructor(styles?: Partial, options?: { showCurrentIndicator?: boolean; showStateIndicators?: boolean; compactMode?: boolean; }); setPendingChange(change: PendingChange | null): void; setCurrentPosition(position: NavigationPosition | null): void; private rebuildWidgets; private updateCurrentLineIndicator; getWidgetForLine(hunkIndex: number, lineIndex: number): LineWidget | undefined; getWidgetState(hunkIndex: number, lineIndex: number): LineState | undefined; setWidgetState(hunkIndex: number, lineIndex: number, state: LineState): void; getStateIndicator(state: LineState): string; getCurrentLineIndicator(): string; renderWidgetForLine(hunkIndex: number, lineIndex: number): string; renderWidgetColumn(hunkIndex: number, lineIndex: number, _theme: TUITheme): string; getAllVisibleWidgets(): LineWidget[]; getPendingWidgets(): LineWidget[]; getAcceptedWidgets(): LineWidget[]; getRejectedWidgets(): LineWidget[]; getWidgetStats(): { pending: number; accepted: number; rejected: number; total: number; }; updateWidgetStatesFromPendingChange(): void; setStyles(styles: Partial): void; getStyles(): WidgetStyles; setShowCurrentIndicator(show: boolean): void; setShowStateIndicators(show: boolean): void; setCompactMode(compact: boolean): void; reset(): void; } export declare class AcceptRejectWidget { private position; private state; private onAccept; private onReject; private isHovered; private isFocused; private styles; constructor(position: WidgetPosition, initialState?: LineState, styles?: Partial); getPosition(): WidgetPosition; getState(): LineState; setState(state: LineState): void; accept(): void; reject(): void; setOnAccept(callback: () => void): void; setOnReject(callback: () => void): void; setHovered(hovered: boolean): void; setFocused(focused: boolean): void; render(): string; renderDetailed(): string; } export declare class CurrentLineIndicator { private position; private styles; private visible; constructor(styles?: Partial); setPosition(position: NavigationPosition | null): void; getPosition(): NavigationPosition | null; setVisible(visible: boolean): void; isVisible(): boolean; render(): string; renderWithLineNumber(lineNumber: number): string; } export declare function createWidgetManager(pendingChange?: PendingChange, styles?: Partial): WidgetManager; export declare function createAcceptRejectWidget(hunkIndex: number, lineIndex: number, state?: LineState, styles?: Partial): AcceptRejectWidget; export declare function createCurrentLineIndicator(styles?: Partial): CurrentLineIndicator; declare const _default: { WidgetManager: typeof WidgetManager; AcceptRejectWidget: typeof AcceptRejectWidget; CurrentLineIndicator: typeof CurrentLineIndicator; createWidgetManager: typeof createWidgetManager; createAcceptRejectWidget: typeof createAcceptRejectWidget; createCurrentLineIndicator: typeof createCurrentLineIndicator; DEFAULT_WIDGET_STYLES: WidgetStyles; }; export default _default; //# sourceMappingURL=widgets.d.ts.map