module Ledger.Dijkstra.Foreign.Cert where

open import Class.Convertible
open import Tactic.Derive.Convertible
open import Class.HasHsType
open import Tactic.Derive.HsType

open import Ledger.Prelude
open import Ledger.Prelude.Foreign.HSTypes

open import Ledger.Dijkstra.Foreign.HSStructures
open import Ledger.Dijkstra.Foreign.Certs public
open import Ledger.Dijkstra.Specification.Certs.Properties.Computational DummyGovStructure
  using ( Computational-CERT
        ; Computational-CERTS
        )

open Computational

instance
  HsTy-CertState = autoHsType CertState  withConstructor "MkCertState"
  Conv-CertState = autoConvert CertState

cert-step : HsType (CertEnv  CertState  DCert  ComputationResult String CertState)
cert-step = to (compute Computational-CERT)

{-# COMPILE GHC cert-step as certStep #-}

certs-step : HsType (CertEnv  CertState  List DCert  ComputationResult String CertState)
certs-step = to (compute Computational-CERTS)

{-# COMPILE GHC certs-step as certsStep #-}