import { type ReactNode } from "react";
import type { ProjectAttentionSummary, ProjectWithPermission, TaskItem } from "../types";
export type SubprojectTaskCounts = {
    total: number;
    todo: number;
    waiting: number;
    inProgress: number;
    review: number;
    done: number;
};
export type ProjectAttentionTaskGroup = {
    projectId: string;
    projectTitle: string;
    tasks: TaskItem[];
};
export declare function formatCurrency(value: number): string;
export declare function formatPercent(value: number): string;
export declare function KpiTile(props: {
    icon: ReactNode;
    label: string;
    value: string | number;
    detail: string;
    testId: string;
}): import("react").JSX.Element;
export declare function TaskStateProgressBar(props: {
    counts: SubprojectTaskCounts;
    compact?: boolean;
}): import("react").JSX.Element;
export declare function ProjectDashboard(props: {
    projectId: string;
    selectedProjectTitle: string;
    selectedProjectDescription?: string;
    selectedProjectCostUsed?: number;
    selectedProjectCostLimit?: number | null;
    selectedProjectTaskCounts: SubprojectTaskCounts;
    subprojects: ProjectWithPermission[];
    taskCountsByProjectId: Record<string, SubprojectTaskCounts>;
    parentProjectId?: string | null;
    parentProjectTitle?: string | null;
    onSelectProject?: (projectId: string) => void;
    canCreateTask?: boolean;
    onCreateTask?: () => void;
    showCreateTaskButton?: boolean;
    showSubprojectTaskVisibilityHint?: boolean;
}): import("react").JSX.Element;
export declare function ProjectKpisPanel(props: {
    selectedProjectCostUsed?: number;
    selectedProjectCostLimit?: number | null;
    selectedProjectTaskCounts: SubprojectTaskCounts;
    selectedProjectAttention?: ProjectAttentionSummary | null;
    subprojects: ProjectWithPermission[];
    taskCountsByProjectId: Record<string, SubprojectTaskCounts>;
    attentionTaskGroups?: ProjectAttentionTaskGroup[];
    attentionDetailsLoading?: boolean;
    onSelectAttentionTask?: (taskId: string) => void;
}): import("react").JSX.Element;
