# 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 AccountingInfoVec(object):
    def __contains__(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: bool
        """
        return bool()

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

    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 extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None


class EffectCause(object):
    @property
    def causeType(self):
        pass

    @property
    def customLabel(self):
        pass

    @property
    def specificCause(self):
        pass


class GGColor(object):
    @property
    def a(self):
        return int()

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

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

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


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

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

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

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

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

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

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

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

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

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


class GameRules(object):
    @property
    def empty(self):
        pass

    @property
    def getRulesAsStrings(self):
        pass

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

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

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

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

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

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

    def ruleExistsWithType(self, string, arg):
        """
        :param string:
        :type string: str
        :param arg:
        :type arg: ruleType
        :rtype: bool
        """
        return bool()


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

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


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

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


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

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


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

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


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

    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 extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None


class IntSet(object):
    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 count(self, number):
        """
        :param number:
        :type number: int
        :rtype: int
        """
        return int()

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

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


class IntSetSet(object):
    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 count(self, int_set):
        """
        :param int_set:
        :type int_set: IntSet
        :rtype: int
        """
        return int()

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

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


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

    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 __iter__(self):
        """
        :rtype: iter
        """
        return iter()

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

    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 extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None


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

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


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

    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 __iter__(self):
        """
        :rtype: iter
        """
        return iter()

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

    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 extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

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


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

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


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

    @property
    def string(self):
        pass


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

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


class RuleValueStringStringPair(object):
    @property
    def name(self):
        pass

    @property
    def value(self):
        pass


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

    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 extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

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


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

    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 extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None


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

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

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

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

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

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


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

    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 __iter__(self):
        """
        :rtype: iter
        """
        return iter()

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

    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 extend(self, obj):
        """
        :param obj:
        :type obj: object
        :rtype: None
        """
        return None


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

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


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

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


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

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

    @property
    def dump(self):
        pass

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

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

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

    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 perTurnCost(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: float
        """
        return float()

    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()


class diplomaticMessage(object):
    @property
    def recipient(self):
        return int()

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

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


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

    @property
    def empire2(self):
        pass

    @property
    def status(self):
        pass


class empire(object):
    @property
    def allShipDesigns(self):
        return IntSet()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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 getMeter(self, meter_name):
        """
        :param meter_name:
        :type meter_name: string
        :rtype: meter
        """
        return meter()

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

    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 hasExploredSystem(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 obstructedStarlanes(self):
        """
        :rtype: IntPairVec
        """
        return IntPairVec()

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

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

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

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

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

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

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

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

    def supplyProjections(self):
        """
        :rtype: dict[int, int]
        """
        return dict()

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


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

    @property
    def dump(self):
        pass

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


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

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

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

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

    @property
    def slots(self):
        return ShipSlotVec()

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

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

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

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

    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()

    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()


class meter(object):
    @property
    def current(self):
        return float()

    @property
    def dump(self):
        pass

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


class partType(object):
    @property
    def capacity(self):
        return float()

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

    @property
    def mountableSlotTypes(self):
        return ShipSlotVec()

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

    @property
    def partClass(self):
        return shipPartClass()

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

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

    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()


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


class productionQueue(object):
    @property
    def allocatedPP(self):
        return resPoolMap()

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

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

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

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

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

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

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

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

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


class productionQueueElement(object):
    @property
    def allocation(self):
        return float()

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

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

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

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

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

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

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

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

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

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


class resPool(object):
    pass


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

    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 __iter__(self):
        """
        :rtype: object
        """
        return object()

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

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


class researchQueue(object):
    @property
    def empireID(self):
        return int()

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

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

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

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

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

    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):
        return float()

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

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


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

    @property
    def focus(self):
        pass

    @property
    def turnsSinceFocusChange(self):
        pass


class shipDesign(object):
    @property
    def attack(self):
        return float()

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

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

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

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

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

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

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

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

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

    @property
    def dump(self):
        pass

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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 productionTime(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: int
        """
        return int()


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

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

    @property
    def typeString(self):
        pass

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

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


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

    @property
    def dump(self):
        pass

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

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

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

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


class species(object):
    @property
    def canColonize(self):
        return bool()

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

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

    @property
    def dump(self):
        pass

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

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

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

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

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

    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 description(self):
        return str()

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

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

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

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

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

    def perTurnCost(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 researchCost(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 allObjectIDs(self):
        return IntVec()

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

    @property
    def effectAccounting(self):
        return TargetIDAccountingMapMap()

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

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

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

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

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

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

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

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

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

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

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

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

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

    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 getSystem(self, number):
        """
        :param number:
        :type number: int
        :rtype: system
        """
        return system()

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

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

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

    def jumpDistance(self, number1, number2):
        """
        If two system ids are passed or both objects are within a system, return the jump distance between the two systems. If one object (e.g. a fleet) is on a starlane, then calculate the jump distance from both ends of the starlane to the target system and return the smaller one.

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

    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 linearDistance(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: float
        """
        return float()

    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 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 shortestPathDistance(self, number1, number2):
        """
        :param number1:
        :type number1: int
        :param number2:
        :type number2: int
        :rtype: float
        """
        return float()

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

    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 updateMeterEstimates(self, item_list):
        """
        :param item_list:
        :type item_list: list
        :rtype: None
        """
        return None


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

    @property
    def containedObjects(self):
        pass

    @property
    def containerObject(self):
        pass

    @property
    def creationTurn(self):
        pass

    @property
    def dump(self):
        pass

    @property
    def id(self):
        pass

    @property
    def meters(self):
        pass

    @property
    def name(self):
        pass

    @property
    def owner(self):
        pass

    @property
    def specials(self):
        pass

    @property
    def systemID(self):
        pass

    @property
    def tags(self):
        pass

    @property
    def unowned(self):
        pass

    @property
    def x(self):
        pass

    @property
    def y(self):
        pass

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

    def contains(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 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()

    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 nextTurnCurrentMeterValue(self, meter_type):
        """
        :param meter_type:
        :type meter_type: meterType
        :rtype: float
        """
        return float()

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

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


class AccountingInfo(EffectCause):
    @property
    def meterChange(self):
        pass

    @property
    def meterRunningTotal(self):
        pass

    @property
    def sourceID(self):
        pass


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

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

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

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


class field(universeObject):
    @property
    def fieldTypeName(self):
        pass

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


class ship(universeObject):
    @property
    def arrivedOnTurn(self):
        return int()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    def partMeters(self):
        return ShipPartMeterMap()

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

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

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

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

    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 buildingIDs(self):
        return IntSet()

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

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

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

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

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

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

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

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

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

    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 planet(universeObject, popCenter, resourceCenter):
    @property
    def InitialOrbitalPosition(self):
        return float()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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")
    acceptPeaceProposal = None  # diplomaticMessageType(2, "acceptPeaceProposal")
    alliesProposal = None  # diplomaticMessageType(3, "alliesProposal")
    acceptAlliesProposal = None  # diplomaticMessageType(4, "acceptAlliesProposal")
    endAllies = None  # diplomaticMessageType(5, "endAllies")
    cancelProposal = None  # diplomaticMessageType(6, "cancelProposal")
    rejectProposal = None  # diplomaticMessageType(7, "rejectProposal")


diplomaticMessageType.noMessage = diplomaticMessageType(-1, "noMessage")
diplomaticMessageType.warDeclaration = diplomaticMessageType(0, "warDeclaration")
diplomaticMessageType.peaceProposal = diplomaticMessageType(1, "peaceProposal")
diplomaticMessageType.acceptPeaceProposal = diplomaticMessageType(2, "acceptPeaceProposal")
diplomaticMessageType.alliesProposal = diplomaticMessageType(3, "alliesProposal")
diplomaticMessageType.acceptAlliesProposal = diplomaticMessageType(4, "acceptAlliesProposal")
diplomaticMessageType.endAllies = diplomaticMessageType(5, "endAllies")
diplomaticMessageType.cancelProposal = diplomaticMessageType(6, "cancelProposal")
diplomaticMessageType.rejectProposal = diplomaticMessageType(7, "rejectProposal")


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

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


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


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

    invalid = None  # effectsCauseType(-1, "invalid")
    unknown = None  # effectsCauseType(0, "unknown")
    inherent = None  # effectsCauseType(1, "inherent")
    tech = None  # effectsCauseType(2, "tech")
    building = None  # effectsCauseType(3, "building")
    field = None  # effectsCauseType(4, "field")
    special = None  # effectsCauseType(5, "special")
    species = None  # effectsCauseType(6, "species")
    shipPart = None  # effectsCauseType(7, "shipPart")
    shipHull = None  # effectsCauseType(8, "shipHull")


effectsCauseType.invalid = effectsCauseType(-1, "invalid")
effectsCauseType.unknown = effectsCauseType(0, "unknown")
effectsCauseType.inherent = effectsCauseType(1, "inherent")
effectsCauseType.tech = effectsCauseType(2, "tech")
effectsCauseType.building = effectsCauseType(3, "building")
effectsCauseType.field = effectsCauseType(4, "field")
effectsCauseType.special = effectsCauseType(5, "special")
effectsCauseType.species = effectsCauseType(6, "species")
effectsCauseType.shipPart = effectsCauseType(7, "shipPart")
effectsCauseType.shipHull = effectsCauseType(8, "shipHull")


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")
    maxStockpile = None  # meterType(13, "maxStockpile")
    maxTroops = None  # meterType(14, "maxTroops")
    population = None  # meterType(15, "population")
    industry = None  # meterType(16, "industry")
    research = None  # meterType(17, "research")
    trade = None  # meterType(18, "trade")
    construction = None  # meterType(19, "construction")
    happiness = None  # meterType(20, "happiness")
    capacity = None  # meterType(21, "capacity")
    secondaryStat = None  # meterType(22, "secondaryStat")
    fuel = None  # meterType(23, "fuel")
    shield = None  # meterType(24, "shield")
    structure = None  # meterType(25, "structure")
    defense = None  # meterType(26, "defense")
    supply = None  # meterType(27, "supply")
    stockpile = None  # meterType(28, "stockpile")
    troops = None  # meterType(29, "troops")
    rebels = None  # meterType(30, "rebels")
    size = None  # meterType(31, "size")
    stealth = None  # meterType(32, "stealth")
    detection = None  # meterType(33, "detection")
    speed = None  # meterType(34, "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.maxStockpile = meterType(13, "maxStockpile")
meterType.maxTroops = meterType(14, "maxTroops")
meterType.population = meterType(15, "population")
meterType.industry = meterType(16, "industry")
meterType.research = meterType(17, "research")
meterType.trade = meterType(18, "trade")
meterType.construction = meterType(19, "construction")
meterType.happiness = meterType(20, "happiness")
meterType.capacity = meterType(21, "capacity")
meterType.secondaryStat = meterType(22, "secondaryStat")
meterType.fuel = meterType(23, "fuel")
meterType.shield = meterType(24, "shield")
meterType.structure = meterType(25, "structure")
meterType.defense = meterType(26, "defense")
meterType.supply = meterType(27, "supply")
meterType.stockpile = meterType(28, "stockpile")
meterType.troops = meterType(29, "troops")
meterType.rebels = meterType(30, "rebels")
meterType.size = meterType(31, "size")
meterType.stealth = meterType(32, "stealth")
meterType.detection = meterType(33, "detection")
meterType.speed = meterType(34, "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")
    stockpile = None  # resourceType(3, "stockpile")


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


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

    host = None  # roleType(0, "host")
    clientTypeModerator = None  # roleType(1, "clientTypeModerator")
    clientTypePlayer = None  # roleType(2, "clientTypePlayer")
    clientTypeObserver = None  # roleType(3, "clientTypeObserver")
    galaxySetup = None  # roleType(4, "galaxySetup")


roleType.host = roleType(0, "host")
roleType.clientTypeModerator = roleType(1, "clientTypeModerator")
roleType.clientTypePlayer = roleType(2, "clientTypePlayer")
roleType.clientTypeObserver = roleType(3, "clientTypeObserver")
roleType.galaxySetup = roleType(4, "galaxySetup")


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

    invalid = None  # ruleType(-1, "invalid")
    toggle = None  # ruleType(0, "toggle")
    int = None  # ruleType(1, "int")
    double = None  # ruleType(2, "double")
    string = None  # ruleType(3, "string")


ruleType.invalid = ruleType(-1, "invalid")
ruleType.toggle = ruleType(0, "toggle")
ruleType.int = ruleType(1, "int")
ruleType.double = ruleType(2, "double")
ruleType.string = ruleType(3, "string")


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 allEmpireIDs():
    """
    Returns an object (intVec) that contains the empire IDs of all empires in the game.

    :rtype: IntVec
    """
    return IntVec()


def allPlayerIDs():
    """
    Returns an object (intVec) that contains the player IDs of all players in the game.

    :rtype: IntVec
    """
    return IntVec()


def currentTurn():
    """
    Returns the current game turn (int).

    :rtype: int
    """
    return int()


def doneTurn():
    """
    Ends the AI player's turn, indicating to the server that all orders have been issued and turn processing may commence.

    :rtype: None
    """
    return None


def empireID():
    """
    Returns the empire ID (int) of this AI player's empire.

    :rtype: int
    """
    return int()


def empirePlayerID(number):
    """
    Returns the player ID (int) of the player who is controlling the empire with the indicated empireID (int).

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


def getAIDir():
    """
    :rtype: str
    """
    return str()


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

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


def getEmpire(number=None):
    """
    Returns the empire object (Empire) of this AI player
    Returns the empire object (Empire) with the specified empire ID (int)

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


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


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


def getGameRules():
    """
    Returns the game rules manager, which can be used to look up the names (string) of rules are defined with what type (boolean / toggle, int, double, string), and what values the rules have in the current game.

    :rtype: GameRules
    """
    return GameRules()


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

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


def getOptionsDBOptionBool(string):
    """
    Returns the bool value of option in OptionsDB or None if the option does not exist.

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


def getOptionsDBOptionDouble(string):
    """
    Returns the double value of option in OptionsDB or None if the option does not exist.

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


def getOptionsDBOptionInt(string):
    """
    Returns the integer value of option in OptionsDB or None if the option does not exist.

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


def getOptionsDBOptionStr(string):
    """
    Returns the string value of option in OptionsDB or None if the option does not exist.

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


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

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


def getSaveStateString():
    """
    Returns the previously-saved state string (string). Can be used to retrieve the last-set save state string at any time, although this string is also passed to the resumeLoadedGame(savedStateString) Python function when a game is loaded, so this function isn't necessary to use if resumeLoadedGame stores the passed string.

    :rtype: str
    """
    return str()


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 getUniverse():
    """
    Returns the universe object (Universe)

    :rtype: universe
    """
    return universe()


def getUserConfigDir():
    """
    Returns path to directory where FreeOrion stores user specific configuration.

    :rtype: str
    """
    return str()


def getUserDataDir():
    """
    Returns path to directory where FreeOrion stores user specific data (saves, etc.).

    :rtype: str
    """
    return str()


def initMeterEstimatesDiscrepancies():
    """
    :rtype: None
    """
    return None


def issueAggressionOrder(number, boolean):
    """
    :param number:
    :type number: int
    :param boolean:
    :type boolean: bool
    :rtype: int
    """
    return int()


def issueAllowStockpileProductionOrder(number, boolean):
    """
    Orders the item on the production queue at index queueIndex (int) to be enabled (or disabled) to use the imperial stockpile. Returns 1 (int) on success or 0 (int) on failure if the queue index is less than 0 or greater than the largest indexed item on the queue.

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


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


def issueChangeFocusOrder(number, string):
    """
    Orders the planet with ID planetID (int) to use focus setting focus (string). Returns 1 (int) on success or 0 (int) on failure if the planet can't be found or isn't owned by this player, or if the specified focus is not valid on the planet.

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


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


def issueColonizeOrder(number1, number2):
    """
    Orders the ship with ID shipID (int) to colonize the planet with ID planetID (int). Returns 1 (int) on success or 0 (int) on failure due to not finding the indicated ship or planet, this client's player not owning the indicated ship, the planet already being colonized, or the planet and ship not being in the same system.

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


def issueCreateShipDesignOrder(string1, string2, string3, item_list, string4, string5, boolean):
    """
    Orders the creation of a new ship design with the name (string), description (string), hull (string), parts vector partsVec (StringVec), graphic (string) and model (string). model should be left as an empty string as of this writing. There is currently no easy way to find the id of the new design, though the client's empire should have the new design after this order is issued successfully. Returns 1 (int) on success or 0 (int) on failure if any of the name, description, hull or graphic are empty strings, if the design is invalid (due to not following number and type of slot requirements for the hull) or if creating the design fails for some reason.

    :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: int
    """
    return int()


def issueDequeueProductionOrder(number):
    """
    Orders the item on the production queue at index queueIndex (int) to be removed form the production queue. Returns 1 (int) on success or 0 (int) on failure if the queue index is less than 0 or greater than the largest indexed item on the queue.

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


def issueDequeueTechOrder(string):
    """
    Orders the tech with name techName (string) to be removed from the queue. Returns 1 (int) on success or 0 (int) on failure if the indicated tech can't be found. Will return 1 (int) but do nothing if the indicated tech isn't on this player's empire's tech queue.

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


def issueEnqueueBuildingProductionOrder(string, number):
    """
    Orders the building with name (string) to be added to the production queue at the location of the planet with id locationID. Returns 1 (int) on success or 0 (int) on failure if there is no such building or it is not available to this player's empire, or if the building can't be produced at the specified location.

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


def issueEnqueueShipProductionOrder(number1, number2):
    """
    Orders the ship design with ID designID (int) to be added to the production queue at the location of the planet with id locationID (int). Returns 1 (int) on success or 0 (int) on failure there is no such ship design or it not available to this player's empire, or if the design can't be produced at the specified location.

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


def issueEnqueueTechOrder(string, number):
    """
    Orders the tech with name techName (string) to be added to the tech queue at position (int) on the queue. Returns 1 (int) on success or 0 (int) on failure if the indicated tech can't be found. Will return 1 (int) but do nothing if the indicated tech can't be enqueued by this player's empire.

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


def issueFleetMoveOrder(number1, number2):
    """
    Orders the fleet with indicated fleetID (int) to move to the system with the indicated destinationID (int). Returns 1 (int) on success or 0 (int) on failure due to not finding the indicated fleet or system.

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


def issueFleetTransferOrder(number1, number2):
    """
    Orders the ship with ID shipID (int) to be transferred to the fleet with ID newFleetID. Returns 1 (int) on success, or 0 (int) on failure due to not finding the fleet or ship, or the client's empire not owning either, or the two not being in the same system (or either not being in a system) or the ship already being in the fleet.

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


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


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


def issueNewFleetOrder(string, number):
    """
    Orders a new fleet to be created with the indicated name (string) and containing the indicated shipIDs (IntVec). The ships must be located in the same system and must all be owned by this player. Returns 1 (int) on success or 0 (int) on failure due to one of the noted conditions not being met.

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


def issuePauseProductionOrder(number, boolean):
    """
    Orders the item on the production queue at index queueIndex (int) to be paused (or unpaused). Returns 1 (int) on success or 0 (int) on failure if the queue index is less than 0 or greater than the largest indexed item on the queue.

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


def issueRenameOrder(number, string):
    """
    Orders the renaming of the object with indicated objectID (int) to the new indicated name (string). Returns 1 (int) on success or 0 (int) on failure due to this AI player not being able to rename the indicated object (which this player must fully own, and which must be a fleet, ship or planet).

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


def issueRequeueProductionOrder(number1, number2):
    """
    Orders the item on the production queue at index oldQueueIndex (int) to be moved to index newQueueIndex (int). Returns 1 (int) on success or 0 (int) on failure if the old and new queue indices are equal, if either queue index is less than 0 or greater than the largest indexed item on the queue.

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


def issueScrapOrder(number):
    """
    Orders the ship or building with the indicated objectID (int) to be scrapped. Returns 1 (int) on success or 0 (int) on failure due to not finding a ship or building with the indicated ID, or if the indicated ship or building is not owned by this AI client's empire.

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


def playerEmpireID(number):
    """
    Returns the empire ID (int) of the player with the specified player ID (int).

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


def playerID():
    """
    Returns the integer id of this AI player.

    :rtype: int
    """
    return int()


def playerIsAI(number):
    """
    Returns True (boolean) if the player with the indicated playerID (int) is controlled by an AI and false (boolean) otherwise.

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


def playerIsHost(number):
    """
    Returns True (boolean) if the player with the indicated playerID (int) is the host player for the game and false (boolean) otherwise.

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


def playerName(number=None):
    """
    Returns the name (string) of the player with the indicated playerID (int).
    Returns the name (string) of this AI player.

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


def sendChatMessage(number, string):
    """
    Sends the indicated message (string) to the player with the indicated recipientID (int) or to all players if recipientID is -1.

    :param number:
    :type number: int
    :param string:
    :type string: str
    :rtype: None
    """
    return None


def sendDiplomaticMessage(diplomatic_message):
    """
    :param diplomatic_message:
    :type diplomatic_message: diplomaticMessage
    :rtype: None
    """
    return None


def setSaveStateString(string):
    """
    Sets the save state string (string). This is a persistant storage space for the AI script to retain state information when the game is saved and reloaded. Any AI state information to be saved should be stored in a single string (likely using Python's pickle module) and stored using this function when the prepareForSave() Python function is called.

    :param string:
    :type string: str
    :rtype: None
    """
    return None


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


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


def updateMeterEstimates(boolean):
    """
    :param boolean:
    :type boolean: bool
    :rtype: None
    """
    return None


def updateProductionQueue():
    """
    :rtype: None
    """
    return None


def updateResearchQueue():
    """
    :rtype: None
    """
    return None


def updateResourcePools():
    """
    :rtype: None
    """
    return None


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


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


def userStringList(string):
    """
    :param string:
    :type string: str
    :rtype: list
    """
    return list()


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()
