from typing import Tuple


def compute_character_attack_speed(
        frames_per_animation: int,
        base_animation_length: int,
        speed_coefficient: float = 1.0,
        engine_tick_rate: int = 60) -> Tuple[float, float]:
    """Computes the minimum and maximum character_attack_speed for a certain ability to reach the specified frames
    per animation breakpoint.

    Args:
        frames_per_animation: breakpoint to calculate attack speed values for
        base_animation_length: animation length of ability
        speed_coefficient: speed-up scalar of ability
        engine_tick_rate: server tick rate

    Returns:
        Tuple[int, int]: min attack speed to reach frames_per_animation breakpoint and max attack speed to leave
        frames_per_animation breakpoint.
    """
    _coeff = (base_animation_length - 1) * engine_tick_rate / (speed_coefficient * base_animation_length)
    min_aps = _coeff / frames_per_animation
    max_aps = _coeff / (frames_per_animation - 1)
    return min_aps, max_aps