import type { Cloud, CloudType, Profile, UserCollection } from '@/types/database' export interface AuthUser { id: string email: string email_verified: boolean created_at: string } export interface AuthResponse { access_token: string token_type: 'bearer' expires_in: number user: AuthUser profile: Profile } export interface MeResponse { user: AuthUser profile: Profile } export interface PublicProfile { id: string username: string avatar_url: string | null created_at: string } export interface ApiPage { items: T[] page: number page_size: number total: number total_pages: number } export interface ApiCloudTypeSummary { id: number name: string name_en: string rarity: CloudType['rarity'] } export interface ApiCloudOwner { id: string username: string } export interface ApiCloud extends Cloud { updated_at: string cloud_type: ApiCloudTypeSummary | null owner: ApiCloudOwner | null cloud_type_name: string | null cloud_type_rarity: CloudType['rarity'] | null username: string | null } export interface ApiCollection extends UserCollection { cloud_type: ApiCloudTypeSummary first_cloud: Pick< ApiCloud, 'id' | 'image_url' | 'thumbnail_url' | 'captured_at' | 'created_at' | 'location_name' > | null } export interface UnlockedBadge { cloud_type_id: number cloud_name: string cloud_name_en: string rarity: CloudType['rarity'] unlocked_at: string } export interface CloudCreateResponse { cloud: ApiCloud unlocked_badge: UnlockedBadge | null } export interface AdminStats { users: number images: number today_uploads: number pending: number approved: number rejected: number hidden: number } export interface AdminUserItem { user: AuthUser profile: Profile }