<?php

namespace DoctrineProxies\__CG__\App\Robot\Domains\Entities;


/**
 * DO NOT EDIT THIS FILE - IT WAS CREATED BY DOCTRINE'S PROXY GENERATOR
 */
class Robot extends \App\Robot\Domains\Entities\Robot implements \Doctrine\ORM\Proxy\Proxy
{
    /**
     * @var \Closure the callback responsible for loading properties in the proxy object. This callback is called with
     *      three parameters, being respectively the proxy object to be initialized, the method that triggered the
     *      initialization process and an array of ordered parameters that were passed to that method.
     *
     * @see \Doctrine\Common\Proxy\Proxy::__setInitializer
     */
    public $__initializer__;

    /**
     * @var \Closure the callback responsible of loading properties that need to be copied in the cloned object
     *
     * @see \Doctrine\Common\Proxy\Proxy::__setCloner
     */
    public $__cloner__;

    /**
     * @var boolean flag indicating if this object was already initialized
     *
     * @see \Doctrine\Persistence\Proxy::__isInitialized
     */
    public $__isInitialized__ = false;

    /**
     * @var array<string, null> properties to be lazy loaded, indexed by property name
     */
    public static $lazyPropertiesNames = array (
);

    /**
     * @var array<string, mixed> default values of properties to be lazy loaded, with keys being the property names
     *
     * @see \Doctrine\Common\Proxy\Proxy::__getLazyProperties
     */
    public static $lazyPropertiesDefaults = array (
);



    public function __construct(?\Closure $initializer = null, ?\Closure $cloner = null)
    {

        $this->__initializer__ = $initializer;
        $this->__cloner__      = $cloner;
    }







    /**
     * 
     * @return array
     */
    public function __sleep()
    {
        if ($this->__isInitialized__) {
            return ['__isInitialized__', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'id', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'name', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'logoUrl', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'serverUrl', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'prompt', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'openingRemarks', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'actions', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'createdAt', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'updatedAt', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'apiKeyAuthenticationKey', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'apiKeyAuthenticationSecret', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'difyRobotId', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'difyRobotToken', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'difyDatasetsId', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'type', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'description', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'assistantId', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'websites', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'codeInterpreterEnabled', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'knowledgeBaseDocuments', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'authenticationType', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'usernameAuthenticationUsernameParam', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'codeInterpreterPrompt', 'robotRepository'];
        }

        return ['__isInitialized__', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'id', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'name', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'logoUrl', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'serverUrl', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'prompt', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'openingRemarks', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'actions', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'createdAt', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'updatedAt', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'apiKeyAuthenticationKey', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'apiKeyAuthenticationSecret', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'difyRobotId', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'difyRobotToken', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'difyDatasetsId', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'type', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'description', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'assistantId', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'websites', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'codeInterpreterEnabled', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'knowledgeBaseDocuments', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'authenticationType', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'usernameAuthenticationUsernameParam', '' . "\0" . 'App\\Robot\\Domains\\Entities\\Robot' . "\0" . 'codeInterpreterPrompt', 'robotRepository'];
    }

    /**
     * 
     */
    public function __wakeup()
    {
        if ( ! $this->__isInitialized__) {
            $this->__initializer__ = function (Robot $proxy) {
                $proxy->__setInitializer(null);
                $proxy->__setCloner(null);

                $existingProperties = get_object_vars($proxy);

                foreach ($proxy::$lazyPropertiesDefaults as $property => $defaultValue) {
                    if ( ! array_key_exists($property, $existingProperties)) {
                        $proxy->$property = $defaultValue;
                    }
                }
            };

        }
    }

    /**
     * 
     */
    public function __clone()
    {
        $this->__cloner__ && $this->__cloner__->__invoke($this, '__clone', []);
    }

    /**
     * Forces initialization of the proxy
     */
    public function __load(): void
    {
        $this->__initializer__ && $this->__initializer__->__invoke($this, '__load', []);
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __isInitialized(): bool
    {
        return $this->__isInitialized__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setInitialized($initialized): void
    {
        $this->__isInitialized__ = $initialized;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setInitializer(?\Closure $initializer = null): void
    {
        $this->__initializer__ = $initializer;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __getInitializer(): ?\Closure
    {
        return $this->__initializer__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     */
    public function __setCloner(?\Closure $cloner = null): void
    {
        $this->__cloner__ = $cloner;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific cloning logic
     */
    public function __getCloner(): ?\Closure
    {
        return $this->__cloner__;
    }

    /**
     * {@inheritDoc}
     * @internal generated method: use only when explicitly handling proxy specific loading logic
     * @deprecated no longer in use - generated code now relies on internal components rather than generated public API
     * @static
     */
    public function __getLazyProperties(): array
    {
        return self::$lazyPropertiesDefaults;
    }

    
    /**
     * {@inheritDoc}
     */
    public function edit(\App\Robot\Domains\CQE\EditRobotCommand $command): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'edit', [$command]);

        return parent::edit($command);
    }

    /**
     * {@inheritDoc}
     */
    public function submit(): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'submit', []);

        return parent::submit();
    }

    /**
     * {@inheritDoc}
     */
    public function delete(): void
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'delete', []);

        parent::delete();
    }

