// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.

#nullable disable

using osu.Game.Rulesets.Scoring;
using osu.Game.Scoring;

namespace osu.Game.Rulesets.Mods
{
    /// <summary>
    /// An interface for mods that make general adjustments to score processor.
    /// </summary>
    public interface IApplicableToScoreProcessor : IApplicableMod
    {
        /// <summary>
        /// Provides a loaded <see cref="ScoreProcessor"/> to a mod. Called once on initialisation of a play instance.
        /// </summary>
        void ApplyToScoreProcessor(ScoreProcessor scoreProcessor);

        /// <summary>
        /// Called every time a rank calculation is requested. Allows mods to adjust the final rank.
        /// </summary>
        ScoreRank AdjustRank(ScoreRank rank, double accuracy);
    }
}