<?php
/**
 * ReportingV3InterchangeClearingLevelDetailsGet200ResponseInterchangeClearingLevelDetails
 *
 * PHP version 5
 *
 * @category Class
 * @package  CyberSource
 * @author   Swaagger Codegen team
 * @link     https://github.com/swagger-api/swagger-codegen
 */

/**
 * CyberSource Merged Spec
 *
 * All CyberSource API specs merged together. These are available at https://developer.cybersource.com/api/reference/api-reference.html
 *
 * OpenAPI spec version: 0.0.1
 * 
 * Generated by: https://github.com/swagger-api/swagger-codegen.git
 *
 */
/**
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen
 * Do not edit the class manually.
 */

namespace CyberSource\Model;

use \ArrayAccess;

/**
 * ReportingV3InterchangeClearingLevelDetailsGet200ResponseInterchangeClearingLevelDetails Class Doc Comment
 *
 * @category    Class
 * @package     CyberSource
 * @author      Swagger Codegen team
 * @link        https://github.com/swagger-api/swagger-codegen
 */
class ReportingV3InterchangeClearingLevelDetailsGet200ResponseInterchangeClearingLevelDetails implements ArrayAccess
{
    const DISCRIMINATOR = null;

    /**
      * The original name of the model.
      * @var string
      */
    protected static $swaggerModelName = 'reportingV3InterchangeClearingLevelDetailsGet200Response_interchangeClearingLevelDetails';

    /**
      * Array of property to type mappings. Used for (de)serialization
      * @var string[]
      */
    protected static $swaggerTypes = [
        'requestId' => 'string',
        'organizationId' => 'string',
        'accountId' => 'string',
        'processorMerchantId' => 'string',
        'transactionReferenceNumber' => 'string',
        'merchantReferenceNumber' => 'string',
        'accountSuffix' => 'string',
        'paymentSubType' => 'string',
        'paymentSubTypeDescription' => 'string',
        'transactionTime' => '\DateTime',
        'processedTime' => '\DateTime',
        'transactionType' => 'string',
        'amount' => 'string',
        'currencyCode' => 'string',
        'priceType' => 'string',
        'priceAmountOne' => 'string',
        'priceAmountTwo' => 'string',
        'reClass' => 'string',
        'settlementTime' => '\DateTime',
        'settlementProcessor' => 'string',
        'merchantBatchNumber' => 'string',
        'clearedLevel' => 'string',
        'billbackReasonCode' => 'string',
        'billbackReasonDescription' => 'string',
        'merchantPricedLevel' => 'string',
        'discountRate' => 'string',
        'discountAmount' => 'string',
        'clearingRateAmountOne' => 'string',
        'clearingRateAmountTwo' => 'string',
        'clearingRateAmountThree' => 'string',
        'clearingRateCurrencyCode' => 'string',
        'interchangeAmount' => 'string',
        'billbackAmount' => 'string',
        'settlementAmount' => 'string',
        'settlementCurrencyCode' => 'string',
        'conversionRate' => 'string',
        'deltaCost' => 'string',
        'surchargeAmount' => 'string',
        'percentRateCharged' => 'string',
        'perTransactionCharged' => 'string',
        'downgradeReasonCode' => 'string',
        'processTime' => '\DateTime',
        'authCode' => 'string',
        'batchTime' => '\DateTime',
        'processorBatchNumber' => 'string',
        'cardIndicator' => 'string',
        'minimumUnit' => 'int',
        'minimumUnitCurrencyCode' => 'string',
        'creditDeltaIndicator' => 'string',
        'feeCategory' => 'string',
        'applicationName' => 'string'
    ];

    /**
      * Array of property to format mappings. Used for (de)serialization
      * @var string[]
      */
    protected static $swaggerFormats = [
        'requestId' => null,
        'organizationId' => null,
        'accountId' => null,
        'processorMerchantId' => null,
        'transactionReferenceNumber' => null,
        'merchantReferenceNumber' => null,
        'accountSuffix' => null,
        'paymentSubType' => null,
        'paymentSubTypeDescription' => null,
        'transactionTime' => 'date-time',
        'processedTime' => 'date-time',
        'transactionType' => null,
        'amount' => null,
        'currencyCode' => null,
        'priceType' => null,
        'priceAmountOne' => null,
        'priceAmountTwo' => null,
        'reClass' => null,
        'settlementTime' => 'date-time',
        'settlementProcessor' => null,
        'merchantBatchNumber' => null,
        'clearedLevel' => null,
        'billbackReasonCode' => null,
        'billbackReasonDescription' => null,
        'merchantPricedLevel' => null,
        'discountRate' => null,
        'discountAmount' => null,
        'clearingRateAmountOne' => null,
        'clearingRateAmountTwo' => null,
        'clearingRateAmountThree' => null,
        'clearingRateCurrencyCode' => null,
        'interchangeAmount' => null,
        'billbackAmount' => null,
        'settlementAmount' => null,
        'settlementCurrencyCode' => null,
        'conversionRate' => null,
        'deltaCost' => null,
        'surchargeAmount' => null,
        'percentRateCharged' => null,
        'perTransactionCharged' => null,
        'downgradeReasonCode' => null,
        'processTime' => 'date-time',
        'authCode' => null,
        'batchTime' => 'date-time',
        'processorBatchNumber' => null,
        'cardIndicator' => null,
        'minimumUnit' => null,
        'minimumUnitCurrencyCode' => null,
        'creditDeltaIndicator' => null,
        'feeCategory' => null,
        'applicationName' => null
    ];

