import React, { SetStateAction } from "react";
import { SwiperOptions } from "swiper/types";

declare module '*.svg' {
    const value: string;
    export default value;
}
declare module "*.png" {
    const value: string;
    export default value;
}

declare module "*.jpeg" {
    const value: string;
    export default value;
}
declare module "*.jpg" {
    const value: string;
    export default value;
}

declare module "*.svg" {
    const value: string;
    export default value;
}

export type LanguageContextType = {
    URL: string,
    lang: string,
    changeLanguage: (lang: string) => void
}

export type UserProfileData = {
    profile: any;
    error: null | Error,
    loading: boolean,
}

export type RowDetails = {
    courseId: string,
    courseOfferId: string,
    courseOfferPrice: string,

    // training-courses
    discount: string,
    thisUserId: string,
    thisCompanyId: string,
    courseRegistrationId: string,
    userToken: string,
    thisRowPrice: string,
    theImgUploaded: string,
    installmentId?: string | number,
    installmentScheduleId?: string | number,

    // course fees
    courseFeeId: string,
    courseFeePrice: string,

    // vat
    totalPrice: number | string,
    priceBeforeDiscount: number | string,
    vat: number | string,
    taxPercentage: number | string
}

export type SelectedPayment = {
    location: string,
    currencyTitle: string,
    date?: string,
    startDate: string,
    endDate: string,
    duration: string,
    payment?: string,
    paymentInAr?: string,
    dueDate?: string,
    monthlyPayment?: string | number,
    installmentCount?: string | number,
    currentInstallmentNumber?: string | number,
}

export type UserPayment = {
    rowDetails: RowDetails,

    setRowDetails: React.SetStateAction,
    setSelectedPayment: React.SetStateAction,

    selectedPayment: SelectedPayment
}

export interface TitleAndDescription {
    title: string,
    desc?: string,
    description?: string
}

export type SwiperProps = {
    id: string | number,
    props: SwiperOptions | any,
    showButtons?: boolean,
    children: React.ReactNode,
}
export interface TextField extends React.ComponentProps<"input"> {
    label: string,
    placeHolder: string,

    value?: string,
    className?: string,
    type?: string | "text",

    registerFor?: string,
    register?: UseFormRegister<T>,
    errors?: FieldErrors<FieldValues>,
    errorMessage?: string,

    tooltip?: string,
    textarea?: boolean,
};