<?php
/**
 * TxProcessingPerformanceModel
 *
 * PHP version 8.1
 *
 * @package  lthn
 * @author   OpenAPI Generator team
 * @link     https://openapi-generator.tech
 */

/**
 * Lethean Blockchain API
 *
 * OpenAPI for Lethean Blockchain
 *
 * The version of the OpenAPI document: 6.0.1
 * @generated Generated by: https://openapi-generator.tech
 * Generator version: 7.16.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 lthn\lthn;

use ArrayAccess;
use JsonSerializable;
use InvalidArgumentException;
use ReturnTypeWillChange;
use lthn\ObjectSerializer;

/**
 * TxProcessingPerformanceModel Class Doc Comment
 *
 * @package  lthn
 * @author   OpenAPI Generator team
 * @link     https://openapi-generator.tech
 * @implements ArrayAccess<string, mixed>
 */
class TxProcessingPerformanceModel implements ModelInterface, ArrayAccess, JsonSerializable
{
    public const DISCRIMINATOR = null;

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

    /**
      * Array of property to type mappings. Used for (de)serialization
      *
      * @var array<string, string>
      */
    protected static array $openAPITypes = [
        'tx_check_inputs' => 'int',
        'tx_add_one_tx' => 'int',
        'tx_process_extra' => 'int',
        'tx_process_attachment' => 'int',
        'tx_process_inputs' => 'int',
        'tx_push_global_index' => 'int',
        'tx_check_exist' => 'int',
        'tx_print_log' => 'int',
        'tx_prapare_append' => 'int',
        'tx_append' => 'int',
        'tx_append_rl_wait' => 'int',
        'tx_append_is_expired' => 'int',
        'tx_store_db' => 'int',
        'tx_check_inputs_prefix_hash' => 'int',
        'tx_check_inputs_attachment_check' => 'int',
        'tx_check_inputs_loop' => 'int',
        'tx_check_inputs_loop_kimage_check' => 'int',
        'tx_check_inputs_loop_ch_in_val_sig' => 'int',
        'tx_check_inputs_loop_scan_outputkeys_get_item_size' => 'int',
        'tx_check_inputs_loop_scan_outputkeys_relative_to_absolute' => 'int',
        'tx_check_inputs_loop_scan_outputkeys_loop' => 'int',
        'tx_check_inputs_loop_scan_outputkeys_loop_get_subitem' => 'int',
        'tx_check_inputs_loop_scan_outputkeys_loop_find_tx' => 'int',
        'tx_check_inputs_loop_scan_outputkeys_loop_handle_output' => 'int',
        'tx_mixin_count' => 'int'
    ];

    /**
      * Array of property to format mappings. Used for (de)serialization
      *
      * @var array<string, string|null>
      */
    protected static array $openAPIFormats = [
        'tx_check_inputs' => null,
        'tx_add_one_tx' => null,
        'tx_process_extra' => null,
        'tx_process_attachment' => null,
        'tx_process_inputs' => null,
        'tx_push_global_index' => null,
        'tx_check_exist' => null,
        'tx_print_log' => null,
        'tx_prapare_append' => null,
        'tx_append' => null,
        'tx_append_rl_wait' => null,
        'tx_append_is_expired' => null,
        'tx_store_db' => null,
        'tx_check_inputs_prefix_hash' => null,
        'tx_check_inputs_attachment_check' => null,
        'tx_check_inputs_loop' => null,
        'tx_check_inputs_loop_kimage_check' => null,
        'tx_check_inputs_loop_ch_in_val_sig' => null,
        'tx_check_inputs_loop_scan_outputkeys_get_item_size' => null,
        'tx_check_inputs_loop_scan_outputkeys_relative_to_absolute' => null,
        'tx_check_inputs_loop_scan_outputkeys_loop' => null,
        'tx_check_inputs_loop_scan_outputkeys_loop_get_subitem' => null,
        'tx_check_inputs_loop_scan_outputkeys_loop_find_tx' => null,
        'tx_check_inputs_loop_scan_outputkeys_loop_handle_output' => null,
        'tx_mixin_count' => null
    ];

