export interface VerifyLoginResponse {
  token?: string;
  user?: UserData;
  status?: number;
  message?: string;
  success?: boolean;
}

export interface ProfileResponse {
  data: ProfileData;
  status: number;
  message?: string;
}

export interface CommonResponse {
  status?: number;
  message?: string;
  success?: boolean;
  data?: any;
}

export interface ProfileData {
  id: number;
  uuid: string;
  name: string;
  name_privacy?: number | string;
  email: string;
  email_privacy: number | string;
  username: string;
  country_code: string;
  mobile: string;
  mobile_privacy: number | string;
  dharma_id: number;
  dharma_name: string;
  dharma_privacy: number | string;
  birth_date: string;
  birth_date_privacy: number | string;
  gender_id: number;
  gender: string;
  gender_privacy: number | string;
  email_verified_at: string;
  mobile_verified_at: string;
  avatar: any;
  avatar_privacy: number | string;
  verification_confirmed: number;
  status: number;
  timezone: string;
  last_login_at: Date;
  last_login_ip: string;
  created_at: Date;
  updated_at: Date;
  deleted_at: Date;
  jati_id: number;
  jati_name: string;
  jati_privacy: number | string;
  location: string;
  location_privacy: number | string;
  longitude: string;
  latitude: string;
  native_place: string;
  native_place_privacy: number | string;
  native_longitude: string;
  native_latitude: string;
  mother_tongue_id: number;
  mother_tongue: string;
  mother_tongue_privacy: number | string;
  marital_status: string;
  marital_status_privacy: number | string;
  marriage_anniversary: string;
  marriage_anniversary_privacy: number | string;
  family_members: FamilyMember[];
  company_details: CompanyDetails[];
  qualificaion_details: QualificationDetails;
  profile_statistics?: {
    basic_info: number;
    contact_info: number;
    location: number;
    profile_completion_percentage: number;
    qualification: number;
    total_filled: number;
    work: number;
  };
  karma_dhan: number;
  friend_count: number;
  sangh_member_count: number;
  share_content: string;
  request_status?: number;
  passive_users: PassiveUser[];
  profession: string;
  profession_privacy: number;
  blood_group?: string;
  blood_group_id?: number;
  blood_group_privacy?: number;
  is_blocked?: number;
  is_profile_completed?: number;
}

export interface FamilyMember {
  id: number;
  from_id: number;
  to_id: number;
  relation: string;
  relation_id: number;
  status: number;
  relation_privacy: number | string;
  created_at: Date;
  updated_at: Date;
  relationships: Relationships;
  sent_users: SentUsers;
}

export interface Relationships {
  id: number;
  name: string;
  status: number;
  created_at: Date;
  updated_at: Date;
}

export interface SentUsers {
  id: number;
  uuid: string;
  name: string;
  email: string;
  email_hash: null;
  username: string;
  country_code: null;
  mobile: null;
  dharma_id: number;
  birth_date: Date;
  gender: null;
  email_verified_at: null;
  mobile_verified_at: null;
  avatar: string;
  school_name: string;
  about: string;
  relationship: number;
  is_passive: number;
  parent_id: number;
  verification_confirmed: number;
  status: number;
  mobile_privacy: number;
  email_privacy: number;
  avatar_privacy: number;
  birth_date_privacy: number;
  gender_privacy: number;
  dharma_privacy: number;
  timezone: null;
  last_login_at: null;
  last_login_ip: null;
  created_at: Date;
  updated_at: Date;
  deleted_at: null;
}

export interface PassiveUser {
  id: number;
  name: string;
  parent_id: number;
  is_passive: number;
  relationship: number;
  about: string;
  school_name: string;
  avatar: string;
  birth_date: Date;
}

export interface QualificationDetails {
  schools: College[];
  colleges: College[];
}

export interface College {
  id: number;
  user_id: number;
  qualification: null | string;
  university: null | string;
  highschool: null | string;
  is_graduate: number;
  is_pursuing: number;
  passing_year: string;
  starting_year: null | string;
  start_date: Date;
  end_date: Date;
  created_at: Date;
  updated_at: Date;
  privacy: number;
  type: number;
}

