import { AssetCacheManager } from '../client/AssetCacheManager';
import { ClientOption, TextMapLanguage } from '../types';
/**
 * Client events
 * @see {@link Client}
 */
export declare enum ClientEvents {
    /**
     * When the cache update starts, fires
     * @event BEGIN_UPDATE_CACHE
     * @listener
     * | param | type | description |
     * | --- | --- | --- |
     * | version | string | Game version of assets to cache |
     */
    BEGIN_UPDATE_CACHE = "BEGIN_UPDATE_CACHE",
    /**
     * When the cache update ends, fires
     * @event END_UPDATE_CACHE
     * @listener
     * | param | type | description |
     * | --- | --- | --- |
     * | version | string | Game version of assets to cache |
     */
    END_UPDATE_CACHE = "END_UPDATE_CACHE",
    /**
     * When the assets update starts, fires
     * @event BEGIN_UPDATE_ASSETS
     * @listener
     * | param | type | description |
     * | --- | --- | --- |
     * | version | string | Game version of new assets |
     */
    BEGIN_UPDATE_ASSETS = "BEGIN_UPDATE_ASSETS",
    /**
     * When the assets update ends, fires
     * @event END_UPDATE_ASSETS
     * @listener
     * | param | type | description |
     * | --- | --- | --- |
     * | version | string | Game version of new assets |
     */
    END_UPDATE_ASSETS = "END_UPDATE_ASSETS"
}
interface ClientEventMap {
    BEGIN_UPDATE_CACHE: [version: string];
    END_UPDATE_CACHE: [version: string];
    BEGIN_UPDATE_ASSETS: [version: string];
    END_UPDATE_ASSETS: [version: string];
}
/**
 * Class of the client
 * @description This is the main body of `Genshin-Manager` where cache information is stored
 */
export declare class Client extends AssetCacheManager<ClientEventMap, ClientEvents> {
    /**
     * Default option
     */
    private static readonly defaultOption;
    readonly option: ClientOption;
    /**
     * Create a Client
     * @param option Client option
     */
    constructor(option?: Partial<ClientOption>);
    /**
     * Cached game version
     * @returns Cached game version
     * @example `5.1.0`
     */
    get gameVersion(): string | undefined;
    /**
     * Change cached languages
     * @param language Country code
     * @example
     * ```ts
     * const client = new Client()
     * await client.deploy()
     * await client.changeLanguage('JP')
     * ```
     */
    changeLanguage(language: keyof typeof TextMapLanguage): Promise<void>;
    /**
     * Deploy assets to cache & Update assets
     * @example
     * ```ts
     * const client = new Client()
     * await client.deploy()
     * ```
     */
    deploy(): Promise<void>;
}
export {};
