The difference between public and private dependencies affects how the module’s includes and symbols are exposed to other modules.
Most of the time adding as a public dependency is all you need because what you need (the dependency aka function, struct etc) is in the header file.
Sometimes a module can define certain symbols inside a C++ file in that case you will need to add that module as a private dependency as well to be able to access the dependency.
To answer your question, the way to know is to see where that decency is located, if it’s in a C++ file then you need a private dependency if it’s a header file then a public one. Sometimes starting with a public and hitting the compile button might help you decide.