export interface CompanyDetails {
  id: number;
  user_id: number;
  company_name: string;
  company_name_privacy: number;
  profession_id: null;
  profession: null;
  profession_speciality: null;
  position: null;
  city: null;
  city_privacy: number;
  position_privacy: number;
  profession_speciality_privacy: number;
  profession_privacy: number;
  website: string;
  website_privacy: number;
  about: null;
  about_privacy: number;
  is_working: null;
  work_duration_privacy: number;
  start_year: string;
  end_year: string;
  created_at: Date;
  updated_at: Date;
}


export interface SignupResponse {
  user?: UserData;
  message?: string;
}

export interface Countries {
  countries: Country[];
}

export interface Country {
  id: number;
  iso: string;
  name: string;
  iso3: string;
  num_code: string;
  phone_code: string;
  created_at: Date;
  updated_at: Date;
  num_length: string;
}

export interface UserData {
  id?: number;
  name?: string;
  email?: string;
  country_code?: string;
  mobile?: string;
  email_preview?: string;
  avatar_url?: string;
  avatar?: string;
  is_profile_verified: string;
  login_type?: number;
  type?: number;
}

export interface Jaati {
  id: number;
  name: string;
  status: number;
  created_by: number;
  updated_by: Date;
  created_at: Date;
  updated_at: Date;
}

export interface MTongue {
  id: number;
  name: string;
  status: number;
  created_at: Date;
  updated_at: Date;
}

export interface Sampraday {
  id: number;
  name: string;
  status: number;
  created_by: number;
  updated_by: number;
  created_at: string;
  updated_at: string;
}

export interface BloodGroup {
  id: number;
  name: string;
  status: number;
  created_at: Date;
  updated_at: Date;
}

export interface addSant {
  name?: string;
  father_name?: string;
  mother_name?: string;
  avatar?: any;
  honor?: string[];
  qualification?: string;
  dharma_id?: number;
  sampraday_id?: number;
  birth_date?: string;
  diksha_date?: string;
  diksha_place?: string;
  about?: string;
  gender?: string;
  guru?: string;
  father_id?: string;
  father_type?: string;
  mother_id?: string;
  mother_type?: string;
  guru_id?: string;
}

export interface addPassiveUser {
  id?: any;
  name?: string;
  birth_date?: string;
  gender?: string;
  relationship?: string;
  school_name?: string;
  aboutUser?: string;
  avatar?: any;
}

export interface viharInfo {
  to_sangh_id: number;
  from_sangh_id: number;
  viharFromPlace: string;
  viharToPlace: string;
  startDate: string;
  endDate: string;
  startTime: string;
  isUpdate: boolean;
  viharId?: string;
  santId: string;
  thanaMemberCount: string;
  from_latitude?: string;
  from_longitude?: string;
  to_latitude?: string;
  to_longitude?: string;
  sant?: any;
  date?: string;
  end_date?: string;
  start_date?: string;
}
export interface reviewedFields {
  guru: boolean;
  name: boolean;
  about: boolean;
  avatar: boolean;
  dharma: boolean;
  gender: boolean;
  sampraday: boolean;
  birth_date: boolean;
  diksha_date: boolean;
  father_name: boolean;
  mother_name: boolean;
  diksha_place: boolean;
}


export interface GlobalSearchDataShravak {
  id: number;
  uuid: string;
  name: string;
  email: null | string;
  email_hash: null;
  username: string;
  country_code: string;
  mobile: string;
  dharma_id: number;
  birth_date: Date;
  gender: number;
  email_verified_at: null;
  mobile_verified_at: null;
  avatar: string;
  school_name: null;
  about: null;
  relationship: number;
  is_passive: number;
  parent_id: number;
  verification_confirmed: number;
  status: number;
  mobile_privacy: number;
  email_privacy: number;
  avatar_privacy: number;
  birth_date_privacy: number;
  gender_privacy: number;
  dharma_privacy: number;
  karma_dhan: number;
  timezone: null;
  last_login_at: null;
  last_login_ip: null;
  profile_statistics: null;
  created_at: Date;
  updated_at: Date;
  deleted_at: null;
  unread_message_count: number;
  unread_notification_count: number;
  is_working: boolean;
  is_friends: number;
  hide_mobile: string;
  is_user_friends: number;
  dharma: Dharma;
}

export interface GlobalSearchDataSangh {
  id: number;
  user_id: number | null;
  name: string;
  dharma_id: number;
  sampraday_id: number;
  reg_number: string;
  reg_date: Date;
  address: string;
  city: string;
  pincode: number;
  longitude: string;
  latitude: string;
  about: null | string;
  avatar: string;
  created_by: number;
  updated_by: number;
  created_at: Date;
  updated_at: Date;
  is_user_following: boolean;
  is_member: number;
  is_requested: boolean;
  dharma: Dharma;
  sampraday: Sampraday;
  sangh_member_status: number;
}

