import type {
  ContentEntry,
  ContentInput,
  ContentVisibility,
  EntityRef,
  ListQuery,
} from '@platform-modules/content'

/**
 * Injected data seam for browser-side content authoring.
 * The consumer wires each method to its authenticated API route — identity is server-derived.
 */
export interface ContentClient {
  list(query?: ListQuery): Promise<ContentEntry[]>
  getBySlug(type: string, slug: string): Promise<ContentEntry | null>
  put(input: ContentInput): Promise<ContentEntry>
  publish(id: string): Promise<EntityRef>
  schedule(id: string, at: string): Promise<EntityRef>
  unpublish(id: string): Promise<EntityRef>
  setVisibility(id: string, visibility: ContentVisibility): Promise<EntityRef>
  trash(id: string): Promise<EntityRef>
  restore(id: string): Promise<EntityRef>
  remove(id: string): Promise<EntityRef>
}
