# Autogenerated do not modify manually!
# This is a type-hinting python stub file, used by python IDEs to provide type hints. For more information
# about stub files, see https://www.python.org/dev/peps/pep-0484/#stub-files
# During execution, the actual freeOrionAIInterface module is made available via
# a C++ Boost-python process as part of the launch.


class FleetPlan(object):
    def ship_designs(self):
        """
        :rtype: list
        """
        return list()

    def name(self):
        """
        :rtype: object
        """
        return object()


class GGColor(object):
    @property
    def a(self):
        pass

    @property
    def r(self):
        pass

    @property
    def b(self):
        pass

    @property
    def g(self):
        pass


class GalaxySetupData(object):
    @property
    def specialsFrequency(self):
        return galaxySetupOption()

    @property
    def age(self):
        return galaxySetupOption()

    @property
    def starlaneFrequency(self):
        return galaxySetupOption()

    @property
    def nativeFrequency(self):
        return galaxySetupOption()

    @property
    def planetDensity(self):
        return galaxySetupOption()

    @property
    def shape(self):
        return galaxyShape()

    @property
    def seed(self):
        return str()

    @property
    def monsterFrequency(self):
        return galaxySetupOption()

    @property
    def size(self):
        return int()

    @property
    def maxAIAggression(self):
        return aggression()


