import "oaidl.idl";
import "ocidl.idl";

interface IAddin;

[
  odl,
  uuid(2BEEF9E6-AF34-4593-9E73-3D07EAA4CF0D),
  version(1.0),
  helpstring("Интерфейс загрузчика аддинов"),
  nonextensible
]
interface IAddinLoader : IUnknown {
    [helpstring("Получить название протокола загрузки")]
    HRESULT _stdcall proto([out, retval] BSTR* result);
    [helpstring("Загрузить аддин")]
    HRESULT _stdcall load(
                    [in] BSTR uri, 
                    [out] BSTR* fullPath, 
                    [out] BSTR* uniqueName, 
                    [out] BSTR* displayName, 
                    [out, retval] IUnknown** result);
    [helpstring("Можно ли выгрузить аддин")]
    HRESULT _stdcall canUnload(
                    [in] BSTR fullPath, 
                    [in] IUnknown* addin, 
                    [out, retval] VARIANT_BOOL* result);
    [helpstring("Выгрузить аддин")]
    HRESULT _stdcall unload(
                    [in] BSTR fullPath, 
                    [in] IUnknown* addin, 
                    [out, retval] VARIANT_BOOL* result);
    [helpstring("Текстовое представление команды для загрузки")]
    HRESULT _stdcall loadCommandName([out, retval] BSTR* result);
    [helpstring("Выбрать что загрузить")]
    HRESULT _stdcall selectLoadURI([out, retval] BSTR* result);
};

[
  odl,
  uuid(0CCEA8E6-D187-4B84-B74D-85079F8E2008),
  version(1.0),
  helpstring("Интерфейс доступа к макросам аддина"),
  nonextensible
]
interface IAddinMacroses : IUnknown {
    [helpstring("Получить макросы аддина")]
    HRESULT _stdcall macroses([out, retval] SAFEARRAY(VARIANT)* result);
    [helpstring("Выполнить макрос")]
    HRESULT _stdcall invokeMacros(
                    [in] BSTR MacrosName, 
                    [out, retval] VARIANT* result);
};

[
uuid(64CE2CE5-A523-40A4-8527-824715AFE929),
helpstring("1Script loader for Snegopat")
]
library OneScriptSnegopat
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");
 
	interface IAddin;
	interface IAddinGroup;
};