<think>
Okay, let's see. The user wants me to fix the hide_values function. The current code is supposed to star out every value in the store, with one star per character. Also, the keys should be starred out too. But the original code only hides the values, not the keys.

Looking at the current code: the function takes a dictionary 'store' and creates a new 'hidden' dictionary. For each key-value pair in 'store', it's adding an entry to 'hidden' where the key is "*" multiplied by the length of the original key. Wait, that's not right. Because the key in the new dictionary is being set to a string of stars based on the length of the original key. But the problem says that both the keys and values should be starred out. 

Wait, the original code's line is: hidden["*" * len(key)] = value. So for each key in the original store, the new key is a string of stars equal in length to the original key. But the value is the original value. But the problem says that the values should be starred out, one star per character. So the value should be replaced with a string of stars of the same length as the original value. Also, the keys should be starred out as well. 

So the current code is only hiding the values, not the keys. The keys in the new dictionary are being set to stars based on their original length, but the problem says that the keys themselves should be starred out. Wait, but the keys in the new dictionary are being set to a string of stars equal to the length of the original key. So if the original key is "apple" (5 letters), the new key is "*****". But the problem says that the keys should be starred out. So that part is correct. But the values are not being starred out. The value is being kept as the original value. So the function is only hiding the keys, not the values. 

Wait, the problem says: "a store holding nothing comes back holding nothing." So if the input is empty, the output is empty. That's handled correctly in the current code. But the main issue is that the values are not being starred out. The current code is taking the original value and putting it into the new dictionary. But the problem says that the values should be starred out. 

So the correct approach is: for each key and value in the original store, the new key is a string of stars equal to the length of the original key, and the new value is a string of stars equal to the length of the original value. 

So the original code is only handling the keys, not the values. So the fix is to modify the line where the value is set. Instead of just putting the original value, we need to replace it with a string of stars of the same length as the original value. 

So the corrected code should be:

def hide_values(store: dict) -> dict:
    """A store with every value starred out."""
    hidden = {}
    for key, value in store.items():
        hidden["*" * len(key)] = "*" * len(value)
    return hidden

Wait, but what if the value is None? Or if the value is not a string? The problem says that the values are to be starred out, one star per character. So assuming that the values are strings. But the function is supposed to handle any value, but the problem says that the keys and values are to be starred out. So if the value is not a string, perhaps the code would fail. But according to the problem statement, the function is supposed to handle the values as per the contract. 

But the original code is using len(value), which would