    public static function swaggerTypes()
    {
        return self::$swaggerTypes;
    }

    public static function swaggerFormats()
    {
        return self::$swaggerFormats;
    }

    /**
     * Array of attributes where the key is the local name, and the value is the original name
     * @var string[]
     */
    protected static $attributeMap = [
        'requestId' => 'requestId',
        'organizationId' => 'organizationId',
        'accountId' => 'accountId',
        'processorMerchantId' => 'processorMerchantId',
        'transactionReferenceNumber' => 'transactionReferenceNumber',
        'merchantReferenceNumber' => 'merchantReferenceNumber',
        'accountSuffix' => 'accountSuffix',
        'paymentSubType' => 'paymentSubType',
        'paymentSubTypeDescription' => 'paymentSubTypeDescription',
        'transactionTime' => 'transactionTime',
        'processedTime' => 'processedTime',
        'transactionType' => 'transactionType',
        'amount' => 'amount',
        'currencyCode' => 'currencyCode',
        'priceType' => 'priceType',
        'priceAmountOne' => 'priceAmountOne',
        'priceAmountTwo' => 'priceAmountTwo',
        'reClass' => 'reClass',
        'settlementTime' => 'settlementTime',
        'settlementProcessor' => 'settlementProcessor',
        'merchantBatchNumber' => 'merchantBatchNumber',
        'clearedLevel' => 'clearedLevel',
        'billbackReasonCode' => 'billbackReasonCode',
        'billbackReasonDescription' => 'billbackReasonDescription',
        'merchantPricedLevel' => 'merchantPricedLevel',
        'discountRate' => 'discountRate',
        'discountAmount' => 'discountAmount',
        'clearingRateAmountOne' => 'clearingRateAmountOne',
        'clearingRateAmountTwo' => 'clearingRateAmountTwo',
        'clearingRateAmountThree' => 'clearingRateAmountThree',
        'clearingRateCurrencyCode' => 'clearingRateCurrencyCode',
        'interchangeAmount' => 'interchangeAmount',
        'billbackAmount' => 'billbackAmount',
        'settlementAmount' => 'settlementAmount',
        'settlementCurrencyCode' => 'settlementCurrencyCode',
        'conversionRate' => 'conversionRate',
        'deltaCost' => 'deltaCost',
        'surchargeAmount' => 'surchargeAmount',
        'percentRateCharged' => 'percentRateCharged',
        'perTransactionCharged' => 'perTransactionCharged',
        'downgradeReasonCode' => 'downgradeReasonCode',
        'processTime' => 'processTime',
        'authCode' => 'authCode',
        'batchTime' => 'batchTime',
        'processorBatchNumber' => 'processorBatchNumber',
        'cardIndicator' => 'cardIndicator',
        'minimumUnit' => 'minimumUnit',
        'minimumUnitCurrencyCode' => 'minimumUnitCurrencyCode',
        'creditDeltaIndicator' => 'creditDeltaIndicator',
        'feeCategory' => 'feeCategory',
        'applicationName' => 'applicationName'
    ];


    /**
     * Array of attributes to setter functions (for deserialization of responses)
     * @var string[]
     */
    protected static $setters = [
        'requestId' => 'setRequestId',
        'organizationId' => 'setOrganizationId',
        'accountId' => 'setAccountId',
        'processorMerchantId' => 'setProcessorMerchantId',
        'transactionReferenceNumber' => 'setTransactionReferenceNumber',
        'merchantReferenceNumber' => 'setMerchantReferenceNumber',
        'accountSuffix' => 'setAccountSuffix',
        'paymentSubType' => 'setPaymentSubType',
        'paymentSubTypeDescription' => 'setPaymentSubTypeDescription',
        'transactionTime' => 'setTransactionTime',
        'processedTime' => 'setProcessedTime',
        'transactionType' => 'setTransactionType',
        'amount' => 'setAmount',
        'currencyCode' => 'setCurrencyCode',
        'priceType' => 'setPriceType',
        'priceAmountOne' => 'setPriceAmountOne',
        'priceAmountTwo' => 'setPriceAmountTwo',
        'reClass' => 'setReClass',
        'settlementTime' => 'setSettlementTime',
        'settlementProcessor' => 'setSettlementProcessor',
        'merchantBatchNumber' => 'setMerchantBatchNumber',
        'clearedLevel' => 'setClearedLevel',
        'billbackReasonCode' => 'setBillbackReasonCode',
        'billbackReasonDescription' => 'setBillbackReasonDescription',
        'merchantPricedLevel' => 'setMerchantPricedLevel',
        'discountRate' => 'setDiscountRate',
        'discountAmount' => 'setDiscountAmount',
        'clearingRateAmountOne' => 'setClearingRateAmountOne',
        'clearingRateAmountTwo' => 'setClearingRateAmountTwo',
        'clearingRateAmountThree' => 'setClearingRateAmountThree',
        'clearingRateCurrencyCode' => 'setClearingRateCurrencyCode',
        'interchangeAmount' => 'setInterchangeAmount',
        'billbackAmount' => 'setBillbackAmount',
        'settlementAmount' => 'setSettlementAmount',
        'settlementCurrencyCode' => 'setSettlementCurrencyCode',
        'conversionRate' => 'setConversionRate',
        'deltaCost' => 'setDeltaCost',
        'surchargeAmount' => 'setSurchargeAmount',
        'percentRateCharged' => 'setPercentRateCharged',
        'perTransactionCharged' => 'setPerTransactionCharged',
        'downgradeReasonCode' => 'setDowngradeReasonCode',
        'processTime' => 'setProcessTime',
        'authCode' => 'setAuthCode',
        'batchTime' => 'setBatchTime',
        'processorBatchNumber' => 'setProcessorBatchNumber',
        'cardIndicator' => 'setCardIndicator',
        'minimumUnit' => 'setMinimumUnit',
        'minimumUnitCurrencyCode' => 'setMinimumUnitCurrencyCode',
        'creditDeltaIndicator' => 'setCreditDeltaIndicator',
        'feeCategory' => 'setFeeCategory',
        'applicationName' => 'setApplicationName'
    ];


