<?php

namespace HiEvents\DomainObjects\Generated;

/**
 * THIS FILE IS AUTOGENERATED - DO NOT EDIT IT DIRECTLY.
 * @package HiEvents\DomainObjects\Generated
 */
abstract class StripePayoutDomainObjectAbstract extends \HiEvents\DomainObjects\AbstractDomainObject
{
    final public const SINGULAR_NAME = 'stripe_payout';
    final public const PLURAL_NAME = 'stripe_payouts';
    final public const ID = 'id';
    final public const PAYOUT_ID = 'payout_id';
    final public const STRIPE_PLATFORM = 'stripe_platform';
    final public const AMOUNT_MINOR = 'amount_minor';
    final public const CURRENCY = 'currency';
    final public const PAYOUT_DATE = 'payout_date';
    final public const PAYOUT_STATUS = 'payout_status';
    final public const TOTAL_APPLICATION_FEE_VAT_MINOR = 'total_application_fee_vat_minor';
    final public const TOTAL_APPLICATION_FEE_NET_MINOR = 'total_application_fee_net_minor';
    final public const METADATA = 'metadata';
    final public const RECONCILED = 'reconciled';
    final public const CREATED_AT = 'created_at';
    final public const UPDATED_AT = 'updated_at';

    protected int $id;
    protected string $payout_id;
    protected ?string $stripe_platform = null;
    protected ?int $amount_minor = null;
    protected ?string $currency = null;
    protected ?string $payout_date = null;
    protected ?string $payout_status = null;
    protected ?int $total_application_fee_vat_minor = null;
    protected ?int $total_application_fee_net_minor = null;
    protected array|string|null $metadata = null;
    protected bool $reconciled = false;
    protected ?string $created_at = null;
    protected ?string $updated_at = null;

    public function toArray(): array
    {
        return [
                    'id' => $this->id ?? null,
                    'payout_id' => $this->payout_id ?? null,
                    'stripe_platform' => $this->stripe_platform ?? null,
                    'amount_minor' => $this->amount_minor ?? null,
                    'currency' => $this->currency ?? null,
                    'payout_date' => $this->payout_date ?? null,
                    'payout_status' => $this->payout_status ?? null,
                    'total_application_fee_vat_minor' => $this->total_application_fee_vat_minor ?? null,
                    'total_application_fee_net_minor' => $this->total_application_fee_net_minor ?? null,
                    'metadata' => $this->metadata ?? null,
                    'reconciled' => $this->reconciled ?? null,
                    'created_at' => $this->created_at ?? null,
                    'updated_at' => $this->updated_at ?? null,
                ];
    }

    public function setId(int $id): self
    {
        $this->id = $id;
        return $this;
    }

    public function getId(): int
    {
        return $this->id;
    }

    public function setPayoutId(string $payout_id): self
    {
        $this->payout_id = $payout_id;
        return $this;
    }

    public function getPayoutId(): string
    {
        return $this->payout_id;
    }

    public function setStripePlatform(?string $stripe_platform): self
    {
        $this->stripe_platform = $stripe_platform;
        return $this;
    }

    public function getStripePlatform(): ?string
    {
        return $this->stripe_platform;
    }

    public function setAmountMinor(?int $amount_minor): self
    {
        $this->amount_minor = $amount_minor;
        return $this;
    }

    public function getAmountMinor(): ?int
    {
        return $this->amount_minor;
    }

    public function setCurrency(?string $currency): self
    {
        $this->currency = $currency;
        return $this;
    }

    public function getCurrency(): ?string
    {
        return $this->currency;
    }

    public function setPayoutDate(?string $payout_date): self
    {
        $this->payout_date = $payout_date;
        return $this;
    }

    public function getPayoutDate(): ?string
    {
        return $this->payout_date;
    }

    public function setPayoutStatus(?string $payout_status): self
    {
        $this->payout_status = $payout_status;
        return $this;
    }

    public function getPayoutStatus(): ?string
    {
        return $this->payout_status;
    }

    public function setTotalApplicationFeeVatMinor(?int $total_application_fee_vat_minor): self
    {
        $this->total_application_fee_vat_minor = $total_application_fee_vat_minor;
        return $this;
    }

    public function getTotalApplicationFeeVatMinor(): ?int
    {
        return $this->total_application_fee_vat_minor;
    }

    public function setTotalApplicationFeeNetMinor(?int $total_application_fee_net_minor): self
    {
        $this->total_application_fee_net_minor = $total_application_fee_net_minor;
        return $this;
    }

    public function getTotalApplicationFeeNetMinor(): ?int
    {
        return $this->total_application_fee_net_minor;
    }

    public function setMetadata(array|string|null $metadata): self
    {
        $this->metadata = $metadata;
        return $this;
    }

    public function getMetadata(): array|string|null
    {
        return $this->metadata;
    }

    public function setReconciled(bool $reconciled): self
    {
        $this->reconciled = $reconciled;
        return $this;
    }

    public function getReconciled(): bool
    {
        return $this->reconciled;
    }

    public function setCreatedAt(?string $created_at): self
    {
        $this->created_at = $created_at;
        return $this;
    }

    public function getCreatedAt(): ?string
    {
        return $this->created_at;
    }

    public function setUpdatedAt(?string $updated_at): self
    {
        $this->updated_at = $updated_at;
        return $this;
    }

    public function getUpdatedAt(): ?string
    {
        return $this->updated_at;
    }
}
