/*
 * SK's Minecraft Launcher
 * Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors
 * Please see LICENSE.txt for license information.
 */

package com.skcraft.launcher.auth;

import java.util.Map;

/**
 * Represents an authenticated (or virtual) session.
 */
public interface Session {

    /**
     * Get the user's UUID.
     *
     * @return the user's UUID
     */
    String getUuid();

    /**
     * Get the user's game username.
     *
     * @return the username
     */
    String getName();

    /**
     * Get the client token.
     *
     * @return client token
     */
    String getClientToken();

    /**
     * Get the access token.
     *
     * @return the access token
     */
    String getAccessToken();

    /**
     * Get a map of user properties.
     *
     * @return the map of user properties
     */
    Map<String, String> getUserProperties();

    /**
     * Get the session token string, which is in the form of
     * <code>token:accessToken:uuid</code> for authenticated players, and
     * simply <code>-</code> for offline players.
     *
     * @return the session token
     */
    String getSessionToken();

    /**
     * Get the user type.
     *
     * @return the user type
     */
    UserType getUserType();

}