    /**
      * Array of nullable properties. Used for (de)serialization
      *
      * @var array<string, bool>
      */
    protected static array $openAPINullables = [
        'tx_check_inputs' => false,
        'tx_add_one_tx' => false,
        'tx_process_extra' => false,
        'tx_process_attachment' => false,
        'tx_process_inputs' => false,
        'tx_push_global_index' => false,
        'tx_check_exist' => false,
        'tx_print_log' => false,
        'tx_prapare_append' => false,
        'tx_append' => false,
        'tx_append_rl_wait' => false,
        'tx_append_is_expired' => false,
        'tx_store_db' => false,
        'tx_check_inputs_prefix_hash' => false,
        'tx_check_inputs_attachment_check' => false,
        'tx_check_inputs_loop' => false,
        'tx_check_inputs_loop_kimage_check' => false,
        'tx_check_inputs_loop_ch_in_val_sig' => false,
        'tx_check_inputs_loop_scan_outputkeys_get_item_size' => false,
        'tx_check_inputs_loop_scan_outputkeys_relative_to_absolute' => false,
        'tx_check_inputs_loop_scan_outputkeys_loop' => false,
        'tx_check_inputs_loop_scan_outputkeys_loop_get_subitem' => false,
        'tx_check_inputs_loop_scan_outputkeys_loop_find_tx' => false,
        'tx_check_inputs_loop_scan_outputkeys_loop_handle_output' => false,
        'tx_mixin_count' => false
    ];

    /**
      * If a nullable field gets set to null, insert it here
      *
      * @var array<string, bool>
      */
    protected array $openAPINullablesSetToNull = [];

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

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

    /**
     * Array of nullable properties
     *
     * @return array<string, bool>
     */
    protected static function openAPINullables(): array
    {
        return self::$openAPINullables;
    }

    /**
     * Array of nullable field names deliberately set to null
     *
     * @return array<string, bool>
     */
    private function getOpenAPINullablesSetToNull(): array
    {
        return $this->openAPINullablesSetToNull;
    }

    /**
     * Setter - Array of nullable field names deliberately set to null
     *
     * @param array<string, bool> $openAPINullablesSetToNull
     */
    private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void
    {
        $this->openAPINullablesSetToNull = $openAPINullablesSetToNull;
    }

    /**
     * Checks if a property is nullable
     *
     * @param string $property
     * @return bool
     */
    public static function isNullable(string $property): bool
    {
        return self::openAPINullables()[$property] ?? false;
    }

