Package-level declarations
Types
The endpoint + body pair a MutationCodec reconstructs from a persisted payload. Distinct from QueuedMutation because it carries no MutationRecord.id/MutationRecord.key — those live on the record itself and are reattached by MutationQueue after decoding.
The default MutationStore: an in-memory map. Mutations enqueued with a MutationCodec are still tracked (so MutationQueue.restore works within the same process, e.g. after recreating a MutationQueue), but everything is lost on process death — use this when you don't need mutations to survive a relaunch, or as a reference implementation when writing a durable one.
Bridges a specific mutation shape (one NetworkEndpoint implementation + body type) to and from a JSON string, so it can survive in a durable MutationStore and be replayed after the process restarts.
Returned immediately by MutationQueue.enqueueMutation/enqueue. Execution happens in the background, so this carries no result — observe MutationQueue.statusFlow with key for outcome.
Identifies the logical mutation being made, independent of when it was enqueued.
Enqueues "forgivable" mutations (likes, follows, and similar fire-and-forget writes) for background execution with retry, instead of awaiting them inline from a ViewModel.
The fully serializable snapshot of one enqueued mutation that a MutationStore persists.
The lifecycle of one enqueued mutation, as observed via MutationQueue.statusFlow.
Pluggable persistence for enqueued mutations, keyed by MutationRecord.id.
The live, in-process description of one enqueued mutation: which endpoint to call and what body to send. This is what MutationQueue actually executes via io.github.maniramezan.kenwork.network.ApiClient.request.
Functions
Enqueues a bodyless mutation (e.g. POST /videos/42/like with no request body).