import { Ref } from 'vue';
import { Resource } from '../models/classes/Resource';
import { Task } from '../models/classes/Task';
export interface ResourceLayout {
    taskRowMap: Map<string | number, number>;
    rowHeights: number[];
    totalHeight: number;
}
/**
 * 核心composable：管理资源视图布局
 */
export declare function useResourceLayout(viewMode: Ref<'task' | 'resource'>, dataSource: Ref<Task[] | Resource[]>, timelineBodyScrollTop: Ref<number>, timelineBodyHeight: Ref<number>): {
    resourceTaskLayouts: import('vue').ComputedRef<Map<string | number, ResourceLayout>>;
    resourceRowPositions: import('vue').ComputedRef<Map<string | number, number>>;
    getResourceLayout: (resource: Resource) => ResourceLayout;
    clearLayoutCache: () => void;
    clearResourceCache: (resourceId: string | number) => void;
    invalidateLayout: (resourceIds?: (string | number)[]) => void;
    layoutsCallCount: Ref<number, number>;
    positionsCallCount: Ref<number, number>;
};
