Are they all needed by the editor anyway?

Not sure which is best, having them full decoupled (only depend on api/selection, not api, and use the return value as Selection), or expose all of it as part of helpers on a main api entry point (depend on api, maybe do api.getSelection() instead of new-ing a Selection?)...