export interface GlobalSearchDataSant {
  id: number;
  user_id: number;
  name: string;
  father_name: null | string;
  mother_name: null | string;
  guru_name: null;
  gender: number | null;
  avatar: string;
  honor: string[];
  qualification: null;
  dharma_id: number;
  sampraday_id: number | null;
  guru_id: number | null;
  birth_date: Date | null;
  diksha_date: Date | null;
  diksha_place: null | string;
  about: null | string;
  status: number;
  verification_status: number;
  reviewed_fields: any[] | { [key: string]: boolean };
  description: null | string;
  profile_verified_at: Date | null;
  created_by: number;
  updated_by: number | null;
  created_at: Date;
  updated_at: Date;
  deleted_at: null;
  current_thana_id: null;
  age: number;
  diksha_year: number;
  is_user_following: boolean;
  is_approved: number;
  is_in_review: number;
  dharm: Dharma;
  sampraday: Sampraday | null;
  profile_statistics?: {
    basic_info: number;
    contact_info: number;
    location: number;
    profile_completion_percentage: number;
    qualification: number;
    total_filled: number;
    work: number;
  };
}

export interface Dharma {
  id: number;
  name: string;
  created_at?: string;
  updated_at?: string;
  deleted_at?: string;
}

export interface Privacy {
  name: string;
  value: number | string;
}

export interface RequestUserList {
  id: number;
  sender_id: number;
  receiver_id: number;
  status: number;
  created_at: Date;
  updated_at: Date;
  deleted_at: null;
  received_users?: RequestUserData;
  sent_users?: RequestUserData;
}

export interface RequestUserData {
  id: number;
  uuid: string;
  name: string;
  email: string;
  email_hash: string;
  username: string;
  country_code: null;
  mobile: null;
  dharma_id: number;
  birth_date: Date;
  gender: null;
  email_verified_at: null;
  mobile_verified_at: null;
  avatar: null;
  verification_confirmed: number;
  status: number;
  timezone: null;
  last_login_at: null;
  last_login_ip: null;
  created_at: Date;
  updated_at: Date;
  deleted_at: null;
}

export interface PostList {
  id: number;
  user_id: number;
  category_id: number;
  privacy: number;
  status: number;
  description: string;
  created_by: Category;
  updated_by: Category;
  location: string;
  created_at: Date;
  updated_at: Date;
  is_liked: boolean;
  likes_count: number;
  comments_count: number;
  tag_users: TagUser[];
  post_images: PostImage[];
  category: Category;
  created_ago: string;
  type: number;
  type_id: number;
  sangh_details?: any;
  showMore?: boolean;
  post_type?: string;
  lat?: string;
  long?: string;
  subject?: {
    id: string | number;
  };
  hide?: boolean;
  mentions: Array<{
    id: number;
    name: string;
    type: 'user' | 'sangh' | 'sant';
  }>;
}

export interface SantActivityList {
  id: number;
  log_name: string;
  description: string;
  subject_type: string;
  subject_id: number;
  causer_type: string;
  causer_id: number;
  properties: Properties;
  created_at: Date;
  updated_at: Date;
  causer: Causer;
  subject: Subject;
  created_ago?: string;
  updated_ago?: string;
  hide?: boolean;
}

export interface Causer {
  id: number;
  name: string;
  avatar: string;
  is_friends: number;
}

export interface Properties {
  attributes: Attributes;
}

export interface Attributes {
  message: string;
  sant_id: string;
  chaturmas_information: ChaturmasInformation;
}

export interface ChaturmasInformation {
  id: number;
  place: string;
  sangh: null;
  sant_id: string;
  sangh_id: null;
  created_at: Date;
  created_by: CreatedBy;
  updated_at: Date;
  updated_by: null;
  created_ago: string;
  is_approved: number;
  updated_ago: string;
  chaturmas_info: ChaturmasInfo;
  chaturmas_date_id: number;
}

export interface ChaturmasInfo {
  id: number;
  to: Date;
  from: Date;
  year: number;
  created_at: Date;
  created_by: number;
  updated_at: Date;
  updated_by: null;
  sant: any;
}

