type TrackerPlatformInfo = {
    platformSlug: string;
    platformUserId: string;
    platformUserHandle: string;
    platformUserIdentifier: string;
    avatarUrl: string;
};
type TrackerUserInfo = {
    userId: number;
    isPremium: boolean;
    isVerified: boolean;
    isInfluencer: boolean;
    isPartner: boolean;
    countryCode: string | null;
    customAvatarUrl: string | null;
    socialAccounts: any[];
    pageviews: number;
};
type TrackerMetadata = {
    lastUpdated: {
        value: string;
        displayValue: string;
    };
    level: number;
    currentSeason: number;
    defaultSeason: number;
    gamemodes: Array<{
        id: string;
        name: string;
    }>;
    seasons: Array<{
        id: number;
        name: string;
        shortName: string;
    }>;
};
type SegmentStat = {
    rank: number | null;
    displayName: string;
    category: string;
    value: number | string | SegmentStat[];
    displayValue: string;
    displayType: string;
    metadata: {
        unit?: string;
        iconUrl?: string;
        tierName?: string;
        tierShortName?: string;
        color?: string;
        season?: number;
        seasonName?: string;
        seasonShortName?: string;
    };
};
type SegmentGameStats = {
    [key: string]: SegmentStat;
};
type Segments = {
    type: 'overview' | 'hero' | 'hero-role' | 'ranked-peaks';
    attributes: {
        season?: number;
        mode?: string;
        heroId?: number;
        roleId?: string;
    };
    metadata?: {
        name?: string;
        imageUrl?: string;
        roleName?: string;
        color?: string;
    };
    stats: SegmentGameStats;
    expiryDate: string;
};
type TrackerResponse = {
    data: {
        platformInfo: TrackerPlatformInfo;
        userInfo: TrackerUserInfo;
        metadata: TrackerMetadata;
        segments: Segments[];
        expiryDate: string;
    };
    errors?: {
        message: string;
    }[];
};

type BaseOptions = {
    raw?: boolean;
};
type FetchUserOptions = {
    flaresolverrUrl?: string;
    useCurl?: boolean;
};
type RoleType = 'Strategist' | 'Duelist' | 'Vanguard';
type HeroStats = {
    timePlayed: number;
    timePlayedWon: number;
    matchesPlayed: number;
    matchesWon: number;
    matchesWinPct: number;
    kills: number;
    deaths: number;
    assists: number;
    kdRatio: number;
    kdaRatio: number;
    totalHeroDamage: number;
    totalHeroDamagePerMinute: number;
    totalHeroHeal: number;
    totalHeroHealPerMinute: number;
    totalDamageTaken: number;
    totalDamageTakenPerMinute: number;
    lastKills: number;
    headKills: number;
    soloKills: number;
    survivalKills: number;
    continueKills: number;
    continueKills3: number;
    continueKills4: number;
    continueKills5: number;
    continueKills6: number;
    mainAttacks: number;
    mainAttackHits: number;
    shieldHits: number;
    summonerHits: number;
    chaosHits: number;
    totalMvp: number;
    totalSvp: number;
};
type OverviewStats = HeroStats & {
    featureNormalData1?: number;
    featureNormalData2?: number;
    featureNormalData3?: number;
    featureCriticalRate1CritHits?: number;
    featureCriticalRate1Hits?: number;
    featureHitRate1UseCount?: number;
    featureHitRate1HeroHits?: number;
    featureHitRate1EnemyHits?: number;
    featureHitRate1ShieldHits?: number;
    featureHitRate1SummonerHits?: number;
};
type RoleStats = {
    [K in RoleType]: HeroStats;
};
type HeroesStats = {
    [hero: string]: OverviewStats;
};
type GameMode = {
    id: string;
    name: string;
};
type Season = {
    id: number;
    name: string;
    shortName: string;
};
type MetadataInfo = {
    lastUpdated: {
        value: string;
        displayValue: string;
    };
    level: number;
    currentSeason: number;
    defaultSeason: number;
    gamemodes: GameMode[];
    seasons: Season[];
};
type UserInfo = {
    platform: string;
    uuid: string;
    name: string;
    userid: string;
    avatar: string;
    pageViews: number;
    rank: string;
    peakRank: string;
    metadata?: MetadataInfo;
};

declare class API {
    username: string;
    _raw: TrackerResponse;
    constructor(username: string);
    static fetchUser(username: string, options?: FetchUserOptions): Promise<API>;
    overview(options?: BaseOptions): OverviewStats;
    heroes(): HeroesStats;
    roles(): RoleStats;
    peakRank(): {
        peakTiers: {
            displayName: string;
            tierName: string;
            tierShortName: string;
            tierIcon: string;
            tierColor: string;
            season: string;
            seasonName: string;
            mmr: number;
        }[];
        lifetimePeakRanked: {
            displayName: string;
            tierName: string;
            tierShortName: string;
            tierIcon: string;
            tierColor: string;
            season: string;
            seasonName: string;
            mmr: number;
        };
    };
    info(): UserInfo;
    raw(): TrackerResponse;
}

export { API };
