import type { ReactNode } from 'react';
export interface ChangeCount {
    additions: number;
    removals: number;
}
export type ViewerStatusTone = 'neutral' | 'read' | 'write' | 'patch' | 'success' | 'error';
export declare function countLineTones(lineTones: Map<number, 'add' | 'remove'> | Array<[number, 'add' | 'remove']> | undefined): ChangeCount;
export declare function normalizeChangeCount(count: ChangeCount): ChangeCount | undefined;
export declare function countPatchTextChanges(patch: string | undefined, targetPath: string | undefined): ChangeCount | undefined;
export declare function AnimatedSignedCount({ prefix, value, className, }: {
    prefix: '+' | '-';
    value: number;
    className: string;
}): import("react/jsx-runtime").JSX.Element;
export declare function ChangeCountSlot({ count }: {
    count: ChangeCount;
}): import("react/jsx-runtime").JSX.Element;
export declare function InlineChangeCount({ count, className, weight, }: {
    count: ChangeCount;
    className?: string;
    weight?: 'bold' | 'normal';
}): import("react/jsx-runtime").JSX.Element;
interface ViewerStatusBarProps {
    label?: string;
    path: string;
    tone?: ViewerStatusTone;
    changeCount?: ChangeCount;
    showSpinner?: boolean;
    spinnerTitle?: string;
    leading?: ReactNode;
    trailing?: ReactNode;
}
export declare function ViewerStatusBar({ label, path, tone, changeCount, showSpinner, spinnerTitle, leading, trailing, }: ViewerStatusBarProps): import("react/jsx-runtime").JSX.Element;
export {};
//# sourceMappingURL=ViewerStatusBar.d.ts.map