#pragma once
#include "Manifest.h"
#include "Support.h"

namespace deeppluck::benchmark
{
struct Options
{
    std::string suite = "all", mode = "audio", caseId, selfTest;
    int repeats = 1, shardIndex = 0, shardCount = 1;
    bool list = false, help = false;
    double profileSeconds = 30;
    juce::File output, reference, metadata, pairStatistics;
};
Options parseOptions (int argc, char** argv);
void printHelp();
juce::var validatedManifest (const Case&);
juce::var execute (const Case&, const Options&, int repeat, bool warmup);
juce::var timerCalibration();
juce::var compareAudio (const std::vector<float>& reference, const std::vector<float>& candidate);
void selfTest (const Options&);
juce::var evaluatePairs (const juce::var& input);
}