class IntBoolMap(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class IntDblMap(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class IntFltMap(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class IntIntMap(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class IntPairVec(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def append(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class IntSet(object):
    def count(self, number):
        """
        :param number:
        :type number: int
        :rtype: int
        """
        return int()

    def __contains__(self, number):
        """
        :param number:
        :type number: int
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: iter
        """
        return iter()

    def __len__(self):
        """
        :rtype: int
        """
        return int()

    def empty(self):
        """
        :rtype: bool
        """
        return bool()

    def size(self):
        """
        :rtype: int
        """
        return int()


class IntSetSet(object):
    def count(self, int_set):
        """
        :param int_set:
        :type int_set: IntSet
        :rtype: int
        """
        return int()

    def __contains__(self, int_set):
        """
        :param int_set:
        :type int_set: IntSet
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __len__(self):
        """
        :rtype: int
        """
        return int()

    def empty(self):
        """
        :rtype: bool
        """
        return bool()

    def size(self):
        """
        :rtype: int
        """
        return int()


class IntVec(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: iter
        """
        return iter()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def append(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class ItemSpec(object):
    @property
    def type(self):
        pass

    @property
    def name(self):
        pass


class ItemSpecVec(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def append(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class MeterTypeMeterMap(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class MeterTypeStringPair(object):
    @property
    def meterType(self):
        pass

    @property
    def string(self):
        pass


class MonsterFleetPlan(object):
    def spawn_rate(self):
        """
        :rtype: float
        """
        return float()

    def ship_designs(self):
        """
        :rtype: list
        """
        return list()

    def spawn_limit(self):
        """
        :rtype: int
        """
        return int()

    def locations(self, item_list):
        """
        :param item_list:
        :type item_list: list
        :rtype: list
        """
        return list()

    def name(self):
        """
        :rtype: object
        """
        return object()


class PairIntInt_IntMap(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class PlayerSetupData(object):
    @property
    def empire_color(self):
        pass

    @property
    def player_name(self):
        pass

    @property
    def empire_name(self):
        pass

    @property
    def starting_species(self):
        pass


class ShipPartMeterMap(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class ShipSlotVec(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def append(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class StringSet(object):
    def count(self, string):
        """
        :param string:
        :type string: str
        :rtype: int
        """
        return int()

    def __contains__(self, string):
        """
        :param string:
        :type string: str
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __len__(self):
        """
        :rtype: int
        """
        return int()

    def empty(self):
        """
        :rtype: bool
        """
        return bool()

    def size(self):
        """
        :rtype: int
        """
        return int()


class StringVec(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: iter
        """
        return iter()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def append(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class VisibilityIntMap(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class buildingType(object):
    @property
    def costTimeLocationInvariant(self):
        return bool()

    @property
    def description(self):
        return str()

    @property
    def dump(self):
        return str()

    @property
    def name(self):
        return str()

    def canBeProduced(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: bool
        """
        return bool()

    def productionTime(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: int
        """
        return int()

    def perTurnCost(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: float
        """
        return float()

    def captureResult(self, number1, number2, number3, boolean):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :param number3:
        :type number3: int
        :param boolean:
        :type boolean: bool
        :rtype: captureResult
        """
        return captureResult()

    def productionCost(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: float
        """
        return float()

    def canBeEnqueued(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: bool
        """
        return bool()


class diplomaticMessage(object):
    @property
    def type(self):
        pass

    @property
    def recipient(self):
        pass

    @property
    def sender(self):
        pass


class diplomaticStatusUpdate(object):
    @property
    def status(self):
        pass

    @property
    def empire2(self):
        pass

    @property
    def empire1(self):
        pass


class empire(object):
    @property
    def capitalID(self):
        return int()

    @property
    def productionPoints(self):
        return float()

    @property
    def productionQueue(self):
        return productionQueue()

    @property
    def exploredSystemIDs(self):
        return IntSet()

    @property
    def planetsWithWastedPP(self):
        return IntSetSet()

    @property
    def playerName(self):
        return str()

    @property
    def fleetSupplyableSystemIDs(self):
        return IntSet()

    @property
    def planetsWithAllocatedPP(self):
        return resPoolMap()

    @property
    def won(self):
        return bool()

    @property
    def availableShipParts(self):
        return StringSet()

    @property
    def availableBuildingTypes(self):
        return StringSet()

    @property
    def systemSupplyRanges(self):
        return IntFltMap()

    @property
    def allShipDesigns(self):
        return IntSet()

    @property
    def planetsWithAvailablePP(self):
        return resPoolMap()

    @property
    def researchQueue(self):
        return researchQueue()

    @property
    def eliminated(self):
        return bool()

    @property
    def empireID(self):
        return int()

    @property
    def name(self):
        return str()

    @property
    def colour(self):
        return GGColor()

    @property
    def availableShipHulls(self):
        return StringSet()

    @property
    def availableShipDesigns(self):
        return IntSet()

    @property
    def supplyUnobstructedSystems(self):
        return IntSet()

    @property
    def availableTechs(self):
        return StringSet()

    def resourceAvailable(self, resource_type):
        """
        :param resource_type:
        :type resource_type: resourceType
        :rtype: float
        """
        return float()

    def techResearched(self, string):
        """
        :param string:
        :type string: str
        :rtype: bool
        """
        return bool()

    def resourceProduction(self, resource_type):
        """
        :param resource_type:
        :type resource_type: resourceType
        :rtype: float
        """
        return float()

    def productionCostAndTime(self, production_queue_element):
        """
        :param production_queue_element:
        :type production_queue_element: productionQueueElement
        :rtype: object
        """
        return object()

    def shipDesignAvailable(self, number):
        """
        :param number:
        :type number: int
        :rtype: bool
        """
        return bool()

    def numSitReps(self, number):
        """
        :param number:
        :type number: int
        :rtype: int
        """
        return int()

    def getResourcePool(self, resource_type):
        """
        :param resource_type:
        :type resource_type: resourceType
        :rtype: resPool
        """
        return resPool()

    def resourceStockpile(self, resource_type):
        """
        :param resource_type:
        :type resource_type: resourceType
        :rtype: float
        """
        return float()

    def hasExploredSystem(self, number):
        """
        :param number:
        :type number: int
        :rtype: bool
        """
        return bool()

    def buildingTypeAvailable(self, string):
        """
        :param string:
        :type string: str
        :rtype: bool
        """
        return bool()

    def obstructedStarlanes(self):
        """
        :rtype: IntPairVec
        """
        return IntPairVec()

    def population(self):
        """
        :rtype: float
        """
        return float()

    def supplyProjections(self):
        """
        :rtype: IntIntMap
        """
        return IntIntMap()

    def canBuild(self, build_type, string, number):
        """
        :param build_type:
        :type build_type: buildType
        :param string:
        :type string: str
        :param number:
        :type number: int
        :rtype: bool
        """
        return bool()

    def getSitRep(self, number):
        """
        :param number:
        :type number: int
        :rtype: sitrep
        """
        return sitrep()

    def getTechStatus(self, string):
        """
        :param string:
        :type string: str
        :rtype: techStatus
        """
        return techStatus()

    def researchProgress(self, string):
        """
        :param string:
        :type string: str
        :rtype: float
        """
        return float()


class fieldType(object):
    @property
    def description(self):
        return str()

    @property
    def dump(self):
        return str()

    @property
    def name(self):
        return str()


class hullType(object):
    @property
    def costTimeLocationInvariant(self):
        pass

    @property
    def name(self):
        pass

    @property
    def numSlots(self):
        pass

    @property
    def structure(self):
        pass

    @property
    def stealth(self):
        pass

    @property
    def fuel(self):
        pass

    @property
    def slots(self):
        pass

    @property
    def speed(self):
        pass

    @property
    def starlaneSpeed(self):
        pass

    def productionCost(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: float
        """
        return float()

    def productionTime(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: int
        """
        return int()

    def hasTag(self, string):
        """
        :param string:
        :type string: str
        :rtype: bool
        """
        return bool()

    def numSlotsOfSlotType(self, ship_slot_type):
        """
        :param ship_slot_type:
        :type ship_slot_type: shipSlotType
        :rtype: int
        """
        return int()


class meter(object):
    @property
    def current(self):
        pass

    @property
    def initial(self):
        pass

    @property
    def dump(self):
        pass


class partType(object):
    @property
    def mountableSlotTypes(self):
        pass

    @property
    def costTimeLocationInvariant(self):
        pass

    @property
    def capacity(self):
        pass

    @property
    def name(self):
        pass

    @property
    def partClass(self):
        pass

    @property
    def secondaryStat(self):
        pass

    def productionTime(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: int
        """
        return int()

    def productionCost(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: float
        """
        return float()

    def canMountInSlotType(self, ship_slot_type):
        """
        :param ship_slot_type:
        :type ship_slot_type: shipSlotType
        :rtype: bool
        """
        return bool()


class popCenter(object):
    @property
    def nextTurnPopGrowth(self):
        pass

    @property
    def speciesName(self):
        pass


class productionQueue(object):
    @property
    def allocatedPP(self):
        pass

    @property
    def empty(self):
        pass

    @property
    def totalSpent(self):
        pass

    @property
    def empireID(self):
        pass

    @property
    def size(self):
        pass

    def __getitem__(self, number):
        """
        :param number:
        :type number: int
        :rtype: productionQueueElement
        """
        return productionQueueElement()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def objectsWithWastedPP(self, res_pool):
        """
        :param res_pool:
        :type res_pool: resPool
        :rtype: IntSetSet
        """
        return IntSetSet()

    def availablePP(self, res_pool):
        """
        :param res_pool:
        :type res_pool: resPool
        :rtype: resPoolMap
        """
        return resPoolMap()

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class productionQueueElement(object):
    @property
    def buildType(self):
        pass

    @property
    def name(self):
        pass

    @property
    def blocksize(self):
        pass

    @property
    def turnsLeft(self):
        pass

    @property
    def allocation(self):
        pass

    @property
    def designID(self):
        pass

    @property
    def locationID(self):
        pass

    @property
    def progress(self):
        pass

    @property
    def remaining(self):
        pass


class resPool(object):
    pass


class resPoolMap(object):
    def __delitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None

    def __getitem__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: object
        """
        return object()

    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __setitem__(self, obj1, obj2):
        """
        :param obj1:
        :type obj1: object
        :param obj2:
        :type obj2: object
        :rtype: None
        """
        return None

    def __len__(self):
        """
        :rtype: int
        """
        return int()


class researchQueue(object):
    @property
    def size(self):
        pass

    @property
    def totalSpent(self):
        pass

    @property
    def empireID(self):
        pass

    @property
    def empty(self):
        pass

    def __getitem__(self, number):
        """
        :param number:
        :type number: int
        :rtype: researchQueueElement
        """
        return researchQueueElement()

    def __contains__(self, research_queue_element):
        """
        :param research_queue_element:
        :type research_queue_element: researchQueueElement
        :rtype: bool
        """
        return bool()

    def __iter__(self):
        """
        :rtype: object
        """
        return object()

    def __len__(self):
        """
        :rtype: int
        """
        return int()

    def inQueue(self, string):
        """
        :param string:
        :type string: str
        :rtype: bool
        """
        return bool()


class researchQueueElement(object):
    @property
    def allocation(self):
        pass

    @property
    def tech(self):
        pass

    @property
    def turnsLeft(self):
        pass


class resourceCenter(object):
    @property
    def turnsSinceFocusChange(self):
        pass

    @property
    def availableFoci(self):
        pass

    @property
    def focus(self):
        pass


class shipDesign(object):
    @property
    def costTimeLocationInvariant(self):
        return bool()

    @property
    def dump(self):
        return str()

    @property
    def canColonize(self):
        return bool()

    @property
    def hull_type(self):
        return hullType()

    @property
    def tradeGeneration(self):
        return float()

    @property
    def detection(self):
        return float()

    @property
    def defense(self):
        return float()

    @property
    def speed(self):
        return float()

    @property
    def id(self):
        return int()

    @property
    def isMonster(self):
        return bool()

    @property
    def stealth(self):
        return float()

    @property
    def attack(self):
        return float()

    @property
    def parts(self):
        return StringVec()

    @property
    def fuel(self):
        return float()

    @property
    def shields(self):
        return float()

    @property
    def description(self):
        return str()

    @property
    def isArmed(self):
        return bool()

    @property
    def hull(self):
        return str()

    @property
    def designedOnTurn(self):
        return int()

    @property
    def colonyCapacity(self):
        return float()

    @property
    def structure(self):
        return float()

    @property
    def researchGeneration(self):
        return float()

    @property
    def canInvade(self):
        return bool()

    @property
    def name(self):
        return str()

    @property
    def attackStats(self):
        return IntVec()

    @property
    def troopCapacity(self):
        return float()

    @property
    def industryGeneration(self):
        return float()

    def productionTime(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: int
        """
        return int()

    def productionCost(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: float
        """
        return float()

    def productionLocationForEmpire(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: bool
        """
        return bool()

    def perTurnCost(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: float
        """
        return float()


class sitrep(object):
    @property
    def getTags(self):
        pass

    @property
    def typeString(self):
        pass

    @property
    def getTurn(self):
        pass

    def getDataString(self, string):
        """
        :param string:
        :type string: str
        :rtype: str
        """
        return str()

    def getDataIDNumber(self, string):
        """
        :param string:
        :type string: str
        :rtype: int
        """
        return int()


class special(object):
    @property
    def name(self):
        return str()

    @property
    def dump(self):
        return str()

    @property
    def spawnrate(self):
        return float()

    @property
    def spawnlimit(self):
        return int()

    @property
    def description(self):
        return str()

    def initialCapacity(self, number):
        """
        :param number:
        :type number: int
        :rtype: float
        """
        return float()


class species(object):
    @property
    def description(self):
        return str()

    @property
    def dump(self):
        return str()

    @property
    def tags(self):
        return StringSet()

    @property
    def canColonize(self):
        return bool()

    @property
    def foci(self):
        return StringVec()

    @property
    def canProduceShips(self):
        return bool()

    @property
    def preferredFocus(self):
        return str()

    @property
    def homeworlds(self):
        return IntSet()

    @property
    def name(self):
        return str()

    def getPlanetEnvironment(self, planet_type):
        """
        :param planet_type:
        :type planet_type: planetType
        :rtype: planetEnvironment
        """
        return planetEnvironment()


class tech(object):
    @property
    def category(self):
        return str()

    @property
    def unlockedItems(self):
        return ItemSpecVec()

    @property
    def description(self):
        return str()

    @property
    def unlockedTechs(self):
        return StringSet()

    @property
    def prerequisites(self):
        return StringSet()

    @property
    def shortDescription(self):
        return str()

    @property
    def name(self):
        return str()

    def researchCost(self, number):
        """
        :param number:
        :type number: int
        :rtype: float
        """
        return float()

    def recursivePrerequisites(self, number):
        """
        :param number:
        :type number: int
        :rtype: StringVec
        """
        return StringVec()

    def perTurnCost(self, number):
        """
        :param number:
        :type number: int
        :rtype: float
        """
        return float()

    def researchTime(self, number):
        """
        :param number:
        :type number: int
        :rtype: int
        """
        return int()


class universe(object):
    @property
    def shipIDs(self):
        return IntVec()

    @property
    def fieldIDs(self):
        return IntVec()

    @property
    def fleetIDs(self):
        return IntVec()

    @property
    def planetIDs(self):
        return IntVec()

    @property
    def buildingIDs(self):
        return IntVec()

    @property
    def allObjectIDs(self):
        return IntVec()

    @property
    def systemIDs(self):
        return IntVec()

    def jumpDistance(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: int
        """
        return int()

    def dump(self):
        """
        :rtype: None
        """
        return None

    def linearDistance(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: float
        """
        return float()

    def getObject(self, number):
        """
        :param number:
        :type number: int
        :rtype: universeObject
        """
        return universeObject()

    def getPlanet(self, number):
        """
        :param number:
        :type number: int
        :rtype: planet
        """
        return planet()

    def getShip(self, number):
        """
        :param number:
        :type number: int
        :rtype: ship
        """
        return ship()

    def systemsConnected(self, number1, number2, number3):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :param number3:
        :type number3: int
        :rtype: bool
        """
        return bool()

    def getVisibilityTurnsMap(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: VisibilityIntMap
        """
        return dict()

    def leastJumpsPath(self, number1, number2, number3):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :param number3:
        :type number3: int
        :rtype: IntVec
        """
        return IntVec()

    def getFleet(self, number):
        """
        :param number:
        :type number: int
        :rtype: fleet
        """
        return fleet()

    def getImmediateNeighbors(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: IntVec
        """
        return IntVec()

    def shortestPath(self, number1, number2, number3):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :param number3:
        :type number3: int
        :rtype: IntVec
        """
        return IntVec()

    def shortestNonHostilePath(self, number1, number2, number3):
        """
        Shortest sequence of System ids and distance from System (number1) to System (number2) with no hostile Fleets
        as determined by visibility of Empire (number3).  (number3) must be a valid empire.

        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :param number3:
        :type number3: int
        :rtype: IntVec
        """
        return IntVec()

    def updateMeterEstimates(self, item_list):
        """
        :param item_list:
        :type item_list: list
        :rtype: None
        """
        return None

    def getField(self, number):
        """
        :param number:
        :type number: int
        :rtype: field
        """
        return field()

    def destroyedObjectIDs(self, number):
        """
        :param number:
        :type number: int
        :rtype: IntSet
        """
        return IntSet()

    def getSystemNeighborsMap(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: IntDblMap
        """
        return IntDblMap()

    def systemHasStarlane(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: bool
        """
        return bool()

    def getGenericShipDesign(self, string):
        """
        Returns the ship design (ShipDesign) with the indicated name (string).

        :param string:
        :type string: str
        :rtype: shipDesign
        """
        return shipDesign()

    def getVisibility(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: visibility
        """
        return visibility()

    def getSystem(self, number):
        """
        :param number:
        :type number: int
        :rtype: system
        """
        return system()

    def getBuilding(self, number):
        """
        :param number:
        :type number: int
        :rtype: building
        """
        return building()


class universeObject(object):
    @property
    def dump(self):
        pass

    @property
    def unowned(self):
        pass

    @property
    def meters(self):
        pass

    @property
    def owner(self):
        pass

    @property
    def id(self):
        pass

    @property
    def containerObject(self):
        pass

    @property
    def creationTurn(self):
        pass

    @property
    def containedObjects(self):
        pass

    @property
    def tags(self):
        pass

    @property
    def ageInTurns(self):
        pass

    @property
    def systemID(self):
        pass

    @property
    def name(self):
        pass

    @property
    def specials(self):
        pass

    @property
    def y(self):
        pass

    @property
    def x(self):
        pass

    def contains(self, number):
        """
        :param number:
        :type number: int
        :rtype: bool
        """
        return bool()

    def hasTag(self, string):
        """
        :param string:
        :type string: str
        :rtype: bool
        """
        return bool()

    def initialMeterValue(self, meter_type):
        """
        :param meter_type:
        :type meter_type: meterType
        :rtype: float
        """
        return float()

    def containedBy(self, number):
        """
        :param number:
        :type number: int
        :rtype: bool
        """
        return bool()

    def currentMeterValue(self, meter_type):
        """
        :param meter_type:
        :type meter_type: meterType
        :rtype: float
        """
        return float()

    def specialAddedOnTurn(self, string):
        """
        :param string:
        :type string: str
        :rtype: int
        """
        return int()

    def ownedBy(self, number):
        """
        :param number:
        :type number: int
        :rtype: bool
        """
        return bool()

    def getMeter(self, meter_type):
        """
        :param meter_type:
        :type meter_type: meterType
        :rtype: meter
        """
        return meter()

    def hasSpecial(self, string):
        """
        :param string:
        :type string: str
        :rtype: bool
        """
        return bool()


class building(universeObject):
    @property
    def buildingTypeName(self):
        return str()

    @property
    def producedByEmpireID(self):
        return int()

    @property
    def planetID(self):
        return int()

    @property
    def orderedScrapped(self):
        return bool()


class field(universeObject):
    @property
    def fieldTypeName(self):
        return str()

    def inField(self, base_object):
        """
        :param base_object:
        :type base_object: universeObject
        :rtype: bool
        """
        return bool()


class fleet(universeObject):
    @property
    def hasOutpostShips(self):
        return bool()

    @property
    def shipIDs(self):
        return IntSet()

    @property
    def hasFighterShips(self):
        return bool()

    @property
    def speed(self):
        return float()

    @property
    def previousSystemID(self):
        return int()

    @property
    def numShips(self):
        return int()

    @property
    def hasColonyShips(self):
        return bool()

    @property
    def canChangeDirectionEnRoute(self):
        return bool()

    @property
    def nextSystemID(self):
        return int()

    @property
    def finalDestinationID(self):
        return int()

    @property
    def hasMonsters(self):
        return bool()

    @property
    def hasArmedShips(self):
        return bool()

    @property
    def fuel(self):
        return float()

    @property
    def aggressive(self):
        return bool()

    @property
    def hasTroopShips(self):
        return bool()

    @property
    def maxFuel(self):
        return float()

    @property
    def empty(self):
        return bool()


class planet(universeObject, popCenter, resourceCenter):
    @property
    def originalType(self):
        return planetType()

    @property
    def nextLargerPlanetSize(self):
        return planetSize()

    @property
    def distanceFromOriginalType(self):
        return int()

    @property
    def clockwiseNextPlanetType(self):
        return planetType()

    @property
    def nextSmallerPlanetSize(self):
        return planetSize()

    @property
    def buildingIDs(self):
        return IntSet()

    @property
    def OrbitalPeriod(self):
        return float()

    @property
    def counterClockwiseNextPlanetType(self):
        return planetType()

    @property
    def RotationalPeriod(self):
        return float()

    @property
    def type(self):
        return planetType()

    @property
    def InitialOrbitalPosition(self):
        return float()

    @property
    def size(self):
        return planetSize()

    def nextBetterPlanetTypeForSpecies(self, string):
        """
        :param string:
        :type string: str
        :rtype: planetType
        """
        return planetType()

    def environmentForSpecies(self, string):
        """
        :param string:
        :type string: str
        :rtype: planetEnvironment
        """
        return planetEnvironment()

    def OrbitalPositionOnTurn(self, number):
        """
        :param number:
        :type number: int
        :rtype: float
        """
        return float()


class ship(universeObject):
    @property
    def partMeters(self):
        return ShipPartMeterMap()

    @property
    def speciesName(self):
        return str()

    @property
    def orderedScrapped(self):
        return bool()

    @property
    def isArmed(self):
        return bool()

    @property
    def troopCapacity(self):
        return float()

    @property
    def canColonize(self):
        return bool()

    @property
    def canInvade(self):
        return bool()

    @property
    def designID(self):
        return int()

    @property
    def producedByEmpireID(self):
        return int()

    @property
    def isMonster(self):
        return bool()

    @property
    def design(self):
        return shipDesign()

    @property
    def orderedInvadePlanet(self):
        return int()

    @property
    def colonyCapacity(self):
        return float()

    @property
    def fleetID(self):
        return int()

    @property
    def canBombard(self):
        return bool()

    @property
    def speed(self):
        return float()

    @property
    def orderedColonizePlanet(self):
        return int()

    def currentPartMeterValue(self, meter_type, string):
        """
        :param meter_type:
        :type meter_type: meterType
        :param string:
        :type string: str
        :rtype: float
        """
        return float()

    def initialPartMeterValue(self, meter_type, string):
        """
        :param meter_type:
        :type meter_type: meterType
        :param string:
        :type string: str
        :rtype: float
        """
        return float()


class system(universeObject):
    @property
    def numStarlanes(self):
        return int()

    @property
    def fleetIDs(self):
        return IntSet()

    @property
    def shipIDs(self):
        return IntSet()

    @property
    def starlanesWormholes(self):
        return IntBoolMap()

    @property
    def fieldIDs(self):
        return IntSet()

    @property
    def numWormholes(self):
        return int()

    @property
    def buildingIDs(self):
        return IntSet()

    @property
    def starType(self):
        return starType()

    @property
    def lastTurnBattleHere(self):
        return int()

    @property
    def planetIDs(self):
        return IntSet()

    def HasStarlaneToSystemID(self, number):
        """
        :param number:
        :type number: int
        :rtype: bool
        """
        return bool()

    def HasWormholeToSystemID(self, number):
        """
        Currently unused.

        :param number:
        :type number: int
        :rtype: bool
        """
        return bool()


class Enum(int):
    """Enum stub for docs, not really present in fo"""
    def __new__(cls, *args, **kwargs):
        return super(Enum, cls).__new__(cls, args[0])


class aggression(Enum):
    def __init__(self, numerator, name):
        self.name = name

    invalid = None  # aggression(-1, "invalid")
    beginner = None  # aggression(0, "beginner")
    turtle = None  # aggression(1, "turtle")
    cautious = None  # aggression(2, "cautious")
    typical = None  # aggression(3, "typical")
    aggressive = None  # aggression(4, "aggressive")
    maniacal = None  # aggression(5, "maniacal")


aggression.invalid = aggression(-1, "invalid")
aggression.beginner = aggression(0, "beginner")
aggression.turtle = aggression(1, "turtle")
aggression.cautious = aggression(2, "cautious")
aggression.typical = aggression(3, "typical")
aggression.aggressive = aggression(4, "aggressive")
aggression.maniacal = aggression(5, "maniacal")


class buildType(Enum):
    def __init__(self, numerator, name):
        self.name = name

    building = None  # buildType(1, "building")
    ship = None  # buildType(2, "ship")


buildType.building = buildType(1, "building")
buildType.ship = buildType(2, "ship")


class captureResult(Enum):
    def __init__(self, numerator, name):
        self.name = name

    capture = None  # captureResult(0, "capture")
    destroy = None  # captureResult(1, "destroy")
    retain = None  # captureResult(2, "retain")


captureResult.capture = captureResult(0, "capture")
captureResult.destroy = captureResult(1, "destroy")
captureResult.retain = captureResult(2, "retain")


class diplomaticMessageType(Enum):
    def __init__(self, numerator, name):
        self.name = name

    noMessage = None  # diplomaticMessageType(-1, "noMessage")
    warDeclaration = None  # diplomaticMessageType(0, "warDeclaration")
    peaceProposal = None  # diplomaticMessageType(1, "peaceProposal")
    acceptProposal = None  # diplomaticMessageType(2, "acceptProposal")
    cancelProposal = None  # diplomaticMessageType(3, "cancelProposal")


diplomaticMessageType.noMessage = diplomaticMessageType(-1, "noMessage")
diplomaticMessageType.warDeclaration = diplomaticMessageType(0, "warDeclaration")
diplomaticMessageType.peaceProposal = diplomaticMessageType(1, "peaceProposal")
diplomaticMessageType.acceptProposal = diplomaticMessageType(2, "acceptProposal")
diplomaticMessageType.cancelProposal = diplomaticMessageType(3, "cancelProposal")


class diplomaticStatus(Enum):
    def __init__(self, numerator, name):
        self.name = name

    war = None  # diplomaticStatus(0, "war")
    peace = None  # diplomaticStatus(1, "peace")


diplomaticStatus.war = diplomaticStatus(0, "war")
diplomaticStatus.peace = diplomaticStatus(1, "peace")


class galaxySetupOption(Enum):
    def __init__(self, numerator, name):
        self.name = name

    invalid = None  # galaxySetupOption(-1, "invalid")
    none = None  # galaxySetupOption(0, "none")
    low = None  # galaxySetupOption(1, "low")
    medium = None  # galaxySetupOption(2, "medium")
    high = None  # galaxySetupOption(3, "high")
    random = None  # galaxySetupOption(4, "random")


galaxySetupOption.invalid = galaxySetupOption(-1, "invalid")
galaxySetupOption.none = galaxySetupOption(0, "none")
galaxySetupOption.low = galaxySetupOption(1, "low")
galaxySetupOption.medium = galaxySetupOption(2, "medium")
galaxySetupOption.high = galaxySetupOption(3, "high")
galaxySetupOption.random = galaxySetupOption(4, "random")


class galaxyShape(Enum):
    def __init__(self, numerator, name):
        self.name = name

    invalid = None  # galaxyShape(-1, "invalid")
    spiral2 = None  # galaxyShape(0, "spiral2")
    spiral3 = None  # galaxyShape(1, "spiral3")
    spiral4 = None  # galaxyShape(2, "spiral4")
    cluster = None  # galaxyShape(3, "cluster")
    elliptical = None  # galaxyShape(4, "elliptical")
    disc = None  # galaxyShape(5, "disc")
    box = None  # galaxyShape(6, "box")
    irregular = None  # galaxyShape(7, "irregular")
    ring = None  # galaxyShape(8, "ring")
    random = None  # galaxyShape(9, "random")


galaxyShape.invalid = galaxyShape(-1, "invalid")
galaxyShape.spiral2 = galaxyShape(0, "spiral2")
galaxyShape.spiral3 = galaxyShape(1, "spiral3")
galaxyShape.spiral4 = galaxyShape(2, "spiral4")
galaxyShape.cluster = galaxyShape(3, "cluster")
galaxyShape.elliptical = galaxyShape(4, "elliptical")
galaxyShape.disc = galaxyShape(5, "disc")
galaxyShape.box = galaxyShape(6, "box")
galaxyShape.irregular = galaxyShape(7, "irregular")
galaxyShape.ring = galaxyShape(8, "ring")
galaxyShape.random = galaxyShape(9, "random")


class meterType(Enum):
    def __init__(self, numerator, name):
        self.name = name

    targetPopulation = None  # meterType(0, "targetPopulation")
    targetIndustry = None  # meterType(1, "targetIndustry")
    targetResearch = None  # meterType(2, "targetResearch")
    targetTrade = None  # meterType(3, "targetTrade")
    targetConstruction = None  # meterType(4, "targetConstruction")
    targetHappiness = None  # meterType(5, "targetHappiness")
    maxCapacity = None  # meterType(6, "maxCapacity")
    maxSecondaryStat = None  # meterType(7, "maxSecondaryStat")
    maxFuel = None  # meterType(8, "maxFuel")
    maxShield = None  # meterType(9, "maxShield")
    maxStructure = None  # meterType(10, "maxStructure")
    maxDefense = None  # meterType(11, "maxDefense")
    maxSupply = None  # meterType(12, "maxSupply")
    maxTroops = None  # meterType(13, "maxTroops")
    population = None  # meterType(14, "population")
    industry = None  # meterType(15, "industry")
    research = None  # meterType(16, "research")
    trade = None  # meterType(17, "trade")
    construction = None  # meterType(18, "construction")
    happiness = None  # meterType(19, "happiness")
    capacity = None  # meterType(20, "capacity")
    secondaryStat = None  # meterType(21, "secondaryStat")
    fuel = None  # meterType(22, "fuel")
    shield = None  # meterType(23, "shield")
    structure = None  # meterType(24, "structure")
    defense = None  # meterType(25, "defense")
    supply = None  # meterType(26, "supply")
    troops = None  # meterType(27, "troops")
    rebels = None  # meterType(28, "rebels")
    size = None  # meterType(29, "size")
    stealth = None  # meterType(30, "stealth")
    detection = None  # meterType(31, "detection")
    speed = None  # meterType(32, "speed")


meterType.targetPopulation = meterType(0, "targetPopulation")
meterType.targetIndustry = meterType(1, "targetIndustry")
meterType.targetResearch = meterType(2, "targetResearch")
meterType.targetTrade = meterType(3, "targetTrade")
meterType.targetConstruction = meterType(4, "targetConstruction")
meterType.targetHappiness = meterType(5, "targetHappiness")
meterType.maxCapacity = meterType(6, "maxCapacity")
meterType.maxSecondaryStat = meterType(7, "maxSecondaryStat")
meterType.maxFuel = meterType(8, "maxFuel")
meterType.maxShield = meterType(9, "maxShield")
meterType.maxStructure = meterType(10, "maxStructure")
meterType.maxDefense = meterType(11, "maxDefense")
meterType.maxSupply = meterType(12, "maxSupply")
meterType.maxTroops = meterType(13, "maxTroops")
meterType.population = meterType(14, "population")
meterType.industry = meterType(15, "industry")
meterType.research = meterType(16, "research")
meterType.trade = meterType(17, "trade")
meterType.construction = meterType(18, "construction")
meterType.happiness = meterType(19, "happiness")
meterType.capacity = meterType(20, "capacity")
meterType.secondaryStat = meterType(21, "secondaryStat")
meterType.fuel = meterType(22, "fuel")
meterType.shield = meterType(23, "shield")
meterType.structure = meterType(24, "structure")
meterType.defense = meterType(25, "defense")
meterType.supply = meterType(26, "supply")
meterType.troops = meterType(27, "troops")
meterType.rebels = meterType(28, "rebels")
meterType.size = meterType(29, "size")
meterType.stealth = meterType(30, "stealth")
meterType.detection = meterType(31, "detection")
meterType.speed = meterType(32, "speed")


class planetEnvironment(Enum):
    def __init__(self, numerator, name):
        self.name = name

    uninhabitable = None  # planetEnvironment(0, "uninhabitable")
    hostile = None  # planetEnvironment(1, "hostile")
    poor = None  # planetEnvironment(2, "poor")
    adequate = None  # planetEnvironment(3, "adequate")
    good = None  # planetEnvironment(4, "good")


planetEnvironment.uninhabitable = planetEnvironment(0, "uninhabitable")
planetEnvironment.hostile = planetEnvironment(1, "hostile")
planetEnvironment.poor = planetEnvironment(2, "poor")
planetEnvironment.adequate = planetEnvironment(3, "adequate")
planetEnvironment.good = planetEnvironment(4, "good")


class planetSize(Enum):
    def __init__(self, numerator, name):
        self.name = name

    unknown = None  # planetSize(-1, "unknown")
    noWorld = None  # planetSize(0, "noWorld")
    tiny = None  # planetSize(1, "tiny")
    small = None  # planetSize(2, "small")
    medium = None  # planetSize(3, "medium")
    large = None  # planetSize(4, "large")
    huge = None  # planetSize(5, "huge")
    asteroids = None  # planetSize(6, "asteroids")
    gasGiant = None  # planetSize(7, "gasGiant")


planetSize.unknown = planetSize(-1, "unknown")
planetSize.noWorld = planetSize(0, "noWorld")
planetSize.tiny = planetSize(1, "tiny")
planetSize.small = planetSize(2, "small")
planetSize.medium = planetSize(3, "medium")
planetSize.large = planetSize(4, "large")
planetSize.huge = planetSize(5, "huge")
planetSize.asteroids = planetSize(6, "asteroids")
planetSize.gasGiant = planetSize(7, "gasGiant")


class planetType(Enum):
    def __init__(self, numerator, name):
        self.name = name

    unknown = None  # planetType(-1, "unknown")
    swamp = None  # planetType(0, "swamp")
    toxic = None  # planetType(1, "toxic")
    inferno = None  # planetType(2, "inferno")
    radiated = None  # planetType(3, "radiated")
    barren = None  # planetType(4, "barren")
    tundra = None  # planetType(5, "tundra")
    desert = None  # planetType(6, "desert")
    terran = None  # planetType(7, "terran")
    ocean = None  # planetType(8, "ocean")
    asteroids = None  # planetType(9, "asteroids")
    gasGiant = None  # planetType(10, "gasGiant")


planetType.unknown = planetType(-1, "unknown")
planetType.swamp = planetType(0, "swamp")
planetType.toxic = planetType(1, "toxic")
planetType.inferno = planetType(2, "inferno")
planetType.radiated = planetType(3, "radiated")
planetType.barren = planetType(4, "barren")
planetType.tundra = planetType(5, "tundra")
planetType.desert = planetType(6, "desert")
planetType.terran = planetType(7, "terran")
planetType.ocean = planetType(8, "ocean")
planetType.asteroids = planetType(9, "asteroids")
planetType.gasGiant = planetType(10, "gasGiant")


class resourceType(Enum):
    def __init__(self, numerator, name):
        self.name = name

    industry = None  # resourceType(0, "industry")
    trade = None  # resourceType(1, "trade")
    research = None  # resourceType(2, "research")


resourceType.industry = resourceType(0, "industry")
resourceType.trade = resourceType(1, "trade")
resourceType.research = resourceType(2, "research")


class shipPartClass(Enum):
    def __init__(self, numerator, name):
        self.name = name

    shortRange = None  # shipPartClass(0, "shortRange")
    fighterBay = None  # shipPartClass(1, "fighterBay")
    fighterHangar = None  # shipPartClass(2, "fighterHangar")
    shields = None  # shipPartClass(3, "shields")
    armour = None  # shipPartClass(4, "armour")
    troops = None  # shipPartClass(5, "troops")
    detection = None  # shipPartClass(6, "detection")
    stealth = None  # shipPartClass(7, "stealth")
    fuel = None  # shipPartClass(8, "fuel")
    colony = None  # shipPartClass(9, "colony")
    speed = None  # shipPartClass(10, "speed")
    general = None  # shipPartClass(11, "general")
    bombard = None  # shipPartClass(12, "bombard")
    industry = None  # shipPartClass(13, "industry")
    research = None  # shipPartClass(14, "research")
    trade = None  # shipPartClass(15, "trade")
    productionLocation = None  # shipPartClass(16, "productionLocation")


shipPartClass.shortRange = shipPartClass(0, "shortRange")
shipPartClass.fighterBay = shipPartClass(1, "fighterBay")
shipPartClass.fighterHangar = shipPartClass(2, "fighterHangar")
shipPartClass.shields = shipPartClass(3, "shields")
shipPartClass.armour = shipPartClass(4, "armour")
shipPartClass.troops = shipPartClass(5, "troops")
shipPartClass.detection = shipPartClass(6, "detection")
shipPartClass.stealth = shipPartClass(7, "stealth")
shipPartClass.fuel = shipPartClass(8, "fuel")
shipPartClass.colony = shipPartClass(9, "colony")
shipPartClass.speed = shipPartClass(10, "speed")
shipPartClass.general = shipPartClass(11, "general")
shipPartClass.bombard = shipPartClass(12, "bombard")
shipPartClass.industry = shipPartClass(13, "industry")
shipPartClass.research = shipPartClass(14, "research")
shipPartClass.trade = shipPartClass(15, "trade")
shipPartClass.productionLocation = shipPartClass(16, "productionLocation")


class shipSlotType(Enum):
    def __init__(self, numerator, name):
        self.name = name

    external = None  # shipSlotType(0, "external")
    internal = None  # shipSlotType(1, "internal")
    core = None  # shipSlotType(2, "core")


shipSlotType.external = shipSlotType(0, "external")
shipSlotType.internal = shipSlotType(1, "internal")
shipSlotType.core = shipSlotType(2, "core")


class starType(Enum):
    def __init__(self, numerator, name):
        self.name = name

    unknown = None  # starType(-1, "unknown")
    blue = None  # starType(0, "blue")
    white = None  # starType(1, "white")
    yellow = None  # starType(2, "yellow")
    orange = None  # starType(3, "orange")
    red = None  # starType(4, "red")
    neutron = None  # starType(5, "neutron")
    blackHole = None  # starType(6, "blackHole")
    noStar = None  # starType(7, "noStar")


starType.unknown = starType(-1, "unknown")
starType.blue = starType(0, "blue")
starType.white = starType(1, "white")
starType.yellow = starType(2, "yellow")
starType.orange = starType(3, "orange")
starType.red = starType(4, "red")
starType.neutron = starType(5, "neutron")
starType.blackHole = starType(6, "blackHole")
starType.noStar = starType(7, "noStar")


class techStatus(Enum):
    def __init__(self, numerator, name):
        self.name = name

    unresearchable = None  # techStatus(0, "unresearchable")
    partiallyUnlocked = None  # techStatus(1, "partiallyUnlocked")
    researchable = None  # techStatus(2, "researchable")
    complete = None  # techStatus(3, "complete")


techStatus.unresearchable = techStatus(0, "unresearchable")
techStatus.partiallyUnlocked = techStatus(1, "partiallyUnlocked")
techStatus.researchable = techStatus(2, "researchable")
techStatus.complete = techStatus(3, "complete")


class unlockableItemType(Enum):
    def __init__(self, numerator, name):
        self.name = name

    invalid = None  # unlockableItemType(-1, "invalid")
    building = None  # unlockableItemType(0, "building")
    shipPart = None  # unlockableItemType(1, "shipPart")
    shipHull = None  # unlockableItemType(2, "shipHull")
    shipDesign = None  # unlockableItemType(3, "shipDesign")
    tech = None  # unlockableItemType(4, "tech")


unlockableItemType.invalid = unlockableItemType(-1, "invalid")
unlockableItemType.building = unlockableItemType(0, "building")
unlockableItemType.shipPart = unlockableItemType(1, "shipPart")
unlockableItemType.shipHull = unlockableItemType(2, "shipHull")
unlockableItemType.shipDesign = unlockableItemType(3, "shipDesign")
unlockableItemType.tech = unlockableItemType(4, "tech")


class visibility(Enum):
    def __init__(self, numerator, name):
        self.name = name

    invalid = None  # visibility(-1, "invalid")
    none = None  # visibility(0, "none")
    basic = None  # visibility(1, "basic")
    partial = None  # visibility(2, "partial")
    full = None  # visibility(3, "full")


visibility.invalid = visibility(-1, "invalid")
visibility.none = visibility(0, "none")
visibility.basic = visibility(1, "basic")
visibility.partial = visibility(2, "partial")
visibility.full = visibility(3, "full")


def add_special(number, string):
    """
    :param number:
    :type number: int
    :param string:
    :type string: str
    :rtype: None
    """
    return None


def all_empires():
    """
    :rtype: int
    """
    return int()


def create_building(string, number1, number2):
    """
    :param string:
    :type string: str
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :rtype: int
    """
    return int()


def create_field(string, floating_number1, floating_number2, floating_number3):
    """
    :param string:
    :type string: str
    :param floating_number1:
    :type floating_number1: float
    :param floating_number2:
    :type floating_number2: float
    :param floating_number3:
    :type floating_number3: float
    :rtype: int
    """
    return int()


def create_field_in_system(string, floating_number, number):
    """
    :param string:
    :type string: str
    :param floating_number:
    :type floating_number: float
    :param number:
    :type number: int
    :rtype: int
    """
    return int()


def create_fleet(string, number1, number2):
    """
    :param string:
    :type string: str
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :rtype: int
    """
    return int()


def create_monster(string, number):
    """
    :param string:
    :type string: str
    :param number:
    :type number: int
    :rtype: int
    """
    return int()


def create_monster_fleet(number):
    """
    :param number:
    :type number: int
    :rtype: int
    """
    return int()


def create_planet(planet_size, planet_type, number1, number2, string):
    """
    :param planet_size:
    :type planet_size: planetSize
    :param planet_type:
    :type planet_type: planetType
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :param string:
    :type string: str
    :rtype: int
    """
    return int()


def create_ship(string1, string2, string3, number):
    """
    :param string1:
    :type string1: str
    :param string2:
    :type string2: str
    :param string3:
    :type string3: str
    :param number:
    :type number: int
    :rtype: int
    """
    return int()


def create_system(star_type, string, floating_number1, floating_number2):
    """
    :param star_type:
    :type star_type: starType
    :param string:
    :type string: str
    :param floating_number1:
    :type floating_number1: float
    :param floating_number2:
    :type floating_number2: float
    :rtype: int
    """
    return int()


def current_turn():
    """
    :rtype: int
    """
    return int()


def design_create(string1, string2, string3, item_list, string4, string5, boolean):
    """
    :param string1:
    :type string1: str
    :param string2:
    :type string2: str
    :param string3:
    :type string3: str
    :param item_list:
    :type item_list: list
    :param string4:
    :type string4: str
    :param string5:
    :type string5: str
    :param boolean:
    :type boolean: bool
    :rtype: bool
    """
    return bool()


def design_get_monster_list():
    """
    :rtype: list
    """
    return list()


def design_get_premade_list():
    """
    :rtype: list
    """
    return list()


def empire_add_ship_design(number, string):
    """
    :param number:
    :type number: int
    :param string:
    :type string: str
    :rtype: None
    """
    return None


def empire_set_homeworld(number1, number2, string):
    """
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :param string:
    :type string: str
    :rtype: bool
    """
    return bool()


def empire_set_name(number, string):
    """
    :param number:
    :type number: int
    :param string:
    :type string: str
    :rtype: None
    """
    return None


def empire_unlock_item(number, unlockable_item_type, string):
    """
    :param number:
    :type number: int
    :param unlockable_item_type:
    :type unlockable_item_type: unlockableItemType
    :param string:
    :type string: str
    :rtype: None
    """
    return None


def generate_sitrep(number, string1, dictionary, string2):
    """
    :param number:
    :type number: int
    :param string1:
    :type string1: str
    :param dictionary:
    :type dictionary: dict
    :param string2:
    :type string2: str
    :rtype: None
    """
    return None


def generate_starlanes(number1, number2):
    """
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :rtype: None
    """
    return None


def getBuildingType(string):
    """
    Returns the building type (BuildingType) with the indicated name (string).

    :param string:
    :type string: str
    :rtype: buildingType
    """
    return buildingType()


def getFieldType(string):
    """
    :param string:
    :type string: str
    :rtype: fieldType
    """
    return fieldType()


def getHullType(string):
    """
    Returns the ship hull (HullType) with the indicated name (string).

    :param string:
    :type string: str
    :rtype: hullType
    """
    return hullType()


def getPartType(string):
    """
    Returns the ship part (PartType) with the indicated name (string).

    :param string:
    :type string: str
    :rtype: partType
    """
    return partType()


def getShipDesign(number):
    """
    Returns the ship design (ShipDesign) with the indicated id number (int).

    :param number:
    :type number: int
    :rtype: shipDesign
    """
    return shipDesign()


def getSpecial(string):
    """
    Returns the special (Special) with the indicated name (string).

    :param string:
    :type string: str
    :rtype: special
    """
    return special()


def getSpecies(string):
    """
    Returns the species (Species) with the indicated name (string).

    :param string:
    :type string: str
    :rtype: species
    """
    return species()


def getTech(string):
    """
    Returns the tech (Tech) with the indicated name (string).

    :param string:
    :type string: str
    :rtype: tech
    """
    return tech()


def getTechCategories(obj):
    """
    Returns the names of all tech categories (StringVec).

    :param obj:
    :type obj: object
    :rtype: StringVec
    """
    return StringVec()


def get_all_empires():
    """
    :rtype: list
    """
    return list()


def get_all_objects():
    """
    :rtype: list
    """
    return list()


def get_all_specials():
    """
    :rtype: list
    """
    return list()


def get_all_species():
    """
    :rtype: list
    """
    return list()


def get_empire(number):
    """
    :param number:
    :type number: int
    :rtype: empire
    """
    return empire()


def get_galaxy_setup_data():
    """
    :rtype: GalaxySetupData
    """
    return GalaxySetupData()


def get_name(number):
    """
    :param number:
    :type number: int
    :rtype: object
    """
    return object()


def get_native_species():
    """
    :rtype: list
    """
    return list()


def get_owner(number):
    """
    :param number:
    :type number: int
    :rtype: int
    """
    return int()


def get_playable_species():
    """
    :rtype: list
    """
    return list()


def get_pos(number):
    """
    :param number:
    :type number: int
    :rtype: tuple
    """
    return tuple()


def get_resource_dir():
    """
    :rtype: object
    """
    return object()


def get_systems():
    """
    :rtype: list
    """
    return list()


def get_universe():
    """
    :rtype: universe
    """
    return universe()


def get_universe_width():
    """
    :rtype: float
    """
    return float()


def get_x(number):
    """
    :param number:
    :type number: int
    :rtype: float
    """
    return float()


def get_y(number):
    """
    :param number:
    :type number: int
    :rtype: float
    """
    return float()


def invalid_object():
    """
    :rtype: int
    """
    return int()


def invalid_position():
    """
    :rtype: float
    """
    return float()


def jump_distance(number1, number2):
    """
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :rtype: int
    """
    return int()


def large_meter_value():
    """
    :rtype: float
    """
    return float()


def linear_distance(number1, number2):
    """
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :rtype: float
    """
    return float()


def load_fleet_plan_list():
    """
    :rtype: list
    """
    return list()


def load_item_spec_list():
    """
    :rtype: list
    """
    return list()


def load_monster_fleet_plan_list():
    """
    :rtype: list
    """
    return list()


def objs_get_systems(item_list):
    """
    :param item_list:
    :type item_list: list
    :rtype: list
    """
    return list()


def planet_available_foci(number):
    """
    :param number:
    :type number: int
    :rtype: list
    """
    return list()


def planet_cardinal_suffix(number):
    """
    :param number:
    :type number: int
    :rtype: object
    """
    return object()


def planet_get_focus(number):
    """
    :param number:
    :type number: int
    :rtype: object
    """
    return object()


def planet_get_size(number):
    """
    :param number:
    :type number: int
    :rtype: planetSize
    """
    return planetSize()


def planet_get_species(number):
    """
    :param number:
    :type number: int
    :rtype: object
    """
    return object()


def planet_get_type(number):
    """
    :param number:
    :type number: int
    :rtype: planetType
    """
    return planetType()


def planet_make_colony(number1, number2, string, floating_number):
    """
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :param string:
    :type string: str
    :param floating_number:
    :type floating_number: float
    :rtype: bool
    """
    return bool()


def planet_make_outpost(number1, number2):
    """
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :rtype: bool
    """
    return bool()


def planet_set_focus(number, string):
    """
    :param number:
    :type number: int
    :param string:
    :type string: str
    :rtype: None
    """
    return None


def planet_set_size(number, planet_size):
    """
    :param number:
    :type number: int
    :param planet_size:
    :type planet_size: planetSize
    :rtype: None
    """
    return None


def planet_set_species(number, string):
    """
    :param number:
    :type number: int
    :param string:
    :type string: str
    :rtype: None
    """
    return None


def planet_set_type(number, planet_type):
    """
    :param number:
    :type number: int
    :param planet_type:
    :type planet_type: planetType
    :rtype: None
    """
    return None


def remove_special(number, string):
    """
    :param number:
    :type number: int
    :param string:
    :type string: str
    :rtype: None
    """
    return None


def roman_number(number):
    """
    :param number:
    :type number: int
    :rtype: str
    """
    return str()


def set_name(number, string):
    """
    :param number:
    :type number: int
    :param string:
    :type string: str
    :rtype: None
    """
    return None


def set_universe_width(floating_number):
    """
    :param floating_number:
    :type floating_number: float
    :rtype: None
    """
    return None


def special_has_location(string):
    """
    :param string:
    :type string: str
    :rtype: bool
    """
    return bool()


def special_locations(string, item_list):
    """
    :param string:
    :type string: str
    :param item_list:
    :type item_list: list
    :rtype: list
    """
    return list()


def special_spawn_limit(string):
    """
    :param string:
    :type string: str
    :rtype: int
    """
    return int()


def special_spawn_rate(string):
    """
    :param string:
    :type string: str
    :rtype: float
    """
    return float()


def species_add_homeworld(string, number):
    """
    :param string:
    :type string: str
    :param number:
    :type number: int
    :rtype: None
    """
    return None


def species_can_colonize(string):
    """
    :param string:
    :type string: str
    :rtype: bool
    """
    return bool()


def species_get_planet_environment(string, planet_type):
    """
    :param string:
    :type string: str
    :param planet_type:
    :type planet_type: planetType
    :rtype: planetEnvironment
    """
    return planetEnvironment()


def species_preferred_focus(string):
    """
    :param string:
    :type string: str
    :rtype: object
    """
    return object()


def species_remove_homeworld(string, number):
    """
    :param string:
    :type string: str
    :param number:
    :type number: int
    :rtype: None
    """
    return None


def sys_add_starlane(number1, number2):
    """
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :rtype: None
    """
    return None


def sys_free_orbits(number):
    """
    :param number:
    :type number: int
    :rtype: list
    """
    return list()


def sys_get_fleets(number):
    """
    :param number:
    :type number: int
    :rtype: list
    """
    return list()


def sys_get_num_orbits(number):
    """
    :param number:
    :type number: int
    :rtype: int
    """
    return int()


def sys_get_planets(number):
    """
    :param number:
    :type number: int
    :rtype: list
    """
    return list()


def sys_get_star_type(number):
    """
    :param number:
    :type number: int
    :rtype: starType
    """
    return starType()


def sys_get_starlanes(number):
    """
    :param number:
    :type number: int
    :rtype: list
    """
    return list()


def sys_orbit_occupied(number1, number2):
    """
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :rtype: bool
    """
    return bool()


def sys_orbit_of_planet(number1, number2):
    """
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :rtype: int
    """
    return int()


def sys_remove_starlane(number1, number2):
    """
    :param number1:
    :type number1: int
    :param number2:
    :type number2: int
    :rtype: None
    """
    return None


def sys_set_star_type(number, star_type):
    """
    :param number:
    :type number: int
    :param star_type:
    :type star_type: starType
    :rtype: None
    """
    return None


def systems_within_jumps_unordered(number, item_list):
    """
    Return all systems within ''jumps'' of the systems with ids ''sys_ids''

    :param number:
    :type number: int
    :param item_list:
    :type item_list: list
    :rtype: list
    """
    return list()


def techs():
    """
    :rtype: StringVec
    """
    return StringVec()


def techsInCategory(string):
    """
    :param string:
    :type string: str
    :rtype: StringVec
    """
    return StringVec()


def user_string(string):
    """
    :param string:
    :type string: str
    :rtype: str
    """
    return str()


def validShipDesign(string, string_list):
    """
    Returns true (boolean) if the passed hull (string) and parts (StringVec) make up a valid ship design, and false (boolean) otherwise. Valid ship designs don't have any parts in slots that can't accept that type of part, and contain only hulls and parts that exist (and may also need to contain the correct number of parts - this needs to be verified).

    :param string:
    :type string: str
    :param string_list:
    :type string_list: StringVec
    :rtype: bool
    """
    return bool()
