
/* eftoa.idl (1.14) */ 

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


	/* IEFTReceipt */ 
	[
		object,
		uuid(7de1fbe5-77d4-43f1-8a1f-8890381315be),
		dual,
		pointer_default(unique)
	]
	interface IEFTReceipt : IDispatch
	{
		[propget, id(DISPID_VALUE)] HRESULT Value([in, optional, defaultvalue("")] BSTR fieldName, [out, retval] BSTR *pVal);
		[propget, id(1)] HRESULT ApplicationKey([out, retval] BSTR *pVal);
	};

	/* IEFTApplication */ 
	[
		object,
		uuid(B9648375-6BE1-4e54-8DBC-A023AA107031),
		dual,
		pointer_default(unique)
	]
	interface IEFTApplication : IDispatch
	{
		[propget, id(1)] HRESULT Name([out, retval] BSTR * name);
		[propget, id(2)] HRESULT Key([out, retval] BSTR * key);
		[propget, id(3)] HRESULT AID([out, retval] BSTR *pVal);
		[propget, id(4)] HRESULT BrandId([out, retval] long *pVal);
		[propget, id(5)] HRESULT TerminalId([out, retval] BSTR *pVal);
		[propget, id(6)] HRESULT Currency([out, retval] BSTR *pVal);
		[propget, id(7)] HRESULT PeriodNumber([out, retval] long *pVal);
		[propget, id(8)] HRESULT TotalCount([out, retval] long *pVal);
		[propget, id(9)] HRESULT TotalAmount([out, retval] long *pVal);
		[propget, id(10)] HRESULT DebitCount([out, retval] long *pVal);
		[propget, id(11)] HRESULT DebitAmount([out, retval] long *pVal);
		[propget, id(12)] HRESULT CreditCount([out, retval] long *pVal);
		[propget, id(13)] HRESULT CreditAmount([out, retval] long *pVal);
		[propget, id(14)] HRESULT VoidCount([out, retval] long *pVal);
		[propget, id(15)] HRESULT VoidAmount([out, retval] long *pVal);
		[propget, id(16)] HRESULT ReservationCount([out, retval] long *pVal);
		[propget, id(17)] HRESULT ReservationAmount([out, retval] long *pVal);
		[propget, id(18)] HRESULT ApplicationType([out, retval] long *pVal);
		[propget, id(DISPID_VALUE)] HRESULT Value([in] BSTR name, [out, retval] BSTR *pVal);
	};

	/* IEFTApplications */ 
	[
		object,
		uuid(7de1fbe6-77d4-43f1-8a1f-8890381315be),
		dual,
		pointer_default(unique)
	]
	interface IEFTApplications : IDispatch
	{
		[propget, id(1)] HRESULT Item([in, optional, defaultvalue("")] BSTR keyOrSeq, [out, retval] IEFTApplication ** app);
		[propget, id(2)] HRESULT Count([out, retval] long * pVal);
	};

	/* IEFTDevice */ 
	[
		object,
		uuid(34A1F211-C79B-466d-8659-45D8F85F430F),
		dual,
		pointer_default(unique)
	]
	interface IEFTDevice : IDispatch
	{
		[propget, id(DISPID_VALUE)] HRESULT Value([in] BSTR fieldName, [out, retval] BSTR *pVal);
		[propget, id(1)] HRESULT DeviceId([out, retval] BSTR * pVal);
		[propget, id(2)] HRESULT Port([out, retval] BSTR * pVal);
		[propget, id(3)] HRESULT Class([out, retval] BSTR * pVal);
		[propget, id(4)] HRESULT ProductName([out, retval] BSTR * pVal);
		[propget, id(5)] HRESULT SoftwareVersion([out, retval] BSTR * pVal);
		[propget, id(6)] HRESULT ConnectionType([out, retval] BSTR * pVal);
		[propget, id(7)] HRESULT Connection([out, retval] BSTR * pVal);
		[propget, id(8)] HRESULT EcrAddress([out, retval] BSTR * pVal);
	};

	/* IEFTDevices */ 
	[
		object,
		uuid(23CF8E60-C161-4c4f-9635-1EABB2E5FEDB),
		dual,
		pointer_default(unique)
	]
	interface IEFTDevices : IDispatch
	{
		[propget, id(1)] HRESULT Item([in] long lIndex, [out, retval] IEFTDevice ** pVal);
		[propget, id(2)] HRESULT Count([out, retval] long * pVal);
	};

	/* IEFTDriver */ 
	[
		object,
		uuid(E534E876-EA58-4fdb-B3A7-E2DA24022002),
		dual,
		helpstring("IEFTDriver Interface"),
		pointer_default(unique)
	]
	interface IEFTDriver : IDispatch
	{
	

		/* method definitions */ 
		[id(1)] HRESULT Transaction([in] BSTR function, [in] long amount, [in] long options);
		[id(2)] HRESULT Commit([in] VARIANT_BOOL outcome);
		[id(3)] HRESULT CommitAmount([in] long commitPartialAmount);
		[id(4)] HRESULT CommitPartial([in] long commitPartialAmount);
		[id(5)] HRESULT Open();
		[id(6)] HRESULT Close();
		[id(7)] HRESULT Balance();
		[id(8)] HRESULT DeviceControl([in] long deviceControlClass, [in] long deviceControlCommand);
		[id(9)] HRESULT IccControl([in] long iccCommandCode);
		[id(10)] HRESULT DeviceAccess([in] BSTR deviceAccessId);
		[id(11)] HRESULT QueryStatus();
		[id(12)] HRESULT Validation([in] BSTR function, [in] long amount, [in] long options);
		[id(13)] HRESULT PrintOnEFT([in] BSTR printText, [in] long printOptions);
		[id(14)] HRESULT Complete([in] long timeout);
		[id(15)] HRESULT Abort();
		[id(16)] HRESULT Connect();
		[id(17)] HRESULT Disconnect();

		/* property definitions */ 
		[id(18), propget] HRESULT Async([out, retval] long * pVal);
		[id(18), propput] HRESULT Async([in] long newVal);
		[id(19), propget] HRESULT Timeout([out, retval] long * pVal);
		[id(19), propput] HRESULT Timeout([in] long newVal);
		[id(20), propget] HRESULT Status([out, retval] long * pVal);
		[id(21), propput] HRESULT AutoMode([in] long newVal);
		[id(22), propget] HRESULT Cashier([out, retval] long * pVal);
		[id(22), propput] HRESULT Cashier([in] long newVal);
		[id(23), propget] HRESULT ECRId([out, retval] BSTR * pVal);
		[id(23), propput] HRESULT ECRId([in] BSTR newVal);
		[id(24), propput] HRESULT UseMode([in] long newVal);
		[id(25), propget] HRESULT UseModeReply([out, retval] long * pVal);
		[id(26), propget] HRESULT ECRSequence([out, retval] long * pVal);
		[id(27), propput] HRESULT EntryMode([in] BSTR newVal);
		[id(28), propput] HRESULT Track2([in] BSTR newVal);
		[id(29), propput] HRESULT Track3([in] BSTR newVal);
		[id(30), propget] HRESULT Amount([out, retval] long * pVal);
		[id(30), propput] HRESULT Amount([in] long newVal);
		[id(31), propget] HRESULT AmountOrig([out, retval] long * pVal);
		[id(31), propput] HRESULT AmountOrig([in] long newVal);
		[id(32), propget] HRESULT AmountOther([out, retval] long * pVal);
		[id(32), propput] HRESULT AmountOther([in] long newVal);
		[id(33), propget] HRESULT FeeAmount([out, retval] long * pVal);
		[id(34), propget] HRESULT Currency([out, retval] BSTR * pVal);
		[id(34), propput] HRESULT Currency([in] BSTR newVal);
		[id(35), propput] HRESULT PrinterWidth([in] long newVal);
		[id(36), propget] HRESULT OperationMode([out, retval] BSTR * pVal);
		[id(36), propput] HRESULT OperationMode([in] BSTR newVal);
		[id(37), propget] HRESULT Time([out, retval] BSTR * pVal);
		[id(38), propget] HRESULT AID([out, retval] BSTR * pVal);
		[id(39), propput] HRESULT TrxTimeout([in] long newVal);
		[id(40), propput] HRESULT CardRemoveIndicator([in] long newVal);
		[id(41), propput] HRESULT SuppressReceiptOnTrm([in] long newVal);
		[id(42), propput] HRESULT DisplayText1([in] long newVal);
		[id(43), propput] HRESULT DisplayText2([in] long newVal);
		[id(44), propput] HRESULT CommitRequired([in] long newVal);
		[id(45), propget] HRESULT DccMode([out, retval] long * pVal);
		[id(45), propput] HRESULT DccMode([in] long newVal);
		[id(46), propget] HRESULT DccCurrency([out, retval] BSTR * pVal);
		[id(47), propget] HRESULT DccAmount([out, retval] long * pVal);
		[id(48), propget] HRESULT DccAmountExp([out, retval] long * pVal);
		[id(49), propget] HRESULT DccExrate([out, retval] BSTR * pVal);
		[id(50), propget] HRESULT DccExrateExp([out, retval] long * pVal);
		[id(51), propput] HRESULT DccOriginalDate([in] BSTR newVal);
		[id(52), propput] HRESULT TopupIssuerName([in] BSTR newVal);
		[id(53), propget] HRESULT TopupRefillCode([out, retval] BSTR * pVal);
		[id(54), propget] HRESULT TopupSerialNumber([out, retval] BSTR * pVal);
		[id(55), propget] HRESULT ExceptionMessage([out, retval] BSTR * pVal);
		[id(56), propget] HRESULT ExceptionCode([out, retval] long * pVal);
		[id(57), propget] HRESULT NativeMessage([out, retval] BSTR * pVal);
		[id(58), propget] HRESULT NativeStatus([out, retval] BSTR * pVal);
		[id(59), propget] HRESULT RefNumber([out, retval] BSTR * pVal);
		[id(59), propput] HRESULT RefNumber([in] BSTR newVal);
		[id(60), propget] HRESULT TrxSeqNum([out, retval] BSTR * pVal);
		[id(60), propput] HRESULT TrxSeqNum([in] BSTR newVal);
		[id(61), propget] HRESULT TrxRefNum([out, retval] BSTR * pVal);
		[id(61), propput] HRESULT TrxRefNum([in] BSTR newVal);
		[id(62), propget] HRESULT AuthCode([out, retval] BSTR * pVal);
		[id(62), propput] HRESULT AuthCode([in] BSTR newVal);
		[id(63), propget] HRESULT ReceiptText([out, retval] BSTR * pVal);
		[id(64), propget] HRESULT ReceiptMerchantText([out, retval] BSTR * pVal);
		[id(65), propget] HRESULT ContractNumber([out, retval] BSTR * pVal);
		[id(66), propget] HRESULT CardNumber([out, retval] BSTR * pVal);
		[id(67), propget] HRESULT CardExpiration([out, retval] BSTR * pVal);
		[id(68), propget] HRESULT PrintableCardNumber([out, retval] BSTR * pVal);
		[id(69), propget] HRESULT PosEntryMode([out, retval] BSTR * pVal);
		[id(70), propget] HRESULT AuthText([out, retval] BSTR * pVal);
		[id(71), propget] HRESULT BookingPeriod([out, retval] BSTR * pVal);
		[id(72), propget] HRESULT OperationPhase([out, retval] long * pVal);
		[id(73), propget] HRESULT ApplicationName([out, retval] BSTR * pVal);
		[id(74), propget] HRESULT ApplicationLabel([out, retval] BSTR * pVal);
		[id(75), propget] HRESULT ApplicationKey([out, retval] BSTR * pVal);
		[id(76), propget] HRESULT CustomerLanguage([out, retval] BSTR * pVal);
		[id(77), propget] HRESULT CardLanguage([out, retval] BSTR * pVal);
		[id(78), propget] HRESULT BrandId([out, retval] long * pVal);
		[id(79), propget] HRESULT TipAmount([out, retval] long * pVal);
		[id(80), propget] HRESULT EncryptedPan([out, retval] BSTR * pVal);
		[id(81), propget] HRESULT StaticKeyPanIndex([out, retval] long * pVal);
		[id(82), propget] HRESULT AcqId([out, retval] BSTR * pVal);
		[id(83), propget] HRESULT SubBrand([out, retval] BSTR * pVal);
		[id(84), propget] HRESULT CommitTimeout([out, retval] long * pVal);
		[id(85), propget] HRESULT ReferralPhoneNumber([out, retval] BSTR * pVal);
		[id(86), propget] HRESULT SaldoFlag([out, retval] VARIANT_BOOL * pVal);
		[id(87), propget] HRESULT Saldo([out, retval] long * pVal);
		[id(88), propget] HRESULT CouponValueUnit([out, retval] BSTR * pVal);
		[id(89), propget] HRESULT CouponValue([out, retval] long * pVal);
		[id(90), propget] HRESULT CouponType([out, retval] long * pVal);
		[id(91), propget] HRESULT CouponPromNumber([out, retval] long * pVal);
		[id(92), propget] HRESULT CouponReferenceNumber([out, retval] BSTR * pVal);
		[id(92), propput] HRESULT CouponReferenceNumber([in] BSTR newVal);
		[id(93), propget] HRESULT Outcome([out, retval] VARIANT_BOOL * pVal);
		[id(94), propget] HRESULT Options([out, retval] long * pVal);
		[id(95), propget] HRESULT Function([out, retval] BSTR * pVal);
		[id(96), propget] HRESULT Language([out, retval] BSTR * pVal);
		[id(96), propput] HRESULT Language([in] BSTR newVal);
		[id(97), propget] HRESULT Id([out, retval] BSTR * pVal);
		[id(97), propput] HRESULT Id([in] BSTR newVal);
		[id(98), propget] HRESULT TerminalId([out, retval] BSTR * pVal);
		[id(98), propput] HRESULT TerminalId([in] BSTR newVal);
		[id(99), propget] HRESULT MpdServerVersion([out, retval] BSTR * pVal);
		[id(100), propget] HRESULT MpdClientVersion([out, retval] BSTR * pVal);
		[id(101), propget] HRESULT ActivationSequence([out, retval] BSTR * pVal);
		[id(101), propput] HRESULT ActivationSequence([in] BSTR newVal);
		[id(102), propget] HRESULT ActivationState([out, retval] long * pVal);
		[id(103), propget] HRESULT ConnectionState([out, retval] long * pVal);
		[id(104), propput] HRESULT EcrManufacturer([in] BSTR newVal);
		[id(105), propput] HRESULT EcrName([in] BSTR newVal);
		[id(106), propput] HRESULT EcrVersion([in] BSTR newVal);
		[id(107), propput] HRESULT EftModuleManufacturer([in] BSTR newVal);
		[id(108), propput] HRESULT EftModuleName([in] BSTR newVal);
		[id(109), propput] HRESULT EftModuleVersion([in] BSTR newVal);
		[id(110), propget] HRESULT DeviceStatusCode([out, retval] long * pVal);
		[id(111), propget] HRESULT DeviceEventCode([out, retval] long * pVal);
		[id(112), propget] HRESULT ReaderStatusCode([out, retval] long * pVal);
		[id(113), propget] HRESULT CardProcessingInfo([out, retval] long * pVal);
		[id(114), propget] HRESULT DeviceApplicationKey([out, retval] BSTR * pVal);
		[id(115), propget] HRESULT DeviceAid([out, retval] BSTR * pVal);
		[id(116), propget] HRESULT DeviceId([out, retval] BSTR * pVal);
		[id(116), propput] HRESULT DeviceId([in] BSTR newVal);
		[id(117), propget] HRESULT DeviceMsgCode([out, retval] long * pVal);
		[id(118), propget] HRESULT DeviceMsg([out, retval] BSTR * pVal);
		[id(119), propget] HRESULT DeviceControlClass([out, retval] long * pVal);
		[id(120), propget] HRESULT DeviceControlCommand([out, retval] long * pVal);
		[id(121), propget] HRESULT DeviceControlData([out, retval] BSTR * pVal);
		[id(122), propget] HRESULT DeviceControlResult([out, retval] long * pVal);
		[id(123), propget] HRESULT BalanceTime([out, retval] BSTR * pVal);
		[id(124), propget] HRESULT ReceiptCopyCount([out, retval] long * pVal);
		[id(125), propget] HRESULT ReceiptMerchantCount([out, retval] long * pVal);
		[id(126), propget] HRESULT ReceiptSignatureFlag([out, retval] long * pVal);
		[id(127), propget] HRESULT ReceiptOptions([out, retval] long * pVal);
		[id(127), propput] HRESULT ReceiptOptions([in] long newVal);
		[id(128), propget] HRESULT ReceiptPrintFlag([out, retval] long * pVal);
		[id(128), propput] HRESULT ReceiptPrintFlag([in] long newVal);
		[id(129), propget] HRESULT Cvc([out, retval] BSTR * pVal);
		[id(129), propput] HRESULT Cvc([in] BSTR newVal);
		[id(130), propget] HRESULT DriverAddress([out, retval] BSTR * pVal);
		[id(130), propput] HRESULT DriverAddress([in] BSTR newVal);
		[id(131), propput] HRESULT CommitPartialTimeout([in] long newVal);
		[id(132), propput] HRESULT CommitPartialAmount([in] long newVal);
		[id(133), propget] HRESULT CommitedAmount([out, retval] long * pVal);
		[id(134), propget] HRESULT IccCommandCode([out, retval] long * pVal);
		[id(134), propput] HRESULT IccCommandCode([in] long newVal);
		[id(135), propget] HRESULT IccDeviceId([out, retval] BSTR * pVal);
		[id(135), propput] HRESULT IccDeviceId([in] BSTR newVal);
		[id(136), propget] HRESULT IccApduRequest([out, retval] BSTR * pVal);
		[id(136), propput] HRESULT IccApduRequest([in] BSTR newVal);
		[id(137), propget] HRESULT IccCardAtr([out, retval] BSTR * pVal);
		[id(138), propget] HRESULT IccApduResponse([out, retval] BSTR * pVal);
		[id(139), propget] HRESULT DeviceAccessId([out, retval] BSTR * pVal);
		[id(139), propput] HRESULT DeviceAccessId([in] BSTR newVal);
		[id(140), propget] HRESULT DeviceAccessData([out, retval] BSTR * pVal);
		[id(140), propput] HRESULT DeviceAccessData([in] BSTR newVal);
		[id(141), propget] HRESULT DeviceAccessResult([out, retval] long * pVal);
		[id(142), propget] HRESULT CompletedCommand([out, retval] long * pVal);
		[id(143), propget] HRESULT CompletedDeviceEvent([out, retval] long * pVal);
		[id(144), propget] HRESULT CardsRetained([out, retval] long * pVal);
		[id(144), propput] HRESULT CardsRetained([in] long newVal);
		[id(145), propput] HRESULT ExtraXmlNode([in] BSTR newVal);
		[id(148), propput] HRESULT PrintCharSet([in] long newVal);
		[id(149), propget] HRESULT PrinterState([out, retval] long * pVal);
		[id(150), propput] HRESULT TrxAddMode([in] long newVal);
		[id(151), propget] HRESULT TrxAddReply([out, retval] long * pVal);
		[id(152), propget] HRESULT NbrInstalments([out, retval] long * pVal);
		[id(152), propput] HRESULT NbrInstalments([in] long newVal);
		[id(153), propget] HRESULT HasCardInfos([out, retval] long * pVal);
		[id(154), propget] HRESULT ContextId([out, retval] long * pVal);
		[id(155), propget] HRESULT CardTrack2([out, retval] BSTR * pVal);
		[id(156), propget] HRESULT CardTrack3([out, retval] BSTR * pVal);
		[id(157), propget] HRESULT CardIcc([out, retval] BSTR * pVal);
		[id(158), propget] HRESULT CardAppExpDate([out, retval] BSTR * pVal);
		[id(159), propget] HRESULT CardPanHash([out, retval] BSTR * pVal);
		[id(160), propget] HRESULT ChipPanHash([out, retval] BSTR * pVal);
		[id(161), propget] HRESULT ProcessingTarget([out, retval] long * pVal);
		[id(162), propget] HRESULT DccDisclaimerText([out, retval] BSTR * pVal);
		[id(163), propget] HRESULT FeeDisclaimerText([out, retval] BSTR * pVal);
		[id(164), propput] HRESULT AccountIndex([in] long newVal);
		[id(165), propput] HRESULT EcrSeqCounter([in] long newVal);
		[id(166), propput] HRESULT ProceedNeeded([in] long newVal);
		[id(167), propget] HRESULT LoyaltyMode([out, retval] long * pVal);
		[id(167), propput] HRESULT LoyaltyMode([in] long newVal);
		[id(168), propget] HRESULT LoyaltyData([out, retval] BSTR * pVal);
		[id(169), propput] HRESULT LoyaltyInfo([in] BSTR newVal);


		[propget, id(210)] HRESULT Receipt([out, retval] IEFTReceipt ** pVal);
		[propget, id(211)] HRESULT Applications([out, retval] IEFTApplications ** pVal);
		[propget, id(212)] HRESULT Devices([out, retval] IEFTDevices ** pVal);
		[propget, id(213)] HRESULT Attribute([in] BSTR name, [out, retval] VARIANT *pVal);
		[propput, id(213)] HRESULT Attribute([in] BSTR name, [in] VARIANT newVal);
		[propget, id(214)] HRESULT ErrorText([in] BSTR language, [in] long errorCode, [out, retval] BSTR *pVal);
		[propget, id(215)] HRESULT Property([in] long table, [in] long index, [out, retval] BSTR *pVal);
		[propput, id(215)] HRESULT Property([in] long table, [in] long index, [in] BSTR newVal);

		/* PayAtTheTable */
		[id(170), propget] HRESULT PARTerminalID([out, retval] BSTR * pVal);
		[id(170), propput] HRESULT PARTerminalID([in] BSTR newVal);
		[id(171), propget] HRESULT PARECRId([out, retval] BSTR * pVal);
		[id(171), propput] HRESULT PARECRId([in] BSTR newVal);
		[id(172), propget] HRESULT PARRefNum([out, retval] BSTR * pVal);
		[id(172), propput] HRESULT PARRefNum([in] BSTR newVal);
		[id(173), propget] HRESULT PARActor([out, retval] BSTR * pVal);
		[id(173), propput] HRESULT PARActor([in] BSTR newVal);
		[id(174), propget] HRESULT PARAmount([out, retval] long * pVal);
		[id(174), propput] HRESULT PARAmount([in] long newVal);
		[id(175), propget] HRESULT PARCurrC([out, retval] BSTR * pVal);
		[id(175), propput] HRESULT PARCurrC([in] BSTR newVal);
		[id(176), propget] HRESULT PARCurrE([out, retval] long * pVal);
		[id(176), propput] HRESULT PARCurrE([in] long newVal);
		[id(177), propget] HRESULT PARActorPwd([out, retval] BSTR * pVal);
		[id(177), propput] HRESULT PARActorPwd([in] BSTR newVal);
		[id(178), propget] HRESULT PARCPMethod([out, retval] long * pVal);
		[id(178), propput] HRESULT PARCPMethod([in] long newVal);

		/* Terminal Info */
		[id(180), propget] HRESULT DvErrCode([out, retval] long * pVal);
		[id(181), propget] HRESULT DvPPSer([out, retval] BSTR * pVal);
		[id(182), propget] HRESULT DvPPProd([out, retval] BSTR * pVal);
		[id(183), propget] HRESULT DvRfsVers([out, retval] BSTR * pVal);
		[id(184), propget] HRESULT DvMcrSer([out, retval] BSTR * pVal);
		[id(185), propget] HRESULT DvMcrProd([out, retval] BSTR * pVal);
		[id(186), propget] HRESULT DvMcrSW([out, retval] BSTR * pVal);
		[id(187), propget] HRESULT DvMcrRdCyc([out, retval] long * pVal);
		[id(188), propget] HRESULT DvPPKeyOKCnt([out, retval] long * pVal);

		/* RPT */
		[id(190), propput] HRESULT RPTAcctDept([in] long newVal);
		[id(191), propput] HRESULT RPTAcctPrd([in] long newVal);
		[id(192), propput] HRESULT RPTDevType([in] BSTR newVal);
		[id(193), propput] HRESULT RPTKTUCde([in] long newVal);
		[id(194), propput] HRESULT RPTStatCde([in] long newVal);
		[id(195), propput] HRESULT RPTWSNo([in] long newVal);

		/* IFSF */
		[id(200), propput] HRESULT IFSFText([in] BSTR newVal);
		[id(201), propput] HRESULT IFSFResource([in] long newVal);
		[id(202), propput] HRESULT IFSFTimeout([in] long newVal);
		[id(203), propput] HRESULT IFSFInputCharsMin([in] long newVal);
		[id(204), propput] HRESULT IFSFInputCharsMax([in] long newVal);
		[id(205), propput] HRESULT IFSFContextId([in] long newVal);
		[id(206), propput] HRESULT IFSFLastTry([in] long newVal);
		[id(207), propput] HRESULT IFSFSuccessIndicator([in] long newVal);
	};

	/* IEFTDriverEventsU */ 
	[
		object,
		uuid(5B5022AF-3666-4f81-83DD-2CCAF5E9D824)
	]
	interface IEFTDriverEventsU : IDispatch
	{
		[id(1)] HRESULT OnStatusChange([in] long statusCode);
		[id(2)] HRESULT OnError([in] long errorCode, [in] BSTR message);
		[id(3)] HRESULT OnCommandComplete([in] long resultCode);
		[id(4)] HRESULT OnDeviceEvent([in] long deviceEventCode, [in] BSTR applicationKey);
		[id(5)] HRESULT OnDeviceMsg([in] long deviceMsgCode, [in] BSTR deviceMsg);
	};



