package com.apobates.forum.core.security.exposure.config;

import com.apobates.forum.core.security.strategy.StrategyMode;
import java.util.function.BiPredicate;
import java.util.function.Supplier;

/**
 * 配置文件扩展策略接口
 * 
 * @param <T>
 * @param <U>
 * @author xiaofanku
 * @since 20200810
 */
public interface ConfigPlugBiPredicate<T, U>{
    /**
     * 扩展策略适用的模式
     * 
     * @return 
     */
    StrategyMode[] allowModes();
    /**
     * 扩展策略执行的条件
     * @return 
     */
    Supplier<BiPredicate<T, U>> condition();
}