//
// Copyright (c) Microsoft Corporation. All rights reserved.

cpp_quote("/* Copyright (c) Microsoft Corporation. All rights reserved. */")

//
// tapi3.idl : IDL source for tapi3.dll
//
#ifndef __TAPI3_IDL__
#define __TAPI3_IDL__

import "oaidl.idl";
import "ocidl.idl";
import "tapi3if.idl";
#include "tapi3cc.idl"
#include "tapi3ds.idl"
#include "msp.idl"

[
    uuid(21D6D480-A88B-11D0-83DD-00AA003CCABD),
    version(1.0),
    helpstring("Microsoft TAPI 3.0 Type Library")
]
library TAPI3Lib
{
    importlib("stdole2.tlb");

    interface ITCollection;
    interface ITMediaPlayback;
    interface ITMediaRecord;
    interface ITCollection2;
    interface ITCallStateEvent;
    interface ITCallNotificationEvent;
    interface ITTAPIEventNotification;
    interface ITBasicAudioTerminal;
    interface ITCallHubEvent;
    interface ITParticipantUpdateEvent;
    interface ITForwardInformation;
    interface ITForwardInformation2;
    interface ITAddressCapabilities;
    interface ITQOSEvent;
    interface ITAddressEvent;
    interface ITAddressDeviceSpecificEvent;
    interface ITCallMediaEvent;
    interface ITTAPIObjectEvent;
    interface ITTAPIObjectEvent2;
    interface ITAddressTranslation;
    interface ITAddressTranslationInfo;
    interface ITLocationInfo;
    interface ITAgent;
    interface ITAgentEvent;
    interface ITAgentSession;
    interface ITAgentSessionEvent;
    interface ITACDGroup;
    interface ITACDGroupEvent;
    interface ITQueue;
    interface ITQueueEvent;
    interface ITTAPICallCenter;
    interface ITAgentHandler;
    interface ITAgentHandlerEvent;
    interface ITCallInfoChangeEvent;    
    interface ITRequestEvent;
    interface ITMediaSupport;
    interface ITTerminalSupport;
    interface ITTerminalSupport2;
    interface ITStreamControl;
    interface ITStream;
    interface ITSubStreamControl;
    interface ITSubStream;
    interface ITLegacyAddressMediaControl;
    interface ITLegacyAddressMediaControl2;
    interface ITLegacyCallMediaControl;
    interface ITLegacyCallMediaControl2;
    interface ITDigitDetectionEvent;
    interface ITDigitGenerationEvent;
    interface ITDigitsGatheredEvent;
    interface ITToneDetectionEvent;
    interface ITDetectTone;
    interface ITCustomTone;
    interface ITPrivateEvent;
    interface ITAddress2;
    interface ITPhone;
    interface ITTAPI2;
    interface ITMultiTrackTerminal;
    interface ITStaticAudioTerminal;
    interface ITBasicCallControl2;
    interface ITAutomatedPhoneControl;
    interface ITMediaControl;
    interface ITFileTrack;
    interface ITCallInfo2;
    interface ITFileTerminalEvent;
    interface ITToneTerminalEvent;
    interface ITASRTerminalEvent;
    interface ITTTSTerminalEvent;
    interface ITPhoneEvent;
    interface ITPhoneDeviceSpecificEvent;
    interface ITLegacyWaveSupport;
    dispinterface ITTAPIDispatchEventNotification;


    [
        uuid(21D6D48E-A88B-11D0-83DD-00AA003CCABD),
        helpstring("TAPI 3.0 TAPI Object")
    ]
    coclass TAPI
    {
        [default] interface ITTAPI;
        [default, source] dispinterface ITTAPIDispatchEventNotification;
        [defaultvtable, source] interface ITTAPIEventNotification;
        interface ITTAPICallCenter;
        
    };

    [
        uuid(E9225296-C759-11d1-A02B-00C04FB6809F),
        helpstring("TAPI 3.0 DispatchMapper Object")
    ]
    coclass DispatchMapper
    {
        [default] interface ITDispatchMapper;
    };
    
    [
        uuid( AC48FFE0-F8C4-11d1-A030-00C04FB6809F ),
        helpstring("TAPI 3.0 RequestMakeCall Object")
    ]
    coclass RequestMakeCall
    {
        [default] interface ITRequest;
    };

    [
        uuid( 05B96A7A-DD39-11d0-8ED3-00C04FB6809F ),
        dllname("tapi3.dll"),
        helpstring("TAPI 3.0 Constants")
    ]
    module TapiConstants
    {
        const BSTR CLSID_String_VideoWindowTerm = L"{F7438990-D6EB-11D0-82A6-00AA00B5CA1B}";
        const BSTR CLSID_String_VideoInputTerminal = L"{AAF578EC-DC70-11D0-8ED3-00C04FB6809F}";
        const BSTR CLSID_String_HandsetTerminal = L"{AAF578EB-DC70-11D0-8ED3-00C04FB6809F}";
        const BSTR CLSID_String_HeadsetTerminal = L"{AAF578ED-DC70-11D0-8ED3-00C04FB6809F}";
        const BSTR CLSID_String_SpeakerphoneTerminal = L"{AAF578EE-DC70-11D0-8ED3-00C04FB6809F}";
        const BSTR CLSID_String_MicrophoneTerminal = L"{AAF578EF-DC70-11D0-8ED3-00C04FB6809F}";
        const BSTR CLSID_String_SpeakersTerminal = L"{AAF578F0-DC70-11D0-8ED3-00C04FB6809F}";
        const BSTR CLSID_String_MediaStreamTerminal = L"{E2F7AEF7-4971-11D1-A671-006097C9A2E8}";
        const BSTR CLSID_String_FileRecordingTerminal = L"{521F3D06-C3D0-4511-8617-86B9A783DA77}";
        const BSTR CLSID_String_FilePlaybackTerminal = L"{0CB9914C-79CD-47DC-ADB0-327F47CEFB20}";
        const BSTR TAPIPROTOCOL_String_PSTN = L"{831CE2D6-83B5-11D1-BB5C-00C04FB6809F}";
        const BSTR TAPIPROTOCOL_String_H323 = L"{831CE2D7-83B5-11D1-BB5C-00C04FB6809F}";
        const BSTR TAPIPROTOCOL_String_Multicast = L"{831CE2D8-83B5-11D1-BB5C-00C04FB6809F}";


        const long LINEADDRESSTYPE_PHONENUMBER = 0x00000001;
        const long LINEADDRESSTYPE_SDP = 0x00000002;
        const long LINEADDRESSTYPE_EMAILNAME = 0x00000004;
        const long LINEADDRESSTYPE_DOMAINNAME = 0x00000008;
        const long LINEADDRESSTYPE_IPADDRESS = 0x00000010;

        const long LINEDIGITMODE_PULSE   = 0x00000001;
        const long LINEDIGITMODE_DTMF    = 0x00000002;
        const long LINEDIGITMODE_DTMFEND = 0x00000004;

        const long TAPIMEDIATYPE_AUDIO     = 0x8;
        const long TAPIMEDIATYPE_VIDEO     = 0x8000;
        const long TAPIMEDIATYPE_DATAMODEM = 0x10;
        const long TAPIMEDIATYPE_G3FAX      = 0x20;
        const long TAPIMEDIATYPE_MULTITRACK = 0x10000;
    };


};



// define ITTAPIDispatchEventNotification here, rather than in tapi3if.idl otherwise
// we get link warnings for the DIID const appearing twice
[
    uuid(9f34325b-7e62-11d2-9457-00c04f8ec888),
    helpstring("TAPI 3.0 ITTAPIDispatchEventNotification Interface")

]
dispinterface ITTAPIDispatchEventNotification 
{
   
    properties:
    methods:

    [id(1), helpstring("method Event")]
    HRESULT Event(
            [in] TAPI_EVENT TapiEvent,
            [in] IDispatch * pEvent
            );
};



cpp_quote("#define TAPI_CURRENT_VERSION 0x00030001")
cpp_quote("#include <tapi.h>")
cpp_quote("#include <tapi3err.h>")

#endif // __TAPI3_IDL__
