/**
 * CLI Enhancements
 *
 * Features:
 * 8. Debug Command - session/model/hooks/plugins/mcp/performance info
 * 9. Company Announcements - priority-based announcement system
 * 10. Attribution Customization - commit/PR footer branding
 * 11. PR Status Indicator - prompt indicator for PR status
 * 12. Max Turns Flag - configurable turn limits
 * 13. No Session Persistence Flag - ephemeral session mode
 * 14. History Bash Autocomplete - command history and prefix completion
 * 15. Strict MCP Config Flag - restrict MCP servers
 * 16. Prompt Stash (Ctrl+S) - save/restore prompt drafts
 */
export interface DebugInfo {
    session: {
        id: string;
        messageCount: number;
        tokenUsage: number;
    };
    model: {
        name: string;
        provider: string;
        contextWindow: number;
    };
    hooks: {
        registered: number;
        fired: number;
        errors: number;
    };
    plugins: {
        loaded: number;
        active: number;
    };
    mcp: {
        servers: number;
        connected: number;
    };
    performance: {
        avgResponseMs: number;
        totalCost: number;
    };
}
export declare class DebugCommand {
    constructor();
    getDebugInfo(): DebugInfo;
    formatDebugOutput(info: DebugInfo): string;
    parseFilter(filter: string): {
        include: string[];
        exclude: string[];
    };
    filterCategories(info: DebugInfo, filter: string): Partial<DebugInfo>;
}
export interface Announcement {
    id: string;
    message: string;
    priority: 'info' | 'warning' | 'critical';
    expiresAt?: number;
    dismissible: boolean;
}
export declare class AnnouncementManager {
    private announcements;
    private dismissed;
    constructor();
    addAnnouncement(message: string, priority?: Announcement['priority'], options?: Partial<Announcement>): Announcement;
    getActiveAnnouncements(): Announcement[];
    dismiss(id: string): boolean;
    clearExpired(): number;
    formatAnnouncements(): string;
    getCount(): number;
}
export interface AttributionConfig {
    commitFooter: string;
    prFooter: string;
    enabled: boolean;
    orgBranding?: string;
}
export declare class AttributionManager {
    private config;
    constructor(config?: Partial<AttributionConfig>);
    getCommitFooter(): string;
    getPRFooter(): string;
    setCommitFooter(footer: string): void;
    setPRFooter(footer: string): void;
    formatCommitMessage(message: string): string;
    formatPRBody(body: string): string;
    isEnabled(): boolean;
    setEnabled(enabled: boolean): void;
    getConfig(): AttributionConfig;
}
export type PRStatus = 'draft' | 'pending' | 'approved' | 'changes-requested' | 'merged' | 'closed';
export interface PRStatusInfo {
    number: number;
    status: PRStatus;
    title: string;
    reviewers: string[];
    checks: {
        passed: number;
        failed: number;
        pending: number;
    };
}
export declare class PRStatusIndicator {
    private currentPR;
    constructor();
    setPR(info: PRStatusInfo): void;
    getPR(): PRStatusInfo | null;
    getStatusIcon(status: PRStatus): string;
    getStatusColor(status: PRStatus): string;
    formatPromptIndicator(): string;
    clearPR(): void;
    hasPR(): boolean;
}
export declare class MaxTurnsManager {
    private maxTurns;
    private currentTurn;
    constructor(maxTurns?: number);
    increment(): void;
    hasReachedLimit(): boolean;
    getRemainingTurns(): number | null;
    getCurrentTurn(): number;
    getMaxTurns(): number | null;
    setMaxTurns(max: number | null): void;
    reset(): void;
    formatStatus(): string;
}
export declare class SessionPersistenceConfig {
    private persistenceEnabled;
    constructor(enabled?: boolean);
    isEnabled(): boolean;
    setEnabled(enabled: boolean): void;
    shouldSave(): boolean;
    shouldLoad(): boolean;
    getMode(): 'persistent' | 'ephemeral';
}
export declare class BashHistoryAutocomplete {
    private history;
    private maxHistory;
    constructor(maxHistory?: number);
    addCommand(command: string): void;
    getCompletions(prefix: string): string[];
    loadFromFile(historyFilePath: string): number;
    getHistory(): string[];
    clearHistory(): void;
    getHistorySize(): number;
}
export declare class StrictMCPConfig {
    private strict;
    private configPath;
    private allowedServers;
    constructor(strict?: boolean, configPath?: string);
    isStrict(): boolean;
    setStrict(strict: boolean): void;
    setConfigPath(path: string): void;
    addAllowedServer(serverName: string): void;
    isServerAllowed(serverName: string): boolean;
    getAllowedServers(): string[];
    getConfigPath(): string | null;
}
export interface StashedPrompt {
    id: string;
    content: string;
    cursorPosition: number;
    timestamp: number;
}
export declare class PromptStash {
    private stash;
    private maxStash;
    constructor(maxStash?: number);
    push(content: string, cursorPosition?: number): StashedPrompt;
    pop(): StashedPrompt | null;
    peek(): StashedPrompt | null;
    getAll(): StashedPrompt[];
    clear(): void;
    getSize(): number;
    isEmpty(): boolean;
    getMaxStash(): number;
}
