use Future;
use crate::;
/// What an embedding product may ask of the kernel.
///
/// Reads only. Ingestion, projection and export have their own commands,
/// idempotency and provenance inside the kernel; a consumer reaches them
/// through the kernel's own surfaces. What this trait promises is the part a
/// consumer needs to *recall* — and to keep working, with a stub, when the
/// kernel is absent.
///
/// Methods return named `Send` futures rather than using `async fn`, so the
/// trait can be consumed generically from multi-threaded runtimes. It is not
/// object-safe; consumers hold an implementation by generic parameter, which
/// is also what lets a stub replace the kernel in their tests.