[
	uuid(7743F7F8-DD93-4159-B424-913FAC5D7A55),
	version(1.06),
	helpstring("Telekurs EFT/MPD Library")
]
library EFT
{
	importlib("stdole32.tlb");
	importlib("stdole2.tlb");

	typedef enum EFTStatusCode
	{
		EFT_S_IDLE						= 0,
		EFT_S_CONNECTION_PENDING		= 1,
		EFT_S_CONNECTED					= 2,
		EFT_S_OPERATION_PENDING			= 3,
		EFT_S_EXCEPTION					= 4,
		EFT_S_PREPARED					= 5
	}
	EFTStatusCode;

typedef enum EFTComletedCommandCode
{
	EFT_CC_NO_RESPONSE				= 0,
	EFT_CC_OPEN						= 1,
	EFT_CC_CLOSE					= 2,
	EFT_CC_TRANSACTION				= 3,
	EFT_CC_COMMIT					= 4,
	EFT_CC_PARTIAL_COMMIT			= 5,
	EFT_CC_QUERY_STATUS				= 6,
	EFT_CC_BALANCE					= 7,
	EFT_CC_DEVICE_CONTROL			= 8,
	EFT_CC_ICC_CONTROL				= 9,
	EFT_CC_VALIDATION				= 10,
	EFT_CC_DEVICE_ACCESS			= 11,
	EFT_CC_PRINT					= 12
}
EFTComletedCommandCode;

	typedef enum EFTTransactionOption
	{
		EFT_XOPT_USE_TRACK2				= 1,
		EFT_XOPT_USE_TRACK3				= 2,
		EFT_XOPT_TIPPABLE				= 4,
		EFT_XOPT_PARTIALCOMMITABLE		= 8,
		EFT_XOPT_ENABLE_DCC				= 16
	}
	EFTTransactionOption;

	typedef enum EFTDeviceStatus {
		EFT_DEVICE_CLOSED				= 0,
		EFT_DEVICE_OPEN					= 1,
		EFT_DEVICE_BUSY					= 2,
		EFT_DEVICE_NO_ANSWER			= 3,
		EFT_DEVICE_NOT_INIT				= 4,
		EFT_DEVICE_PROBLEM_ON_START		= 5,
		EFT_DEVICE_CARD_LEFT			= 6,
		EFT_DEVICE_NO_ANSWER_SEVERE		= 7
	} 
	EFTDeviceStatus;

	typedef enum EFTDCCStatus {
		EFT_DCC_NO_DCC					= 0,
		EFT_DCC_INIT_PHASE1				= 1,
		EFT_DCC_PHASE1_OK				= 2,
		EFT_DCC_CONTINUE_DCC			= 3,
		EFT_DCC_CONTINUE_LOCAL			= 4,
		EFT_DCC_AUTHORISATION_DCC		= 5,
		EFT_DCC_AUTHORISATION_LOCAL		= 6
	}
	EFTDCCStatus;

	typedef enum EFTUseMode {
		EFT_UM_EXCLUSIVE				= 0,
		EFT_UM_SHARED					= 1,
		EFT_UM_EMERGENCY				= -1,
		EFT_UM_NORMAL					= 0
	}
	EFTUseMode;

	typedef enum EFTDeviceReaderStatus {
		EFT_READER_EMPTY				= 0,
		EFT_READER_LOADED				= 1,
		EFT_READER_EJECTED				= 2,
		EFT_READER_CARD_RETENSION		= 3,
		EFT_READER_LOADED_WITH_BRAND_INFO	= 4
	} 
	EFTDeviceReaderStatus;

	typedef enum EFTActivationState {
		EFT_SHIFT_CLOSED				= 0,
		EFT_SHIFT_OPEN					= 1
	} 
	EFTActivationState;

	typedef enum EFTAutoMode {
		EFT_AMODE_NULL					= 0,
		EFT_AMODE_DEFAULT				= 1,
		EFT_AMODE_TEST_CONNECTION		= 2,
		EFT_AMODE_TEST_CARD_IN_IDLE		= 4,
		EFT_AMODE_TEST_CARD_BEFORE_TRX	= 8,
		EFT_AMODE_FORCE_CARD_BEFORE_TRX	= 16,
		EFT_AMODE_VEZP_NO_COUNTER_PICKUP = 32,
		EFT_AMODE_BALANCE_FROM_DRIVER	 = 64,
		EFT_AMODE_ASSUME_DEVICE_PRESENT	 = 128,
		EFT_AMODE_AUTO_ACTIVATE			 = 256,
		EFT_AMODE_AUTOMAT				 = 512,
		EFT_AMODE_AUTOMAT_AcceptCardFirst = 1024,
		EFT_AMODE_AUTOMAT_ReadBrands	  = 2048,
		EFT_AMODE_AUTOMAT_ReadBrandsInTrx	  = 4096,
		EFT_AMODE_AUTOMAT_AllowStopOnTrm = 8192,
		EFT_AMODE_AUTOMAT_WithContactLess = 16384,
      EFT_AMODE_NO_AUTO_LOGIN = 32768

	} 
	EFTAutoMode;

typedef enum EFTIccCommandCode {
	EFT_ICC_POWER_UP = 0,
	EFT_ICC_POWER_DOWN = 1,
	EFT_ICC_RESET = 2,
	EFT_ICC_APDU = 3
} 
EFTIccCommandCode;



typedef enum EFTReceiptOption
{
	EFT_RCP_SUPPRESS_HEADER			= 1,
	EFT_RCP_PRINT_DOP				= 2,
	EFT_RCP_SUPPRESS_SIGNATURE		= 4,
	EFT_RCP_SMALL_FORMAT			= 8,
	EFT_RCP_SUPERSMALL_FORMAT		= 16,
	EFT_RCP_WITH_CONTROL_CHARS		= 32,
	EFT_RCP_WITH_MERCHANT_RECEIPT	= 64,
	EFT_RCP_SUPPRESS_ECR_INFORMATION = 128,
	EFT_RCP_SUPPRESS_EFT_INFORMATION = 256,
	EFT_RCP_COMPACT_FORMAT			 = 512,
	EFT_RCP_SUPER_COMPACT_FORMAT	 = 1024,
	EFT_RCP_ULTRA_COMPACT_FORMAT	 = 2048,	
	EFT_RCP_SUPPRESS_EFT_DCCDISCLAIMERTEXT = 4096,
	EFT_RCP_SUPPRESS_EFT_FEEDISCLAIMERTEXT = 8192

}
EFTReceiptOption;

typedef enum EFTSignatureFlags
{
	EFT_SGF_NO_SIGNATURE			= 0,
	EFT_SGF_CUSTOMER_SIG			= 1,
	EFT_SGF_MERCHANT_SIG			= 2
}
EFTSignatureFlags;

typedef enum EFTDeviceMsgCode {
	EFT_DC_Display = 0,
	EFT_DC_ClearDisplay = 1,
	EFT_DC_KeyPressed = 2,
	EFT_DC_PARGetTotalAmount = 30,
	EFT_DC_PARTransactionRequest = 31,
	EFT_DC_PARCashTransaction = 32,
	EFT_DC_PARAbortFlow = 33,
	EFT_DC_PARGetReceipt = 34,
	EFT_DC_PARGetReceiptPaid = 35,
    EFT_DC_PARActorVerification = 36,
    EFT_DC_PARActorPwdECRVerification = 37,
    EFT_DC_PARActorPwdEFTVerification = 38
} EFTDeviceMsgCode;

typedef enum EFTPropertyTable {
	EFT_PT_TRMInfo = 10,
	EFT_PT_BrandInfo = 11,
	EFT_PT_ep2sbbRPT = 20,
	EFT_PT_postPCD = 21,
	EFT_PT_PayAtTable = 30,
	EFT_PT_IFSF = 31
} EFTPropertyTable;

typedef enum EFTPropertyElement {
	EFT_PE_PARTerminalID = 0,
	EFT_PE_PARECRId = 1,
	EFT_PE_PARRefNum = 2,
	EFT_PE_PARAmount = 3,
	EFT_PE_PARCurrC = 4,
	EFT_PE_PARCurrE = 5,
	EFT_PE_PARActor = 6,
    EFT_PE_PARActorPwd = 7,
    EFT_PE_PARCPMethod = 8 
} EFTPropertyElement;

typedef enum EFTPropertyElementTRMI {
	EFT_PE_TRMIErrCode = 0,
	EFT_PE_TRMIDvPPSer = 1,
	EFT_PE_TRMIDvPPProd = 2,
	EFT_PE_TRMIDvRfsVers = 3,
	EFT_PE_TRMIDvMcrSer = 4,
	EFT_PE_TRMIDvMcrProd = 5,
	EFT_PE_TRMIDvMcrSW = 6,
	EFT_PE_TRMIDvMcrRdCyc = 7,
	EFT_PE_TRMIDvPPKeyOKCnt = 8,
	EFT_PE_TRMIDvPPVers = 9,
	EFT_PE_TRMIDvPPSec = 10,
	EFT_PE_TRMIDvMcrProdVer = 11,
	EFT_PE_TRMIDvMcrSec = 12,
	EFT_PE_TRMIDvMcrKrypto = 13,
	EFT_PE_TRMIReaderReadICC = 14,
	EFT_PE_TRMIReaderInsertCards = 15,
	EFT_PE_TRMICtlessSer = 16,
	EFT_PE_TRMICtlessProdDate = 17,
	EFT_PE_TRMICtlessHwVers = 18
} EFTPropertyElementTRMI;


typedef enum EFTPropertyElementIFSF {
       EFT_PE_IFSFText = 0,
       EFT_PE_IFSFResource = 1,
       EFT_PE_IFSFTimeout = 2,
       EFT_PE_IFSFInputCharsMin = 3,
       EFT_PE_IFSFInputCharsMax = 4,
       EFT_PE_IFSFContextId = 5,
       EFT_PE_IFSFLastTry = 6,
	   EFT_PE_IFSFSuccessIndicator = 7
} EFTPropertyElementIFSF;

typedef enum EFTPrintOption {
	EFT_OPT_PRINT_STATE = 0,
	EFT_OPT_PRINT_FIRST = 1,
	EFT_OPT_PRINT_SUBSEQUENT = 2,
	EFT_OPT_PRINT_FINAL = 3,
	EFT_OPT_PRINT_ABORT = 9
} EFTPrintOption;

typedef enum EFTPrinterState {
	EFT_PRINTER_READY = 0,
	EFT_PRINTER_INVALID_STATE = 1,
	EFT_PRINTER_INVALID_CHARACTER = 2,
	EFT_PRINTER_BUSY = 4,
	EFT_PRINTER_OUT_OF_PAPER = 10,
	EFT_PRINTER_TIMEOUT_ECR = 21,
	EFT_PRINTER_MAX_SIZE_EXCEEDED = 22,
	EFT_PRINTER_NO_PRINTER = 99
} EFTPrinterState;

typedef enum EFTCardInfoFlags {
	    EFT_HAS_CARD_INFO = 1,
        EFT_HAS_CARD_PAN_DATA = 2,
        EFT_CHIP_DATA_READING = 4,
        EFT_HAS_CHIP_PAN_DATA = 8,
        EFT_CARD_SWIPED = 16
} EFTCardInfoFlags;

typedef enum EFTExceptionCodes {
	EFT_E_SUCCESS = 0,
	EFT_E_DATA_LINK_TIMEOUT = 101,
	EFT_E_DATA_LINK_REJECT = 102,
	EFT_E_SOCKET_LINK_ERROR = 103,
	EFT_E_NO_DRIVER_AVAILABLE = 201,
	EFT_E_DRIVER_USED = 202,
	EFT_E_SESSION_BUSY = 301,
	EFT_E_SESSION_NOT_CONNECTED = 302,
	EFT_E_INVALID_REQUEST = 303,
	EFT_E_MISSING_AMOUNT = 304,
	EFT_E_INVALID_ARGUMENTS = 305,
	EFT_E_MESSAGE_IGNORED = 306,
	EFT_E_INVALID_STATE = 307,
	EFT_E_UNSUPPORTED_DEVICE_COMMAND = 308,
	EFT_E_GENERIC_DRIVER_ERROR = 400,
	EFT_E_APPLICATION_TIMEOUT = 401,
	EFT_E_RECORD_SIZE = 402,
	EFT_E_INVALID_RECORD = 403,
	EFT_E_NOT_ABORTED = 404,
	EFT_E_ABORTED = 405,
	EFT_E_INVALID_FORMAT = 406,
	EFT_E_UNSUPPORTED_CURRENCY = 407,
	EFT_E_DRIVER_BUSY = 408,
	EFT_E_JOURNAL_ACCESS = 409,
	EFT_E_CLOSE_SHIFT = 410,
	EFT_E_ECR_TIMEOUT = 411,
	EFT_E_CLIENT_NOT_READY = 501,
	EFT_E_CARD_REMOVED = 503,
	EFT_E_SHIFT_CLOSED = 504,
	EFT_E_CARD_NOT_REMOVED = 505,
	EFT_E_TRY_LATER = 506,
	EFT_E_AMOUNT_ZERO = 507,
	EFT_E_NOT_ALLOWED = 508,
	EFT_E_WRONG_CASHIER = 509,
	EFT_E_WRONG_ECRID = 510,
	EFT_E_WRONG_PRINTMODE = 511,
	EFT_E_WRONG_TERMINAL = 512,
	EFT_E_NEED_BALANCE = 513,
	EFT_E_REQUEST_FAILED = 514,
	EFT_E_UNSUPPORTED_FUNCTION = 515,
	EFT_E_AUTH_FILL_IN_VOUCHER = 516,
	EFT_E_DEVICE_COMMAND_FAILED = 517,
	EFT_E_ICC_TIMEOUT = 518,
	EFT_E_ICC_CARD_IS_REMOVED = 519,
	EFT_E_INVALID_FORMAT_TRM_REPLY = 520,
	EFT_E_TRM_BUSY = 521,
	EFT_E_AUTH_FAILED = 600,
	EFT_E_AUTH_DENIED = 601,
	EFT_E_AUTH_LIMIT_EXCEEDED = 602,
	EFT_E_AUTH_DOUBLE_OPERATION = 603,
	EFT_E_AUTH_CARDHOLDER_ABORT = 604,
	EFT_E_AUTH_CARDHOLDER_TIMEOUT = 605,
	EFT_E_AUTH_REVERSAL_INVALID = 606,
	EFT_E_AUTH_UNKNOWN_TRANSACTION = 610,
	EFT_E_AUTH_CASH_OR_OTHER_CARD = 611,
	EFT_E_AUTH_CASH_PICKUP_REFUSED = 612,
	EFT_E_AUTH_CASH_LIMIT_EXCEEDED = 613,
	EFT_E_AUTH_CARD_PICKUP = 615,
	EFT_E_AUTH_WAIT = 616,
	EFT_E_AUTH_CONTACT_BANK = 617,
	EFT_E_FIELD_OUT_OF_BUFFER = 701,
	EFT_E_FORMAT_ERROR = 702,
	EFT_E_CLIENT_SESSION_BUSY = 801,
	EFT_E_EXCEPTION = 802,
	EFT_E_TIMEOUT = 803,
	EFT_E_NOT_PREPARED = 804,
	EFT_E_SOCKET_ERROR = 805,
	EFT_E_NO_OPERATION_PENDING = 806,
	EFT_E_STATE_UNEXPECTED = 807,
	EFT_E_OUT_OF_SINKS = 809,
	EFT_E_INVALID_SINK = 810,
	EFT_E_RECEIPT_UNAVAILABLE = 811,
	EFT_E_INVALID_ATTRIBUTE_REF = 812,
	EFT_E_NO_APPLICATION = 813,
	EFT_E_CLIENT_SOCKET_CLOSED = 814,
	EFT_E_CLIENT_NO_CONNECT = 815,
	EFT_E_NO_DEVICE = 816,
	EFT_E_BUFFER_OVERFLOW = 817,
	EFT_E_NOT_IMPLEMENTED = 818
}
EFTExceptionCodes;


	
/* DeviceControlCodes.h */ 




typedef enum EFTDeviceControlClass
{
	/* device codes */ 
	EFT_DCC_CARD_READER				= 0x01,
	EFT_DCC_TERMINAL_CONFIGURATION	= 0x02,
	EFT_DCC_FINANCIAL_FLOW			= 0x03,
	EFT_DCC_TERMINAL_UI				= 0x04,
	EFT_DCC_DCC						= 0x05,
	EFT_DCC_VOUCHER					= 0x06,
	EFT_DCC_PAY_AT_THE_TABLE		= 0x07,
	EFT_DCC_IFSF					= 0x08,
	EFT_DCC_EXTRA					= 0x09,

	/* driver internal codes */ 
	EFT_DCC_DRIVER_SESSION			= 0x20,

	/* PCD codes */ 
	EFT_DCC_PCD						= 0x80
}
EFTDeviceControlClass;

typedef enum EFTDeviceControlAction
{
	/* class EFT_DCC_CARD_READER */ 
	EFT_DCA_CR_CARD_RETRACT			= 0x01,
	EFT_DCA_CR_CARD_REPOSITION		= 0x02,
	EFT_DCA_CR_SHUTTER_OPEN			= 0x03,
	EFT_DCA_CR_SHUTTER_CLOSE		= 0x04,
	EFT_DCA_CR_CARD_EJECT			= 0x05,

	/* class EFT_DCC_TERMINAL_CONFIGURATION */ 
	EFT_DCA_TC_CONFIGURE			= 0x01,
	EFT_DCA_TC_INITIALIZE			= 0x02,
	EFT_DCA_TC_CONFIGINIT			= 0x03,
	EFT_DCA_TC_DOWNLOAD				= 0x04,
	EFT_DCA_TC_REBOOT				= 0x09,

	/* class EFT_DCC_FINANCIAL_FLOW */ 
	EFT_DCA_FF_SUBMISSION			= 0x01,

	/* class EFT_DCC_TERMINAL_UI */ 
	EFT_DCA_TU_SERVICE_MENU			= 0x01,
	EFT_DCA_TU_ACTIVATE_UI			= 0x02,

	/* class EFT_DCC_DCC */ 
	EFT_DCA_DC_EXCHANGE_RATE		= 0x01,

	/* class EFT_DCC_VOUCHER */ 
	EFT_DCA_DC_VS_SERVICES			= 0x01,

	/* class EFT_DCC_DRIVER_SESSION */ 
	EFT_DCA_DS_DEVICE_LIST			= 0x01,
	EFT_DCA_DS_SHUTDOWN				= 0x02,
	EFT_DCA_DS_INIT_RECEIPT			= 0x03,
	EFT_DCA_DS_GET_DEVICE			= 0x04,
	EFT_DCA_DS_RELEASE_DEVICE		= 0x05,
	EFT_DCA_DS_GET_TERMINAL_INFO	= 0x06,
	EFT_DCA_DS_GET_DEVICE_FORCED	= 0x07,
	EFT_DCA_DS_GET_DEVICE_FORCED_AND_GIVE_BACK	= 0x08,

	/* class	EFT_DCC_PAY_AT_THE_TABLE */
	EFT_DCA_PA_GENERAL_OK			= 0x00,
	EFT_DCA_PA_TOTAL_AMOUNT			= 0x01,
	EFT_DCA_PA_ACTOR_INFO			= 0x02,
	EFT_DCA_PA_GENERIC_ERROR		= 0x90,
	EFT_DCA_PA_ERROR_REFNUM			= 0x91,
	EFT_DCA_PA_ERROR_AMOUNT			= 0x92,
	EFT_DCA_PA_ERROR_ACTOR			= 0x93,

	/* class	EFT_DCC_IFSF */
	EFT_DCA_IFSFDisplayText			= 0x01,
	EFT_DCA_IFSFDisplayResource		= 0x02,
	EFT_DCA_IFSFGetKeyInput			= 0x03,
	EFT_DCA_IFSFPinCheck			= 0x04,

	/* class	EFT_DCC_EXTRA */
	EFT_DCA_EX_Login				= 0x01,
	EFT_DCA_EX_Logout				= 0x02,
	EFT_DCA_EX_Hold					= 0x03,
}
EFTDeviceControlAction;




	[
		uuid(04BB0907-6339-4a04-9BCC-2F9604D8CEC4)
	]
	dispinterface IEFTDriverEvents
	{
		interface IEFTDriverEventsU;
	};

	[
		uuid(4BEC35EB-F751-405f-9E49-37C4D766BA13)
	]
	dispinterface IEFTDriverEventsUD
	{
		interface IEFTDriverEventsU;
	};

	[
		uuid(C1EDECF8-AA39-48E2-BBDB-D043B1E21CB3),
		helpstring("EFTDriver Class")
	]
	coclass EFTDriver
	{
		[default] interface IEFTDriver;
		[default, source] dispinterface IEFTDriverEvents;
		[source] dispinterface IEFTDriverEventsUD;
	};
};
