A prototype of (@) is meaningless. It does not force anything because the smallest list is empty: it asks for an argument in list context, not an array.
I don't think there is a prototype for what you ask, you will probably have to do without (ttt(\@a,\@b,\@c)) and use
ref to check that each argument is of the correct type. Trouble is that this is a run-time check not a compile-time check as you get with a prototype.