import type { z } from 'zod';
import { ApiBase } from '../../base/apiBase';
import { GuildPermissionsDTO } from '../../models';
import { stringArrayType } from '../v2apiUtils';
/**
 * /v2/guild Api
 */
export declare class GuildApi extends ApiBase {
    /**
     * Returns core details about a given guild.
     * The end point will include more or less fields depend on whether an API Key of a Leader or
     * Member of the Guild with the guilds scope is included in the request.
     *
     * @param id - The guild id
     */
    get(id: string): Promise<{
        id: string;
        name: string;
        tag: string;
        emblem?: {
            background: {
                id: number;
                colors: number[];
            };
            foreground: {
                id: number;
                colors: number[];
            };
            flags: ("FlipBackgroundHorizontal" | "FlipBackgroundVertical" | "FlipForegroundHorizontal" | "FlipForegroundVertical")[];
        } | undefined;
        level?: number | undefined;
        motd?: string | undefined;
        influence?: number | undefined;
        aetherium?: string | undefined;
        favor?: number | undefined;
        member_count?: number | undefined;
        member_capacity?: number | undefined;
    }>;
    /**
     * Returns information about certain events in a guild's log.
     * The endpoint requires the scope guilds, and will only work if the API key is from the guild leader's account.
     *
     * @param id - Unique guild id
     * @param since - Starting point for the log, by log id
     */
    getLog(id: string, since?: number): Promise<({
        id: number;
        time: string;
    } | {
        type: "joined";
        user: string;
        id: number;
        time: string;
    } | {
        type: "invited";
        user: string;
        invited_by: string;
        id: number;
        time: string;
    } | {
        type: "kick";
        user: string;
        kicked_by: string;
        id: number;
        time: string;
    } | {
        type: "rank_change";
        user: string;
        old_rank: string;
        new_rank: string;
        id: number;
        time: string;
        changed_by?: string | undefined;
    } | {
        type: "stash";
        operation: "deposit" | "withdraw" | "move";
        item_id: number;
        count: number;
        coins: number;
        id: number;
        time: string;
    } | {
        type: "motd";
        user: string;
        motd: string;
        id: number;
        time: string;
    } | {
        type: "upgrade";
        action: "queued" | "cancelled" | "completed" | "sped_up";
        upgrade_id: number;
        id: number;
        time: string;
        count?: number | undefined;
        recipe_id?: number | undefined;
    })[]>;
    /**
     * Returns information about the members of a specified guild.
     * The endpoint requires the scope guilds, and will only work if the API key is from the guild leader's account.
     *
     * @param id - Unique guild id
     */
    getMembers(id: string): Promise<{
        name: string;
        rank: string;
        joined: string | null;
    }[]>;
    /**
     * Returns information about the ranks of a specified guild.
     * The endpoint requires the scope guilds, and will only work if the API key is from the guild leader's account.
     *
     * @param id - Unique guild id
     */
    getRanks(id: string): Promise<{
        id: string;
        order: number;
        permissions: string[];
        icon: string;
    }[]>;
    /**
     * Returns information about the items in a guild's vault.
     * The endpoint requires the scope guilds, and will only work if the API key is from the guild leader's account.
     *
     * @param id - Unique guild id
     */
    getStash(id: string): Promise<{
        upgrade_id: number;
        size: number;
        coins: number;
        note: string;
        inventory: ({
            id: number;
            count: number;
        } | null)[];
    }[]>;
    /**
     * Returns information about the items in a guild's storage.
     * The endpoint requires the scope guilds, and will only work if the API key is from the guild leader's account.
     *
     * @param id - Unique guild id
     */
    getStorage(id: string): Promise<{
        id: number;
        count: number;
    }[]>;
    /**
     * Returns information about the teams in a guild.
     * The endpoint requires the scope guilds, and will only work if the API key is from the guild leader's account.
     *
     * @param id - Unique guild id
     */
    getTeams(id: string): Promise<{
        id: number;
        members: {
            name: string;
            role: "Member" | "Captain";
        }[];
        name: string;
        aggregate: {
            wins: number;
            losses: number;
            desertions: number;
            byes: number;
            forfeits: number;
        };
        ladders: {
            ranked?: {
                wins: number;
                losses: number;
                desertions: number;
                byes: number;
                forfeits: number;
            } | undefined;
            unranked?: {
                wins: number;
                losses: number;
                desertions: number;
                byes: number;
                forfeits: number;
            } | undefined;
        };
        games: {
            id: string;
            map_id: string;
            started: string;
            ended: string;
            team: string;
            scores: {
                red: number;
                blue: number;
            };
            rating_type: "Ranked" | "Unranked" | "None";
            rating_change: number;
            season?: string | undefined;
        }[];
        seasons?: {
            id: string;
            wins: number;
            losses: number;
            rating: number;
        }[] | undefined;
    }[]>;
    /**
     * Returns information about the items in a guild's treasury.
     * The endpoint requires the scope guilds, and will only work if the API key is from the guild leader's account.
     *
     * @param id - Unique guild id
     */
    getTreasury(id: string): Promise<{
        item_id: number;
        count: number;
        needed_by: {
            upgrade_id: number;
            count: number;
        }[];
    }[]>;
    /**
     * Returns information about the guild's upgrades.
     * The endpoint requires the scope guilds, and will only work if the API key is from the guild leader's account.
     *
     * @param id - Unique guild id
     */
    getUpgrades(id: string): Promise<number[]>;
    /**
     * Returns information about all guild permissions.
     */
    getPermissions(): Promise<z.infer<typeof stringArrayType>>;
    /**
     * Returns information about all guild permissions.
     *
     * @param ids - Permission ids
     */
    getPermissions(ids: string[]): Promise<z.infer<typeof GuildPermissionsDTO>>;
    /**
     * Returns information on guild ids to be used for other API queries.
     *
     * @param name - Guild name
     */
    find(name: string): Promise<string[]>;
    /**
     * Returns information about all available Guild Hall upgrades, including scribe decorations.
     *
     * @param ids - Guild upgrade ids
     */
    upgradeInfo(ids: number[]): Promise<({
        id: number;
        name: string;
        description: string;
        icon: string;
        build_time: number;
        required_level: number;
        experience: number;
        prerequisites: number[];
        costs: ({
            type: "Item";
            name: string;
            count: number;
            item_id?: number | undefined;
        } | {
            type: "Collectible";
            name: string;
            count: number;
            item_id?: number | undefined;
        } | {
            type: "Currency";
            name: string;
            count: number;
        } | {
            type: "Coins";
            count: number;
        })[];
    } & ({
        type: "AccumulatingCurrency";
    } | {
        type: "Boost";
    } | {
        type: "Claimable";
    } | {
        type: "Consumable";
    } | {
        type: "Decoration";
    } | {
        type: "GuildHall";
    } | {
        type: "GuildHallExpedition";
    } | {
        type: "Hub";
    } | {
        type: "Queue";
    } | {
        type: "Unlock";
    } | {
        type: "BankBag";
        bag_max_items?: number | undefined;
        bag_max_coins?: number | undefined;
    }))[]>;
}
