The supported interface is the methods in Moose::Meta::Class. has and such are just a convenient sugar layer, but they do not do anything other than pass the arguments through to the proper methods on the meta layer (read the source to Moose.pm, it is pretty easy).