package com.airlock.iam.admin.domain.model.token;

import com.airlock.iam.admin.api.domain.model.user.AuthenticationMethods;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.Optional;

public interface TokenController {
   AuthenticationMethods.AuthenticationMethodId getConfiguredId();

   String getTokenControllerId();

   @Documented
   @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.FIELD)
   @interface TokenControllerId {
   }

   interface TokenControllers {
      <T extends TokenController> Optional<T> ofId(String var1);
   }
}