    /**
     * {@inheritDoc}
     */
    public function getId(): int
    {
        if ($this->__isInitialized__ === false) {
            return (int)  parent::getId();
        }


        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getId', []);

        return parent::getId();
    }

    /**
     * {@inheritDoc}
     */
    public function setId(int $id): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setId', [$id]);

        return parent::setId($id);
    }

    /**
     * {@inheritDoc}
     */
    public function getName(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getName', []);

        return parent::getName();
    }

    /**
     * {@inheritDoc}
     */
    public function setName(string $name): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setName', [$name]);

        return parent::setName($name);
    }

    /**
     * {@inheritDoc}
     */
    public function getLogoUrl(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getLogoUrl', []);

        return parent::getLogoUrl();
    }

    /**
     * {@inheritDoc}
     */
    public function setLogoUrl(string $logoUrl): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setLogoUrl', [$logoUrl]);

        return parent::setLogoUrl($logoUrl);
    }

    /**
     * {@inheritDoc}
     */
    public function getPrompt(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getPrompt', []);

        return parent::getPrompt();
    }

    /**
     * {@inheritDoc}
     */
    public function setPrompt(string $prompt): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setPrompt', [$prompt]);

        return parent::setPrompt($prompt);
    }

    /**
     * {@inheritDoc}
     */
    public function getOpeningRemarks(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getOpeningRemarks', []);

        return parent::getOpeningRemarks();
    }

    /**
     * {@inheritDoc}
     */
    public function setOpeningRemarks(?string $openingRemarks): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setOpeningRemarks', [$openingRemarks]);

        return parent::setOpeningRemarks($openingRemarks);
    }

    /**
     * {@inheritDoc}
     */
    public function getServerUrl(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getServerUrl', []);

        return parent::getServerUrl();
    }

    /**
     * {@inheritDoc}
     */
    public function setServerUrl(string $serverUrl): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setServerUrl', [$serverUrl]);

        return parent::setServerUrl($serverUrl);
    }

    /**
     * {@inheritDoc}
     */
    public function getCreatedAt(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getCreatedAt', []);

        return parent::getCreatedAt();
    }

    /**
     * {@inheritDoc}
     */
    public function setCreatedAt(): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setCreatedAt', []);

        return parent::setCreatedAt();
    }

    /**
     * {@inheritDoc}
     */
    public function getUpdatedAt(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUpdatedAt', []);

        return parent::getUpdatedAt();
    }

    /**
     * {@inheritDoc}
     */
    public function setUpdatedAt(): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUpdatedAt', []);

        return parent::setUpdatedAt();
    }

    /**
     * {@inheritDoc}
     */
    public function getActions(): ?\Doctrine\Common\Collections\Collection
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getActions', []);

        return parent::getActions();
    }

    /**
     * {@inheritDoc}
     */
    public function setActions(?\Doctrine\Common\Collections\Collection $actions): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setActions', [$actions]);

        return parent::setActions($actions);
    }

    /**
     * {@inheritDoc}
     */
    public function getApiKeyAuthenticationKey(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getApiKeyAuthenticationKey', []);

        return parent::getApiKeyAuthenticationKey();
    }

    /**
     * {@inheritDoc}
     */
    public function setApiKeyAuthenticationKey(string $apiKeyAuthenticationKey): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setApiKeyAuthenticationKey', [$apiKeyAuthenticationKey]);

        return parent::setApiKeyAuthenticationKey($apiKeyAuthenticationKey);
    }

    /**
     * {@inheritDoc}
     */
    public function getApiKeyAuthenticationSecret(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getApiKeyAuthenticationSecret', []);

        return parent::getApiKeyAuthenticationSecret();
    }

    /**
     * {@inheritDoc}
     */
    public function setApiKeyAuthenticationSecret(string $apiKeyAuthenticationSecret): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setApiKeyAuthenticationSecret', [$apiKeyAuthenticationSecret]);

        return parent::setApiKeyAuthenticationSecret($apiKeyAuthenticationSecret);
    }

    /**
     * {@inheritDoc}
     */
    public function getKnowledgeBaseDocuments(): ?\Doctrine\Common\Collections\Collection
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getKnowledgeBaseDocuments', []);

        return parent::getKnowledgeBaseDocuments();
    }

    /**
     * {@inheritDoc}
     */
    public function setKnowledgeBaseDocuments(?\Doctrine\Common\Collections\Collection $knowledgeBaseDocuments): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setKnowledgeBaseDocuments', [$knowledgeBaseDocuments]);

        return parent::setKnowledgeBaseDocuments($knowledgeBaseDocuments);
    }

    /**
     * {@inheritDoc}
     */
    public function getDifyRobotId(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDifyRobotId', []);

        return parent::getDifyRobotId();
    }

    /**
     * {@inheritDoc}
     */
    public function setDifyRobotId(?string $difyRobotId): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDifyRobotId', [$difyRobotId]);

        return parent::setDifyRobotId($difyRobotId);
    }

    /**
     * {@inheritDoc}
     */
    public function getDifyRobotToken(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDifyRobotToken', []);

        return parent::getDifyRobotToken();
    }

    /**
     * {@inheritDoc}
     */
    public function setDifyRobotToken(?string $difyRobotToken): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDifyRobotToken', [$difyRobotToken]);

        return parent::setDifyRobotToken($difyRobotToken);
    }

    /**
     * {@inheritDoc}
     */
    public function getDifyDatasetsId(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDifyDatasetsId', []);

        return parent::getDifyDatasetsId();
    }

    /**
     * {@inheritDoc}
     */
    public function setDifyDatasetsId(?string $difyDatasetsId): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDifyDatasetsId', [$difyDatasetsId]);

        return parent::setDifyDatasetsId($difyDatasetsId);
    }

    /**
     * {@inheritDoc}
     */
    public function getType(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getType', []);

        return parent::getType();
    }

    /**
     * {@inheritDoc}
     */
    public function setType(?string $type): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setType', [$type]);

        return parent::setType($type);
    }

    /**
     * {@inheritDoc}
     */
    public function getDescription(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getDescription', []);

        return parent::getDescription();
    }

    /**
     * {@inheritDoc}
     */
    public function setDescription(?string $description): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setDescription', [$description]);

        return parent::setDescription($description);
    }

    /**
     * {@inheritDoc}
     */
    public function getAssistantId(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getAssistantId', []);

        return parent::getAssistantId();
    }

    /**
     * {@inheritDoc}
     */
    public function setAssistantId(?string $assistantId): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setAssistantId', [$assistantId]);

        return parent::setAssistantId($assistantId);
    }

    /**
     * {@inheritDoc}
     */
    public function isCodeInterpreterEnabled(): bool
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'isCodeInterpreterEnabled', []);

        return parent::isCodeInterpreterEnabled();
    }

    /**
     * {@inheritDoc}
     */
    public function setCodeInterpreterEnabled(bool $codeInterpreterEnabled): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setCodeInterpreterEnabled', [$codeInterpreterEnabled]);

        return parent::setCodeInterpreterEnabled($codeInterpreterEnabled);
    }

    /**
     * {@inheritDoc}
     */
    public function getWebsites(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getWebsites', []);

        return parent::getWebsites();
    }

    /**
     * {@inheritDoc}
     */
    public function setWebsites(?string $websites): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setWebsites', [$websites]);

        return parent::setWebsites($websites);
    }

    /**
     * {@inheritDoc}
     */
    public function getAuthenticationType(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getAuthenticationType', []);

        return parent::getAuthenticationType();
    }

    /**
     * {@inheritDoc}
     */
    public function setAuthenticationType(string $authenticationType): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setAuthenticationType', [$authenticationType]);

        return parent::setAuthenticationType($authenticationType);
    }

    /**
     * {@inheritDoc}
     */
    public function getUsernameAuthenticationUsernameParam(): string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getUsernameAuthenticationUsernameParam', []);

        return parent::getUsernameAuthenticationUsernameParam();
    }

    /**
     * {@inheritDoc}
     */
    public function setUsernameAuthenticationUsernameParam(string $usernameAuthenticationUsernameParam): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUsernameAuthenticationUsernameParam', [$usernameAuthenticationUsernameParam]);

        return parent::setUsernameAuthenticationUsernameParam($usernameAuthenticationUsernameParam);
    }

    /**
     * {@inheritDoc}
     */
    public function getCodeInterpreterPrompt(): ?string
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'getCodeInterpreterPrompt', []);

        return parent::getCodeInterpreterPrompt();
    }

    /**
     * {@inheritDoc}
     */
    public function setCodeInterpreterPrompt(?string $codeInterpreterPrompt): \App\Robot\Domains\Entities\Robot
    {

        $this->__initializer__ && $this->__initializer__->__invoke($this, 'setCodeInterpreterPrompt', [$codeInterpreterPrompt]);

        return parent::setCodeInterpreterPrompt($codeInterpreterPrompt);
    }

}
