type StratumParams: StratumParams + DeserializeOwned + Serialize + Clone
type PoolParams: PoolParams + DeserializeOwned + Serialize + Clone
type AuthManager: AuthManager<Authorize = <Self::PoolParams as PoolParams>::Authorize, AuthorizeResult = <Self::PoolParams as PoolParams>::AuthorizeResult, Subscribe = <Self::PoolParams as PoolParams>::Subscribe, SubscribeResult = <Self::PoolParams as PoolParams>::SubscribeResult>
type DataProvider: DataProvider<Job = <Self::StratumParams as StratumParams>::Notify>
type BlockValidator: BlockValidator<Job = <Self::StratumParams as StratumParams>::Notify, Submit = <Self::StratumParams as StratumParams>::Submit>