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

package com.google.crypto.tink.internal;

import java.security.GeneralSecurityException;
import com.google.crypto.tink.Configuration;

public abstract class InternalConfiguration extends Configuration
{
    public abstract <P> P wrap(final KeysetHandleInterface keysetHandle, final MonitoringAnnotations annotations, final Class<P> clazz) throws GeneralSecurityException;
    
    public static InternalConfiguration createFromPrimitiveRegistry(final PrimitiveRegistry registry) {
        return new InternalConfigurationImpl(registry);
    }
    
    private static class InternalConfigurationImpl extends InternalConfiguration
    {
        private final PrimitiveRegistry registry;
        
        private InternalConfigurationImpl(final PrimitiveRegistry registry) {
            this.registry = registry;
        }
        
        @Override
        public <P> P wrap(final KeysetHandleInterface keysetHandle, final MonitoringAnnotations annotations, final Class<P> clazz) throws GeneralSecurityException {
            return this.registry.wrap(keysetHandle, annotations, clazz);
        }
    }
}
