import type { z } from 'zod';
import { ApiBase } from '../../base/apiBase';
import { WvWAbilitiesDTO, WvWMatchesDTO, WvWObjectivesDTO, WvWRanksDTO, WvWUpgradesDTO } from '../../models';
import { numberArrayType, stringArrayType } from '../v2apiUtils';
/**
 * /v2/wvw Api
 */
export declare class WorldVsWorldApi extends ApiBase {
    /**
     * Returns information about the available abilities in the World versus World game mode.
     */
    getAbilities(): Promise<z.infer<typeof numberArrayType>>;
    /**
     * Returns information about the available abilities in the World versus World game mode.
     *
     * @param ids - List of WvW ability ids
     */
    getAbilities(ids: number[] | 'all'): Promise<z.infer<typeof WvWAbilitiesDTO>>;
    /**
     * Returns information about which guild is associated with which region and matchmaking team for WvW.
     *
     * @param region - "na" or "eu"
     */
    getGuilds(region: 'na' | 'eu'): Promise<Record<string, string>>;
    /**
     * Returns further details about the specified match, including the total score, kills and deaths, and further details for each map.
     */
    getMatches(): Promise<z.infer<typeof stringArrayType>>;
    /**
     * Returns further details about the specified match, including the total score, kills and deaths, and further details for each map.
     *
     * @param ids - List of match ids, or "all"
     */
    getMatches(ids: Array<`${number}-${number}`> | 'all'): Promise<z.infer<typeof WvWMatchesDTO>>;
    /**
     * Returns specific details pertaining to guilds in the current selected matchup.
     * For match stats by world, use {@link WorldVsWorldApi#getMatchesByWorld} with the "stats" type.
     *
     * @deprecated Does not seem to return any data, after the WvW Alliance update. Use {@link WorldVsWorldApi#getMatches}
     *
     * @param id - Match id
     * @param team - "red", "blue", or "green"
     * @param filter - "kills" or "kdr"
     */
    getMatchStats(id: `${number}-${number}`, team: 'red' | 'blue' | 'green', filter: 'kills' | 'kdr'): Promise<{
        guild_id: string;
        deaths: {
            red: number;
            blue: number;
            green: number;
        };
        kills: {
            red: number;
            blue: number;
            green: number;
        };
        wilson?: number | undefined;
    }[]>;
    /**
     * Returns further details about the specified match, including the total score, kills and deaths, and further details for each map.
     * The same information as {@link WorldVsWorldApi#getMatches}, however more limited.
     *
     * @param type - Overview, Scores, or Stats for the matches
     * @param world - World id
     */
    getMatchesByWorld(type: 'overview' | 'scores' | 'stats', world: number): Promise<{
        id: string;
        worlds: {
            red: number;
            blue: number;
            green: number;
        };
        all_worlds: Record<"red" | "blue" | "green", number[]>;
        start_time: string;
        end_time: string;
    } | {
        id: string;
        scores: {
            red: number;
            blue: number;
            green: number;
        };
        maps: {
            id: number;
            type: string;
            scores: {
                red: number;
                blue: number;
                green: number;
            };
        }[];
        skirmishes: {
            id: number;
            scores: {
                red: number;
                blue: number;
                green: number;
            };
            map_scores: {
                type: "BlueHome" | "Center" | "GreenHome" | "RedHome";
                scores: {
                    red: number;
                    blue: number;
                    green: number;
                };
            }[];
        }[];
    } | {
        id: string;
        deaths: {
            red: number;
            blue: number;
            green: number;
        };
        kills: {
            red: number;
            blue: number;
            green: number;
        };
        maps: {
            id: number;
            type: string;
            deaths: {
                red: number;
                blue: number;
                green: number;
            };
        }[];
    }>;
    /**
     * Returns details about World vs. World objectives such as camps, towers, and keeps.
     */
    getObjectives(): Promise<z.infer<typeof stringArrayType>>;
    /**
     * Returns details about World vs. World objectives such as camps, towers, and keeps.
     *
     * @param ids - Objective ids, or "all"
     */
    getObjectives(ids: Array<`${number}-${number}`>): Promise<z.infer<typeof WvWObjectivesDTO>>;
    /**
     * Returns information about the available ranks in the World versus World game mode.
     */
    getRanks(): Promise<z.infer<typeof numberArrayType>>;
    /**
     * Returns information about the available ranks in the World versus World game mode.
     *
     * @param ids - List of WvW rank ids, or "all"
     */
    getRanks(ids: number[] | 'all'): Promise<z.infer<typeof WvWRanksDTO>>;
    /**
     * Returns time/date information about when team assignment changes.
     *
     * @param type - "lockout" or "teamAssignment"
     */
    getTimers(type: 'lockout' | 'teamAssignment'): Promise<Record<string, string>>;
    /**
     * Returns details about available World vs. World upgrades for objectives such as camps, towers, and keeps.
     */
    getUpgrades(): Promise<z.infer<typeof numberArrayType>>;
    /**
     * Returns details about available World vs. World upgrades for objectives such as camps, towers, and keeps.
     *
     * @param ids - List of WvW upgrades, or "all"
     */
    getUpgrades(ids: number[] | 'all'): Promise<z.infer<typeof WvWUpgradesDTO>>;
}