    /**
     * Array of attributes to getter functions (for serialization of requests)
     * @var string[]
     */
    protected static $getters = [
        'requestId' => 'getRequestId',
        'organizationId' => 'getOrganizationId',
        'accountId' => 'getAccountId',
        'processorMerchantId' => 'getProcessorMerchantId',
        'transactionReferenceNumber' => 'getTransactionReferenceNumber',
        'merchantReferenceNumber' => 'getMerchantReferenceNumber',
        'accountSuffix' => 'getAccountSuffix',
        'paymentSubType' => 'getPaymentSubType',
        'paymentSubTypeDescription' => 'getPaymentSubTypeDescription',
        'transactionTime' => 'getTransactionTime',
        'processedTime' => 'getProcessedTime',
        'transactionType' => 'getTransactionType',
        'amount' => 'getAmount',
        'currencyCode' => 'getCurrencyCode',
        'priceType' => 'getPriceType',
        'priceAmountOne' => 'getPriceAmountOne',
        'priceAmountTwo' => 'getPriceAmountTwo',
        'reClass' => 'getReClass',
        'settlementTime' => 'getSettlementTime',
        'settlementProcessor' => 'getSettlementProcessor',
        'merchantBatchNumber' => 'getMerchantBatchNumber',
        'clearedLevel' => 'getClearedLevel',
        'billbackReasonCode' => 'getBillbackReasonCode',
        'billbackReasonDescription' => 'getBillbackReasonDescription',
        'merchantPricedLevel' => 'getMerchantPricedLevel',
        'discountRate' => 'getDiscountRate',
        'discountAmount' => 'getDiscountAmount',
        'clearingRateAmountOne' => 'getClearingRateAmountOne',
        'clearingRateAmountTwo' => 'getClearingRateAmountTwo',
        'clearingRateAmountThree' => 'getClearingRateAmountThree',
        'clearingRateCurrencyCode' => 'getClearingRateCurrencyCode',
        'interchangeAmount' => 'getInterchangeAmount',
        'billbackAmount' => 'getBillbackAmount',
        'settlementAmount' => 'getSettlementAmount',
        'settlementCurrencyCode' => 'getSettlementCurrencyCode',
        'conversionRate' => 'getConversionRate',
        'deltaCost' => 'getDeltaCost',
        'surchargeAmount' => 'getSurchargeAmount',
        'percentRateCharged' => 'getPercentRateCharged',
        'perTransactionCharged' => 'getPerTransactionCharged',
        'downgradeReasonCode' => 'getDowngradeReasonCode',
        'processTime' => 'getProcessTime',
        'authCode' => 'getAuthCode',
        'batchTime' => 'getBatchTime',
        'processorBatchNumber' => 'getProcessorBatchNumber',
        'cardIndicator' => 'getCardIndicator',
        'minimumUnit' => 'getMinimumUnit',
        'minimumUnitCurrencyCode' => 'getMinimumUnitCurrencyCode',
        'creditDeltaIndicator' => 'getCreditDeltaIndicator',
        'feeCategory' => 'getFeeCategory',
        'applicationName' => 'getApplicationName'
    ];

    public static function attributeMap()
    {
        return self::$attributeMap;
    }

    public static function setters()
    {
        return self::$setters;
    }

    public static function getters()
    {
        return self::$getters;
    }

    

    

    /**
     * Associative array for storing property values
     * @var mixed[]
     */
    protected $container = [];

