<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ItemFulfillmentPackageUsps StructType
 * @subpackage Structs
 */
class ItemFulfillmentPackageUsps extends AbstractStructBase
{
    /**
     * The packageWeightUsps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $packageWeightUsps;
    /**
     * The packageDescrUsps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $packageDescrUsps;
    /**
     * The packageTrackingNumberUsps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $packageTrackingNumberUsps;
    /**
     * The packagingUsps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $packagingUsps;
    /**
     * The useInsuredValueUsps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $useInsuredValueUsps;
    /**
     * The insuredValueUsps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $insuredValueUsps;
    /**
     * The reference1Usps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $reference1Usps;
    /**
     * The reference2Usps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $reference2Usps;
    /**
     * The packageLengthUsps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $packageLengthUsps;
    /**
     * The packageWidthUsps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $packageWidthUsps;
    /**
     * The packageHeightUsps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $packageHeightUsps;
    /**
     * The deliveryConfUsps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $deliveryConfUsps;
    /**
     * Constructor method for ItemFulfillmentPackageUsps
     * @uses ItemFulfillmentPackageUsps::setPackageWeightUsps()
     * @uses ItemFulfillmentPackageUsps::setPackageDescrUsps()
     * @uses ItemFulfillmentPackageUsps::setPackageTrackingNumberUsps()
     * @uses ItemFulfillmentPackageUsps::setPackagingUsps()
     * @uses ItemFulfillmentPackageUsps::setUseInsuredValueUsps()
     * @uses ItemFulfillmentPackageUsps::setInsuredValueUsps()
     * @uses ItemFulfillmentPackageUsps::setReference1Usps()
     * @uses ItemFulfillmentPackageUsps::setReference2Usps()
     * @uses ItemFulfillmentPackageUsps::setPackageLengthUsps()
     * @uses ItemFulfillmentPackageUsps::setPackageWidthUsps()
     * @uses ItemFulfillmentPackageUsps::setPackageHeightUsps()
     * @uses ItemFulfillmentPackageUsps::setDeliveryConfUsps()
     * @param float $packageWeightUsps
     * @param string $packageDescrUsps
     * @param string $packageTrackingNumberUsps
     * @param string $packagingUsps
     * @param bool $useInsuredValueUsps
     * @param float $insuredValueUsps
     * @param string $reference1Usps
     * @param string $reference2Usps
     * @param int $packageLengthUsps
     * @param int $packageWidthUsps
     * @param int $packageHeightUsps
     * @param string $deliveryConfUsps
     */
    public function __construct($packageWeightUsps = null, $packageDescrUsps = null, $packageTrackingNumberUsps = null, $packagingUsps = null, $useInsuredValueUsps = null, $insuredValueUsps = null, $reference1Usps = null, $reference2Usps = null, $packageLengthUsps = null, $packageWidthUsps = null, $packageHeightUsps = null, $deliveryConfUsps = null)
    {
        $this
            ->setPackageWeightUsps($packageWeightUsps)
            ->setPackageDescrUsps($packageDescrUsps)
            ->setPackageTrackingNumberUsps($packageTrackingNumberUsps)
            ->setPackagingUsps($packagingUsps)
            ->setUseInsuredValueUsps($useInsuredValueUsps)
            ->setInsuredValueUsps($insuredValueUsps)
            ->setReference1Usps($reference1Usps)
            ->setReference2Usps($reference2Usps)
            ->setPackageLengthUsps($packageLengthUsps)
            ->setPackageWidthUsps($packageWidthUsps)
            ->setPackageHeightUsps($packageHeightUsps)
            ->setDeliveryConfUsps($deliveryConfUsps);
    }
    /**
     * Get packageWeightUsps value
     * @return float|null
     */
    public function getPackageWeightUsps()
    {
        return $this->packageWeightUsps;
    }
    /**
     * Set packageWeightUsps value
     * @param float $packageWeightUsps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setPackageWeightUsps($packageWeightUsps = null)
    {
        // validation for constraint: float
        if (!is_null($packageWeightUsps) && !(is_float($packageWeightUsps) || is_numeric($packageWeightUsps))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($packageWeightUsps, true), gettype($packageWeightUsps)), __LINE__);
        }
        $this->packageWeightUsps = $packageWeightUsps;
        return $this;
    }
    /**
     * Get packageDescrUsps value
     * @return string|null
     */
    public function getPackageDescrUsps()
    {
        return $this->packageDescrUsps;
    }
    /**
     * Set packageDescrUsps value
     * @param string $packageDescrUsps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setPackageDescrUsps($packageDescrUsps = null)
    {
        // validation for constraint: string
        if (!is_null($packageDescrUsps) && !is_string($packageDescrUsps)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($packageDescrUsps, true), gettype($packageDescrUsps)), __LINE__);
        }
        $this->packageDescrUsps = $packageDescrUsps;
        return $this;
    }
    /**
     * Get packageTrackingNumberUsps value
     * @return string|null
     */
    public function getPackageTrackingNumberUsps()
    {
        return $this->packageTrackingNumberUsps;
    }
    /**
     * Set packageTrackingNumberUsps value
     * @param string $packageTrackingNumberUsps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setPackageTrackingNumberUsps($packageTrackingNumberUsps = null)
    {
        // validation for constraint: string
        if (!is_null($packageTrackingNumberUsps) && !is_string($packageTrackingNumberUsps)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($packageTrackingNumberUsps, true), gettype($packageTrackingNumberUsps)), __LINE__);
        }
        $this->packageTrackingNumberUsps = $packageTrackingNumberUsps;
        return $this;
    }
    /**
     * Get packagingUsps value
     * @return string|null
     */
    public function getPackagingUsps()
    {
        return $this->packagingUsps;
    }
    /**
     * Set packagingUsps value
     * @uses \EnumType\ItemFulfillmentPackageUspsPackagingUsps::valueIsValid()
     * @uses \EnumType\ItemFulfillmentPackageUspsPackagingUsps::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $packagingUsps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setPackagingUsps($packagingUsps = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\ItemFulfillmentPackageUspsPackagingUsps::valueIsValid($packagingUsps)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\ItemFulfillmentPackageUspsPackagingUsps', is_array($packagingUsps) ? implode(', ', $packagingUsps) : var_export($packagingUsps, true), implode(', ', \EnumType\ItemFulfillmentPackageUspsPackagingUsps::getValidValues())), __LINE__);
        }
        $this->packagingUsps = $packagingUsps;
        return $this;
    }
    /**
     * Get useInsuredValueUsps value
     * @return bool|null
     */
    public function getUseInsuredValueUsps()
    {
        return $this->useInsuredValueUsps;
    }
    /**
     * Set useInsuredValueUsps value
     * @param bool $useInsuredValueUsps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setUseInsuredValueUsps($useInsuredValueUsps = null)
    {
        // validation for constraint: boolean
        if (!is_null($useInsuredValueUsps) && !is_bool($useInsuredValueUsps)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($useInsuredValueUsps, true), gettype($useInsuredValueUsps)), __LINE__);
        }
        $this->useInsuredValueUsps = $useInsuredValueUsps;
        return $this;
    }
    /**
     * Get insuredValueUsps value
     * @return float|null
     */
    public function getInsuredValueUsps()
    {
        return $this->insuredValueUsps;
    }
    /**
     * Set insuredValueUsps value
     * @param float $insuredValueUsps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setInsuredValueUsps($insuredValueUsps = null)
    {
        // validation for constraint: float
        if (!is_null($insuredValueUsps) && !(is_float($insuredValueUsps) || is_numeric($insuredValueUsps))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($insuredValueUsps, true), gettype($insuredValueUsps)), __LINE__);
        }
        $this->insuredValueUsps = $insuredValueUsps;
        return $this;
    }
    /**
     * Get reference1Usps value
     * @return string|null
     */
    public function getReference1Usps()
    {
        return $this->reference1Usps;
    }
    /**
     * Set reference1Usps value
     * @param string $reference1Usps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setReference1Usps($reference1Usps = null)
    {
        // validation for constraint: string
        if (!is_null($reference1Usps) && !is_string($reference1Usps)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($reference1Usps, true), gettype($reference1Usps)), __LINE__);
        }
        $this->reference1Usps = $reference1Usps;
        return $this;
    }
    /**
     * Get reference2Usps value
     * @return string|null
     */
    public function getReference2Usps()
    {
        return $this->reference2Usps;
    }
    /**
     * Set reference2Usps value
     * @param string $reference2Usps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setReference2Usps($reference2Usps = null)
    {
        // validation for constraint: string
        if (!is_null($reference2Usps) && !is_string($reference2Usps)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($reference2Usps, true), gettype($reference2Usps)), __LINE__);
        }
        $this->reference2Usps = $reference2Usps;
        return $this;
    }
    /**
     * Get packageLengthUsps value
     * @return int|null
     */
    public function getPackageLengthUsps()
    {
        return $this->packageLengthUsps;
    }
    /**
     * Set packageLengthUsps value
     * @param int $packageLengthUsps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setPackageLengthUsps($packageLengthUsps = null)
    {
        // validation for constraint: int
        if (!is_null($packageLengthUsps) && !(is_int($packageLengthUsps) || ctype_digit($packageLengthUsps))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($packageLengthUsps, true), gettype($packageLengthUsps)), __LINE__);
        }
        $this->packageLengthUsps = $packageLengthUsps;
        return $this;
    }
    /**
     * Get packageWidthUsps value
     * @return int|null
     */
    public function getPackageWidthUsps()
    {
        return $this->packageWidthUsps;
    }
    /**
     * Set packageWidthUsps value
     * @param int $packageWidthUsps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setPackageWidthUsps($packageWidthUsps = null)
    {
        // validation for constraint: int
        if (!is_null($packageWidthUsps) && !(is_int($packageWidthUsps) || ctype_digit($packageWidthUsps))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($packageWidthUsps, true), gettype($packageWidthUsps)), __LINE__);
        }
        $this->packageWidthUsps = $packageWidthUsps;
        return $this;
    }
    /**
     * Get packageHeightUsps value
     * @return int|null
     */
    public function getPackageHeightUsps()
    {
        return $this->packageHeightUsps;
    }
    /**
     * Set packageHeightUsps value
     * @param int $packageHeightUsps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setPackageHeightUsps($packageHeightUsps = null)
    {
        // validation for constraint: int
        if (!is_null($packageHeightUsps) && !(is_int($packageHeightUsps) || ctype_digit($packageHeightUsps))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($packageHeightUsps, true), gettype($packageHeightUsps)), __LINE__);
        }
        $this->packageHeightUsps = $packageHeightUsps;
        return $this;
    }
    /**
     * Get deliveryConfUsps value
     * @return string|null
     */
    public function getDeliveryConfUsps()
    {
        return $this->deliveryConfUsps;
    }
    /**
     * Set deliveryConfUsps value
     * @uses \EnumType\ItemFulfillmentPackageUspsDeliveryConfUsps::valueIsValid()
     * @uses \EnumType\ItemFulfillmentPackageUspsDeliveryConfUsps::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $deliveryConfUsps
     * @return \StructType\ItemFulfillmentPackageUsps
     */
    public function setDeliveryConfUsps($deliveryConfUsps = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\ItemFulfillmentPackageUspsDeliveryConfUsps::valueIsValid($deliveryConfUsps)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\ItemFulfillmentPackageUspsDeliveryConfUsps', is_array($deliveryConfUsps) ? implode(', ', $deliveryConfUsps) : var_export($deliveryConfUsps, true), implode(', ', \EnumType\ItemFulfillmentPackageUspsDeliveryConfUsps::getValidValues())), __LINE__);
        }
        $this->deliveryConfUsps = $deliveryConfUsps;
        return $this;
    }
}
