async getVirtualRestrictions() {
        const virtualWalls = [];
        const restrictedZones = [];


        this.robot.state.map.entities.filter(e => {
            return (e instanceof entities.map.LineMapEntity && e.type === entities.map.LineMapEntity.TYPE.VIRTUAL_WALL) ||
                (e instanceof entities.map.PolygonMapEntity && e.type === entities.map.PolygonMapEntity.TYPE.NO_GO_AREA) ||
                (e instanceof entities.map.PolygonMapEntity && e.type === entities.map.PolygonMapEntity.TYPE.NO_MOP_AREA);
        }).forEach(restriction => {
            if (restriction instanceof entities.map.LineMapEntity) {
                virtualWalls.push(new ValetudoVirtualWall({
                    points: {
                        pA: {
                            x: restriction.points[0],
                            y: restriction.points[1]
                        },
                        pB: {
                            x: restriction.points[2],
                            y: restriction.points[3]
                        }
                    }
                }));
            } else if (restriction instanceof entities.map.PolygonMapEntity) {
                let type;

                switch (restriction.type) {
                    case entities.map.PolygonMapEntity.TYPE.NO_GO_AREA:
                        type = ValetudoRestrictedZone.TYPE.REGULAR;
                        break;
                    case entities.map.PolygonMapEntity.TYPE.NO_MOP_AREA:
                        type = ValetudoRestrictedZone.TYPE.MOP;
                        break;
                }

                restrictedZones.push(new ValetudoRestrictedZone({
                    points: {
                        pA: {
                            x: restriction.points[0],
                            y: restriction.points[1]
                        },
                        pB: {
                            x: restriction.points[2],
                            y: restriction.points[3]
                        },
                        pC: {
                            x: restriction.points[4],
                            y: restriction.points[5]
                        },
                        pD: {
                            x: restriction.points[6],
                            y: restriction.points[7]
                        }
                    },
                    type: type
                }));
            }
        });

        return new ValetudoVirtualRestrictions({
            virtualWalls: virtualWalls,
            restrictedZones: restrictedZones
        });
    }
@returns {Promise<import("../../entities/core/ValetudoVirtualRestrictions")>}