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 :: Type) (deliver :: Type) (query :: Type) (es :: EffectRow) (deps :: [Component]) (r :: EffectRow) Source #

Constructors

Module 

Fields

Instances

Instances details
(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 :: forall proxy (r :: EffectRow). 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] 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 :: forall proxy (r :: EffectRow). 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)) Source #

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

type ApplicationQ (Module name check deliver query es deps ': (m' ': ms)) 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] r Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

Associated Types

type ApplicationC '[Module name check deliver query es deps] Source #

type ApplicationD '[Module name check deliver query es deps] Source #

type ApplicationQ '[Module name check deliver query es deps] 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] Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type ApplicationC '[Module name check deliver query es deps] = 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] Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type ApplicationD '[Module name check deliver query es deps] = 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] Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type ApplicationQ '[Module name check deliver query es deps] = 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] core Source # 
Instance details

Defined in Tendermint.SDK.Application.Module

type Effs '[Module name check deliver query es deps] 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

Instances details
(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 :: forall proxy (r :: EffectRow). 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] 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 :: forall proxy (r :: EffectRow). 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 #