brandon14/ebay-sdk-php

View on GitHub
src/Buy/Browse/V1/Model/ShippingOption.php

Summary

Maintainability
C
1 day
Test Coverage
<?php

/**
 * This file is part of the trollandtoad/ebay-sdk-php package.
 *
 * MIT License
 *
 * Copyright (c) 2022 Brandon Clothier
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 */

declare(strict_types=1);

/**
 * ShippingOption.
 *
 * PHP version ^7.2 || ^8.0
 *
 * @category Class
 *
 * @author   OpenAPI Generator team
 *
 * @see     https://openapi-generator.tech
 */

/**
 * Browse API.
 *
 * <p>The Browse API has the following resources:</p>   <ul> <li><b> item_summary: </b> Lets shoppers search for specific items by keyword, GTIN, category, charity, product, or item aspects and refine the results by using filters, such as aspects, compatibility, and fields values.</li>  <li><b> search_by_image: </b><a href=\"https://developer.ebay.com/api-docs/static/versioning.html#experimental \" target=\"_blank\"><img src=\"/cms/img/docs/experimental-icon.svg\" class=\"legend-icon experimental-icon\" alt=\"Experimental Release\" title=\"Experimental Release\" />&nbsp;(Experimental)</a> Lets shoppers search for specific items by image. You can refine the results by using URI parameters and filters.</li>   <li><b> item: </b> <ul><li>Lets you retrieve the details of a specific item or all the items in an item group, which is an item with variations such as color and size and check if a product is compatible with the specified item, such as if a specific car is compatible with a specific part.</li> <li>Provides a bridge between the eBay legacy APIs, such as <b> Finding</b>, and the RESTful APIs, which use different formats for the item IDs.</li>  </ul> </li>  <li> <b> shopping_cart: </b> <a href=\"https://developer.ebay.com/api-docs/static/versioning.html#experimental \" target=\"_blank\"><img src=\"/cms/img/docs/experimental-icon.svg\" class=\"legend-icon experimental-icon\" alt=\"Experimental Release\" title=\"Experimental Release\" />&nbsp;(Experimental)</a> <a href=\"https://developer.ebay.com/api-docs/static/versioning.html#limited \" target=\"_blank\"> <img src=\"/cms/img/docs/partners-api.svg\" class=\"legend-icon partners-icon\" title=\"Limited Release\"  alt=\"Limited Release\" />(Limited Release)</a> Provides the ability for eBay members to see the contents of their eBay cart, and add, remove, and change the quantity of items in their eBay cart.&nbsp;&nbsp;<b> Note: </b> This resource is not available in the eBay API Explorer.</li></ul>       <p>The <b> item_summary</b>, <b> search_by_image</b>, and <b> item</b> resource calls require an <a href=\"/api-docs/static/oauth-client-credentials-grant.html\">Application access token</a>. The <b> shopping_cart</b> resource calls require a <a href=\"/api-docs/static/oauth-authorization-code-grant.html\">User access token</a>.</p>
 *
 * The version of the OpenAPI document: v1.18.0
 * Generated by: https://openapi-generator.tech
 * OpenAPI Generator version: 5.4.0
 */

/**
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

namespace TNT\Ebay\Buy\Browse\V1\Model;

use TNT\Ebay\Buy\Browse\V1\ObjectSerializer;

/**
 * ShippingOption Class Doc Comment.
 *
 * @category Class
 *
 * @description The type that defines the fields for the details of a shipping provider.
 *
 * @author   OpenAPI Generator team
 *
 * @see     https://openapi-generator.tech
 *
 * @implements \ArrayAccess<TKey, TValue>
 *
 * @template TKey int|null
 * @template TValue mixed|null
 */
class ShippingOption implements ModelInterface, \ArrayAccess, \JsonSerializable
{
    public const DISCRIMINATOR = null;

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

    /**
     * Array of property to type mappings. Used for (de)serialization.
     *
     * @var string[]
     */
    protected static $openAPITypes = [
        'additional_shipping_cost_per_unit' => '\TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount',
        'cut_off_date_used_for_estimate' => 'string',
        'fulfilled_through' => 'string',
        'guaranteed_delivery' => 'bool',
        'import_charges' => '\TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount',
        'max_estimated_delivery_date' => 'string',
        'min_estimated_delivery_date' => 'string',
        'quantity_used_for_estimate' => 'int',
        'shipping_carrier_code' => 'string',
        'shipping_cost' => '\TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount',
        'shipping_cost_type' => 'string',
        'shipping_service_code' => 'string',
        'ship_to_location_used_for_estimate' => '\TNT\Ebay\Buy\Browse\V1\Model\ShipToLocation',
        'trademark_symbol' => 'string',
        'type' => 'string',
    ];

