package dev.serrahima.lluerna.source import dev.serrahima.lluerna.domain.Post /** * the seam that keeps the ui protocol-agnostic. * * v1 implements exactly one source (`StandardSiteSource`). a future * `BlueskySource` / `WafrnSource` implements this same interface; the ui never * learns a second protocol. * * (shape is tentative — it will settle once the feed milestone lands.) */ interface PostSource { /** a follow-based feed for the given followed publication ids (at-uris). */ suspend fun feed(followedPublications: List): List /** the full chain ending at [uri], root-first. */ suspend fun thread(uri: String): List }