    /**
     * Constructor
     * @param mixed[] $data Associated array of property values initializing the model
     */
    public function __construct(array $data = null)
    {
        $this->container['requestId'] = isset($data['requestId']) ? $data['requestId'] : null;
        $this->container['organizationId'] = isset($data['organizationId']) ? $data['organizationId'] : null;
        $this->container['accountId'] = isset($data['accountId']) ? $data['accountId'] : null;
        $this->container['processorMerchantId'] = isset($data['processorMerchantId']) ? $data['processorMerchantId'] : null;
        $this->container['transactionReferenceNumber'] = isset($data['transactionReferenceNumber']) ? $data['transactionReferenceNumber'] : null;
        $this->container['merchantReferenceNumber'] = isset($data['merchantReferenceNumber']) ? $data['merchantReferenceNumber'] : null;
        $this->container['accountSuffix'] = isset($data['accountSuffix']) ? $data['accountSuffix'] : null;
        $this->container['paymentSubType'] = isset($data['paymentSubType']) ? $data['paymentSubType'] : null;
        $this->container['paymentSubTypeDescription'] = isset($data['paymentSubTypeDescription']) ? $data['paymentSubTypeDescription'] : null;
        $this->container['transactionTime'] = isset($data['transactionTime']) ? $data['transactionTime'] : null;
        $this->container['processedTime'] = isset($data['processedTime']) ? $data['processedTime'] : null;
        $this->container['transactionType'] = isset($data['transactionType']) ? $data['transactionType'] : null;
        $this->container['amount'] = isset($data['amount']) ? $data['amount'] : null;
        $this->container['currencyCode'] = isset($data['currencyCode']) ? $data['currencyCode'] : null;
        $this->container['priceType'] = isset($data['priceType']) ? $data['priceType'] : null;
        $this->container['priceAmountOne'] = isset($data['priceAmountOne']) ? $data['priceAmountOne'] : null;
        $this->container['priceAmountTwo'] = isset($data['priceAmountTwo']) ? $data['priceAmountTwo'] : null;
        $this->container['reClass'] = isset($data['reClass']) ? $data['reClass'] : null;
        $this->container['settlementTime'] = isset($data['settlementTime']) ? $data['settlementTime'] : null;
        $this->container['settlementProcessor'] = isset($data['settlementProcessor']) ? $data['settlementProcessor'] : null;
        $this->container['merchantBatchNumber'] = isset($data['merchantBatchNumber']) ? $data['merchantBatchNumber'] : null;
        $this->container['clearedLevel'] = isset($data['clearedLevel']) ? $data['clearedLevel'] : null;
        $this->container['billbackReasonCode'] = isset($data['billbackReasonCode']) ? $data['billbackReasonCode'] : null;
        $this->container['billbackReasonDescription'] = isset($data['billbackReasonDescription']) ? $data['billbackReasonDescription'] : null;
        $this->container['merchantPricedLevel'] = isset($data['merchantPricedLevel']) ? $data['merchantPricedLevel'] : null;
        $this->container['discountRate'] = isset($data['discountRate']) ? $data['discountRate'] : null;
        $this->container['discountAmount'] = isset($data['discountAmount']) ? $data['discountAmount'] : null;
        $this->container['clearingRateAmountOne'] = isset($data['clearingRateAmountOne']) ? $data['clearingRateAmountOne'] : null;
        $this->container['clearingRateAmountTwo'] = isset($data['clearingRateAmountTwo']) ? $data['clearingRateAmountTwo'] : null;
        $this->container['clearingRateAmountThree'] = isset($data['clearingRateAmountThree']) ? $data['clearingRateAmountThree'] : null;
        $this->container['clearingRateCurrencyCode'] = isset($data['clearingRateCurrencyCode']) ? $data['clearingRateCurrencyCode'] : null;
        $this->container['interchangeAmount'] = isset($data['interchangeAmount']) ? $data['interchangeAmount'] : null;
        $this->container['billbackAmount'] = isset($data['billbackAmount']) ? $data['billbackAmount'] : null;
        $this->container['settlementAmount'] = isset($data['settlementAmount']) ? $data['settlementAmount'] : null;
        $this->container['settlementCurrencyCode'] = isset($data['settlementCurrencyCode']) ? $data['settlementCurrencyCode'] : null;
        $this->container['conversionRate'] = isset($data['conversionRate']) ? $data['conversionRate'] : null;
        $this->container['deltaCost'] = isset($data['deltaCost']) ? $data['deltaCost'] : null;
        $this->container['surchargeAmount'] = isset($data['surchargeAmount']) ? $data['surchargeAmount'] : null;
        $this->container['percentRateCharged'] = isset($data['percentRateCharged']) ? $data['percentRateCharged'] : null;
        $this->container['perTransactionCharged'] = isset($data['perTransactionCharged']) ? $data['perTransactionCharged'] : null;
        $this->container['downgradeReasonCode'] = isset($data['downgradeReasonCode']) ? $data['downgradeReasonCode'] : null;
        $this->container['processTime'] = isset($data['processTime']) ? $data['processTime'] : null;
        $this->container['authCode'] = isset($data['authCode']) ? $data['authCode'] : null;
        $this->container['batchTime'] = isset($data['batchTime']) ? $data['batchTime'] : null;
        $this->container['processorBatchNumber'] = isset($data['processorBatchNumber']) ? $data['processorBatchNumber'] : null;
        $this->container['cardIndicator'] = isset($data['cardIndicator']) ? $data['cardIndicator'] : null;
        $this->container['minimumUnit'] = isset($data['minimumUnit']) ? $data['minimumUnit'] : null;
        $this->container['minimumUnitCurrencyCode'] = isset($data['minimumUnitCurrencyCode']) ? $data['minimumUnitCurrencyCode'] : null;
        $this->container['creditDeltaIndicator'] = isset($data['creditDeltaIndicator']) ? $data['creditDeltaIndicator'] : null;
        $this->container['feeCategory'] = isset($data['feeCategory']) ? $data['feeCategory'] : null;
        $this->container['applicationName'] = isset($data['applicationName']) ? $data['applicationName'] : null;
    }

    /**
     * show all the invalid properties with reasons.
     *
     * @return array invalid properties with reasons
     */
    public function listInvalidProperties()
    {
        $invalid_properties = [];

        return $invalid_properties;
    }

    /**
     * validate all the properties in the model
     * return true if all passed
     *
     * @return bool True if all properties are valid
     */
    public function valid()
    {

        return true;
    }


    /**
     * Gets requestId
     * @return string
     */
    public function getRequestId()
    {
        return $this->container['requestId'];
    }

    /**
     * Sets requestId
     * @param string $requestId
     * @return $this
     */
    public function setRequestId($requestId)
    {
        $this->container['requestId'] = $requestId;

        return $this;
    }

