// 
// Decompiled by Procyon v0.6.0
// 

package io.sentry;

import java.util.Locale;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.ApiStatus;

public interface MeasurementUnit
{
    @ApiStatus.Internal
    public static final String NONE = "none";
    
    @NotNull
    String name();
    
    @ApiStatus.Internal
    @NotNull
    String apiName();
    
    public enum Duration implements MeasurementUnit
    {
        NANOSECOND, 
        MICROSECOND, 
        MILLISECOND, 
        SECOND, 
        MINUTE, 
        HOUR, 
        DAY, 
        WEEK;
        
        @NotNull
        @Override
        public String apiName() {
            return this.name().toLowerCase(Locale.ROOT);
        }
    }
    
    public enum Information implements MeasurementUnit
    {
        BIT, 
        BYTE, 
        KILOBYTE, 
        KIBIBYTE, 
        MEGABYTE, 
        MEBIBYTE, 
        GIGABYTE, 
        GIBIBYTE, 
        TERABYTE, 
        TEBIBYTE, 
        PETABYTE, 
        PEBIBYTE, 
        EXABYTE, 
        EXBIBYTE;
        
        @NotNull
        @Override
        public String apiName() {
            return this.name().toLowerCase(Locale.ROOT);
        }
    }
    
    public enum Fraction implements MeasurementUnit
    {
        RATIO, 
        PERCENT;
        
        @NotNull
        @Override
        public String apiName() {
            return this.name().toLowerCase(Locale.ROOT);
        }
    }
    
    public static final class Custom implements MeasurementUnit
    {
        @NotNull
        private final String name;
        
        public Custom(@NotNull final String name) {
            this.name = name;
        }
        
        @NotNull
        @Override
        public String name() {
            return this.name;
        }
        
        @NotNull
        @Override
        public String apiName() {
            return this.name().toLowerCase(Locale.ROOT);
        }
    }
}
