#pragma once
// bank_actions — the multi-bank bindable action family: create/rename/delete/
// evacuate a bank, activate (direct pool + cycle), move/copy/remove the panel's
// selected samples, the two vertical-split full-height toggles, and the prune
// action's registration + dispatch (guarded body in prune_action). Every mutating
// handler is a thin UX skin over the promptless bankOp* verbs in bank_ops (this
// family prompts for a bank name; the panel acts on a clicked tab).
//
// Same registration/routing/unload contract as design_view_actions. SDK-free header.

struct reaper_plugin_info_t;  // global scope, matches reaper_plugin.h's typedef

namespace reasampler {

class ReaSamplerSession;

// `session` must outlive registration — pass the SAME pointer the Design View
// family receives.
void bankRegisterActions(reaper_plugin_info_t* rec, ReaSamplerSession* session);

bool bankHandleCommand(int command);

void bankUnregisterActions(reaper_plugin_info_t* rec);

// The bank_panel prune button fires THROUGH this id (Main_OnCommand) rather than
// calling the session directly, so button and bindable action share one guarded path.
int bankPruneCommandId();

}  // namespace reasampler