    /**
     * Gets organizationId
     * @return string
     */
    public function getOrganizationId()
    {
        return $this->container['organizationId'];
    }

    /**
     * Sets organizationId
     * @param string $organizationId
     * @return $this
     */
    public function setOrganizationId($organizationId)
    {
        $this->container['organizationId'] = $organizationId;

        return $this;
    }

    /**
     * Gets accountId
     * @return string
     */
    public function getAccountId()
    {
        return $this->container['accountId'];
    }

    /**
     * Sets accountId
     * @param string $accountId
     * @return $this
     */
    public function setAccountId($accountId)
    {
        $this->container['accountId'] = $accountId;

        return $this;
    }

    /**
     * Gets processorMerchantId
     * @return string
     */
    public function getProcessorMerchantId()
    {
        return $this->container['processorMerchantId'];
    }

    /**
     * Sets processorMerchantId
     * @param string $processorMerchantId
     * @return $this
     */
    public function setProcessorMerchantId($processorMerchantId)
    {
        $this->container['processorMerchantId'] = $processorMerchantId;

        return $this;
    }

    /**
     * Gets transactionReferenceNumber
     * @return string
     */
    public function getTransactionReferenceNumber()
    {
        return $this->container['transactionReferenceNumber'];
    }

    /**
     * Sets transactionReferenceNumber
     * @param string $transactionReferenceNumber
     * @return $this
     */
    public function setTransactionReferenceNumber($transactionReferenceNumber)
    {
        $this->container['transactionReferenceNumber'] = $transactionReferenceNumber;

        return $this;
    }

    /**
     * Gets merchantReferenceNumber
     * @return string
     */
    public function getMerchantReferenceNumber()
    {
        return $this->container['merchantReferenceNumber'];
    }

    /**
     * Sets merchantReferenceNumber
     * @param string $merchantReferenceNumber
     * @return $this
     */
    public function setMerchantReferenceNumber($merchantReferenceNumber)
    {
        $this->container['merchantReferenceNumber'] = $merchantReferenceNumber;

        return $this;
    }

    /**
     * Gets accountSuffix
     * @return string
     */
    public function getAccountSuffix()
    {
        return $this->container['accountSuffix'];
    }

    /**
     * Sets accountSuffix
     * @param string $accountSuffix
     * @return $this
     */
    public function setAccountSuffix($accountSuffix)
    {
        $this->container['accountSuffix'] = $accountSuffix;

        return $this;
    }

    /**
     * Gets paymentSubType
     * @return string
     */
    public function getPaymentSubType()
    {
        return $this->container['paymentSubType'];
    }

    /**
     * Sets paymentSubType
     * @param string $paymentSubType
     * @return $this
     */
    public function setPaymentSubType($paymentSubType)
    {
        $this->container['paymentSubType'] = $paymentSubType;

        return $this;
    }

    /**
     * Gets paymentSubTypeDescription
     * @return string
     */
    public function getPaymentSubTypeDescription()
    {
        return $this->container['paymentSubTypeDescription'];
    }

    /**
     * Sets paymentSubTypeDescription
     * @param string $paymentSubTypeDescription
     * @return $this
     */
    public function setPaymentSubTypeDescription($paymentSubTypeDescription)
    {
        $this->container['paymentSubTypeDescription'] = $paymentSubTypeDescription;

        return $this;
    }

    /**
     * Gets transactionTime
     * @return \DateTime
     */
    public function getTransactionTime()
    {
        return $this->container['transactionTime'];
    }

    /**
     * Sets transactionTime
     * @param \DateTime $transactionTime
     * @return $this
     */
    public function setTransactionTime($transactionTime)
    {
        $this->container['transactionTime'] = $transactionTime;

        return $this;
    }

    /**
     * Gets processedTime
     * @return \DateTime
     */
    public function getProcessedTime()
    {
        return $this->container['processedTime'];
    }

    /**
     * Sets processedTime
     * @param \DateTime $processedTime
     * @return $this
     */
    public function setProcessedTime($processedTime)
    {
        $this->container['processedTime'] = $processedTime;

        return $this;
    }

    /**
     * Gets transactionType
     * @return string
     */
    public function getTransactionType()
    {
        return $this->container['transactionType'];
    }

    /**
     * Sets transactionType
     * @param string $transactionType
     * @return $this
     */
    public function setTransactionType($transactionType)
    {
        $this->container['transactionType'] = $transactionType;

        return $this;
    }

    /**
     * Gets amount
     * @return string
     */
    public function getAmount()
    {
        return $this->container['amount'];
    }

    /**
     * Sets amount
     * @param string $amount
     * @return $this
     */
    public function setAmount($amount)
    {
        $this->container['amount'] = $amount;

        return $this;
    }

    /**
     * Gets currencyCode
     * @return string
     */
    public function getCurrencyCode()
    {
        return $this->container['currencyCode'];
    }

    /**
     * Sets currencyCode
     * @param string $currencyCode Valid ISO 4217 ALPHA-3 currency code
     * @return $this
     */
    public function setCurrencyCode($currencyCode)
    {
        $this->container['currencyCode'] = $currencyCode;

        return $this;
    }

    /**
     * Gets priceType
     * @return string
     */
    public function getPriceType()
    {
        return $this->container['priceType'];
    }

    /**
     * Sets priceType
     * @param string $priceType
     * @return $this
     */
    public function setPriceType($priceType)
    {
        $this->container['priceType'] = $priceType;

        return $this;
    }

