{- |
Module                  : Iris.Cli.Cmd
Copyright               : (c) 2022 Dmitrii Kovanikov
SPDX-License-Identifier : MPL-2.0
Maintainer              : Dmitrii Kovanikov <kovanikov@gmail.com>
Stability               : Internal
Portability             : Portable

Wrapper around the user-defined command.

__⚠️ This module is internal and doesn't follow PVP.__
-}
module Iris.Cli.Internal (
    Cmd (..),
) where

import Data.Kind (Type)
import Iris.Cli.Colour (ColourOption)
import Iris.Cli.Interactive (InteractiveMode)

-- | Wrapper around @cmd@ with additional predefined fields
data Cmd (cmd :: Type) = Cmd
    { forall cmd. Cmd cmd -> InteractiveMode
cmdInteractiveMode :: InteractiveMode
    , forall cmd. Cmd cmd -> ColourOption
cmdColourOption :: ColourOption
    , forall cmd. Cmd cmd -> cmd
cmdCmd :: cmd
    }