    /**
     * Array of property to format mappings. Used for (de)serialization.
     *
     * @var string[]
     *
     * @phpstan-var array<string, string|null>
     *
     * @psalm-var array<string, string|null>
     */
    protected static $openAPIFormats = [
        'additional_shipping_cost_per_unit' => null,
        'cut_off_date_used_for_estimate' => null,
        'fulfilled_through' => null,
        'guaranteed_delivery' => null,
        'import_charges' => null,
        'max_estimated_delivery_date' => null,
        'min_estimated_delivery_date' => null,
        'quantity_used_for_estimate' => 'int32',
        'shipping_carrier_code' => null,
        'shipping_cost' => null,
        'shipping_cost_type' => null,
        'shipping_service_code' => null,
        'ship_to_location_used_for_estimate' => null,
        'trademark_symbol' => null,
        'type' => null,
    ];

    /**
     * Array of property to type mappings. Used for (de)serialization.
     *
     * @return array
     */
    public static function openAPITypes()
    {
        return self::$openAPITypes;
    }

    /**
     * Array of property to format mappings. Used for (de)serialization.
     *
     * @return array
     */
    public static function openAPIFormats()
    {
        return self::$openAPIFormats;
    }

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name.
     *
     * @var string[]
     */
    protected static $attributeMap = [
        'additional_shipping_cost_per_unit' => 'additionalShippingCostPerUnit',
        'cut_off_date_used_for_estimate' => 'cutOffDateUsedForEstimate',
        'fulfilled_through' => 'fulfilledThrough',
        'guaranteed_delivery' => 'guaranteedDelivery',
        'import_charges' => 'importCharges',
        'max_estimated_delivery_date' => 'maxEstimatedDeliveryDate',
        'min_estimated_delivery_date' => 'minEstimatedDeliveryDate',
        'quantity_used_for_estimate' => 'quantityUsedForEstimate',
        'shipping_carrier_code' => 'shippingCarrierCode',
        'shipping_cost' => 'shippingCost',
        'shipping_cost_type' => 'shippingCostType',
        'shipping_service_code' => 'shippingServiceCode',
        'ship_to_location_used_for_estimate' => 'shipToLocationUsedForEstimate',
        'trademark_symbol' => 'trademarkSymbol',
        'type' => 'type',
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses).
     *
     * @var string[]
     */
    protected static $setters = [
        'additional_shipping_cost_per_unit' => 'setAdditionalShippingCostPerUnit',
        'cut_off_date_used_for_estimate' => 'setCutOffDateUsedForEstimate',
        'fulfilled_through' => 'setFulfilledThrough',
        'guaranteed_delivery' => 'setGuaranteedDelivery',
        'import_charges' => 'setImportCharges',
        'max_estimated_delivery_date' => 'setMaxEstimatedDeliveryDate',
        'min_estimated_delivery_date' => 'setMinEstimatedDeliveryDate',
        'quantity_used_for_estimate' => 'setQuantityUsedForEstimate',
        'shipping_carrier_code' => 'setShippingCarrierCode',
        'shipping_cost' => 'setShippingCost',
        'shipping_cost_type' => 'setShippingCostType',
        'shipping_service_code' => 'setShippingServiceCode',
        'ship_to_location_used_for_estimate' => 'setShipToLocationUsedForEstimate',
        'trademark_symbol' => 'setTrademarkSymbol',
        'type' => 'setType',
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests).
     *
     * @var string[]
     */
    protected static $getters = [
        'additional_shipping_cost_per_unit' => 'getAdditionalShippingCostPerUnit',
        'cut_off_date_used_for_estimate' => 'getCutOffDateUsedForEstimate',
        'fulfilled_through' => 'getFulfilledThrough',
        'guaranteed_delivery' => 'getGuaranteedDelivery',
        'import_charges' => 'getImportCharges',
        'max_estimated_delivery_date' => 'getMaxEstimatedDeliveryDate',
        'min_estimated_delivery_date' => 'getMinEstimatedDeliveryDate',
        'quantity_used_for_estimate' => 'getQuantityUsedForEstimate',
        'shipping_carrier_code' => 'getShippingCarrierCode',
        'shipping_cost' => 'getShippingCost',
        'shipping_cost_type' => 'getShippingCostType',
        'shipping_service_code' => 'getShippingServiceCode',
        'ship_to_location_used_for_estimate' => 'getShipToLocationUsedForEstimate',
        'trademark_symbol' => 'getTrademarkSymbol',
        'type' => 'getType',
    ];

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name.
     *
     * @return array
     */
    public static function attributeMap()
    {
        return self::$attributeMap;
    }

