The base class for all value objects and structs.
    
        Supports read-only properties by marking them as protected.
In this case they will only be writable using constructor, and need to be documented
using @property-read <type> <$var> annotation in class doc in addition to inline property doc.
Writable properties must be public and must be documented inline.
    
                    
    
    
    
    
        Methods
            
    Construct object optionally with a set of properties.
    
        
            
                | 
                    
                 | 
                
                    
                        public __construct([string|null $identifier = null ][, string|null $type = null ][, int|null $priority = null ][, bool|null $isEnabled = null ][, User|null $user = null ][, DiscountRuleInterface|null $rule = null ][, DateTimeInterface|null $startDate = null ][, array<string|int, DiscountConditionInterface> $conditions = [] ][, array<string|int, DiscountTranslationStruct> $translations = [] ][, DateTimeInterface|null $endDate = null ][, DateTimeInterface|null $createdAt = null ][, DateTimeInterface|null $updatedAt = null ][, MapInterface<string, mixed>|null $context = null ]) 
                     
                 | 
            
        
    
 
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $identifier
                     | 
                    
                        string|null
                     | 
                    
                                                                                    null
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $type
                     | 
                    
                        string|null
                     | 
                    
                                                                                    null
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $priority
                     | 
                    
                        int|null
                     | 
                    
                                                                                    null
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $isEnabled
                     | 
                    
                        bool|null
                     | 
                    
                                                                                    null
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $user
                     | 
                    
                        User|null
                     | 
                    
                                                                                    null
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $rule
                     | 
                    
                        DiscountRuleInterface|null
                     | 
                    
                                                                                    null
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $startDate
                     | 
                    
                        DateTimeInterface|null
                     | 
                    
                                                                                    null
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $conditions
                     | 
                    
                        array<string|int, DiscountConditionInterface>
                     | 
                    
                                                                                    []
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $translations
                     | 
                    
                        array<string|int, DiscountTranslationStruct>
                     | 
                    
                                                                                    []
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $endDate
                     | 
                    
                        DateTimeInterface|null
                     | 
                    
                                                                                    null
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $createdAt
                     | 
                    
                        DateTimeInterface|null
                     | 
                    
                                                                                    null
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $updatedAt
                     | 
                    
                        DateTimeInterface|null
                     | 
                    
                                                                                    null
                                                                         | 
                    
                                                    -
                                             | 
                
                            
                    | 
                        $context
                     | 
                    
                        MapInterface<string, mixed>|null
                     | 
                    
                                                                                    null
                                                                         | 
                    
                                                    -
                                             | 
                
                    
    
                    
            
    
    Parameters
    
    Return values
    $this
                        
            
    
    Return values
    array<string|int, DiscountConditionInterface>
                        
            
    Returns the discount context.
    
    
        The context is a set of key-value pairs that can be used to store additional information about the discount.
    
    Return values
    MapInterface<string, mixed>|null
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public getCreatedAt() : DateTimeInterface|null 
                     
                 | 
            
        
    
 
    
    Return values
    DateTimeInterface|null
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public getEndDate() : DateTimeInterface|null 
                     
                 | 
            
        
    
 
    
    Return values
    DateTimeInterface|null
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public getIdentifier() : string|null 
                     
                 | 
            
        
    
 
    
    Return values
    string|null
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public getPriority() : int|null 
                     
                 | 
            
        
    
 
    
    Return values
    int|null
                        
            
    
    Return values
    DiscountRuleInterface|null
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public getStartDate() : DateTimeInterface|null 
                     
                 | 
            
        
    
 
    
    Return values
    DateTimeInterface|null
                        
            
    
    Return values
    array<string|int, DiscountTranslationStruct>
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public getType() : string|null 
                     
                 | 
            
        
    
 
    
    Return values
    string|null
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public getUpdatedAt() : DateTimeInterface|null 
                     
                 | 
            
        
    
 
    
    Return values
    DateTimeInterface|null
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public getUser() : User|null 
                     
                 | 
            
        
    
 
    
    Return values
    User|null
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public isEnabled() : bool|null 
                     
                 | 
            
        
    
 
    
    Return values
    bool|null
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public setConditions(array<string|int, mixed> $conditions) : $this 
                     
                 | 
            
        
    
 
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $conditions
                     | 
                    
                        array<string|int, mixed>
                     | 
                    
                                                    -
                                             | 
                    
                                                    -
                                             | 
                
                    
    
    Return values
    $this
                        
            
    Sets the discount context.
    
    
        The context is a set of key-value pairs that can be used to store additional information about the discount.
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $context
                     | 
                    
                        MapInterface|null
                     | 
                    
                                                    -
                                             | 
                    
                                                    -
                                             | 
                
                    
    
    Return values
    self
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public setCreatedAt(DateTimeInterface|null $createdAt) : $this 
                     
                 | 
            
        
    
 
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $createdAt
                     | 
                    
                        DateTimeInterface|null
                     | 
                    
                                                    -
                                             | 
                    
                                                    -
                                             | 
                
                    
    
    Return values
    $this
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public setEnabled(bool $isEnabled) : $this 
                     
                 | 
            
        
    
 
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $isEnabled
                     | 
                    
                        bool
                     | 
                    
                                                    -
                                             | 
                    
                                                    -
                                             | 
                
                    
    
    Return values
    $this
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public setEndDate(DateTimeInterface|null $endDate) : $this 
                     
                 | 
            
        
    
 
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $endDate
                     | 
                    
                        DateTimeInterface|null
                     | 
                    
                                                    -
                                             | 
                    
                                                    -
                                             | 
                
                    
    
    Return values
    $this
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public setIdentifier(string $identifier) : $this 
                     
                 | 
            
        
    
 
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $identifier
                     | 
                    
                        string
                     | 
                    
                                                    -
                                             | 
                    
                                                    -
                                             | 
                
                    
    
    Return values
    $this
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public setPriority(int $priority) : $this 
                     
                 | 
            
        
    
 
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $priority
                     | 
                    
                        int
                     | 
                    
                                                    -
                                             | 
                    
                                                    -
                                             | 
                
                    
    
    Return values
    $this
                        
            
    
    Parameters
    
    Return values
    $this
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public setStartDate(DateTimeInterface $startDate) : $this 
                     
                 | 
            
        
    
 
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $startDate
                     | 
                    
                        DateTimeInterface
                     | 
                    
                                                    -
                                             | 
                    
                                                    -
                                             | 
                
                    
    
    Return values
    $this
                        
            
    
    Parameters
    
    Return values
    $this
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public setType(string $type) : $this 
                     
                 | 
            
        
    
 
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $type
                     | 
                    
                        string
                     | 
                    
                                                    -
                                             | 
                    
                                                    -
                                             | 
                
                    
    
    Return values
    $this
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public setUpdatedAt(DateTimeInterface|null $updatedAt) : $this 
                     
                 | 
            
        
    
 
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $updatedAt
                     | 
                    
                        DateTimeInterface|null
                     | 
                    
                                                    -
                                             | 
                    
                                                    -
                                             | 
                
                    
    
    Return values
    $this
                        
            
    
        
            
                | 
                    
                 | 
                
                    
                        public setUser(User $user) : $this 
                     
                 | 
            
        
    
 
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $user
                     | 
                    
                        User
                     | 
                    
                                                    -
                                             | 
                    
                                                    -
                                             | 
                
                    
    
    Return values
    $this
                        
            
    Returns list of available properties' names.
    
        
            
                | 
                    
                 | 
                
                    
                        protected getProperties([array<int, string> $dynamicProperties = [] ]) : array<int, string> 
                     
                 | 
            
        
    
 
    
    
        Override to add dynamic properties.
    
    Parameters
    
        
            
                | Name | 
                Type | 
                Default value | 
                Description | 
            
        
        
                            
                    | 
                        $dynamicProperties
                     | 
                    
                        array<int, string>
                     | 
                    
                                                                                    []
                                                                         | 
                    
                                                        
         Additional dynamic properties exposed on the object 
    
                                             | 
                
                    
    
    Return values
    array<int, string>