import { ShowcaseProjectData, ShowcaseProjectDocument, ShowcaseProjectStatus } from "../../types/showcaseProject.types.js";

//#region src/services/showcase/showcaseProject.service.d.ts
declare const findShowcaseProjects: (filters: {
  search?: string;
  selectedUseCases?: string[];
  isOpenSource?: boolean;
  page?: number;
  pageSize?: number;
}) => Promise<{
  data: ShowcaseProjectDocument[];
  total_items: number;
  total_pages: number;
}>;
declare const findShowcaseProjectById: (projectId: string) => Promise<ShowcaseProjectDocument>;
/**
 * Finds an existing project whose websiteUrl shares the same hostname as the
 * given URL. This treats `example.com` and `example.com/path` as duplicates
 * while allowing `sub.example.com` as a distinct entry.
 */
declare const findShowcaseProjectByUrl: (websiteUrl: string) => Promise<ShowcaseProjectDocument | null>;
declare const findOtherShowcaseProjects: (excludeId: string, limit?: number) => Promise<ShowcaseProjectDocument[]>;
declare const createShowcaseProject: (projectData: ShowcaseProjectData) => Promise<ShowcaseProjectDocument>;
type UpdateShowcaseProjectScanData = {
  title?: string;
  description?: string;
  websiteUrl?: string;
  githubUrl?: string | null;
  tags?: string[];
  intlayerVersion?: string;
  libsUsed?: string[];
  packageDetails?: Record<string, string>;
  scanDetails?: ShowcaseProjectData['scanDetails'];
  imageUrl?: string;
  isOpenSource?: boolean;
  status?: ShowcaseProjectStatus;
  lastScanDate?: Date;
};
declare const updateShowcaseProject: (projectId: string, updates: UpdateShowcaseProjectScanData) => Promise<ShowcaseProjectDocument>;
declare const deleteShowcaseProject: (projectId: string) => Promise<void>;
type VoteResult = {
  upvotes: number;
  isUpVoted: boolean;
  downvotes: number;
  isDownVoted: boolean;
};
declare const toggleShowcaseUpvote: (projectId: string, userId: string) => Promise<VoteResult>;
declare const toggleShowcaseDownvote: (projectId: string, userId: string) => Promise<VoteResult>;
//#endregion
export { UpdateShowcaseProjectScanData, createShowcaseProject, deleteShowcaseProject, findOtherShowcaseProjects, findShowcaseProjectById, findShowcaseProjectByUrl, findShowcaseProjects, toggleShowcaseDownvote, toggleShowcaseUpvote, updateShowcaseProject };
//# sourceMappingURL=showcaseProject.service.d.ts.map