    /**
     * Array of attributes to setter functions (for deserialization of responses).
     *
     * @return array
     */
    public static function setters()
    {
        return self::$setters;
    }

    /**
     * Array of attributes to getter functions (for serialization of requests).
     *
     * @return array
     */
    public static function getters()
    {
        return self::$getters;
    }

    /**
     * The original name of the model.
     *
     * @return string
     */
    public function getModelName()
    {
        return self::$openAPIModelName;
    }

    /**
     * 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['additional_shipping_cost_per_unit'] = $data['additional_shipping_cost_per_unit'] ?? null;
        $this->container['cut_off_date_used_for_estimate'] = $data['cut_off_date_used_for_estimate'] ?? null;
        $this->container['fulfilled_through'] = $data['fulfilled_through'] ?? null;
        $this->container['guaranteed_delivery'] = $data['guaranteed_delivery'] ?? null;
        $this->container['import_charges'] = $data['import_charges'] ?? null;
        $this->container['max_estimated_delivery_date'] = $data['max_estimated_delivery_date'] ?? null;
        $this->container['min_estimated_delivery_date'] = $data['min_estimated_delivery_date'] ?? null;
        $this->container['quantity_used_for_estimate'] = $data['quantity_used_for_estimate'] ?? null;
        $this->container['shipping_carrier_code'] = $data['shipping_carrier_code'] ?? null;
        $this->container['shipping_cost'] = $data['shipping_cost'] ?? null;
        $this->container['shipping_cost_type'] = $data['shipping_cost_type'] ?? null;
        $this->container['shipping_service_code'] = $data['shipping_service_code'] ?? null;
        $this->container['ship_to_location_used_for_estimate'] = $data['ship_to_location_used_for_estimate'] ?? null;
        $this->container['trademark_symbol'] = $data['trademark_symbol'] ?? null;
        $this->container['type'] = $data['type'] ?? null;
    }

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

        return $invalidProperties;
    }

    /**
     * Validate all the properties in the model
     * return true if all passed.
     *
     * @return bool True if all properties are valid
     */
    public function valid()
    {
        return count($this->listInvalidProperties()) === 0;
    }

    /**
     * Gets additional_shipping_cost_per_unit.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null
     */
    public function getAdditionalShippingCostPerUnit()
    {
        return $this->container['additional_shipping_cost_per_unit'];
    }

    /**
     * Sets additional_shipping_cost_per_unit.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null $additional_shipping_cost_per_unit additional_shipping_cost_per_unit
     *
     * @return self
     */
    public function setAdditionalShippingCostPerUnit($additional_shipping_cost_per_unit)
    {
        $this->container['additional_shipping_cost_per_unit'] = $additional_shipping_cost_per_unit;

        return $this;
    }

    /**
     * Gets cut_off_date_used_for_estimate.
     *
     * @return string|null
     */
    public function getCutOffDateUsedForEstimate()
    {
        return $this->container['cut_off_date_used_for_estimate'];
    }

    /**
     * Sets cut_off_date_used_for_estimate.
     *
     * @param string|null $cut_off_date_used_for_estimate The deadline date that the item must be purchased by in order to be received by the buyer within the delivery window (<b> maxEstimatedDeliveryDate</b> and  <b> minEstimatedDeliveryDate</b> fields). This field is returned only for items that are eligible for 'Same Day Handling'. For these items, the value of this field is what is displayed in the <b> Delivery</b> line on the View Item page.  <br /><br />This value is returned in UTC format (yyyy-MM-ddThh:mm:ss.sssZ), which you can convert into the local time of the buyer.
     *
     * @return self
     */
    public function setCutOffDateUsedForEstimate($cut_off_date_used_for_estimate)
    {
        $this->container['cut_off_date_used_for_estimate'] = $cut_off_date_used_for_estimate;

        return $this;
    }

    /**
     * Gets fulfilled_through.
     *
     * @return string|null
     */
    public function getFulfilledThrough()
    {
        return $this->container['fulfilled_through'];
    }

    /**
     * Sets fulfilled_through.
     *
     * @param string|null $fulfilled_through If the item is being shipped by the eBay <a href=\"https://pages.ebay.com/seller-center/shipping/global-shipping-program.html \">Global Shipping program</a>, this field returns <code>GLOBAL_SHIPPING</code>.<br /><br />If the item is being shipped using the eBay International Shipping program, this field returns <code>INTERNATIONAL_SHIPPING</code>. <br /><br />Otherwise, this field is null. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/buy/browse/types/gct:FulfilledThroughEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setFulfilledThrough($fulfilled_through)
    {
        $this->container['fulfilled_through'] = $fulfilled_through;

        return $this;
    }

    /**
     * Gets guaranteed_delivery.
     *
     * @return bool|null
     */
    public function getGuaranteedDelivery()
    {
        return $this->container['guaranteed_delivery'];
    }

