-- SPDX-FileCopyrightText: 2021 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA

-- | Common primitives.
module Lorentz.Common
  ( Entrypoint
  , Entrypoint_
  ) where

import Lorentz.Base

-- | Single entrypoint of a contract.
--
-- Note that we cannot make it return @[[Operation], store]@ because
-- such entrypoint should've been followed by @pair@, and this is not
-- possible if entrypoint implementation ends with 'Lorentz.Instr.failWith'.
type Entrypoint param store = '[ param, store ] :-> ContractOut store

-- | Version of 'Entrypoint' which accepts no argument.
type Entrypoint_ store = '[ store ] :-> ContractOut store