#pragma once
// reasampler_uid.h — the FOREVER-FROZEN VST3 class-UID constants, SDK-free.
//
// Split out of reasampler_vst.h so the pure extension side can derive the .vstpreset
// class-ID string (instrument_drop::vstClassIdHex) without pulling in the VST3 SDK.
// reasampler_vst.h builds the runtime FUID from these same macros; instrument_drop
// renders the hex string from them — one source of truth, so binary identity and
// preset-file identity cannot diverge.
//
// FOREVER-STABLE once shipped: a REAPER project that instantiates the instrument
// records the UID, so changing it orphans every saved instance. Never regenerate.

#include "version_generated.h"  // REASAMPLER_CHANNEL_IS_BETA — the one channel bit

// STABLE class UID. FROZEN FOREVER.
#define REASAMPLER_PROC_UID_1 0x5E45A11E
#define REASAMPLER_PROC_UID_2 0x9C7B4D6A
#define REASAMPLER_PROC_UID_3 0xB1E3F208
#define REASAMPLER_PROC_UID_4 0x4A6C1D9F

// BETA class UID. FROZEN FOREVER — locked even though no beta VST has shipped yet.
#define REASAMPLER_PROC_UID_BETA_1 0xCCFFEB3A
#define REASAMPLER_PROC_UID_BETA_2 0x4FF532A6
#define REASAMPLER_PROC_UID_BETA_3 0x9E181798
#define REASAMPLER_PROC_UID_BETA_4 0x4256955F

// Channel-selected UID macros — exactly one class UID per binary. The factory,
// the runtime FUID, and vstClassIdHex all source these.
#if REASAMPLER_CHANNEL_IS_BETA
#define REASAMPLER_ACTIVE_UID_1 REASAMPLER_PROC_UID_BETA_1
#define REASAMPLER_ACTIVE_UID_2 REASAMPLER_PROC_UID_BETA_2
#define REASAMPLER_ACTIVE_UID_3 REASAMPLER_PROC_UID_BETA_3
#define REASAMPLER_ACTIVE_UID_4 REASAMPLER_PROC_UID_BETA_4
#else
#define REASAMPLER_ACTIVE_UID_1 REASAMPLER_PROC_UID_1
#define REASAMPLER_ACTIVE_UID_2 REASAMPLER_PROC_UID_2
#define REASAMPLER_ACTIVE_UID_3 REASAMPLER_PROC_UID_3
#define REASAMPLER_ACTIVE_UID_4 REASAMPLER_PROC_UID_4
#endif
