// Path: bucket4j-spring-boot-starter-context/src/main/java/com/giffing/bucket4j/spring/boot/starter/context/metrics/MetricHandler.java
// public interface MetricHandler {
// 
//     void handle(MetricType type, String name, long tokens, List<MetricTagResult> tags);
// 
// }
// 
// Path: bucket4j-spring-boot-starter-context/src/main/java/com/giffing/bucket4j/spring/boot/starter/context/properties/Bucket4JBootProperties.java
// @ConfigurationProperties(prefix = Bucket4JBootProperties.PROPERTY_PREFIX)
// public class Bucket4JBootProperties {
// 
// 	public static final String PROPERTY_PREFIX = "bucket4j";
// 	
// 	/**
// 	 * Enables or disables the Bucket4j Spring Boot Starter.
// 	 */
// 	private Boolean enabled = true;
// 	
// 	private List<Bucket4JConfiguration> filters = new ArrayList<>();
// 	
// 	
// 	
// 	public Boolean getEnabled() {
// 		return enabled;
// 	}
// 
// 	public void setEnabled(Boolean enabled) {
// 		this.enabled = enabled;
// 	}
// 
// 	public static String getPropertyPrefix() {
// 		return PROPERTY_PREFIX;
// 	}
// 
// 	public List<Bucket4JConfiguration> getFilters() {
// 		return filters;
// 	}
// 
// 	public void setFilters(List<Bucket4JConfiguration> filters) {
// 		this.filters = filters;
// 	}
// 
// }


import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import com.giffing.bucket4j.spring.boot.starter.context.metrics.MetricHandler;
import com.giffing.bucket4j.spring.boot.starter.context.properties.Bucket4JBootProperties;
import io.micrometer.core.instrument.Metrics;

package com.giffing.bucket4j.spring.boot.starter.config.metrics.actuator;




@Configuration
@ConditionalOnClass(value = {Metrics.class})
@ConditionalOnProperty(prefix = Bucket4JBootProperties.PROPERTY_PREFIX + ".metrics", value = { "enabled" }, matchIfMissing = true)
public class Bucket4jMetricsConfiguration {

	@Bean
	@Primary

// Path: bucket4j-spring-boot-starter-context/src/main/java/com/giffing/bucket4j/spring/boot/starter/context/metrics/MetricHandler.java
// public interface MetricHandler {
// 
//     void handle(MetricType type, String name, long tokens, List<MetricTagResult> tags);
// 
// }
// 
// Path: bucket4j-spring-boot-starter-context/src/main/java/com/giffing/bucket4j/spring/boot/starter/context/properties/Bucket4JBootProperties.java
// @ConfigurationProperties(prefix = Bucket4JBootProperties.PROPERTY_PREFIX)
// public class Bucket4JBootProperties {
// 
// 	public static final String PROPERTY_PREFIX = "bucket4j";
// 	
// 	/**
// 	 * Enables or disables the Bucket4j Spring Boot Starter.
// 	 */
// 	private Boolean enabled = true;
// 	
// 	private List<Bucket4JConfiguration> filters = new ArrayList<>();
// 	
// 	
// 	
// 	public Boolean getEnabled() {
// 		return enabled;
// 	}
// 
// 	public void setEnabled(Boolean enabled) {
// 		this.enabled = enabled;
// 	}
// 
// 	public static String getPropertyPrefix() {
// 		return PROPERTY_PREFIX;
// 	}
// 
// 	public List<Bucket4JConfiguration> getFilters() {
// 		return filters;
// 	}
// 
// 	public void setFilters(List<Bucket4JConfiguration> filters) {
// 		this.filters = filters;
// 	}
// 
// }


// Path: bucket4j-spring-boot-starter/src/main/java/com/giffing/bucket4j/spring/boot/starter/config/metrics/actuator/Bucket4jMetricsConfiguration.java
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import com.giffing.bucket4j.spring.boot.starter.context.metrics.MetricHandler;
import com.giffing.bucket4j.spring.boot.starter.context.properties.Bucket4JBootProperties;
import io.micrometer.core.instrument.Metrics;

package com.giffing.bucket4j.spring.boot.starter.config.metrics.actuator;




@Configuration
@ConditionalOnClass(value = {Metrics.class})
@ConditionalOnProperty(prefix = Bucket4JBootProperties.PROPERTY_PREFIX + ".metrics", value = { "enabled" }, matchIfMissing = true)
public class Bucket4jMetricsConfiguration {

	@Bean
	@Primary

	public MetricHandler springBoot2Bucket4jMetricHandler() {