    /**
     * Checks if a nullable property is set to null.
     *
     * @param string $property
     * @return bool
     */
    public function isNullableSetToNull(string $property): bool
    {
        return in_array($property, $this->getOpenAPINullablesSetToNull(), true);
    }

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @var array<string, string>
     */
    protected static array $attributeMap = [
        'tx_check_inputs' => 'tx_check_inputs',
        'tx_add_one_tx' => 'tx_add_one_tx',
        'tx_process_extra' => 'tx_process_extra',
        'tx_process_attachment' => 'tx_process_attachment',
        'tx_process_inputs' => 'tx_process_inputs',
        'tx_push_global_index' => 'tx_push_global_index',
        'tx_check_exist' => 'tx_check_exist',
        'tx_print_log' => 'tx_print_log',
        'tx_prapare_append' => 'tx_prapare_append',
        'tx_append' => 'tx_append',
        'tx_append_rl_wait' => 'tx_append_rl_wait',
        'tx_append_is_expired' => 'tx_append_is_expired',
        'tx_store_db' => 'tx_store_db',
        'tx_check_inputs_prefix_hash' => 'tx_check_inputs_prefix_hash',
        'tx_check_inputs_attachment_check' => 'tx_check_inputs_attachment_check',
        'tx_check_inputs_loop' => 'tx_check_inputs_loop',
        'tx_check_inputs_loop_kimage_check' => 'tx_check_inputs_loop_kimage_check',
        'tx_check_inputs_loop_ch_in_val_sig' => 'tx_check_inputs_loop_ch_in_val_sig',
        'tx_check_inputs_loop_scan_outputkeys_get_item_size' => 'tx_check_inputs_loop_scan_outputkeys_get_item_size',
        'tx_check_inputs_loop_scan_outputkeys_relative_to_absolute' => 'tx_check_inputs_loop_scan_outputkeys_relative_to_absolute',
        'tx_check_inputs_loop_scan_outputkeys_loop' => 'tx_check_inputs_loop_scan_outputkeys_loop',
        'tx_check_inputs_loop_scan_outputkeys_loop_get_subitem' => 'tx_check_inputs_loop_scan_outputkeys_loop_get_subitem',
        'tx_check_inputs_loop_scan_outputkeys_loop_find_tx' => 'tx_check_inputs_loop_scan_outputkeys_loop_find_tx',
        'tx_check_inputs_loop_scan_outputkeys_loop_handle_output' => 'tx_check_inputs_loop_scan_outputkeys_loop_handle_output',
        'tx_mixin_count' => 'tx_mixin_count'
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @var array<string, string>
     */
    protected static array $setters = [
        'tx_check_inputs' => 'setTxCheckInputs',
        'tx_add_one_tx' => 'setTxAddOneTx',
        'tx_process_extra' => 'setTxProcessExtra',
        'tx_process_attachment' => 'setTxProcessAttachment',
        'tx_process_inputs' => 'setTxProcessInputs',
        'tx_push_global_index' => 'setTxPushGlobalIndex',
        'tx_check_exist' => 'setTxCheckExist',
        'tx_print_log' => 'setTxPrintLog',
        'tx_prapare_append' => 'setTxPrapareAppend',
        'tx_append' => 'setTxAppend',
        'tx_append_rl_wait' => 'setTxAppendRlWait',
        'tx_append_is_expired' => 'setTxAppendIsExpired',
        'tx_store_db' => 'setTxStoreDb',
        'tx_check_inputs_prefix_hash' => 'setTxCheckInputsPrefixHash',
        'tx_check_inputs_attachment_check' => 'setTxCheckInputsAttachmentCheck',
        'tx_check_inputs_loop' => 'setTxCheckInputsLoop',
        'tx_check_inputs_loop_kimage_check' => 'setTxCheckInputsLoopKimageCheck',
        'tx_check_inputs_loop_ch_in_val_sig' => 'setTxCheckInputsLoopChInValSig',
        'tx_check_inputs_loop_scan_outputkeys_get_item_size' => 'setTxCheckInputsLoopScanOutputkeysGetItemSize',
        'tx_check_inputs_loop_scan_outputkeys_relative_to_absolute' => 'setTxCheckInputsLoopScanOutputkeysRelativeToAbsolute',
        'tx_check_inputs_loop_scan_outputkeys_loop' => 'setTxCheckInputsLoopScanOutputkeysLoop',
        'tx_check_inputs_loop_scan_outputkeys_loop_get_subitem' => 'setTxCheckInputsLoopScanOutputkeysLoopGetSubitem',
        'tx_check_inputs_loop_scan_outputkeys_loop_find_tx' => 'setTxCheckInputsLoopScanOutputkeysLoopFindTx',
        'tx_check_inputs_loop_scan_outputkeys_loop_handle_output' => 'setTxCheckInputsLoopScanOutputkeysLoopHandleOutput',
        'tx_mixin_count' => 'setTxMixinCount'
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @var array<string, string>
     */
    protected static array $getters = [
        'tx_check_inputs' => 'getTxCheckInputs',
        'tx_add_one_tx' => 'getTxAddOneTx',
        'tx_process_extra' => 'getTxProcessExtra',
        'tx_process_attachment' => 'getTxProcessAttachment',
        'tx_process_inputs' => 'getTxProcessInputs',
        'tx_push_global_index' => 'getTxPushGlobalIndex',
        'tx_check_exist' => 'getTxCheckExist',
        'tx_print_log' => 'getTxPrintLog',
        'tx_prapare_append' => 'getTxPrapareAppend',
        'tx_append' => 'getTxAppend',
        'tx_append_rl_wait' => 'getTxAppendRlWait',
        'tx_append_is_expired' => 'getTxAppendIsExpired',
        'tx_store_db' => 'getTxStoreDb',
        'tx_check_inputs_prefix_hash' => 'getTxCheckInputsPrefixHash',
        'tx_check_inputs_attachment_check' => 'getTxCheckInputsAttachmentCheck',
        'tx_check_inputs_loop' => 'getTxCheckInputsLoop',
        'tx_check_inputs_loop_kimage_check' => 'getTxCheckInputsLoopKimageCheck',
        'tx_check_inputs_loop_ch_in_val_sig' => 'getTxCheckInputsLoopChInValSig',
        'tx_check_inputs_loop_scan_outputkeys_get_item_size' => 'getTxCheckInputsLoopScanOutputkeysGetItemSize',
        'tx_check_inputs_loop_scan_outputkeys_relative_to_absolute' => 'getTxCheckInputsLoopScanOutputkeysRelativeToAbsolute',
        'tx_check_inputs_loop_scan_outputkeys_loop' => 'getTxCheckInputsLoopScanOutputkeysLoop',
        'tx_check_inputs_loop_scan_outputkeys_loop_get_subitem' => 'getTxCheckInputsLoopScanOutputkeysLoopGetSubitem',
        'tx_check_inputs_loop_scan_outputkeys_loop_find_tx' => 'getTxCheckInputsLoopScanOutputkeysLoopFindTx',
        'tx_check_inputs_loop_scan_outputkeys_loop_handle_output' => 'getTxCheckInputsLoopScanOutputkeysLoopHandleOutput',
        'tx_mixin_count' => 'getTxMixinCount'
    ];

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

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

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

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


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

    /**
     * Constructor
     *
     * @param array $data Associated array of property values initializing the model
     */
    public function __construct(?array $data = null)
    {
        $this->setIfExists('tx_check_inputs', $data ?? [], null);
        $this->setIfExists('tx_add_one_tx', $data ?? [], null);
        $this->setIfExists('tx_process_extra', $data ?? [], null);
        $this->setIfExists('tx_process_attachment', $data ?? [], null);
        $this->setIfExists('tx_process_inputs', $data ?? [], null);
        $this->setIfExists('tx_push_global_index', $data ?? [], null);
        $this->setIfExists('tx_check_exist', $data ?? [], null);
        $this->setIfExists('tx_print_log', $data ?? [], null);
        $this->setIfExists('tx_prapare_append', $data ?? [], null);
        $this->setIfExists('tx_append', $data ?? [], null);
        $this->setIfExists('tx_append_rl_wait', $data ?? [], null);
        $this->setIfExists('tx_append_is_expired', $data ?? [], null);
        $this->setIfExists('tx_store_db', $data ?? [], null);
        $this->setIfExists('tx_check_inputs_prefix_hash', $data ?? [], null);
        $this->setIfExists('tx_check_inputs_attachment_check', $data ?? [], null);
        $this->setIfExists('tx_check_inputs_loop', $data ?? [], null);
        $this->setIfExists('tx_check_inputs_loop_kimage_check', $data ?? [], null);
        $this->setIfExists('tx_check_inputs_loop_ch_in_val_sig', $data ?? [], null);
        $this->setIfExists('tx_check_inputs_loop_scan_outputkeys_get_item_size', $data ?? [], null);
        $this->setIfExists('tx_check_inputs_loop_scan_outputkeys_relative_to_absolute', $data ?? [], null);
        $this->setIfExists('tx_check_inputs_loop_scan_outputkeys_loop', $data ?? [], null);
        $this->setIfExists('tx_check_inputs_loop_scan_outputkeys_loop_get_subitem', $data ?? [], null);
        $this->setIfExists('tx_check_inputs_loop_scan_outputkeys_loop_find_tx', $data ?? [], null);
        $this->setIfExists('tx_check_inputs_loop_scan_outputkeys_loop_handle_output', $data ?? [], null);
        $this->setIfExists('tx_mixin_count', $data ?? [], null);
    }

    /**
    * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName
    * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the
    * $this->openAPINullablesSetToNull array
    *
    * @param string $variableName
    * @param array  $fields
    * @param mixed  $defaultValue
    */
    private function setIfExists(string $variableName, array $fields, mixed $defaultValue): void
    {
        if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) {
            $this->openAPINullablesSetToNull[] = $variableName;
        }

        $this->container[$variableName] = $fields[$variableName] ?? $defaultValue;
    }

    /**
     * Show all the invalid properties with reasons.
     *
     * @return string[] invalid properties with reasons
     */
    public function listInvalidProperties(): array
    {
        $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(): bool
    {
        return count($this->listInvalidProperties()) === 0;
    }


    /**
     * Gets tx_check_inputs
     *
     * @return int|null
     */
    public function getTxCheckInputs(): ?int
    {
        return $this->container['tx_check_inputs'];
    }

    /**
     * Sets tx_check_inputs
     *
     * @param int|null $tx_check_inputs tx_check_inputs
     *
     * @return $this
     */
    public function setTxCheckInputs(?int $tx_check_inputs): static
    {
        if (is_null($tx_check_inputs)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs cannot be null');
        }
        $this->container['tx_check_inputs'] = $tx_check_inputs;

        return $this;
    }

    /**
     * Gets tx_add_one_tx
     *
     * @return int|null
     */
    public function getTxAddOneTx(): ?int
    {
        return $this->container['tx_add_one_tx'];
    }

    /**
     * Sets tx_add_one_tx
     *
     * @param int|null $tx_add_one_tx tx_add_one_tx
     *
     * @return $this
     */
    public function setTxAddOneTx(?int $tx_add_one_tx): static
    {
        if (is_null($tx_add_one_tx)) {
            throw new InvalidArgumentException('non-nullable tx_add_one_tx cannot be null');
        }
        $this->container['tx_add_one_tx'] = $tx_add_one_tx;

        return $this;
    }

    /**
     * Gets tx_process_extra
     *
     * @return int|null
     */
    public function getTxProcessExtra(): ?int
    {
        return $this->container['tx_process_extra'];
    }

    /**
     * Sets tx_process_extra
     *
     * @param int|null $tx_process_extra tx_process_extra
     *
     * @return $this
     */
    public function setTxProcessExtra(?int $tx_process_extra): static
    {
        if (is_null($tx_process_extra)) {
            throw new InvalidArgumentException('non-nullable tx_process_extra cannot be null');
        }
        $this->container['tx_process_extra'] = $tx_process_extra;

        return $this;
    }

    /**
     * Gets tx_process_attachment
     *
     * @return int|null
     */
    public function getTxProcessAttachment(): ?int
    {
        return $this->container['tx_process_attachment'];
    }

    /**
     * Sets tx_process_attachment
     *
     * @param int|null $tx_process_attachment tx_process_attachment
     *
     * @return $this
     */
    public function setTxProcessAttachment(?int $tx_process_attachment): static
    {
        if (is_null($tx_process_attachment)) {
            throw new InvalidArgumentException('non-nullable tx_process_attachment cannot be null');
        }
        $this->container['tx_process_attachment'] = $tx_process_attachment;

        return $this;
    }

    /**
     * Gets tx_process_inputs
     *
     * @return int|null
     */
    public function getTxProcessInputs(): ?int
    {
        return $this->container['tx_process_inputs'];
    }

    /**
     * Sets tx_process_inputs
     *
     * @param int|null $tx_process_inputs tx_process_inputs
     *
     * @return $this
     */
    public function setTxProcessInputs(?int $tx_process_inputs): static
    {
        if (is_null($tx_process_inputs)) {
            throw new InvalidArgumentException('non-nullable tx_process_inputs cannot be null');
        }
        $this->container['tx_process_inputs'] = $tx_process_inputs;

        return $this;
    }

    /**
     * Gets tx_push_global_index
     *
     * @return int|null
     */
    public function getTxPushGlobalIndex(): ?int
    {
        return $this->container['tx_push_global_index'];
    }

    /**
     * Sets tx_push_global_index
     *
     * @param int|null $tx_push_global_index tx_push_global_index
     *
     * @return $this
     */
    public function setTxPushGlobalIndex(?int $tx_push_global_index): static
    {
        if (is_null($tx_push_global_index)) {
            throw new InvalidArgumentException('non-nullable tx_push_global_index cannot be null');
        }
        $this->container['tx_push_global_index'] = $tx_push_global_index;

        return $this;
    }

    /**
     * Gets tx_check_exist
     *
     * @return int|null
     */
    public function getTxCheckExist(): ?int
    {
        return $this->container['tx_check_exist'];
    }

    /**
     * Sets tx_check_exist
     *
     * @param int|null $tx_check_exist tx_check_exist
     *
     * @return $this
     */
    public function setTxCheckExist(?int $tx_check_exist): static
    {
        if (is_null($tx_check_exist)) {
            throw new InvalidArgumentException('non-nullable tx_check_exist cannot be null');
        }
        $this->container['tx_check_exist'] = $tx_check_exist;

        return $this;
    }

    /**
     * Gets tx_print_log
     *
     * @return int|null
     */
    public function getTxPrintLog(): ?int
    {
        return $this->container['tx_print_log'];
    }

    /**
     * Sets tx_print_log
     *
     * @param int|null $tx_print_log tx_print_log
     *
     * @return $this
     */
    public function setTxPrintLog(?int $tx_print_log): static
    {
        if (is_null($tx_print_log)) {
            throw new InvalidArgumentException('non-nullable tx_print_log cannot be null');
        }
        $this->container['tx_print_log'] = $tx_print_log;

        return $this;
    }

    /**
     * Gets tx_prapare_append
     *
     * @return int|null
     */
    public function getTxPrapareAppend(): ?int
    {
        return $this->container['tx_prapare_append'];
    }

    /**
     * Sets tx_prapare_append
     *
     * @param int|null $tx_prapare_append tx_prapare_append
     *
     * @return $this
     */
    public function setTxPrapareAppend(?int $tx_prapare_append): static
    {
        if (is_null($tx_prapare_append)) {
            throw new InvalidArgumentException('non-nullable tx_prapare_append cannot be null');
        }
        $this->container['tx_prapare_append'] = $tx_prapare_append;

        return $this;
    }

    /**
     * Gets tx_append
     *
     * @return int|null
     */
    public function getTxAppend(): ?int
    {
        return $this->container['tx_append'];
    }

    /**
     * Sets tx_append
     *
     * @param int|null $tx_append tx_append
     *
     * @return $this
     */
    public function setTxAppend(?int $tx_append): static
    {
        if (is_null($tx_append)) {
            throw new InvalidArgumentException('non-nullable tx_append cannot be null');
        }
        $this->container['tx_append'] = $tx_append;

        return $this;
    }

    /**
     * Gets tx_append_rl_wait
     *
     * @return int|null
     */
    public function getTxAppendRlWait(): ?int
    {
        return $this->container['tx_append_rl_wait'];
    }

    /**
     * Sets tx_append_rl_wait
     *
     * @param int|null $tx_append_rl_wait tx_append_rl_wait
     *
     * @return $this
     */
    public function setTxAppendRlWait(?int $tx_append_rl_wait): static
    {
        if (is_null($tx_append_rl_wait)) {
            throw new InvalidArgumentException('non-nullable tx_append_rl_wait cannot be null');
        }
        $this->container['tx_append_rl_wait'] = $tx_append_rl_wait;

        return $this;
    }

    /**
     * Gets tx_append_is_expired
     *
     * @return int|null
     */
    public function getTxAppendIsExpired(): ?int
    {
        return $this->container['tx_append_is_expired'];
    }

    /**
     * Sets tx_append_is_expired
     *
     * @param int|null $tx_append_is_expired tx_append_is_expired
     *
     * @return $this
     */
    public function setTxAppendIsExpired(?int $tx_append_is_expired): static
    {
        if (is_null($tx_append_is_expired)) {
            throw new InvalidArgumentException('non-nullable tx_append_is_expired cannot be null');
        }
        $this->container['tx_append_is_expired'] = $tx_append_is_expired;

        return $this;
    }

    /**
     * Gets tx_store_db
     *
     * @return int|null
     */
    public function getTxStoreDb(): ?int
    {
        return $this->container['tx_store_db'];
    }

    /**
     * Sets tx_store_db
     *
     * @param int|null $tx_store_db tx_store_db
     *
     * @return $this
     */
    public function setTxStoreDb(?int $tx_store_db): static
    {
        if (is_null($tx_store_db)) {
            throw new InvalidArgumentException('non-nullable tx_store_db cannot be null');
        }
        $this->container['tx_store_db'] = $tx_store_db;

        return $this;
    }

    /**
     * Gets tx_check_inputs_prefix_hash
     *
     * @return int|null
     */
    public function getTxCheckInputsPrefixHash(): ?int
    {
        return $this->container['tx_check_inputs_prefix_hash'];
    }

    /**
     * Sets tx_check_inputs_prefix_hash
     *
     * @param int|null $tx_check_inputs_prefix_hash tx_check_inputs_prefix_hash
     *
     * @return $this
     */
    public function setTxCheckInputsPrefixHash(?int $tx_check_inputs_prefix_hash): static
    {
        if (is_null($tx_check_inputs_prefix_hash)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs_prefix_hash cannot be null');
        }
        $this->container['tx_check_inputs_prefix_hash'] = $tx_check_inputs_prefix_hash;

        return $this;
    }

    /**
     * Gets tx_check_inputs_attachment_check
     *
     * @return int|null
     */
    public function getTxCheckInputsAttachmentCheck(): ?int
    {
        return $this->container['tx_check_inputs_attachment_check'];
    }

    /**
     * Sets tx_check_inputs_attachment_check
     *
     * @param int|null $tx_check_inputs_attachment_check tx_check_inputs_attachment_check
     *
     * @return $this
     */
    public function setTxCheckInputsAttachmentCheck(?int $tx_check_inputs_attachment_check): static
    {
        if (is_null($tx_check_inputs_attachment_check)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs_attachment_check cannot be null');
        }
        $this->container['tx_check_inputs_attachment_check'] = $tx_check_inputs_attachment_check;

        return $this;
    }

    /**
     * Gets tx_check_inputs_loop
     *
     * @return int|null
     */
    public function getTxCheckInputsLoop(): ?int
    {
        return $this->container['tx_check_inputs_loop'];
    }

    /**
     * Sets tx_check_inputs_loop
     *
     * @param int|null $tx_check_inputs_loop tx_check_inputs_loop
     *
     * @return $this
     */
    public function setTxCheckInputsLoop(?int $tx_check_inputs_loop): static
    {
        if (is_null($tx_check_inputs_loop)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs_loop cannot be null');
        }
        $this->container['tx_check_inputs_loop'] = $tx_check_inputs_loop;

        return $this;
    }

    /**
     * Gets tx_check_inputs_loop_kimage_check
     *
     * @return int|null
     */
    public function getTxCheckInputsLoopKimageCheck(): ?int
    {
        return $this->container['tx_check_inputs_loop_kimage_check'];
    }

    /**
     * Sets tx_check_inputs_loop_kimage_check
     *
     * @param int|null $tx_check_inputs_loop_kimage_check tx_check_inputs_loop_kimage_check
     *
     * @return $this
     */
    public function setTxCheckInputsLoopKimageCheck(?int $tx_check_inputs_loop_kimage_check): static
    {
        if (is_null($tx_check_inputs_loop_kimage_check)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs_loop_kimage_check cannot be null');
        }
        $this->container['tx_check_inputs_loop_kimage_check'] = $tx_check_inputs_loop_kimage_check;

        return $this;
    }

    /**
     * Gets tx_check_inputs_loop_ch_in_val_sig
     *
     * @return int|null
     */
    public function getTxCheckInputsLoopChInValSig(): ?int
    {
        return $this->container['tx_check_inputs_loop_ch_in_val_sig'];
    }

    /**
     * Sets tx_check_inputs_loop_ch_in_val_sig
     *
     * @param int|null $tx_check_inputs_loop_ch_in_val_sig tx_check_inputs_loop_ch_in_val_sig
     *
     * @return $this
     */
    public function setTxCheckInputsLoopChInValSig(?int $tx_check_inputs_loop_ch_in_val_sig): static
    {
        if (is_null($tx_check_inputs_loop_ch_in_val_sig)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs_loop_ch_in_val_sig cannot be null');
        }
        $this->container['tx_check_inputs_loop_ch_in_val_sig'] = $tx_check_inputs_loop_ch_in_val_sig;

        return $this;
    }

    /**
     * Gets tx_check_inputs_loop_scan_outputkeys_get_item_size
     *
     * @return int|null
     */
    public function getTxCheckInputsLoopScanOutputkeysGetItemSize(): ?int
    {
        return $this->container['tx_check_inputs_loop_scan_outputkeys_get_item_size'];
    }

    /**
     * Sets tx_check_inputs_loop_scan_outputkeys_get_item_size
     *
     * @param int|null $tx_check_inputs_loop_scan_outputkeys_get_item_size tx_check_inputs_loop_scan_outputkeys_get_item_size
     *
     * @return $this
     */
    public function setTxCheckInputsLoopScanOutputkeysGetItemSize(?int $tx_check_inputs_loop_scan_outputkeys_get_item_size): static
    {
        if (is_null($tx_check_inputs_loop_scan_outputkeys_get_item_size)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs_loop_scan_outputkeys_get_item_size cannot be null');
        }
        $this->container['tx_check_inputs_loop_scan_outputkeys_get_item_size'] = $tx_check_inputs_loop_scan_outputkeys_get_item_size;

        return $this;
    }

    /**
     * Gets tx_check_inputs_loop_scan_outputkeys_relative_to_absolute
     *
     * @return int|null
     */
    public function getTxCheckInputsLoopScanOutputkeysRelativeToAbsolute(): ?int
    {
        return $this->container['tx_check_inputs_loop_scan_outputkeys_relative_to_absolute'];
    }

    /**
     * Sets tx_check_inputs_loop_scan_outputkeys_relative_to_absolute
     *
     * @param int|null $tx_check_inputs_loop_scan_outputkeys_relative_to_absolute tx_check_inputs_loop_scan_outputkeys_relative_to_absolute
     *
     * @return $this
     */
    public function setTxCheckInputsLoopScanOutputkeysRelativeToAbsolute(?int $tx_check_inputs_loop_scan_outputkeys_relative_to_absolute): static
    {
        if (is_null($tx_check_inputs_loop_scan_outputkeys_relative_to_absolute)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs_loop_scan_outputkeys_relative_to_absolute cannot be null');
        }
        $this->container['tx_check_inputs_loop_scan_outputkeys_relative_to_absolute'] = $tx_check_inputs_loop_scan_outputkeys_relative_to_absolute;

        return $this;
    }

    /**
     * Gets tx_check_inputs_loop_scan_outputkeys_loop
     *
     * @return int|null
     */
    public function getTxCheckInputsLoopScanOutputkeysLoop(): ?int
    {
        return $this->container['tx_check_inputs_loop_scan_outputkeys_loop'];
    }

    /**
     * Sets tx_check_inputs_loop_scan_outputkeys_loop
     *
     * @param int|null $tx_check_inputs_loop_scan_outputkeys_loop tx_check_inputs_loop_scan_outputkeys_loop
     *
     * @return $this
     */
    public function setTxCheckInputsLoopScanOutputkeysLoop(?int $tx_check_inputs_loop_scan_outputkeys_loop): static
    {
        if (is_null($tx_check_inputs_loop_scan_outputkeys_loop)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs_loop_scan_outputkeys_loop cannot be null');
        }
        $this->container['tx_check_inputs_loop_scan_outputkeys_loop'] = $tx_check_inputs_loop_scan_outputkeys_loop;

        return $this;
    }

    /**
     * Gets tx_check_inputs_loop_scan_outputkeys_loop_get_subitem
     *
     * @return int|null
     */
    public function getTxCheckInputsLoopScanOutputkeysLoopGetSubitem(): ?int
    {
        return $this->container['tx_check_inputs_loop_scan_outputkeys_loop_get_subitem'];
    }

    /**
     * Sets tx_check_inputs_loop_scan_outputkeys_loop_get_subitem
     *
     * @param int|null $tx_check_inputs_loop_scan_outputkeys_loop_get_subitem tx_check_inputs_loop_scan_outputkeys_loop_get_subitem
     *
     * @return $this
     */
    public function setTxCheckInputsLoopScanOutputkeysLoopGetSubitem(?int $tx_check_inputs_loop_scan_outputkeys_loop_get_subitem): static
    {
        if (is_null($tx_check_inputs_loop_scan_outputkeys_loop_get_subitem)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs_loop_scan_outputkeys_loop_get_subitem cannot be null');
        }
        $this->container['tx_check_inputs_loop_scan_outputkeys_loop_get_subitem'] = $tx_check_inputs_loop_scan_outputkeys_loop_get_subitem;

        return $this;
    }

    /**
     * Gets tx_check_inputs_loop_scan_outputkeys_loop_find_tx
     *
     * @return int|null
     */
    public function getTxCheckInputsLoopScanOutputkeysLoopFindTx(): ?int
    {
        return $this->container['tx_check_inputs_loop_scan_outputkeys_loop_find_tx'];
    }

    /**
     * Sets tx_check_inputs_loop_scan_outputkeys_loop_find_tx
     *
     * @param int|null $tx_check_inputs_loop_scan_outputkeys_loop_find_tx tx_check_inputs_loop_scan_outputkeys_loop_find_tx
     *
     * @return $this
     */
    public function setTxCheckInputsLoopScanOutputkeysLoopFindTx(?int $tx_check_inputs_loop_scan_outputkeys_loop_find_tx): static
    {
        if (is_null($tx_check_inputs_loop_scan_outputkeys_loop_find_tx)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs_loop_scan_outputkeys_loop_find_tx cannot be null');
        }
        $this->container['tx_check_inputs_loop_scan_outputkeys_loop_find_tx'] = $tx_check_inputs_loop_scan_outputkeys_loop_find_tx;

        return $this;
    }

    /**
     * Gets tx_check_inputs_loop_scan_outputkeys_loop_handle_output
     *
     * @return int|null
     */
    public function getTxCheckInputsLoopScanOutputkeysLoopHandleOutput(): ?int
    {
        return $this->container['tx_check_inputs_loop_scan_outputkeys_loop_handle_output'];
    }

    /**
     * Sets tx_check_inputs_loop_scan_outputkeys_loop_handle_output
     *
     * @param int|null $tx_check_inputs_loop_scan_outputkeys_loop_handle_output tx_check_inputs_loop_scan_outputkeys_loop_handle_output
     *
     * @return $this
     */
    public function setTxCheckInputsLoopScanOutputkeysLoopHandleOutput(?int $tx_check_inputs_loop_scan_outputkeys_loop_handle_output): static
    {
        if (is_null($tx_check_inputs_loop_scan_outputkeys_loop_handle_output)) {
            throw new InvalidArgumentException('non-nullable tx_check_inputs_loop_scan_outputkeys_loop_handle_output cannot be null');
        }
        $this->container['tx_check_inputs_loop_scan_outputkeys_loop_handle_output'] = $tx_check_inputs_loop_scan_outputkeys_loop_handle_output;

        return $this;
    }

    /**
     * Gets tx_mixin_count
     *
     * @return int|null
     */
    public function getTxMixinCount(): ?int
    {
        return $this->container['tx_mixin_count'];
    }

    /**
     * Sets tx_mixin_count
     *
     * @param int|null $tx_mixin_count tx_mixin_count
     *
     * @return $this
     */
    public function setTxMixinCount(?int $tx_mixin_count): static
    {
        if (is_null($tx_mixin_count)) {
            throw new InvalidArgumentException('non-nullable tx_mixin_count cannot be null');
        }
        $this->container['tx_mixin_count'] = $tx_mixin_count;

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

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

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

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

    /**
     * Serializes the object to a value that can be serialized natively by json_encode().
     * @link 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(): mixed
    {
       return ObjectSerializer::sanitizeForSerialization($this);
    }

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

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