    /**
     * Gets priceAmountOne
     * @return string
     */
    public function getPriceAmountOne()
    {
        return $this->container['priceAmountOne'];
    }

    /**
     * Sets priceAmountOne
     * @param string $priceAmountOne
     * @return $this
     */
    public function setPriceAmountOne($priceAmountOne)
    {
        $this->container['priceAmountOne'] = $priceAmountOne;

        return $this;
    }

    /**
     * Gets priceAmountTwo
     * @return string
     */
    public function getPriceAmountTwo()
    {
        return $this->container['priceAmountTwo'];
    }

    /**
     * Sets priceAmountTwo
     * @param string $priceAmountTwo
     * @return $this
     */
    public function setPriceAmountTwo($priceAmountTwo)
    {
        $this->container['priceAmountTwo'] = $priceAmountTwo;

        return $this;
    }

    /**
     * Gets reClass
     * @return string
     */
    public function getReClass()
    {
        return $this->container['reClass'];
    }

    /**
     * Sets reClass
     * @param string $reClass
     * @return $this
     */
    public function setReClass($reClass)
    {
        $this->container['reClass'] = $reClass;

        return $this;
    }

    /**
     * Gets settlementTime
     * @return \DateTime
     */
    public function getSettlementTime()
    {
        return $this->container['settlementTime'];
    }

    /**
     * Sets settlementTime
     * @param \DateTime $settlementTime
     * @return $this
     */
    public function setSettlementTime($settlementTime)
    {
        $this->container['settlementTime'] = $settlementTime;

        return $this;
    }

    /**
     * Gets settlementProcessor
     * @return string
     */
    public function getSettlementProcessor()
    {
        return $this->container['settlementProcessor'];
    }

    /**
     * Sets settlementProcessor
     * @param string $settlementProcessor
     * @return $this
     */
    public function setSettlementProcessor($settlementProcessor)
    {
        $this->container['settlementProcessor'] = $settlementProcessor;

        return $this;
    }

    /**
     * Gets merchantBatchNumber
     * @return string
     */
    public function getMerchantBatchNumber()
    {
        return $this->container['merchantBatchNumber'];
    }

    /**
     * Sets merchantBatchNumber
     * @param string $merchantBatchNumber
     * @return $this
     */
    public function setMerchantBatchNumber($merchantBatchNumber)
    {
        $this->container['merchantBatchNumber'] = $merchantBatchNumber;

        return $this;
    }

    /**
     * Gets clearedLevel
     * @return string
     */
    public function getClearedLevel()
    {
        return $this->container['clearedLevel'];
    }

    /**
     * Sets clearedLevel
     * @param string $clearedLevel
     * @return $this
     */
    public function setClearedLevel($clearedLevel)
    {
        $this->container['clearedLevel'] = $clearedLevel;

        return $this;
    }

    /**
     * Gets billbackReasonCode
     * @return string
     */
    public function getBillbackReasonCode()
    {
        return $this->container['billbackReasonCode'];
    }

    /**
     * Sets billbackReasonCode
     * @param string $billbackReasonCode
     * @return $this
     */
    public function setBillbackReasonCode($billbackReasonCode)
    {
        $this->container['billbackReasonCode'] = $billbackReasonCode;

        return $this;
    }

    /**
     * Gets billbackReasonDescription
     * @return string
     */
    public function getBillbackReasonDescription()
    {
        return $this->container['billbackReasonDescription'];
    }

    /**
     * Sets billbackReasonDescription
     * @param string $billbackReasonDescription
     * @return $this
     */
    public function setBillbackReasonDescription($billbackReasonDescription)
    {
        $this->container['billbackReasonDescription'] = $billbackReasonDescription;

        return $this;
    }

    /**
     * Gets merchantPricedLevel
     * @return string
     */
    public function getMerchantPricedLevel()
    {
        return $this->container['merchantPricedLevel'];
    }

    /**
     * Sets merchantPricedLevel
     * @param string $merchantPricedLevel
     * @return $this
     */
    public function setMerchantPricedLevel($merchantPricedLevel)
    {
        $this->container['merchantPricedLevel'] = $merchantPricedLevel;

        return $this;
    }

    /**
     * Gets discountRate
     * @return string
     */
    public function getDiscountRate()
    {
        return $this->container['discountRate'];
    }

    /**
     * Sets discountRate
     * @param string $discountRate
     * @return $this
     */
    public function setDiscountRate($discountRate)
    {
        $this->container['discountRate'] = $discountRate;

        return $this;
    }

    /**
     * Gets discountAmount
     * @return string
     */
    public function getDiscountAmount()
    {
        return $this->container['discountAmount'];
    }

    /**
     * Sets discountAmount
     * @param string $discountAmount
     * @return $this
     */
    public function setDiscountAmount($discountAmount)
    {
        $this->container['discountAmount'] = $discountAmount;

        return $this;
    }

    /**
     * Gets clearingRateAmountOne
     * @return string
     */
    public function getClearingRateAmountOne()
    {
        return $this->container['clearingRateAmountOne'];
    }

    /**
     * Sets clearingRateAmountOne
     * @param string $clearingRateAmountOne
     * @return $this
     */
    public function setClearingRateAmountOne($clearingRateAmountOne)
    {
        $this->container['clearingRateAmountOne'] = $clearingRateAmountOne;

        return $this;
    }

    /**
     * Gets clearingRateAmountTwo
     * @return string
     */
    public function getClearingRateAmountTwo()
    {
        return $this->container['clearingRateAmountTwo'];
    }