export interface CreatedBy {
  id: number;
  name: string;
  mobile: string;
  is_friends: number;
  country_code: string;
}

export interface Subject {
  id: number;
  name: string;
  avatar: string;
  age: number;
  diksha_year: number;
  is_user_following: boolean;
  profile_statistics?: {
    basic_info: number;
    contact_info: number;
    location: number;
    profile_completion_percentage: number;
    qualification: number;
    total_filled: number;
    work: number;
  };
}

export interface CommentList {
  id: number;
  post_id: number;
  user_id: number;
  reply_id: null;
  comment: string;
  created_at: Date;
  updated_at: Date;
  is_edited: boolean;
  created_ago: string;
  user: User;
  showMore?: boolean;
}

export interface User {
  id: number;
  avatar: string;
  name: string;
  is_friends: number;
}

export interface Category {
  id: number;
  parent_id?: number;
  name: string;
  created_at: Date;
  updated_at: Date;
  avatar?: string;
}

export interface PostImage {
  id: number;
  post_id: number;
  image_name: string;
  created_at: Date;
  updated_at: Date;
}

export interface TagUser {
  id: number;
  name: string;
  avatar: string;
  pivot: Pivot;
}

export interface Pivot {
  post_id: number;
  user_id: number;
  created_at: Date;
  updated_at: Date;
}


export interface DesignationList {
  id: number;
  name: string;
  created_by: null;
  updated_by: null;
  created_at: Date;
  updated_at: Date;
}

export interface ProfessionList {
  id: number;
  name: string;
  created_by: null;
  updated_by: null;
  created_at: Date;
  updated_at: Date;
}

export interface FriendList {
  id: number;
  name: string;
  avatar: string;
  is_friend_request_sent: boolean;
  pivot: Pivot;
  user_detail: UserFriendDetail[];
}

export interface Pivot {
  sender_id: number;
  receiver_id: number;
  created_at: Date;
  updated_at: Date;
  status: number;
}

export interface UserFriendDetail {
  id: number;
  user_id: number;
  jati_id: number;
  profession: string;
  profession_speciality: string;
  location: null;
  longitude: null;
  latitude: null;
  native_place: null;
  native_longitude: null;
  native_latitude: null;
  mother_tongue: null;
  marital_status: null;
  marriage_anniversary: null;
  qualification: null;
  company_name: null;
  mother_tongue_privacy: number;
  jati_privacy: number;
  marital_status_privacy: number;
  marriage_anniversary_privacy: number;
  location_privacy: number;
  native_place_privacy: number;
  qualification_privacy: number;
  profession_privacy: number;
  company_name_privacy: number;
  profession_speciality_privacy: number;
  created_at: Date;
  updated_at: Date;
  deleted_at: null;
}

export interface NotificationResponse {
  current_page: number;
  last_page: number;
  per_page: number;
  next_page_url: null;
  last_page_url: string;
  total: number;
  count: number;
  prev_page_url: null;
  hasMorePages: boolean;
  data: Notification;
  status: number;
}

export interface Notification {
  current_page: number;
  data: NotificationList[];
  first_page_url: string;
  from: number;
  last_page: number;
  last_page_url: string;
  links: Link[];
  next_page_url: null;
  path: string;
  per_page: number;
  prev_page_url: null;
  to: number;
  total: number;
}

export interface NotificationList {
  id: number;
  user_id: number;
  title: string;
  type: string;
  message: string;
  extra_fields: ExtraFields;
  status: string;
  created_at: string;
  updated_at: Date;
  sant: any;
  user: any;
}

export interface ExtraFields {
  name: string;
  avatar: string;
  from_id: number;
  created_at: string;
  relation_id: number;
  relation_request_status: number;
  notification_type?: number;
  user_type?: string;
  user_id?: number;
  role?: string;
}

export interface Link {
  url: null | string;
  label: string;
  active: boolean;
}

export interface SanghData {
  id: number;
  sangh_type: string;
  user_id: number;
  name: string;
  dharma_id: number;
  sampraday_id: number;
  reg_number: string;
  reg_date: string;
  address: string;
  city: string;
  pincode: number;
  longitude: string;
  latitude: string;
  about: string;
  avatar: string;
  created_by: number;
  updated_by: number;
  created_at: string;
  updated_at: string;
  is_user_following?: boolean;
  is_requested?: boolean;
  is_member: number;
  sangh_member_status: number;
}

