import { Attribute, BankPackName, ConditionName, DamageType, ItemName, MapName, MonsterName, NPCName, SkillName, TitleName } from "./adventureland-data";
export declare type GData = {
    achievements: {
        [T in string]: any;
    };
    base_gold: {
        [T in MonsterName]?: {
            [T in MapName]?: number;
        };
    };
    conditions: {
        [T in ConditionName]: {
            bad?: boolean;
            buff?: boolean;
            duration?: number;
            interval?: number;
        } & {
            [T in Attribute]?: number;
        };
    };
    craft: {
        [T in ItemName]?: {
            items: [number, ItemName, number?][];
            cost: number;
            quest?: NPCRole;
        };
    };
    dismantle: {
        [T in ItemName]?: {
            cost: number;
            items: [number, ItemName][];
        };
    };
    items: {
        [T in ItemName]: GItem;
    };
    geometry: {
        [T in MapName]: {
            max_x: number;
            max_y: number;
            min_x: number;
            min_y: number;
            x_lines: [number, number, number][];
            y_lines: [number, number, number][];
        };
    };
    maps: {
        [T in MapName]: {
            doors: DoorInfo[];
            key: string;
            ignore?: boolean;
            instance?: boolean;
            irregular?: boolean;
            monsters: {
                count: number;
                boundary?: [number, number, number, number];
                boundaries?: [MapName, number, number, number, number][];
                type: MonsterName;
            }[];
            mount: boolean;
            no_bounds?: boolean;
            npcs: GMapsNPC[];
            pvp?: boolean;
            on_death: number;
            ref: {
                [id: string]: IPosition & {
                    map: MapName;
                    in: MapName;
                    id: string;
                };
            };
            spawns: [number, number, number?][];
        };
    };
    monsters: {
        [T in MonsterName]: GMonster;
    };
    npcs: {
        [T in NPCName]: {
            id: NPCName;
            items?: ItemName[];
            name: string;
            places?: {
                [T in MapName]?: number;
            };
            role: NPCRole;
        };
    };
    quests: {
        [T in string]: PositionReal & {
            id: NPCName;
        };
    };
    skills: {
        [T in SkillName]: {
            apiercing?: number;
            class?: CharacterType[];
            cooldown: number;
            cooldown_multiplier?: number;
            damage_multiplier?: number;
            hostile?: boolean;
            inventory?: ItemName[];
            level?: number;
            monster?: boolean;
            mp?: number;
            name: string;
            range?: number;
            range_bonus?: number;
            range_multiplier?: number;
            ratio?: number;
            requirements?: {
                [T in Attribute]?: number;
            };
            share?: SkillName;
            slot?: [SlotType, ItemName][];
            target?: boolean;
            targets?: boolean;
            warning?: string;
            wtype?: WeaponType | WeaponType[];
        };
    };
};
export declare type GMapsNPC = {
    id: NPCName;
    name?: string;
    position: [number, number, number?];
    positions: [number, number, number?];
};
export declare type GMonster = {
    "1hp"?: true;
    abilities?: {
        [T in SkillName]?: {
            cooldown?: number;
            damage?: number;
            heal?: number;
        };
    };
    achievevments?: [number, "stat", Attribute, number][];
    aggro: number;
    charge?: number;
    cooperative?: true;
    damage_type: DamageType;
    global?: true;
    immune?: true;
    lucrativeness?: number;
    name: string;
    rage: number;
    respawn: number;
    spawns?: [number, MonsterName][];
    special?: true;
    xspawns?: [number, MonsterName][];
    aa?: number;
    announce: string;
    hit?: string;
    projectile?: string;
    skin: string;
    size?: number;
    attack: number;
    frequency: number;
    hp: number;
    mp: number;
    range: number;
    xp: number;
} & {
    [T in Attribute]?: number;
};
export declare type GItem = {
    buy?: boolean;
    compound?: {
        [T in Attribute]?: number;
    };
    damage?: DamageType;
    e?: number;
    g: number;
    gives: ["hp" | "mp", number][];
    grades?: [number, number];
    name: string;
    id: ItemName;
    quest: string;
    s: number;
    upgrade?: {
        [T in Attribute]?: number;
    };
    type: ItemType;
    wtype: WeaponType;
} & {
    [T in Attribute]?: number;
};
export declare type BankInfo = {
    [T in Exclude<BankPackName, "gold">]?: ItemInfo[];
} & {
    gold: number;
};
export declare type ChestInfo = PositionReal & {
    alpha: number;
    skin: "chest3" | string;
};
export declare type ItemInfo = {
    acc?: number;
    ach?: TitleName;
    b?: boolean;
    ex?: boolean;
    expires?: string;
    gift?: number;
    grace?: number;
    level?: number;
    name: ItemName;
    q?: number;
    p?: {
        chance: number;
        name: ItemName;
        level: number;
        scroll: ItemName;
        nums: number[];
    } | TitleName;
    ps?: TitleName[];
    rid?: string;
    stat_type?: Attribute;
    v?: boolean;
};
export declare type SlotInfo = {
    [T in SlotType]: ItemInfo;
} & {
    [T in TradeSlotType]?: ItemInfo & {
        giveaway?: number;
        list: string[];
        price: number;
        rid: string;
    };
};
export declare type DoorInfo = [number, number, number, number, MapName, number?, number?, string?, string?];
export declare type StatusInfo = {
    [T in ConditionName | "typing"]?: {
        ms: number;
    };
} & {
    burned?: {
        intensity: number;
        f: string;
    };
    cursed?: {
        ms: number;
    };
    coop?: {
        id: string;
        p: number;
    };
    mluck?: {
        f: string;
        strong: boolean;
    };
    monsterhunt?: {
        sn: string;
        c: number;
        id: MonsterName;
    };
    citizen0aura?: {
        luck: number;
    };
    citizen4aura?: {
        gold: number;
    };
};
export declare type SInfo = {
    [T in MonsterName]?: IPosition & {
        map: string;
        live: boolean;
        hp: number;
        max_hp: number;
        target?: string;
    };
} & {
    valentines?: boolean;
};
export declare type PositionReal = IPosition & {
    map: MapName;
    real_x?: number;
    real_y?: number;
};
export declare type PositionMovable = PositionReal & {
    from_x?: number;
    from_y?: number;
    going_x: number;
    going_y: number;
};
export declare type PositionSmart = IPosition & {
    map: MapName;
    transport?: boolean;
    i?: number;
    s?: number;
};
export declare type IPosition = {
    map?: MapName;
    in?: string;
    x: number;
    y: number;
};
export declare type CharacterType = "mage" | "merchant" | "paladin" | "priest" | "ranger" | "rogue" | "warrior";
export declare type ItemType = "box" | "cape" | "gem" | "material" | "misc" | "pot" | "quest";
export declare type WeaponType = "axe" | "basher" | "bow" | "crossbow" | "dagger" | "dartgun" | "fist" | "great_staff" | "great_sword" | "mace" | "misc_offhand" | "pmace" | "quiver" | "rapier" | "rod" | "scythe" | "shield" | "short_sword" | "source" | "spear" | "staff" | "stars" | "sword" | "wand" | "wblade";
export declare type SlotType = "amulet" | "belt" | "cape" | "chest" | "earring1" | "earring2" | "elixir" | "gloves" | "helmet" | "mainhand" | "offhand" | "orb" | "pants" | "ring1" | "ring2" | "shoes";
export declare type TradeSlotType = "trade1" | "trade2" | "trade3" | "trade4" | "trade5" | "trade6" | "trade7" | "trade8" | "trade9" | "trade10" | "trade11" | "trade12" | "trade13" | "trade14" | "trade15" | "trade16";
export declare type NPCRole = "announcer" | "blocker" | "bouncer" | "citizen" | "companion" | "compound" | "craftsman" | "cx" | "daily_events" | "exchange" | "funtokens" | "gold" | "guard" | "items" | "jailer" | "locksmith" | "lostandfound" | "lottery" | "mcollector" | "merchant" | "monstertokens" | "newupgrade" | "newyear_tree" | "petkeeper" | "premium" | "pvp_announcer" | "pvptokens" | "quest" | "repeater" | "resort" | "santa" | "secondhands" | "shells" | "ship" | "shrine" | "standmerchant" | "tavern" | "tease" | "thesearch" | "transport" | "witch";
export declare type ServerIdentifier = "HARDCORE" | "I" | "II" | "III" | "PVP";
export declare type ServerRegion = "ASIA" | "US" | "EU";
