export interface User {
    id: number;
    first_name: string | null;
    last_name: string | null;
    email: string | null;
    mobile: string | null;
    avatar: string | null;
    uuid: string;
    is_admin: boolean;
    wallet: number;
    created_at: string;
    updated_at: string;
    birthday: string | null;
    gender: string | null;
    email_verified_at: string | null;
    remember_token: string | null;
    full_name: string | null;
    products: UserProduct[];
}

export interface UserProduct {
    id: number;
    package_name_id: number;
    title: string | null;
    price: number | null;
    type: number | null;
    uuid: string;
    created_at: string;
    updated_at: string;
    descriptions: string[] | null;
    pivot: ProductPivot;
    package_name: PackageName | null;
}

export interface ProductPivot {
    user_id: number;
    product_id: number;
    expire_at: string | null;
    purchase_token: string | null;
    gateway: string | null;
    created_at: string;
    updated_at: string;
}

export interface PackageName {
    id: number;
    name: string | null;
    title: string | null;
    image: string | null;
    v1_identifier: string | null;
    uuid: string;
    created_at: string;
    updated_at: string;
    cafe_config_id: string | null;
    myket_access_token: string | null;
    web_app_url: string | null;
    tries: number | null;
}

export interface Product {
    id: number;
    title: string | null;
    price: number | null;
    type: number | null;
    descriptions: string[] | null;
}

export interface UserSearchParams {
    searchTerm: string;
    package_name: string;
}

export interface ApiResponse<T> {
    data: T;
    message?: string | null;
    status?: number | null;
}