import { ServerData, CharacterListData, MailMessageData, PullMerchantCharData } from "./definitions/adventureland-server";
import { ServerRegion, ServerIdentifier, CharacterType } from "./definitions/adventureland";
import { Mage } from "./Mage";
import { Merchant } from "./Merchant";
import { Observer } from "./Observer";
import { PingCompensatedCharacter } from "./PingCompensatedCharacter";
import { Character } from "./Character";
import { Priest } from "./Priest";
import { Ranger } from "./Ranger";
import { Rogue } from "./Rogue";
import { Warrior } from "./Warrior";
import { GData2 } from "./definitions/adventureland-data";
export declare class Game {
    protected static user: {
        userID: string;
        userAuth: string;
    };
    protected static servers: {
        [T in ServerRegion]?: {
            [T in ServerIdentifier]?: ServerData;
        };
    };
    protected static characters: {
        [T in string]?: CharacterListData;
    };
    static players: {
        [T in string]: Character;
    };
    static observers: {
        [T in string]: Observer;
    };
    static G: GData2;
    protected constructor();
    static disconnect(): Promise<void>;
    static getGData(): Promise<GData2>;
    static getMail(all?: boolean): Promise<MailMessageData[]>;
    static getMerchants(): Promise<PullMerchantCharData[]>;
    static markMailAsRead(mailID: string): Promise<void>;
    static login(email: string, password: string): Promise<boolean>;
    static loginJSONFile(path: string): Promise<boolean>;
    static startCharacter(cName: string, sRegion: ServerRegion, sID: ServerIdentifier, cType?: CharacterType): Promise<PingCompensatedCharacter>;
    static startMage(cName: string, sRegion: ServerRegion, sID: ServerIdentifier): Promise<Mage>;
    static startMerchant(cName: string, sRegion: ServerRegion, sID: ServerIdentifier): Promise<Merchant>;
    static startPriest(cName: string, sRegion: ServerRegion, sID: ServerIdentifier): Promise<Priest>;
    static startRanger(cName: string, sRegion: ServerRegion, sID: ServerIdentifier): Promise<Ranger>;
    static startRogue(cName: string, sRegion: ServerRegion, sID: ServerIdentifier): Promise<Rogue>;
    static startWarrior(cName: string, sRegion: ServerRegion, sID: ServerIdentifier): Promise<Warrior>;
    static startObserver(region: ServerRegion, id: ServerIdentifier): Promise<Observer>;
    static stopAllCharacters(): Promise<void>;
    static stopAllObservers(): Promise<void>;
    static stopCharacter(characterName: string): Promise<void>;
    static stopObserver(region: ServerRegion, id: ServerIdentifier): Promise<void>;
    static updateServersAndCharacters(): Promise<boolean>;
}
