export type GameAvatarProvider = 'dicebear'; export type GameAvatarStyle = 'botttsNeutral' | 'funEmoji' | 'initials' | 'pixelArt' | 'shapes'; export type GameAvatarSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge'; export type GameAvatarShape = 'circle' | 'square'; export interface GameAvatarMetadata { provider?: GameAvatarProvider; style?: GameAvatarStyle; seed: string; backgroundColor?: string; size?: GameAvatarSize; shape?: GameAvatarShape; bordered?: boolean; grayscale?: boolean; ariaLabel?: string; cssClass?: string; /** * URL del PNG rasterizado (`GameProfileService.uploadAvatar`), para superficies * que no pueden ejecutar código y renderizar el SVG en runtime (correo, Open * Graph). El componente `` NUNCA la usa — siempre rasteriza * en vivo desde `style`+`seed`+`backgroundColor` vía `gameAvatarDataUri`. */ url?: string; } export interface GameAvatarCatalog { gameId: string; allowedStyles: GameAvatarStyle[]; allowedBackgrounds: string[]; defaultStyle: GameAvatarStyle; } export interface GameProfile { handleId: string; displayName?: string; avatar: GameAvatarMetadata; createdAt?: string; updatedAt?: string; }