def METHOD_NAME(MockAppController, ieee_mock):
    """Create zigpy device from Quirk's signature."""
    def _dev(quirk, ieee=None, nwk=zigpy.types.NWK(0x1234), apply_quirk=True):
        if ieee is None:
            ieee = ieee_mock
        models_info = quirk.signature.get(
            MODELS_INFO,
            (
                (
                    quirk.signature.get(MANUFACTURER, "Mock Manufacturer"),
                    quirk.signature.get(MODEL, "Mock Model"),
                ),
            ),
        )
        manufacturer, model = models_info[0]
        raw_device = zigpy.device.Device(MockAppController, ieee, nwk)
        raw_device.manufacturer = manufacturer
        raw_device.model = model
        endpoints = quirk.signature.get(ENDPOINTS, {})
        for ep_id, ep_data in endpoints.items():
            ep = raw_device.add_endpoint(ep_id)
            ep.profile_id = ep_data.get(PROFILE_ID, 0x0260)
            ep.device_type = ep_data.get(DEVICE_TYPE, 0xFEDB)
            in_clusters = ep_data.get(INPUT_CLUSTERS, [])
            for cluster_id in in_clusters:
                ep.add_input_cluster(cluster_id)
            out_clusters = ep_data.get(OUTPUT_CLUSTERS, [])
            for cluster_id in out_clusters:
                ep.add_output_cluster(cluster_id)
        if not apply_quirk:
            return raw_device
        device = quirk(MockAppController, ieee, nwk, raw_device)
        MockAppController.devices[ieee] = device
        return device
    return _dev