<?php

declare(strict_types=1);

namespace CpCreation\VitiCore\Cart\Model\Payment;

use Symfony\Component\Validator\Constraints as Assert;

final class StripeModel
{
    use EstimatedTransactionFeeTrait;

    #[Assert\NotBlank]
    private ?string $name = null;

    private ?string $subtitle = null;

    #[Assert\NotBlank]
    private ?string $secretKey = null;

    private ?string $publishableKey = null;

    #[Assert\NotBlank]
    private ?string $webhookSecret = null;

    private bool $refundCreditNoteDirectly = true;

    public function getName(): ?string
    {
        return $this->name;
    }

    public function setName(string $name): void
    {
        $this->name = $name;
    }

    public function getSubtitle(): ?string
    {
        return $this->subtitle;
    }

    public function setSubtitle(?string $subtitle): void
    {
        $this->subtitle = $subtitle;
    }

    public function getSecretKey(): ?string
    {
        return $this->secretKey;
    }

    public function setSecretKey(string $secretKey): void
    {
        $this->secretKey = $secretKey;
    }

    public function getPublishableKey(): ?string
    {
        return $this->publishableKey;
    }

    public function setPublishableKey(?string $publishableKey): void
    {
        $this->publishableKey = $publishableKey;
    }

    public function getWebhookSecret(): ?string
    {
        return $this->webhookSecret;
    }

    public function setWebhookSecret(?string $webhookSecret): void
    {
        $this->webhookSecret = $webhookSecret;
    }

    public function isRefundCreditNoteDirectly(): bool
    {
        return $this->refundCreditNoteDirectly;
    }

    public function setRefundCreditNoteDirectly(bool $refundCreditNoteDirectly): void
    {
        $this->refundCreditNoteDirectly = $refundCreditNoteDirectly;
    }
}
