export interface GetAllTopics {
  _id: string;
  title: string;
  description: string;
  createdAt: string;
  educationalVideoCount: number;
}

export interface GetAllTopicRequest {
  page?: number;
  limit?: number;
  search?: Record<string, any>;
}

export interface GetAllTopicResponse {
  topics: GetAllTopics[];
  meta: {
    totalItems: number;
    totalPages: number;
    page: number;
    limit: number;
  };
}

export interface CreateTopicRequest {
  title: string;
  description: string;
}

export interface CreateTopicResponse {
  message: string;
}

export interface GetSingleTopicRequest {
  topicID: string;
  page?: number;
  limit?: number;
  search?: Record<string, any>;
}

export interface GetSingleTopicResponse {
  topic: GetAllTopics;
  topicRelatedVideos: Array<{
    _id: string;
    thumbnail: string;
    title: string;
    description: string;
    price: number | null;
    type: "Paid" | "Free";
    category: "EDUCATIONAL" | "EXPLAINES";
    createdAt: string;
  }>;
  meta: {
    totalItems: number;
    totalPages: number;
    page: number;
    limit: number;
  };
}

export interface UpdateTopicRequest {
  topicID: string;
  data: {
    title?: string;
    description?: string;
  };
}

export interface UpdateTopicResponse {
  message: string;
}

export interface DeleteTopicRequest {
  topicID: string;
}

export interface DeleteTopicResponse {
  message: string;
}
