class MetricQueryService {

    public MetricData queryMetricSource(Config metricSourceSinkConfig, MetricFunctionsSpec metricFunctionsSpec,
            Instant instant) throws IllegalStateException, MetricQueryServiceException {
        String metricSourceName = metricSourceSinkConfig.getString(METRIC_SOURCE_KEY);
        switch (metricSourceName) {
            case "graphite":
                return queryGraphite(metricSourceSinkConfig, metricFunctionsSpec, instant);
            default:
                throw new IllegalStateException(String.format("Unknown metric source '%s'.", metricSourceName));
        }
    }

    public  MetricQueryService();
    public  MetricQueryService(HttpClientWrapper httpClientWrapper);

}