-- SPDX-FileCopyrightText: 2020 Tocqueville Group
--
-- SPDX-License-Identifier: LicenseRef-MIT-TQ

-- TODO: Replace 'Empty' with 'Never' from morley
{-# OPTIONS_GHC -Wno-deprecations #-}

-- | UpgradeableUnsafeLedger demonstrates a real-world use case of
--   an upgradeable contract. Its V1 contains a bug that makes it return
--   an incorrect totalSupply. Fortunately, we can upgrade the contract and fix
--   the bug. This contract does not use entrypoint-wise upgrades. Instead, it
--   upgrades atomically in one transaction. For non-atomic upgrades please
--   see the UpgradeableCounter example.

module Lorentz.Contracts.UpgradeableUnsafeLedger
  ( Parameter(..)
  , Storage
  , upgradeableUnsafeLedgerContract
  , mkEmptyStorage
  ) where

import Lorentz.Contracts.Upgradeable.Common

type Permanent = Empty

upgradeableUnsafeLedgerContract :: InitUpgradeableContract Permanent
upgradeableUnsafeLedgerContract :: InitUpgradeableContract Permanent
upgradeableUnsafeLedgerContract = InitUpgradeableContract Permanent
forall (ver :: VersionKind).
(NiceVersion ver, NiceParameterFull (Parameter ver)) =>
UpgradeableContract ver
upgradeableContract