export interface SanghProfileData {
  id: number;
  sangh_type: number;
  user_id: number;
  name: string;
  dharma_id: number;
  sampraday_id: number;
  reg_number: string;
  reg_date: Date;
  address: string;
  city: string;
  pincode: number;
  longitude: string;
  latitude: string;
  about: string;
  avatar: string;
  created_by: CreatedByUser;
  updated_by: number;
  created_at: Date;
  updated_at: Date;
  followers_count: number;
  sangh_members_count: number;
  followers: any[];
  dharma: Dharma;
  sampraday: Dharma;
  is_member: number;
  is_user_following?: boolean;
  is_requested?: boolean;
  karma_points: number;
  sangh_member_status: number;
  state: string;
  number_of_members: number;
  apartment_name: string;
  email: string;
  mobile_number: string;
  sangh_website: string;
  bank_qr_code: string;
  bank_account_number: string;
  bank_ifsc: string;
  bank_account_holder_name: string;
  bank_branch: string;
  bank_upi_id: string;
  no_of_students: number;
  aaradhana_bhavan_status: number;
  pathshala_status: number;
  number_of_books: number;
  bhojanshala_status: number;
  mulnayak_bhagwan_name: number;
  sangh_status: number;
  tifin_service_status: number;
  librarian_mobile_number: string;
  librarian_name: string;
  library_name: string;
  library_status: number
  mahila_mandal_status: number
  yuva_mandal_status: number
  derasar_type: number;
  swapna_chadawa_organised_status: number;
  aayambilshala_status: number;
  type_of_template: number;
  chaturmas: ChaturmasInfo[];
  vihar?: viharInfo[];
  reject_reason: string;
}

export interface CreatedByUser {
  id: number;
  name: string;
  avatar: string;
  is_friends: number;
}

export interface Message {
  id: number;
  user_id: number | string;
  avatar: string;
  avatar_url: string;
  name: string;
  created_at: string;
  message: string;
  unread_count: number;
}

export interface GeneralData {
  profile_completion_percentage: number;
  pending_friend_request: number;
  pending_sangh_invitation: number;
  pending_sant_action: number;
  sangh_menu: number;
  sant_menu: number;
  shravak_menu: number;
  unread_message_count: number;
  unread_notification_count: number;
}

export interface BlockedUser {
  id: number;
  user_id: number;
  blocked_by: number;
  created_at: Date;
  updated_at: Date;
  user: {
    id: number;
    name: string;
    avatar: string;
    is_working: boolean;
    is_friends: number;
    hide_mobile?: any;
    is_user_friends: number;
  };
}

export interface IdName {
  id: number;
  name: string;
}


export class PhotoDetail {
  url: string;
  size: number;
  imageData?: Blob;
}

export class Photo {
  aadharFront = new PhotoDetail();
  aadharBack = new PhotoDetail();
}

export interface Hospital {
  id: string;
  name: string;
  contact_name: string;
  email: string;
  alternative_email: string;
  address: string;
  city: string;
  state: string;
  photo: string | null;
  benefits: string;
  status: number;
  created_at: string;
  updated_at: string;
  area: string;
}

export interface CertificateDetail {
  id: string;
  user_id: number;
  hospital_id: string;
  full_name: string;
  address: string;
  email: string;
  medical_problem: string;
  aadhar_card_number: string;
  profile_photo: string;
  aadhar_card_front_photo: string;
  aadhar_card_back_photo: string;
  status: number;
  rejection_reason: string | null;
  generated_date: string | null;
  pdf_url: string | null;
  created_at: string;
  updated_at: string;
  expire_date: string;
  is_expired: boolean;
  hospital: Hospital;
}


export interface MemberUserDetail {
  id: number;
  user_id: number;
  location: string;
}

export interface MemberUserModel {
  id: number;
  name: string;
  is_working: boolean;
  is_friends: number;
  hide_mobile: string | null;
  is_user_friends: number;
  is_blocked: number;
  user_detail: MemberUserDetail[];
}

export interface MemberSangh {
  id: number;
  name: string;
  avatar: string;
  city: string;
  state: string;
  is_user_following: boolean;
  is_member: number;
  is_requested: boolean;
  sangh_member_status: number;
}

export interface Member {
  member_id: string;
  sangh_id: number;
  user_id: number;
  profile_image: string;
  role: string | null;
  sangh: MemberSangh;
  user: MemberUserModel;
}