/**
 * Common
 * @description Namespace for Common
 */
export declare namespace Common {
    /**
     * Enums
     * @description Namespace for Enums
     */
    namespace Enums {
        /**
         * Result
         * @description Enum for Result
         */
        enum Result {
            Success = "Success",
            Failure = "Failure"
        }
        /**
         * Error condition
         * @description Enum for Error condition
         */
        enum ErrorCondition {
            Refusal = "Refusal"
        }
        /**
         * Message category
         * @description Enum for Message category
         */
        enum MessageCategory {
            Payment = "Payment",
            Abort = "Abort",
            Reversal = "Reversal",
            TransactionStatus = "TransactionStatus",
            Reconciliation = "Reconciliation",
            Diagnosis = "Diagnosis",
            TransactionReport = "TransactionReport"
        }
        /**
         * Message class
         * @description Enum for Message class
         */
        enum MessageClass {
            Service = "Service"
        }
        /**
         * Message type
         * @description Enum for Message type
         */
        enum MessageType {
            Request = "Request"
        }
        /**
         * Result code
         * @description Enum for Result code
         */
        enum ResultCode {
            Undefined = -1,
            Ok = 0,
            Unauthorized = 100,
            InvalidContentType = 101,
            InvalidJson = 102,
            EmptyBody = 103,
            UnknownRequest = 104,
            MandatoryDataMissing = 105,
            AnotherRequestBeingProcessed = 106,
            HttpMethodNotAllowed = 107,
            RequestTypeNotAllowed = 108,
            WrongTID = 109,
            CurrencyNotAllowed = 110,
            InvalidAmount = 111,
            Timeout = 200,
            NotFound = 201,
            NoReversibleTransactionFound = 202,
            TransactionIsNotReversible = 203,
            CanceledByUser = 204,
            CardReadError = 205,
            Aborted = 206,
            CardReadTimeout = 207,
            NoConnection = 208,
            NotAbortable = 209,
            PinTimeout = 210,
            PinError = 211,
            PinKeyNotSynchronized = 212,
            HostRefusedGeneric = 300,
            WrongPin = 301,
            EmptyHostResponse = 302,
            TechnicalReversal = 303,
            PaymentSwitchCommunicationError = 304,
            PlaceCall = 305,
            SignatureNotVerified = 306,
            CallSupport = 307,
            EmvDeclined = 308,
            SettlementError = 309
        }
    }
    /**
     * Interfaces
     * @description Namespace for Interfaces
     */
    namespace Interfaces {
        /**
         * Message header
         * @description Interface for Message header
         */
        interface IMessageHeader {
            MessageCategory?: Enums.MessageCategory;
            MessageClass?: Enums.MessageClass;
            MessageType?: Enums.MessageType;
            POIID?: string;
            ProtocolVersion?: string;
            SaleID?: string;
            ServiceID?: string;
        }
        /**
         * Sale to POI request
         * @description Interface for Sale to POI request
         */
        interface ISaleToPOIRequest {
            MessageHeader?: IMessageHeader;
        }
        /**
         * Sale to POI response
         * @description Interface for Sale to POI response
         */
        interface ISaleToPOIResponse {
            MessageHeader?: IMessageHeader;
        }
        /**
         * Message request
         * @description Interface for Message request
         */
        interface IMessageRequest<TRequest extends ISaleToPOIRequest> {
            SaleToPOIRequest?: TRequest;
        }
        /**
         * Message response
         * @description Interface for Message response
         */
        interface IMessageResponse<TResponse extends ISaleToPOIResponse> {
            ResultCode?: Enums.ResultCode;
            SaleToPOIResponse?: TResponse;
        }
        /**
         * Response
         * @description Interface for Response
         */
        interface IResponse {
            Result?: Enums.Result;
            ErrorCondition?: Enums.ErrorCondition;
        }
        /**
         * POI data
         * @description Interface for POI data
         */
        interface IPOIData {
            POITransactionID?: ITransactionID;
        }
        /**
         * Transaction id
         * @description Interface for Transaction id
         */
        interface ITransactionID {
            TimeStamp?: string;
            TransactionID?: string;
        }
        /**
         * Payment instrument data
         * @description Interface for Payment instrument data
         */
        interface IPaymentInstrumentData {
            CardData?: ICardData;
        }
        /**
         * Card data
         * @description Interface for Card data
         */
        interface ICardData {
            MaskedPan?: string;
        }
        /**
        * Proprietary tags
        * @description Interface for Proprietary tags
        */
        interface IProprietaryTags {
            Aid?: string;
            ApplicationName?: string;
            AuthorizationCode?: string;
            Brand?: string;
            CardExpiration?: string;
            CardPresentationMethod?: string;
            ReceiptDate?: string;
            AskForTip?: boolean;
            VariableSymbol?: string;
            SequenceNumber?: string;
            SignatureRequired?: boolean;
            CustomIdentifier?: string;
            AskForVariableSymbol?: boolean;
            ECRPrint?: boolean;
            TerminalId?: string;
            RequireTipConfirmation?: boolean;
            EnterTipAsTargetAmount?: boolean;
            ForceCustomTip?: boolean;
            VerifiedByDevice?: boolean;
            Note?: string;
        }
        /**
         * Message reference
         * @description Interface for Message reference
         */
        interface IMessageReference {
            MessageCategory?: Enums.MessageCategory;
            SaleID?: string;
            ServiceID?: string;
            POIID?: string;
        }
        /**
         * Terminal
         * @description Interface for Terminal
         */
        interface IPOITerminal {
            POIID?: string;
            BusinessId?: string;
            MerchantName?: string;
            Currency?: string;
            SmartTipsAvailable?: boolean;
            AdditionalData?: IPOITerminalAdditionalData;
        }
        /**
         * Terminal additional data
         * @description Interface for Terminal additional data
         */
        interface IPOITerminalAdditionalData {
            BranchId?: string;
            CustomIdentifierCaption?: string;
            CustomIdentifierForbiddenCharacters?: string;
            DisplayName?: string;
            MerchantId?: string;
            ParserVariableSymbolFromCustomIdentifier?: boolean;
            QrPaymentEnabled?: boolean;
            VariableSymbolAllowed?: boolean;
        }
    }
}
