import type { AdminUserDto } from "./admin-user.dto.js"
import type { ShopUserDetailDto } from "./shop-user.dto.js"
import type { ShopListItemDto } from "./shop.dto.js"

export interface AdminLoginResponse {
    accessToken: string
    refreshToken: string
    user: AdminUserDto
}

export interface ShopUserLoginResponse {
    accessToken: string
    refreshToken: string
    shopUser: ShopUserDetailDto
}

/**
 * Réponse du POST /auth/pos/login (email + password).
 *
 * - Si l'utilisateur n'a qu'un seul shop → `status: "authenticated"`, tokens + shopUser inclus.
 * - Si l'utilisateur a plusieurs shops → `status: "select_shop"`, sessionToken + shops.
 */
export type PosLoginResponse =
    | {
        status: "authenticated"
        accessToken: string
        refreshToken: string
        shopUser: ShopUserDetailDto
    }
    | {
        status: "select_shop"
        sessionToken: string
        shops: ShopListItemDto[]
    }

/**
 * Réponse du GET /auth/pos/me — profil complet du ShopUser connecté
 * pour le shop indiqué dans le header X-Shop-Id.
 */
export interface PosProfileResponse {
    shopUser: ShopUserDetailDto
    /** Tous les shops auxquels cet email est rattaché (pour le switch) */
    availableShops: ShopListItemDto[]
}

/**
 * Réponse du POST /auth/pos/switch-shop — profil du ShopUser sur le nouveau shop.
 * Pas besoin de nouveau JWT (il est shop-agnostic).
 */
export interface SwitchShopResponse {
    shopUser: ShopUserDetailDto
}

