<?php

namespace App\Entities\PagSeguro\Share;

use App\Utils\Builder;

class PagSeguroPaymentMethodBuilder implements Builder {
	protected $type;
	protected $installments;
	protected $capture;
	protected $soft_descriptor;
	protected $card;
	protected $token_data;
	protected $authentication_method;
	protected $boleto;

	public function build(): PagSeguroPaymentMethod {

		$obj = new PagSeguroPaymentMethod();
		$obj->setType( $this->type );
		$obj->setInstallments( $this->installments );
		$obj->setCapture( $this->capture );
		$obj->setSoft_descriptor( $this->soft_descriptor );
		$obj->setCard( $this->card );
		$obj->setToken_data( $this->token_data );
		$obj->setAuthentication_method( $this->authentication_method );
		$obj->setBoleto( $this->boleto );

		return $obj;

	}

	/**
	 *
	 * @param mixed $type
	 */
	public function setType($type): PagSeguroPaymentMethodBuilder {

		$this->type = $type;
		return $this;

	}

	/**
	 *
	 * @param mixed $installments
	 */
	public function setInstallments($installments): PagSeguroPaymentMethodBuilder {

		$this->installments = $installments;
		return $this;

	}

	/**
	 *
	 * @param mixed $capture
	 */
	public function setCapture($capture): PagSeguroPaymentMethodBuilder {

		$this->capture = $capture;
		return $this;

	}

	/**
	 *
	 * @param mixed $soft_descriptor
	 */
	public function setSoft_descriptor($soft_descriptor): PagSeguroPaymentMethodBuilder {

		$this->soft_descriptor = $soft_descriptor;
		return $this;

	}

	/**
	 *
	 * @param mixed $card
	 */
	public function setCard($card): PagSeguroPaymentMethodBuilder {

		$this->card = $card;
		return $this;

	}

	/**
	 *
	 * @param mixed $token_data
	 */
	public function setToken_data($token_data): PagSeguroPaymentMethodBuilder {

		$this->token_data = $token_data;
		return $this;

	}

	/**
	 *
	 * @param mixed $authentication_method
	 */
	public function setAuthentication_method($authentication_method): PagSeguroPaymentMethodBuilder {

		$this->authentication_method = $authentication_method;
		return $this;

	}

	/**
	 *
	 * @param mixed $boleto
	 */
	public function setBoleto($boleto): PagSeguroPaymentMethodBuilder {

		$this->boleto = $boleto;
		return $this;

	}

}

