import { AccessToken, ClientKey, ImgurCredentials, SanityCredentials, Credentials, BikeTagCredentials, Payload, BikeTagConfiguration, gameLongestTimeBetweenTagsData, PlayerStreakData, StreakData, GameHighestNumberTagsPerNumberDaysData, PlayerHighestNumberTagsPerDayData } from './types';
import { default as FormData } from 'form-data';
import { default as TinyCache } from 'tinycache';
import { Tag, Game, Player, Ambassador, Setting, Achievement, Stat } from './schema';
import { ApiAvailability } from './enums';
export declare const putCacheIfExists: (key: string, value: any, cache?: typeof TinyCache) => void;
export declare const getCacheIfExists: (key: string, cache?: typeof TinyCache) => any;
export declare const isImageUrl: (payload: string | Payload) => boolean;
export declare const createForm: (payload: string | Payload) => FormData;
export declare const hasAccessToken: (arg: unknown) => arg is AccessToken;
export declare const hasClientKey: (arg: unknown) => arg is ClientKey;
export declare const constructTagNumberSlug: (number: number, game?: string) => string;
export declare const isImgurCredentials: (credentials: ImgurCredentials) => boolean;
export declare const isImgurApiReady: (credentials: ImgurCredentials) => ApiAvailability;
export declare const isSanityCredentials: (credentials: SanityCredentials) => boolean;
export declare const isSanityApiReady: (credentials: SanityCredentials) => ApiAvailability;
export declare const isBikeTagCredentials: (credentials: BikeTagCredentials | Credentials) => boolean;
export declare const isBikeTagApiReady: (credentials: BikeTagCredentials | Credentials) => ApiAvailability;
export declare const isBikeTagConfiguration: (credentials: BikeTagConfiguration) => boolean;
export declare const createImgurCredentials: (credentials: Partial<ImgurCredentials>, defaults?: Partial<ImgurCredentials>) => ImgurCredentials;
export declare const assignImgurCredentials: (credentials: ImgurCredentials, defaults?: Partial<ImgurCredentials>) => ImgurCredentials;
export declare const createSanityCredentials: (credentials: Partial<SanityCredentials>, defaults?: Partial<SanityCredentials>) => SanityCredentials;
export declare const assignSanityCredentials: (credentials: SanityCredentials, defaults?: Partial<SanityCredentials>) => SanityCredentials;
export declare const createBikeTagCredentials: (credentials: Partial<BikeTagCredentials>, defaults?: Partial<BikeTagCredentials>) => BikeTagCredentials;
export declare const assignBikeTagCredentials: (credentials: Credentials, defaults?: Partial<Credentials>) => BikeTagCredentials;
export declare const assignBikeTagConfiguration: (config: BikeTagConfiguration, defaults?: Partial<BikeTagConfiguration>) => BikeTagConfiguration;
export declare const isBikeTagData: (biketag: Partial<Tag>) => boolean;
export declare const isGameData: (ambassador: Partial<Game>) => boolean;
export declare const isPlayerData: (player: Partial<Player>) => boolean;
export declare const isAmbassadorData: (ambassador: Partial<Ambassador>) => boolean;
export declare const isSettingData: (setting: Partial<Setting>) => boolean;
export declare const isAchievementData: (achievement: Partial<Achievement>) => boolean;
export declare const sortTags: (tags: Tag[], sort?: string, limit?: number, time?: string) => Tag[];
export declare const sortPlayers: (players: Player[], sort?: string, limit?: number) => Player[];
export declare const sortAmbassadors: (ambassadors: Ambassador[], sort?: string, limit?: number) => Ambassador[];
export declare const sortSettings: (settings: Setting[], sort?: string, limit?: number) => Setting[];
export declare const sortStats: (stats: Stat[], sort?: string, limit?: number) => Stat[];
export declare const sortAchievements: (achievements: Achievement[], sort?: string, limit?: number) => Achievement[];
export declare const getGameAlbumFromCache: (gameAlbumHash: string, cache?: typeof TinyCache, fallback?: any, useCache?: boolean) => Promise<any>;
export declare const getTagDate: (time: number) => Date;
export declare const getTagDateISOPlusOffset: (time: number, offset?: string) => string;
export declare const convertMiliseconds: (miliseconds: number, format: string) => number | {
    d: number;
    h: number;
    m: number;
    s: number;
};
/**
 * Get the longest time between tags
 * @param tags The array of tags
 * @returns Time between tags data
 */
export declare const getLongestTimeBetweenTags: (tags: Tag[]) => gameLongestTimeBetweenTagsData;
/**
 * Get the players data with the longest daily tag streak
 * @param players The array of players
 * @returns Array of players data with longest streak of days tagged
 */
export declare const getPlayersWithLongestDailyTagStreakData: (players: Player[]) => PlayerStreakData[];
/**
 * Get the longest daily tag streak data
 * @param tags Tags to get longest streak of days with a tag data
 * @returns StreakData
 */
export declare const getTagLongestDailyStreakData: (tags: Tag[]) => StreakData;
/**
 * Get the unique tag dates
 * @param tags Tags to get unique tag dates
 * @returns Array of unique tag dates
 */
export declare const getUniqueTagDates: (tags: Tag[]) => Date[];
/**
 * Check if two date objects are on the same date
 * @param d1 Date 1
 * @param d2 Date 2
 * @returns True if dates are the same
 */
export declare const getIsSameDay: (d1: Date, d2: Date) => boolean;
/**
 * Get difference in days between two Dates
 * @param d1 Date 1
 * @param d2 Date 2
 * @returns Number of days betwteen two dates
 */
export declare const getDaysDifference: (d1: Date, d2: Date) => number;
/**
 * Check if two Dates are within a range of days
 * @param d1 Date 1
 * @param d2 Date 2
 * @param days Number of days to check for range
 * @returns Number of days betwteen two dates
 */
export declare const getIsWithinDaysRange: (d1: Date, d2: Date, days: number) => boolean;
/**
 * Get game highest number of tags in specified number of days
 * @param tags Tags to get highest number of tags in days data
 * @param days Number of days
 * @returns Highest number of tags per number of days data
 */
export declare const getGameHighestNumberTagsPerNumberDaysData: (tags: Tag[], days?: number) => GameHighestNumberTagsPerNumberDaysData;
/**
 * Get player's highest number of tags in one day data
 * @param player Player to get highest number of tags in one day data
 * @returns Highest number of tags per day data
 */
export declare const getPlayerHighestNumberTagsPerDayData: (player: Player) => PlayerHighestNumberTagsPerDayData;
/**
 * Get the players with the highest number of tags in one day data
 * @param players Players to get highest number of tags in one day data
 * @returns Count for highest number of tags in one day
 */
export declare const getPlayersWithHighestNumberTagsPerDayData: (players: Player[]) => PlayerHighestNumberTagsPerDayData[];
