<?php
/*
 * PagarmeCoreApiLib
 *
 * This file was automatically generated by APIMATIC v2.0 ( https://apimatic.io ).
 */

namespace PagarmeCoreApiLib\Models;

use JsonSerializable;

/**
 *Recipient response
 */
class GetRecipientManagingPartnersResponse implements JsonSerializable
{

    /**
     * Name
     * @required
     * @maps name
     * @var string $name public property
     */
    public $name;

    /**
     * Email
     * @required
     * @maps email
     * @var string $email public property
     */
    public $email;

    /**
     * Document
     * @required
     * @maps document
     * @var string $document public property
     */
    public $document;

    /**
     * Type
     * @required
     * @maps type
     * @var string $type public property
     */
    public $type;

    /**
     * Mother Name
     * @required
     * @maps mother_name
     * @var string $motherName public property
     */
    public $motherName;

    /**
     * Birthdate
     * @required
     * @maps birthdate
     * @var string $birthdate public property
     */
    public $birthdate;
    
    /**
     * Monthly Income
     * @required
     * @maps monthly_income
     * @var int $monthlyIncome public property
     */

    public $monthlyIncome;
    /**
     * Professional Occupation
     * @required
     * @maps professional_occupation
     * @var string $professionalOccupation public property
     */
    public $professionalOccupation;

    /**
     * Self Declared Representative
     * @required
     * @maps self_declared_representative
     * @var bool $selfDeclaredRepresentative public property
     */
    public $selfDeclaredRepresentative;

    /**
     * Address
     * @required
     * @maps address
     * @var \PagarmeCoreApiLib\Models\GetRecipientAddressResponse $address public property
     */
    public $address;

    /**
     * Phone Numbers
     * @required
     * @maps phone_numbers
     * @var \PagarmeCoreApiLib\Models\GetRecipientPhonesResponse[] $phoneNumbers public property
     */
    public $phoneNumbers;


    /**
     * Constructor to set initial or default values of member properties
     * @param string $name
     * @param string $email
     * @param string $document
     * @param string $type
     * @param string|null $motherName
     * @param string $birthdate
     * @param int $monthlyIncome
     * @param string $professionalOccupation
     * @param bool $selfDeclaredRepresentative
     * @param CreateRegisterInformationAddressRequest $address
     * @param CreateRegisterInformationPhoneRequest[] $phoneNumbers
     */
    public function __construct()
    {
        if (func_num_args() === 11) {
            $this->name                         = func_get_arg(0);
            $this->email                        = func_get_arg(1);
            $this->document                     = func_get_arg(2);
            $this->type                         = func_get_arg(3);
            $this->motherName                   = func_get_arg(4);
            $this->birthdate                    = func_get_arg(5);
            $this->monthlyIncome                = func_get_arg(6);
            $this->professionalOccupation       = func_get_arg(7);
            $this->selfDeclaredRepresentative   = func_get_arg(8);
            $this->address                      = func_get_arg(9);
            $this->phoneNumbers                 = func_get_arg(10);
        }
    }


    /**
     * Encode this object to JSON
     */
    #[\ReturnTypeWillChange]
    public function jsonSerialize()
    {
        $json = array();
        $json['name']                           = $this->name;
        $json['email']                          = $this->email;
        $json['document']                       = $this->document;
        $json['type']                           = $this->type;
        $json['mother_name']                    = $this->motherName;
        $json['birthdate']                      = $this->birthdate;
        $json['monthly_income']                 = $this->monthlyIncome;
        $json['professional_occupation']        = $this->professionalOccupation;
        $json['self_declared_representative']   = $this->selfDeclaredRepresentative;
        $json['address']                        = $this->address;
        $json['phone_numbers']                  = $this->phoneNumbers;

        return $json;
    }
}
