<?php

namespace Khatfield\Tautulli\Facades;

use Illuminate\Support\Facades\Facade;
use Khatfield\Tautulli\TautulliClient;

/**
 * @method static mixed              command(string $cmd, array $params = [])
 * @method static \Khatfield\Tautulli\PaginatedResponse paginate(string $cmd, int $start = 0, int $length = 25, array $params = [])
 * @method static \Illuminate\Support\Collection      paginateAll(string $cmd, array $params = [], int $length = 100)
 *
 * @method static array                                getActivity(?int $sessionKey = null, ?string $sessionId = null)
 * @method static \Khatfield\Tautulli\PaginatedResponse  getHistory(int $start = 0, int $length = 25, array $filters = [])
 * @method static \Illuminate\Support\Collection       getAllHistory(array $filters = [])
 * @method static array                                getRecentlyAdded(int $count = 25, int $start = 0, ?string $mediaType = null, ?string $sectionId = null)
 *
 * @method static \Illuminate\Support\Collection       getLibraries()
 * @method static \Khatfield\Tautulli\PaginatedResponse  getLibrariesTable(int $start = 0, int $length = 25, array $params = [])
 * @method static array                                getLibrary(string $sectionId, bool $includeLastAccessed = false)
 * @method static \Khatfield\Tautulli\PaginatedResponse  getLibraryMediaInfo(string $sectionIdOrRatingKey, bool $isSectionId = true, int $start = 0, int $length = 25, array $params = [])
 * @method static \Illuminate\Support\Collection       getLibraryWatchTimeStats(string $sectionId, array $params = [])
 * @method static \Illuminate\Support\Collection       getLibraryUserStats(string $sectionId, int $grouping = 0)
 *
 * @method static \Illuminate\Support\Collection       getUsers()
 * @method static \Khatfield\Tautulli\PaginatedResponse  getUsersTable(int $start = 0, int $length = 25, array $params = [])
 * @method static array                                getUser(string $userId, bool $includeLastSeen = false)
 * @method static \Khatfield\Tautulli\PaginatedResponse  getUserIps(string $userId, int $start = 0, int $length = 25, array $params = [])
 * @method static \Illuminate\Support\Collection       getUserWatchTimeStats(string $userId, array $params = [])
 * @method static \Illuminate\Support\Collection       getUserPlayerStats(string $userId, int $grouping = 0)
 *
 * @method static array                                getMetadata(string $ratingKey)
 * @method static array                                getChildrenMetadata(string $ratingKey, string $mediaType)
 *
 * @method static \Illuminate\Support\Collection       getHomeStats(array $params = [])
 * @method static array                                getPlaysByDate(array $params = [])
 * @method static array                                getPlaysByDayOfWeek(array $params = [])
 * @method static array                                getPlaysByHourOfDay(array $params = [])
 * @method static array                                getPlaysByMonth(array $params = [])
 * @method static array                                getPlaysByTop10Platforms(array $params = [])
 * @method static array                                getPlaysByTop10Users(array $params = [])
 *
 * @method static array                                getTautulliInfo()
 * @method static array                                getServerInfo()
 * @method static string                               getServerFriendlyName()
 * @method static array                                getPmsUpdate()
 *
 * @method static \Illuminate\Support\Collection       getNotifiers(?string $notifyAction = null)
 * @method static \Khatfield\Tautulli\PaginatedResponse  getNotificationLog(int $start = 0, int $length = 25, array $params = [])
 * @method static array                                notify(int $notifierId, string $subject, string $body, array $extra = [])
 *
 * @method static array                                getGeoipLookup(string $ipAddress)
 * @method static array                                getLogs(int $start = 0, int $end = 25, array $params = [])
 * @method static array                                getStreamData(int $rowIdOrSessionKey, bool $isSessionKey = false)
 * @method static array                                getDateFormats()
 * @method static void                                 refreshLibrariesList()
 * @method static void                                 refreshUsersList()
 * @method static void                                 backupConfig()
 * @method static void                                 backupDb()
 *
 * @see \Khatfield\Tautulli\TautulliClient
 */
class Tautulli extends Facade
{
    protected static function getFacadeAccessor(): string
    {
        return TautulliClient::class;
    }
}
