import React from "react"

export interface LoginFormInterface {
    username: string,
    password: string,
    remember_me?: boolean
}

export interface LoginResponseInterface {
    token: string
}

export interface ResetPasswordInterface {
    password: string,
    repeatPassword: string
}

export interface ForgotPasswordInterface {
    phoneNumber: string
}

export interface LoginWithCodeInterface {
    phoneNumber: string
}
export interface ResetPasswordCodeInterface {
    code: string
}

export interface LoginCodeInterface {
    code: string
}

export interface RegisterInterface {
    name: string,
    family: string,
    city: object,
    capCity: object,
    marketName: string,
    phoneNumber: string,
    password: string,
    repeatPassword: string,
}

export interface SidebarInterface {
    name: string,
    title: string,
    route: string,
    icon: React.ReactNode,
    activeIcon: React.ReactNode
}

export interface SocialsInterface {
    name: string,
    path: string
}

export interface StatusBoxItemInterface {
    name: string,
    title: string,
    icon: React.ReactNode,
    value: number,
    detail?: boolean
}

export interface MyAccountInterface {
    phoneNumber: string,
    marketName: string,
    name: string,
    family: string,
    city: object,
    capCity: object,
    address: string,
    phoneNumber1: string,
    staticNumber: string,
    date: string,
    currentPassword: string,
    newPassword: string,
    repeatPassword: string
}

type BankName = "saderat" | "mehr" | "pasargad"
type PersianBankName = "مهر" | "صادرات" | "پاسارگاد"

export interface CardBank {
    _id: string,
    holderName: string,
    PAN: number,
    IBAN: string,
    created_at: string,
    updated_at: string,
    id: string
}

export interface BankCartInterface {
    _id: string,
    cardBank: CardBank[] | [] | CardBank
    id: string
}


export interface BanksInterface {
    name: string,
    name_farsi: string,
    icon: React.ReactNode,
    iban_nbc: string,
    pan_iin: string[] | []
}

export interface AddNewCartInterface {
    name: string
    family: string
    PAN: string
    IBAN: string
}

export interface installationReportsInterface {
    status: boolean
    dollar: string
    score: string
    device_model: string
    imei_number: string
    install_date: string
    install_iemi: string
}

export interface colConfig {
    accessor: string
    header: string
    cellRenderer?: (info: any) => JSX.Element;
}

export interface TransactionsInterface {
    status: boolean
    amount: string
    request_date: string
    traking_number: string
    deposit_date: string
}

export interface ScoreInterface {
    title: string
    score: number
    date: string
}

export interface SubscriptionReportInterface {
    imei_number: string
    renewal_date: string
    renewal_type: string
    amount: string
    contribution: string,
    percentage: string
}

export interface DeviceId {
    tomanPrice: number,
    dollarProfit: number,
    profit: number,
    status: number,
    _id: string,
    IMEI: string,
    model: string,
    score: number,
    renewalProfit: number,
    created_at: string,
    updated_at: string,
    __v: number,
    id: string
}
export interface RegisterDeviceResponse {
    status: number,
    _id: string,
    deviceId: DeviceId
    registerDate: string,
    userId: string,
    created_at: string,
    updated_at: string,
    __v: number,
    id: string
}

export interface RegisterDeviceData {
    status: number,
    _id: string,
    deviceId: RegisterDeviceData[] | [],
    registerDate: string,
    userId: string,
    created_at: string,
    updated_at: string,
    __v: number,
    id: string
}


export interface RegisterDeviceId {
    tomanPrice: number,
    dollarProfit: number,
    profit: number,
    status: number,
    _id: string,
    IMEI: string,
    model: string,
    score: number,
    renewalProfit: number,
    created_at: string,
    updated_at: string,
    __v: number,
    id: string
}

export interface AwardsResponse {
    _id: string,
    score: number,
    title: string,
    desc: string,
    expireDate: string,
    created_at: string,
    updated_at: string,
    __v: number,
    id: string
}