Statically typed

if using val a = 10 or val a = "hello "
then we are not declaring the type so why do we call it statically typed language

You don’t need to give the types here explicitly but that doesn’t these variables doesn’t have any types.

then how does this know that what are we storing int or string or what, basically how does it interprete the bits as we are not saying it implicitly
and also does it happens at compile time

Check for java bytecode of the kotlin code and you’ll understand