#pragma once

#include "Parameters/DeepPluckParameterState.h"

namespace deeppluck::presets
{
// Parameter-only owner: no synthesiser, audio device, filesystem or production
// Random constructor. Uses exactly the production APVTS parameter layout.
class ParameterContext final : public juce::AudioProcessor
{
public:
    ParameterContext() : state (*this, nullptr, "DeepPluckState", deeppluck::createParameterLayout()) {}
    juce::AudioProcessorValueTreeState state;
    const juce::String getName() const override { return "DeepPluck parameter context"; }
    void prepareToPlay (double, int) override {}
    void releaseResources() override {}
    void processBlock (juce::AudioBuffer<float>&, juce::MidiBuffer&) override {}
    double getTailLengthSeconds() const override { return 0.0; }
    bool acceptsMidi() const override { return false; }
    bool producesMidi() const override { return false; }
    bool hasEditor() const override { return false; }
    juce::AudioProcessorEditor* createEditor() override { return nullptr; }
    int getNumPrograms() override { return 1; }
    int getCurrentProgram() override { return 0; }
    void setCurrentProgram (int) override {}
    const juce::String getProgramName (int) override { return {}; }
    void changeProgramName (int, const juce::String&) override {}
    void getStateInformation (juce::MemoryBlock&) override {}
    void setStateInformation (const void*, int) override {}
};
}
