export type PlayerAssetType = 'skin' | 'room_decor';

export interface PlayerAsset {
  asset_type: PlayerAssetType;
  asset_id: string;
  source?: string;
}

export interface PlayerInventoryPayload {
  assets: PlayerAsset[];
  skin_ids: string[];
  room_decor_ids: string[];
}

export interface PlayerWalletPayload {
  user_id: string;
  balance: number;
  currency: 'whale_coin';
}

export interface PlayerSnapshotPayload {
  user: {
    id: string;
    username: string;
    nickname: string;
    email?: string;
    phone?: string;
    avatar_url?: string;
    avatar_base64?: string;
    role: number;
    created_at: Date;
  };
  profile: {
    user_id: string;
    selected_skin_id: string;
    avatar_id: string;
    avatar_url?: string;
    avatar_base64?: string;
    current_map: string;
    pos_x: number;
    pos_y: number;
    status: number;
  };
  wallet: PlayerWalletPayload;
  inventory: PlayerInventoryPayload;
  appearance: {
    selected_skin_id: string;
    owned_skin_ids: string[];
    owned_skins: unknown[];
  };
  settings: Record<string, boolean | number | string>;
}
