module U.Codebase.Sqlite.Causal
  ( DbCausal,
    GDbCausal (..),
    SyncCausalFormat,
    SyncCausalFormat' (..),
  )
where

import Data.Vector (Vector)
import U.Codebase.Sqlite.DbId (BranchHashId, CausalHashId)
import Unison.Prelude

data GDbCausal causalHash valueHash = DbCausal
  { forall causalHash valueHash.
GDbCausal causalHash valueHash -> causalHash
selfHash :: causalHash,
    forall causalHash valueHash.
GDbCausal causalHash valueHash -> valueHash
valueHash :: valueHash,
    forall causalHash valueHash.
GDbCausal causalHash valueHash -> Set causalHash
parents :: Set causalHash
  }

type DbCausal = GDbCausal CausalHashId BranchHashId

data SyncCausalFormat' causalHash valueHash = SyncCausalFormat
  { forall causalHash valueHash.
SyncCausalFormat' causalHash valueHash -> valueHash
valueHash :: valueHash,
    forall causalHash valueHash.
SyncCausalFormat' causalHash valueHash -> Vector causalHash
parents :: Vector causalHash
  }

type SyncCausalFormat = SyncCausalFormat' CausalHashId BranchHashId