<?php

namespace \NineDotMedia\viapost-php;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for IsFirstClassAvailableResponse StructType
 * @subpackage Structs
 */
class IsFirstClassAvailableResponse extends AbstractStructBase
{
    /**
     * The IsFirstClassAvailableResult
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $IsFirstClassAvailableResult;
    /**
     * The available
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $available;
    /**
     * The returnMessage
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $returnMessage;
    /**
     * Constructor method for IsFirstClassAvailableResponse
     * @uses IsFirstClassAvailableResponse::setIsFirstClassAvailableResult()
     * @uses IsFirstClassAvailableResponse::setAvailable()
     * @uses IsFirstClassAvailableResponse::setReturnMessage()
     * @param bool $isFirstClassAvailableResult
     * @param bool $available
     * @param string $returnMessage
     */
    public function __construct($isFirstClassAvailableResult = null, $available = null, $returnMessage = null)
    {
        $this
            ->setIsFirstClassAvailableResult($isFirstClassAvailableResult)
            ->setAvailable($available)
            ->setReturnMessage($returnMessage);
    }
    /**
     * Get IsFirstClassAvailableResult value
     * @return bool
     */
    public function getIsFirstClassAvailableResult()
    {
        return $this->IsFirstClassAvailableResult;
    }
    /**
     * Set IsFirstClassAvailableResult value
     * @param bool $isFirstClassAvailableResult
     * @return \\NineDotMedia\viapost-php\IsFirstClassAvailableResponse
     */
    public function setIsFirstClassAvailableResult($isFirstClassAvailableResult = null)
    {
        // validation for constraint: boolean
        if (!is_null($isFirstClassAvailableResult) && !is_bool($isFirstClassAvailableResult)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isFirstClassAvailableResult, true), gettype($isFirstClassAvailableResult)), __LINE__);
        }
        $this->IsFirstClassAvailableResult = $isFirstClassAvailableResult;
        return $this;
    }
    /**
     * Get available value
     * @return bool
     */
    public function getAvailable()
    {
        return $this->available;
    }
    /**
     * Set available value
     * @param bool $available
     * @return \\NineDotMedia\viapost-php\IsFirstClassAvailableResponse
     */
    public function setAvailable($available = null)
    {
        // validation for constraint: boolean
        if (!is_null($available) && !is_bool($available)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($available, true), gettype($available)), __LINE__);
        }
        $this->available = $available;
        return $this;
    }
    /**
     * Get returnMessage value
     * @return string|null
     */
    public function getReturnMessage()
    {
        return $this->returnMessage;
    }
    /**
     * Set returnMessage value
     * @param string $returnMessage
     * @return \\NineDotMedia\viapost-php\IsFirstClassAvailableResponse
     */
    public function setReturnMessage($returnMessage = null)
    {
        // validation for constraint: string
        if (!is_null($returnMessage) && !is_string($returnMessage)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($returnMessage, true), gettype($returnMessage)), __LINE__);
        }
        $this->returnMessage = $returnMessage;
        return $this;
    }
}
