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

[
	uuid(5B7256AA-482C-4505-B27E-D780537D4E84),
	version(1.0)
]
library Internal
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	interface IDomain;

	[
		object,
		uuid(A81B1E01-FF1C-4264-B214-5FE1591DD4A8),
		pointer_default(unique)
	]
	interface IMigrationInternal : IUnknown
	{
		[propget] HRESULT TestMigration([out, retval] VARIANT_BOOL* pbTest);
		[propget] HRESULT IntraForest([out, retval] VARIANT_BOOL* pbIntraForest);
		[propget] HRESULT SourceDomain([out, retval] BSTR* pbstrDomain);
		[propget] HRESULT SourceOu([out, retval] BSTR* pbstrOu);
		[propget] HRESULT TargetDomain([out, retval] BSTR* pbstrDomain);
		[propget] HRESULT TargetOu([out, retval] BSTR* pbstrOu);
		[propget] HRESULT RenameOption([out, retval] long* plOption);
		[propget] HRESULT RenamePrefixOrSuffix([out, retval] BSTR* pbstrPrefixOrSuffix);
		[propget] HRESULT PasswordOption([out, retval] long* plOption);
		[propget] HRESULT PasswordServer([out, retval] BSTR* pbstrServer);
		[propget] HRESULT PasswordFile([out, retval] BSTR* pbstrPath);
		[propget] HRESULT ConflictOptions([out, retval] long* plOptions);
		[propget] HRESULT ConflictPrefixOrSuffix([out, retval] BSTR* pbstrPrefixOrSuffix);
		[propget] HRESULT UserPropertiesToExclude([out, retval] BSTR* pbstrProperties);
		[propget] HRESULT GroupPropertiesToExclude([out, retval] BSTR* pbstrProperties);
		[propget] HRESULT ComputerPropertiesToExclude([out, retval] BSTR* pbstrProperties);
	};

	[
		object,
		uuid(3AA8301C-2197-4CBF-ABD0-6BF17F84F70A),
		pointer_default(unique)
	]
	interface IDomain : IUnknown
	{
		[propget] HRESULT UpLevel([out, retval] VARIANT_BOOL* pbUpLevel);
		[propget] HRESULT NativeMode([out, retval] VARIANT_BOOL* pbNativeMode);
		[propget] HRESULT NameDns([out, retval] BSTR* pbstrName);
		[propget] HRESULT NameFlat([out, retval] BSTR* pbstrName);
		[propget] HRESULT ForestName([out, retval] BSTR* pbstrName);
		[propget] HRESULT DomainControllerName([out, retval] BSTR* pbstrName);
		HRESULT SetDomain([in] BSTR bstrName);
	};
};
