pub async fn start_approval_worker<WorkProvider: ApprovalVotingWorkProvider + Send + 'static, Sender: SubsystemSender<ChainApiMessage> + SubsystemSender<RuntimeApiMessage> + SubsystemSender<ChainSelectionMessage> + SubsystemSender<AvailabilityRecoveryMessage> + SubsystemSender<DisputeCoordinatorMessage> + SubsystemSender<CandidateValidationMessage> + Clone, ADSender: SubsystemSender<ApprovalDistributionMessage>>(
work_provider: WorkProvider,
to_other_subsystems: Sender,
to_approval_distr: ADSender,
config: Config,
db: Arc<dyn Database>,
keystore: Arc<LocalKeystore>,
sync_oracle: Box<dyn SyncOracle + Send>,
metrics: Metrics,
spawner: Arc<dyn Spawner + 'static>,
task_name: &'static str,
group_name: &'static str,
clock: Arc<dyn Clock + Send + Sync>,
) -> SubsystemResult<()>