+# Copyright 2023 highstreet technologies GmbH
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#!/usr/bin/python
+
+"""
+A collection of TypeDefinitions
+"""
+from enum import Enum
+from network_generation.model.python.countries import Country
+
+
+# Define AdministrativeState enum
+class AdministrativeState(Enum):
+ LOCKED = "locked"
+ UNLOCKED = "unlocked"
+ SHUTTING_DOWN = "shutting down"
+
+
+# Define AlarmState type
+AlarmState = int
+
+# Define Address type
+AddressType = {
+ "street": str,
+ "building": str,
+ "room": str,
+ "city": str,
+ "zip": str,
+ "state": str,
+ "country": Country,
+}
+
+
+# Define OperationalState enum
+class OperationalState(Enum):
+ ENABLED = "enabled"
+ DISABLED = "disabled"
+
+
+# Define LifeCycleState enum
+class LifeCycleState(Enum):
+ PLANNED = "planned"
+ ORDERED = "ordered"
+ INSTALLED = "installed"
+ COMMISSIONED = "commissioned"
+ TO_BE_DESTROYED = "to be destroyed"
+ DESTROYED = "destroyed"
+
+
+# Define UsageState enum
+class UsageState(Enum):
+ USED = "used"
+ UNUSED = "unused"
+
+
+# Define Enumerate type
+def Enumerate(N, Acc=None):
+ if Acc is None:
+ Acc = []
+ if len(Acc) == N:
+ return Acc[-1]
+ return Enumerate(N, Acc + [len(Acc)])
+
+
+# Define Range type
+def Range(F, T) -> list[int]:
+ return [i for i in range(F, T + 1)]
+
+
+# Define Procent and Utilization types
+Procent = Range(0, 100)
+Utilization = Procent