A statement that declares a fact is different than a statement which is a fact. For instance, I declare the fact that the earth is flat. That is a factual declaration. It is a false one.
I agree that it may be prone to particular individual interpretations of what it means to declare a fact. In any case, I suggest not to waste too much time on the word 'fact' here, and simply understand that a statement must be a factual declaration. Something that has a well-defined, and unique, truth value. For instance, "Mars has precisely one billion stones on its surface at the time of writing this answer" is a factual statement, it's either true or false, but we will never ever know its truth value. More mathematical examples include: There are infinitely many primes numbers (a true statement), there are infinitely many even prime numbers (a false statement), and there are infinitely many twin primes (a statement which we currently do not know if it's true or false).
Now, as for explicitly requiring that a statement only has one truth value, while it is not easy to come up with such situations, they do occur. For instance, the utterance "this statement is true" can consistently be assigned the truth value True and False at the same time. Its twin, the utterance "this statement is false" is a famous example of an innocent looking utterance that seems factual but can't be assigned any truth value at all. So, in propositional/predicate logic we simply banish such problematic utterances out of the language we use to talk about mathematics.
It should be noted though that the above is the case for what is known as classical logic or Aristotelean logic. There are other logical systems, notably paraconsistent logic, which allows for statements which are both true and false at the same time. However, the vast majority of mathematicians assume classical logic. Another branch of logic which is gaining ground, particularly in the context of computer science, is constructivism. It does not allow statement both true and false, but it also does not demand that each statement is either true or false, but rather more truth values are allowed.