    /**
     * Sets clearingRateAmountTwo
     * @param string $clearingRateAmountTwo
     * @return $this
     */
    public function setClearingRateAmountTwo($clearingRateAmountTwo)
    {
        $this->container['clearingRateAmountTwo'] = $clearingRateAmountTwo;

        return $this;
    }

    /**
     * Gets clearingRateAmountThree
     * @return string
     */
    public function getClearingRateAmountThree()
    {
        return $this->container['clearingRateAmountThree'];
    }

    /**
     * Sets clearingRateAmountThree
     * @param string $clearingRateAmountThree
     * @return $this
     */
    public function setClearingRateAmountThree($clearingRateAmountThree)
    {
        $this->container['clearingRateAmountThree'] = $clearingRateAmountThree;

        return $this;
    }

    /**
     * Gets clearingRateCurrencyCode
     * @return string
     */
    public function getClearingRateCurrencyCode()
    {
        return $this->container['clearingRateCurrencyCode'];
    }

    /**
     * Sets clearingRateCurrencyCode
     * @param string $clearingRateCurrencyCode Valid ISO 4217 ALPHA-3 currency code
     * @return $this
     */
    public function setClearingRateCurrencyCode($clearingRateCurrencyCode)
    {
        $this->container['clearingRateCurrencyCode'] = $clearingRateCurrencyCode;

        return $this;
    }

    /**
     * Gets interchangeAmount
     * @return string
     */
    public function getInterchangeAmount()
    {
        return $this->container['interchangeAmount'];
    }

    /**
     * Sets interchangeAmount
     * @param string $interchangeAmount
     * @return $this
     */
    public function setInterchangeAmount($interchangeAmount)
    {
        $this->container['interchangeAmount'] = $interchangeAmount;

        return $this;
    }

    /**
     * Gets billbackAmount
     * @return string
     */
    public function getBillbackAmount()
    {
        return $this->container['billbackAmount'];
    }

    /**
     * Sets billbackAmount
     * @param string $billbackAmount
     * @return $this
     */
    public function setBillbackAmount($billbackAmount)
    {
        $this->container['billbackAmount'] = $billbackAmount;

        return $this;
    }

    /**
     * Gets settlementAmount
     * @return string
     */
    public function getSettlementAmount()
    {
        return $this->container['settlementAmount'];
    }

    /**
     * Sets settlementAmount
     * @param string $settlementAmount
     * @return $this
     */
    public function setSettlementAmount($settlementAmount)
    {
        $this->container['settlementAmount'] = $settlementAmount;

        return $this;
    }

    /**
     * Gets settlementCurrencyCode
     * @return string
     */
    public function getSettlementCurrencyCode()
    {
        return $this->container['settlementCurrencyCode'];
    }

    /**
     * Sets settlementCurrencyCode
     * @param string $settlementCurrencyCode Valid ISO 4217 ALPHA-3 currency code
     * @return $this
     */
    public function setSettlementCurrencyCode($settlementCurrencyCode)
    {
        $this->container['settlementCurrencyCode'] = $settlementCurrencyCode;

        return $this;
    }

    /**
     * Gets conversionRate
     * @return string
     */
    public function getConversionRate()
    {
        return $this->container['conversionRate'];
    }

    /**
     * Sets conversionRate
     * @param string $conversionRate
     * @return $this
     */
    public function setConversionRate($conversionRate)
    {
        $this->container['conversionRate'] = $conversionRate;

        return $this;
    }

    /**
     * Gets deltaCost
     * @return string
     */
    public function getDeltaCost()
    {
        return $this->container['deltaCost'];
    }

    /**
     * Sets deltaCost
     * @param string $deltaCost
     * @return $this
     */
    public function setDeltaCost($deltaCost)
    {
        $this->container['deltaCost'] = $deltaCost;

        return $this;
    }

    /**
     * Gets surchargeAmount
     * @return string
     */
    public function getSurchargeAmount()
    {
        return $this->container['surchargeAmount'];
    }

    /**
     * Sets surchargeAmount
     * @param string $surchargeAmount
     * @return $this
     */
    public function setSurchargeAmount($surchargeAmount)
    {
        $this->container['surchargeAmount'] = $surchargeAmount;

        return $this;
    }

    /**
     * Gets percentRateCharged
     * @return string
     */
    public function getPercentRateCharged()
    {
        return $this->container['percentRateCharged'];
    }

    /**
     * Sets percentRateCharged
     * @param string $percentRateCharged
     * @return $this
     */
    public function setPercentRateCharged($percentRateCharged)
    {
        $this->container['percentRateCharged'] = $percentRateCharged;

        return $this;
    }

    /**
     * Gets perTransactionCharged
     * @return string
     */
    public function getPerTransactionCharged()
    {
        return $this->container['perTransactionCharged'];
    }

    /**
     * Sets perTransactionCharged
     * @param string $perTransactionCharged
     * @return $this
     */
    public function setPerTransactionCharged($perTransactionCharged)
    {
        $this->container['perTransactionCharged'] = $perTransactionCharged;

        return $this;
    }

    /**
     * Gets downgradeReasonCode
     * @return string
     */
    public function getDowngradeReasonCode()
    {
        return $this->container['downgradeReasonCode'];
    }

    /**
     * Sets downgradeReasonCode
     * @param string $downgradeReasonCode
     * @return $this
     */
    public function setDowngradeReasonCode($downgradeReasonCode)
    {
        $this->container['downgradeReasonCode'] = $downgradeReasonCode;

        return $this;
    }

