import { UserId } from "@/server/user/domain/models";
import { Area, AreaId, Floor, FloorId, Project, ProjectDetail, ProjectEarningsResults, ProjectFilter, ProjectId, ProjectMaterials, ProjectQueryResuls, ProjectSummary } from "./models";
export interface ProjectRepository {
create(data: Project,userId:UserId): Promise<Project>;
update(data: Project,userId:UserId): Promise<Project>;
getAll(filter: ProjectFilter): Promise<ProjectQueryResuls>;
getById(projectId: ProjectId): Promise<ProjectDetail>;
getProductSearch(filter: ProjectFilter): Promise<Partial<Project[]>>;
getAllProjectMaterials(): Promise<ProjectMaterials[]>;
getProjectSummary(filter: ProjectFilter): Promise<ProjectSummary[]>;
getProjectEarnings(filter: ProjectFilter): Promise<ProjectEarningsResults>;
createProjectArea(data: Area, userId: UserId): Promise<Area>;
updateProjectArea(data: Partial<Area>, userId: UserId): Promise<Partial<Area>>;
deleteProjectArea(areaId: AreaId, userId: UserId): Promise<Area>;
createProjectFloor(data: Floor, userId: UserId): Promise<Floor>;
isFloorInProjectExist(floorName:string,projectId: ProjectId):Promise<boolean>;
updateProjectFloor(
data: Partial<Floor>,
userId: UserId
): Promise<Partial<Floor>>;
deleteProjectFloor(
floorId: FloorId,
userId: UserId
): Promise<Partial<Floor>>;
}