"Objects" in OOP, as in "let's couple data with behavior" necessarily means mutable state, otherwise they are just types.
Use only immutable data; write abstract classes only; do polymorphism with interfaces and you'll end up with something very similar to what people mean by 'type-level programming' in Haskell.