    /**
     * Sets guaranteed_delivery.
     *
     * @param bool|null $guaranteed_delivery Indicates if the seller has committed to shipping the item with eBay Guaranteed Delivery. With eBay Guaranteed Delivery, the  seller is committed to getting the line item to the buyer within 4 business days or less. See the <a href=\"https://www.ebay.com/help/buying/shipping-delivery/buying-items-ebay-guaranteed-delivery?id=4641 \">Buying items with eBay Guaranteed Delivery</a> help topic for more details about eBay Guaranteed Delivery.
     *
     * @return self
     */
    public function setGuaranteedDelivery($guaranteed_delivery)
    {
        $this->container['guaranteed_delivery'] = $guaranteed_delivery;

        return $this;
    }

    /**
     * Gets import_charges.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null
     */
    public function getImportCharges()
    {
        return $this->container['import_charges'];
    }

    /**
     * Sets import_charges.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null $import_charges import_charges
     *
     * @return self
     */
    public function setImportCharges($import_charges)
    {
        $this->container['import_charges'] = $import_charges;

        return $this;
    }

    /**
     * Gets max_estimated_delivery_date.
     *
     * @return string|null
     */
    public function getMaxEstimatedDeliveryDate()
    {
        return $this->container['max_estimated_delivery_date'];
    }

    /**
     * Sets max_estimated_delivery_date.
     *
     * @param string|null $max_estimated_delivery_date The end date of the delivery window (latest projected delivery date).  This value is returned in UTC format (yyyy-MM-ddThh:mm:ss.sssZ), which you can convert into the local time of the buyer. <br /> <br /> <span class=\"tablenote\"> <b> Note: </b> For the best accuracy, always include the location of where the item is be shipped in the <code> contextualLocation</code> values of the <a href=\"/api-docs/buy/static/api-browse.html#Headers\"> <code>X-EBAY-C-ENDUSERCTX</code></a> request header.</span>
     *
     * @return self
     */
    public function setMaxEstimatedDeliveryDate($max_estimated_delivery_date)
    {
        $this->container['max_estimated_delivery_date'] = $max_estimated_delivery_date;

        return $this;
    }

    /**
     * Gets min_estimated_delivery_date.
     *
     * @return string|null
     */
    public function getMinEstimatedDeliveryDate()
    {
        return $this->container['min_estimated_delivery_date'];
    }

    /**
     * Sets min_estimated_delivery_date.
     *
     * @param string|null $min_estimated_delivery_date The start date of the delivery window (earliest projected delivery date). This value is returned in UTC format (yyyy-MM-ddThh:mm:ss.sssZ), which you can convert into the local time of the buyer. <br /> <br /><span class=\"tablenote\"> <b> Note: </b> For the best accuracy, always include the location of where the item is be shipped in the <code> contextualLocation</code> values of the <a href=\"/api-docs/buy/static/api-browse.html#Headers\"> <code>X-EBAY-C-ENDUSERCTX</code></a> request header.</span>
     *
     * @return self
     */
    public function setMinEstimatedDeliveryDate($min_estimated_delivery_date)
    {
        $this->container['min_estimated_delivery_date'] = $min_estimated_delivery_date;

        return $this;
    }

    /**
     * Gets quantity_used_for_estimate.
     *
     * @return int|null
     */
    public function getQuantityUsedForEstimate()
    {
        return $this->container['quantity_used_for_estimate'];
    }

    /**
     * Sets quantity_used_for_estimate.
     *
     * @param int|null $quantity_used_for_estimate the number of items used when calculating the estimation information
     *
     * @return self
     */
    public function setQuantityUsedForEstimate($quantity_used_for_estimate)
    {
        $this->container['quantity_used_for_estimate'] = $quantity_used_for_estimate;

        return $this;
    }

    /**
     * Gets shipping_carrier_code.
     *
     * @return string|null
     */
    public function getShippingCarrierCode()
    {
        return $this->container['shipping_carrier_code'];
    }

    /**
     * Sets shipping_carrier_code.
     *
     * @param string|null $shipping_carrier_code the name of the shipping provider, such as FedEx, or USPS
     *
     * @return self
     */
    public function setShippingCarrierCode($shipping_carrier_code)
    {
        $this->container['shipping_carrier_code'] = $shipping_carrier_code;

        return $this;
    }

