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