interface ICheckPermission {
    /**
     * @notice Validate permissions with PermissionManager if it exists, If no Permission return false
     * @dev Note that IModule withPerm will allow ST owner all permissions anyway
     * @dev this allows individual modules to override this logic if needed (to not allow ST owner all permissions)
     * @param _delegate address of delegate
     * @param _module address of PermissionManager module
     * @param _perm the permissions
     * @return success
     */
    function checkPermission(address _delegate, address _module, bytes32 _perm) external view returns(bool hasPerm);
}
function checkPermission(address _delegate, address _module, bytes32 _perm) external view returns(bool hasPerm);

/**
 * @notice Validate permissions with PermissionManager if it exists, If no Permission return false
 * @dev Note that IModule withPerm will allow ST owner all permissions anyway
 * @dev this allows individual modules to override this logic if needed (to not allow ST owner all permissions)
 * @param _delegate address of delegate
 * @param _module address of PermissionManager module
 * @param _perm the permissions
 * @return success
 */