Completion provider interface.
You must implement this interface to provide proposals to [class@Completion].
In most cases, implementations of this interface will want to use [vfunc@CompletionProvider.populate_async] to asynchronously populate the results to avoid blocking the main loop.