content: /*
   * Copyright 2007 Yusuke Yamamoto
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package twitter4j;
  
  import java.util.Date;
  
  /**
   * A data interface representing Basic user information element
   *
   * @author Yusuke Yamamoto - yusuke at mac.com
   */
  public interface User extends Comparable<User>, TwitterResponse, java.io.Serializable {
      /**
       * Returns the id of the user
       *
       * @return the id of the user
       */
      long getId();
  
      /**
       * Returns the name of the user
       *
       * @return the name of the user
       */
      String getName();
      
      /**
       * Returns the email of the user, if the app is whitelisted by Twitter
       *
       * @return the email of the user
       */
      String getEmail();
  
      /**
       * Returns the screen name of the user
       *
       * @return the screen name of the user
       */
      String getScreenName();
  
      /**
       * Returns the location of the user
       *
       * @return the location of the user
       */
      String getLocation();
  
      /**
       * Returns the description of the user
       *
       * @return the description of the user
       */
      String getDescription();
  
      /**
       * Tests if the user is enabling contributors
       *
       * @return if the user is enabling contributors
       * @since Twitter4J 2.1.2
       */
      boolean isContributorsEnabled();
  
      /**
       * Returns the profile image url of the user
       *
       * @return the profile image url of the user
       */
      String getProfileImageURL();
  
      String getBiggerProfileImageURL();
  
      String getMiniProfileImageURL();
  
      String getOriginalProfileImageURL();
  
      /**
       * @since Twitter4J 4.0.7
       * @return profile image url
       */
      String get400x400ProfileImageURL();
  
      String getProfileImageURLHttps();
  
      String getBiggerProfileImageURLHttps();
  
      String getMiniProfileImageURLHttps();
  
      String getOriginalProfileImageURLHttps();
  
      /**
       * @since Twitter4J 4.0.7
       * @return profile image url
       */
      String get400x400ProfileImageURLHttps();
  
      /**
       * Tests if the user has not uploaded their own avatar
       *
       * @return if the user has not uploaded their own avatar
       */
      boolean isDefaultProfileImage();
  
      /**
       * Returns the url of the user
       *
       * @return the url of the user
       */
      String getURL();
  
      /**
       * Test if the user status is protected
       *
       * @return true if the user status is protected
       */
      boolean isProtected();
  
      /**
       * Returns the number of followers
       *
       * @return the number of followers
       * @since Twitter4J 1.0.4
       */
      int getFollowersCount();
  
      /**
       * Returns the current status of the user<br>
       * This can be null if the instance if from Status.getUser().
       *
       * @return current status of the user
       * @since Twitter4J 2.1.1
       */
      Status getStatus();
  
      String getProfileBackgroundColor();
  
      String getProfileTextColor();
  
      String getProfileLinkColor();
  
      String getProfileSidebarFillColor();
  
      String getProfileSidebarBorderColor();
  
      boolean isProfileUseBackgroundImage();
  
      /**
       * Tests if the user has not altered the theme or background
       *
       * @return if the user has not altered the theme or background
       */
      boolean isDefaultProfile();
  
      boolean isShowAllInlineMedia();
  
      /**
       * Returns the number of users the user follows (AKA "followings")
       *
       * @return the number of users the user follows
       */
      int getFriendsCount();
  
      Date getCreatedAt();
  
      int getFavouritesCount();
  
      int getUtcOffset();
  
      String getTimeZone();
  
      String getProfileBackgroundImageURL();
  
      String getProfileBackgroundImageUrlHttps();
  
      /**
       * @since Twitter4J 3.0.0
       * @return profile banner URL
       */
      String getProfileBannerURL();
  
      /**
       * @since Twitter4J 3.0.0
       * @return profile banner retina URL
       */
      String getProfileBannerRetinaURL();
  
      /**
       * @since Twitter4J 3.0.0
       * @return profile banner iPad URL
       */
      String getProfileBannerIPadURL();
  
      /**
       * @since Twitter4J 3.0.0
       * @return profile banner iPad retina URL
       */
      String getProfileBannerIPadRetinaURL();
  
      /**
       * @since Twitter4J 3.0.0
       * @return profile banner mobile URL
       */
      String getProfileBannerMobileURL();
  
      /**
       * @since Twitter4J 3.0.0
       * @return profile banner mobile retina URL
       */
      String getProfileBannerMobileRetinaURL();
  
      /**
       * @since Twitter4J 4.0.7
       * @return profile banner 300x100 URL
       */
      String getProfileBanner300x100URL();
  
      /**
       * @since Twitter4J 4.0.7
       * @return profile banner 600x200 URL
       */
      String getProfileBanner600x200URL();
  
      /**
       * @since Twitter4J 4.0.7
       * @return profile banner 1500x500 URL
       */
      String getProfileBanner1500x500URL();
  
      boolean isProfileBackgroundTiled();
  
      /**
       * Returns the preferred language of the user
       *
       * @return the preferred language of the user
       * @since Twitter4J 2.1.2
       */
      String getLang();
  
      int getStatusesCount();
  
      /**
       * @return the user is enabling geo location
       * @since Twitter4J 2.0.10
       */
      boolean isGeoEnabled();
  
      /**
       * @return returns true if the user is a verified celebrity
       * @since Twitter4J 2.0.10
       */
      boolean isVerified();
  
      /**
       * @return returns true if the user is a translator
       * @since Twitter4J 2.1.9
       */
      boolean isTranslator();
  
      /**
       * Returns the number of public lists the user is listed on, or -1
       * if the count is unavailable.
       *
       * @return the number of public lists the user is listed on.
       * @since Twitter4J 2.1.4
       */
      int getListedCount();
  
      /**
       * Returns true if the authenticating user has requested to follow this user,
       * otherwise false.
       *
       * @return true if the authenticating user has requested to follow this user.
       * @since Twitter4J 2.1.4
       */
      boolean isFollowRequestSent();
  
      /**
       * Returns URL entities for user description.
       *
       * @return URL entities for user description
       * @since Twitter4J 3.0.3
       */
      URLEntity[] getDescriptionURLEntities();
  
      /**
       * Returns URL entity for user's URL.
       *
       * @return URL entity for user's URL.
       * @since Twitter4J 3.0.3
       */
      URLEntity getURLEntity();
  
      /**
       *  Returns the list of country codes where the user is withheld
       *
       *  @return list of country codes where the tweet is withheld - null if not withheld
       *  @since Twitter4j 4.0.3
       */
      String[] getWithheldInCountries();
  
  }
  