    /**
     * Gets processTime
     * @return \DateTime
     */
    public function getProcessTime()
    {
        return $this->container['processTime'];
    }

    /**
     * Sets processTime
     * @param \DateTime $processTime
     * @return $this
     */
    public function setProcessTime($processTime)
    {
        $this->container['processTime'] = $processTime;

        return $this;
    }

    /**
     * Gets authCode
     * @return string
     */
    public function getAuthCode()
    {
        return $this->container['authCode'];
    }

    /**
     * Sets authCode
     * @param string $authCode
     * @return $this
     */
    public function setAuthCode($authCode)
    {
        $this->container['authCode'] = $authCode;

        return $this;
    }

    /**
     * Gets batchTime
     * @return \DateTime
     */
    public function getBatchTime()
    {
        return $this->container['batchTime'];
    }

    /**
     * Sets batchTime
     * @param \DateTime $batchTime
     * @return $this
     */
    public function setBatchTime($batchTime)
    {
        $this->container['batchTime'] = $batchTime;

        return $this;
    }

    /**
     * Gets processorBatchNumber
     * @return string
     */
    public function getProcessorBatchNumber()
    {
        return $this->container['processorBatchNumber'];
    }

    /**
     * Sets processorBatchNumber
     * @param string $processorBatchNumber
     * @return $this
     */
    public function setProcessorBatchNumber($processorBatchNumber)
    {
        $this->container['processorBatchNumber'] = $processorBatchNumber;

        return $this;
    }

    /**
     * Gets cardIndicator
     * @return string
     */
    public function getCardIndicator()
    {
        return $this->container['cardIndicator'];
    }

    /**
     * Sets cardIndicator
     * @param string $cardIndicator
     * @return $this
     */
    public function setCardIndicator($cardIndicator)
    {
        $this->container['cardIndicator'] = $cardIndicator;

        return $this;
    }

    /**
     * Gets minimumUnit
     * @return int
     */
    public function getMinimumUnit()
    {
        return $this->container['minimumUnit'];
    }

    /**
     * Sets minimumUnit
     * @param int $minimumUnit
     * @return $this
     */
    public function setMinimumUnit($minimumUnit)
    {
        $this->container['minimumUnit'] = $minimumUnit;

        return $this;
    }

    /**
     * Gets minimumUnitCurrencyCode
     * @return string
     */
    public function getMinimumUnitCurrencyCode()
    {
        return $this->container['minimumUnitCurrencyCode'];
    }

    /**
     * Sets minimumUnitCurrencyCode
     * @param string $minimumUnitCurrencyCode Valid ISO 4217 ALPHA-3 currency code
     * @return $this
     */
    public function setMinimumUnitCurrencyCode($minimumUnitCurrencyCode)
    {
        $this->container['minimumUnitCurrencyCode'] = $minimumUnitCurrencyCode;

        return $this;
    }

    /**
     * Gets creditDeltaIndicator
     * @return string
     */
    public function getCreditDeltaIndicator()
    {
        return $this->container['creditDeltaIndicator'];
    }

    /**
     * Sets creditDeltaIndicator
     * @param string $creditDeltaIndicator
     * @return $this
     */
    public function setCreditDeltaIndicator($creditDeltaIndicator)
    {
        $this->container['creditDeltaIndicator'] = $creditDeltaIndicator;

        return $this;
    }

    /**
     * Gets feeCategory
     * @return string
     */
    public function getFeeCategory()
    {
        return $this->container['feeCategory'];
    }

    /**
     * Sets feeCategory
     * @param string $feeCategory
     * @return $this
     */
    public function setFeeCategory($feeCategory)
    {
        $this->container['feeCategory'] = $feeCategory;

        return $this;
    }

    /**
     * Gets applicationName
     * @return string
     */
    public function getApplicationName()
    {
        return $this->container['applicationName'];
    }

    /**
     * Sets applicationName
     * @param string $applicationName
     * @return $this
     */
    public function setApplicationName($applicationName)
    {
        $this->container['applicationName'] = $applicationName;

        return $this;
    }
    /**
     * Returns true if offset exists. False otherwise.
     * @param  integer $offset Offset
     * @return boolean
     */
    #[\ReturnTypeWillChange]
    public function offsetExists($offset)
    {
        return isset($this->container[$offset]);
    }

    /**
     * Gets offset.
     * @param  integer $offset Offset
     * @return mixed
     */
    #[\ReturnTypeWillChange]
    public function offsetGet($offset)
    {
        return isset($this->container[$offset]) ? $this->container[$offset] : null;
    }

    /**
     * Sets value based on offset.
     * @param  integer $offset Offset
     * @param  mixed   $value  Value to be set
     * @return void
     */
    #[\ReturnTypeWillChange]
    public function offsetSet($offset, $value)
    {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    /**
     * Unsets offset.
     * @param  integer $offset Offset
     * @return void
     */
    #[\ReturnTypeWillChange]
    public function offsetUnset($offset)
    {
        unset($this->container[$offset]);
    }

    /**
     * Gets the string presentation of the object
     * @return string
     */
    public function __toString()
    {
        if (defined('JSON_PRETTY_PRINT')) { // use JSON pretty print
            return json_encode(\CyberSource\ObjectSerializer::sanitizeForSerialization($this), JSON_PRETTY_PRINT);
        }

        return json_encode(\CyberSource\ObjectSerializer::sanitizeForSerialization($this));
    }
}


