hs-abci-sdk-0.1.0.0

Safe HaskellNone
LanguageHaskell2010

Tendermint.SDK.Application

Documentation

data ModuleList (ms :: [Component]) r where Source #

Constructors

NilModules :: ModuleList '[] r 
(:+) :: Module name check deliver query es deps r -> ModuleList ms r -> ModuleList (Module name check deliver query es deps ': ms) r infixr 5 

data Module (name :: Symbol) (check :: *) (deliver :: *) (query :: *) (es :: EffectRow) (deps :: [Component]) (r :: EffectRow) Source #

Constructors

Module 

Fields

Instances
(Members (DependencyEffs deps) (Effs (m' ': ms) s), Members TxEffs (Effs (m' ': ms) s), Members BaseEffs (Effs (m' ': ms) s), Eval (m' ': ms) s) => Eval (Module name check deliver query es deps ': (m' ': ms)) s Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

Associated Types

type Effs (Module name check deliver query es deps ': (m' ': ms)) s :: EffectRow Source #

Methods

eval :: proxy s -> ModuleList (Module name check deliver query es deps ': (m' ': ms)) r -> forall a. Sem (Effs (Module name check deliver query es deps ': (m' ': ms)) s) a -> Sem (TxEffs :& BaseAppEffs s) a Source #

DependencyEffs deps ~ ([] :: [Effect]) => Eval (Module name check deliver query es deps ': ([] :: [EffectRow -> Type])) core Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

Associated Types

type Effs (Module name check deliver query es deps ': []) core :: EffectRow Source #

Methods

eval :: proxy core -> ModuleList (Module name check deliver query es deps ': []) r -> forall a. Sem (Effs (Module name check deliver query es deps ': []) core) a -> Sem (TxEffs :& BaseAppEffs core) a Source #

ToApplication (m' ': ms) r => ToApplication (Module name check deliver query es deps ': (m' ': ms)) r Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

Associated Types

type ApplicationC (Module name check deliver query es deps ': (m' ': ms)) :: Type Source #

type ApplicationD (Module name check deliver query es deps ': (m' ': ms)) :: Type Source #

type ApplicationQ (Module name check deliver query es deps ': (m' ': ms)) :: Type Source #

Methods

toApplication :: ModuleList (Module name check deliver query es deps ': (m' ': ms)) r -> Application (ApplicationC (Module name check deliver query es deps ': (m' ': ms))) (ApplicationD (Module name check deliver query es deps ': (m' ': ms))) (ApplicationQ (Module name check deliver query es deps ': (m' ': ms))) r r Source #

ToApplication (Module name check deliver query es deps ': ([] :: [EffectRow -> Type])) r Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

Associated Types

type ApplicationC (Module name check deliver query es deps ': []) :: Type Source #

type ApplicationD (Module name check deliver query es deps ': []) :: Type Source #

type ApplicationQ (Module name check deliver query es deps ': []) :: Type Source #

Methods

toApplication :: ModuleList (Module name check deliver query es deps ': []) r -> Application (ApplicationC (Module name check deliver query es deps ': [])) (ApplicationD (Module name check deliver query es deps ': [])) (ApplicationQ (Module name check deliver query es deps ': [])) r r Source #

type ApplicationC (Module name check deliver query es deps ': (m' ': ms)) Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type ApplicationC (Module name check deliver query es deps ': (m' ': ms)) = (name :> check) :<|> ApplicationC (m' ': ms)
type ApplicationC (Module name check deliver query es deps ': ([] :: [EffectRow -> Type])) Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type ApplicationC (Module name check deliver query es deps ': ([] :: [EffectRow -> Type])) = name :> check
type ApplicationD (Module name check deliver query es deps ': (m' ': ms)) Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type ApplicationD (Module name check deliver query es deps ': (m' ': ms)) = (name :> deliver) :<|> ApplicationD (m' ': ms)
type ApplicationD (Module name check deliver query es deps ': ([] :: [EffectRow -> Type])) Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type ApplicationD (Module name check deliver query es deps ': ([] :: [EffectRow -> Type])) = name :> deliver
type ApplicationQ (Module name check deliver query es deps ': (m' ': ms)) Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type ApplicationQ (Module name check deliver query es deps ': (m' ': ms)) = (name :> query) :<|> ApplicationQ (m' ': ms)
type ApplicationQ (Module name check deliver query es deps ': ([] :: [EffectRow -> Type])) Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type ApplicationQ (Module name check deliver query es deps ': ([] :: [EffectRow -> Type])) = name :> query
type Effs (Module name check deliver query es deps ': (m' ': ms)) s Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type Effs (Module name check deliver query es deps ': (m' ': ms)) s = es :& Effs (m' ': ms) s
type Effs (Module name check deliver query es deps ': ([] :: [EffectRow -> Type])) core Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type Effs (Module name check deliver query es deps ': ([] :: [EffectRow -> Type])) core = es :& (TxEffs :& BaseAppEffs core)

type Component = EffectRow -> Type Source #

class Eval ms (core :: EffectRow) where Source #

Associated Types

type Effs ms core :: EffectRow Source #

Methods

eval :: proxy core -> ModuleList ms r -> forall a. Sem (Effs ms core) a -> Sem (TxEffs :& BaseAppEffs core) a Source #

Instances
(Members (DependencyEffs deps) (Effs (m' ': ms) s), Members TxEffs (Effs (m' ': ms) s), Members BaseEffs (Effs (m' ': ms) s), Eval (m' ': ms) s) => Eval (Module name check deliver query es deps ': (m' ': ms)) s Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

Associated Types

type Effs (Module name check deliver query es deps ': (m' ': ms)) s :: EffectRow Source #

Methods

eval :: proxy s -> ModuleList (Module name check deliver query es deps ': (m' ': ms)) r -> forall a. Sem (Effs (Module name check deliver query es deps ': (m' ': ms)) s) a -> Sem (TxEffs :& BaseAppEffs s) a Source #

DependencyEffs deps ~ ([] :: [Effect]) => Eval (Module name check deliver query es deps ': ([] :: [EffectRow -> Type])) core Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

Associated Types

type Effs (Module name check deliver query es deps ': []) core :: EffectRow Source #

Methods

eval :: proxy core -> ModuleList (Module name check deliver query es deps ': []) r -> forall a. Sem (Effs (Module name check deliver query es deps ': []) core) a -> Sem (TxEffs :& BaseAppEffs core) a Source #

type family ModuleEffs (m :: Component) :: EffectRow where ... Source #

Equations

ModuleEffs (Module _ _ _ _ es deps) = es :& (DependencyEffs deps :& (TxEffs :& BaseEffs)) 
ModuleEffs _ = TypeError (Text "ModuleEffs is a partial function defined only on Component") 

data HandlersContext alg ms core Source #

Constructors

HandlersContext 

Fields

baseAppAnteHandler :: Members AuthEffs r => Member (Error AppError) r => AnteHandler r Source #

createIOApp :: forall r. (forall a. Sem r a -> IO a) -> App (Sem r) -> App IO Source #

makeApp :: forall alg ms core. RecoverableSignatureSchema alg => Message alg ~ Digest SHA256 => ToApplication ms (Effs ms core) => HasTxRouter (ApplicationC ms) (Effs ms core) QueryAndMempool => HasTxRouter (ApplicationC ms) (BaseAppEffs core) QueryAndMempool => HasTxRouter (ApplicationD ms) (Effs ms core) Consensus => HasTxRouter (ApplicationD ms) (BaseAppEffs core) Consensus => HasQueryRouter (ApplicationQ ms) (Effs ms core) => HasQueryRouter (ApplicationQ ms) (BaseAppEffs core) => Eval ms core => HandlersContext alg ms core -> App (Sem core) Source #