Some general advice on interface design:
- Start by imagining the best possible interface, unconstrained by the practicalities of implementation; though you may need to temper this ideal based on the practicalities of implementation, start by imagining your perfect interface.
- As pointed out by TheDamian in PBP, you must "play test" your interface for a while to find a good, usable, practical one. Writing tests first helps here. "Play test" it from several different perspectives: newbie user perspective, expert user perspective, and so on.
- Deriving an interface from real use cases and YAGNI helps keep the interface small and simple (and avoid over-engineering).
- Be patient. You are most unlikely to design the perfect interface the first time. After you have used the interface in anger for a few weeks, re-think it again.
See also Ingy's "Swiss Army Light Sabre" - or, "how do you design your APIs?".