If a variable is local you cannot use it out of the scope (outside of a surrounding file, a surrounding function, a surrounding if ... end or surrounding for ... do endloop).
If you want to use it in another file you need to define it global, either by using _G[<variableName>] or just <variableName> instead of local <variableName>
After checking the code SmarterAutoLoot is only a local "class" which you can see via local SmarterAutoLoot = ZO_Object:Subclass()
And a class needs to be used to assign to an object via it's :New function, so you need to search for SmarterAutoLoot:New and would find:
_Instance = SmarterAutoLoot:New( self )
So _Instance is the global, cuz there is no local in front of it, variable which points to the SmarterAutoLoot class' object and at the bindings file you'd need to use
Code:
<Bindings>
<Layer name="SI_KEYBINDINGS_LAYER_GENERAL">
<Category name="Smarter Autoloot">
<Action name="SAL_TOOGLE">
<Down>_Instance:SALToggle()</Down>
</Action>
</Category>
</Layer>
</Bindings>
As _Instance is not very unique in the global namespace you should definately rename that in all of the addon files to something more unique like
_SMAInstance
I've renamed it to SMAGlobalObject, you can download the version here for trying, have not tested it yet:
https://www.dropbox.com/s/yd7grb4v3z...bject.zip?dl=1