export interface User {
    id: string;
    account: string;
    username: string;
    avatar_store_url: string | null;
    is_admin: boolean;
    access_token: string
    nickname?: string
    email: string
    user_id?: string
    refresh_token?: string
    avatar_file_url?: string
}

interface UserCountData {
    video_count: number,
    photo_count: number,
    live_count: number,
    video_length: number,
    cover_url: string | null
}
export interface CountData {
    used_bytes: number;
    total_bytes: number;
    counter: {
        user_id: number;
        total_count: UserCountData,
        category_count: {
            [key: string]: UserCountData
        }
    }
}

interface Counter {
    user_id: number,
    total_count: UserCountData,
    category_count: {
        [key: string]: UserCountData
    }
}
export interface TitleRankings {
    display_name: string,
    ranking: number,
    value: number,
    material_type: string,
    user_id: string,
    region: string
}
export interface UserInfoDetails {
    material_counter: Counter,
    user_info: User,
    stories_count: number,
    conversations_count: number,
    remain_points: number,
    total_points: number,
    title_rankings: TitleRankings[],
    medal_infos: {
        "id": number,
        "url": string
    }[],
    membership_level: string
}


export type SourceItem = {
    id: number;
    name: string;
    display_name: string;
    statistical_granularity: 'Count' | 'Duration';
};

export type GroupedData = {
    [key: string]: SourceItem[];
};

export type TargetItem = {
    name: string;
    children: { name: string, value: number }[];
};

export type RankingItem = {
    display_name: string
    material_type: string
    ranking: number
    region: string
    user_avatar_url: string
    user_id: string
    value: number
    user_nick_name: string
}

export interface Address {
    city: string;
    country: string;
    district: string;
    formattedAddress: string;
    isoCountryCode: string;
    name: string;
    postalCode: string | null;
    region: string;
    street: string;
    streetNumber: string;
    subregion: string | null;
    timezone: string | null;
}