import type { ControlPlaneStore } from '../control-plane-store.ts'

export type SessionControlPlaneStore = Pick<ControlPlaneStore,
  | 'createSession'
  | 'getSession'
  | 'getSessionForTenant'
  | 'findSession'
  | 'listSessions'
  | 'listSessionsPage'
  | 'listAllSessions'
  | 'claimRunnableSessions'
  | 'bindSessionRuntime'
  | 'updateSessionStatus'
  | 'appendSessionEvent'
  | 'listSessionEvents'
  | 'appendWorkspaceEvent'
  | 'getWorkspaceEventCursor'
  | 'listWorkspaceEvents'
  | 'writeSessionProjection'
  | 'getSessionProjection'
  | 'claimSessionLease'
  | 'releaseSessionLease'
  | 'renewSessionLease'
  | 'checkpointSession'
  | 'reapExpiredSessionLeases'
  | 'enqueueSessionCommand'
  | 'claimNextSessionCommand'
  | 'ackSessionCommand'
  | 'failSessionCommand'
  | 'recordWorkerHeartbeat'
  | 'listWorkerHeartbeats'
>

export type ProjectionControlPlaneStore = Pick<SessionControlPlaneStore,
  | 'appendSessionEvent'
  | 'listSessionEvents'
  | 'getSessionForTenant'
  | 'appendWorkspaceEvent'
  | 'getSessionProjection'
  | 'writeSessionProjection'
>