    /**
     * Gets shipping_cost.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null
     */
    public function getShippingCost()
    {
        return $this->container['shipping_cost'];
    }

    /**
     * Sets shipping_cost.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null $shipping_cost shipping_cost
     *
     * @return self
     */
    public function setShippingCost($shipping_cost)
    {
        $this->container['shipping_cost'] = $shipping_cost;

        return $this;
    }

    /**
     * Gets shipping_cost_type.
     *
     * @return string|null
     */
    public function getShippingCostType()
    {
        return $this->container['shipping_cost_type'];
    }

    /**
     * Sets shipping_cost_type.
     *
     * @param string|null $shipping_cost_type Indicates the class of the shipping cost. <br /><br /><b> Valid Values: </b> FIXED or CALCULATED <br /><br />Code so that your app gracefully handles any future changes to this list.
     *
     * @return self
     */
    public function setShippingCostType($shipping_cost_type)
    {
        $this->container['shipping_cost_type'] = $shipping_cost_type;

        return $this;
    }

    /**
     * Gets shipping_service_code.
     *
     * @return string|null
     */
    public function getShippingServiceCode()
    {
        return $this->container['shipping_service_code'];
    }

    /**
     * Sets shipping_service_code.
     *
     * @param string|null $shipping_service_code The type of shipping service. For example, USPS First Class.
     *
     * @return self
     */
    public function setShippingServiceCode($shipping_service_code)
    {
        $this->container['shipping_service_code'] = $shipping_service_code;

        return $this;
    }

    /**
     * Gets ship_to_location_used_for_estimate.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\ShipToLocation|null
     */
    public function getShipToLocationUsedForEstimate()
    {
        return $this->container['ship_to_location_used_for_estimate'];
    }

    /**
     * Sets ship_to_location_used_for_estimate.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\ShipToLocation|null $ship_to_location_used_for_estimate ship_to_location_used_for_estimate
     *
     * @return self
     */
    public function setShipToLocationUsedForEstimate($ship_to_location_used_for_estimate)
    {
        $this->container['ship_to_location_used_for_estimate'] = $ship_to_location_used_for_estimate;

        return $this;
    }

    /**
     * Gets trademark_symbol.
     *
     * @return string|null
     */
    public function getTrademarkSymbol()
    {
        return $this->container['trademark_symbol'];
    }

    /**
     * Sets trademark_symbol.
     *
     * @param string|null $trademark_symbol any trademark symbol, such as &#8482; or &reg;, that needs to be shown in superscript next to the shipping service name
     *
     * @return self
     */
    public function setTrademarkSymbol($trademark_symbol)
    {
        $this->container['trademark_symbol'] = $trademark_symbol;

        return $this;
    }

    /**
     * Gets type.
     *
     * @return string|null
     */
    public function getType()
    {
        return $this->container['type'];
    }

    /**
     * Sets type.
     *
     * @param string|null $type the type of a shipping option, such as EXPEDITED, ONE_DAY, STANDARD, ECONOMY, PICKUP, etc
     *
     * @return self
     */
    public function setType($type)
    {
        $this->container['type'] = $type;

        return $this;
    }

    /**
     * Returns true if offset exists. False otherwise.
     *
     * @param int $offset Offset
     */
    public function offsetExists($offset): bool
    {
        return isset($this->container[$offset]);
    }

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

    /**
     * Sets value based on offset.
     *
     * @param int|null $offset Offset
     * @param mixed    $value  Value to be set
     */
    public function offsetSet($offset, $value): void
    {
        if (null === $offset) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    /**
     * Unsets offset.
     *
     * @param int $offset Offset
     */
    public function offsetUnset($offset): void
    {
        unset($this->container[$offset]);
    }

    /**
     * Serializes the object to a value that can be serialized natively by json_encode().
     *
     * @see https://www.php.net/manual/en/jsonserializable.jsonserialize.php
     *
     * @return mixed returns data which can be serialized by json_encode(), which is a value
     *               of any type other than a resource
     */
    #[\ReturnTypeWillChange]
    public function jsonSerialize()
    {
        return ObjectSerializer::sanitizeForSerialization($this);
    }

    /**
     * Gets the string presentation of the object.
     *
     * @return string
     */
    public function __toString()
    {
        return json_encode(
            ObjectSerializer::sanitizeForSerialization($this),
            JSON_PRETTY_PRINT
        );
    }

    /**
     * Gets a header-safe presentation of the object.
     *
     * @return string
     */
    public function toHeaderValue()
    {
        return json_encode(ObjectSerializer::sanitizeForSerialization($this));
    }
}