<?php

declare(strict_types=1);

namespace Autogedal\PromoRules\Api\Data;

/**
 * Contract for persisted promo-rule configuration.
 */
interface RuleConfigInterface
{
    public const CONFIG_ID = 'config_id';
    public const RULE_ID = 'rule_id';
    public const USES_PER_EMAIL = 'uses_per_email';
    public const RESTRICT_ONCE_PER_EMAIL = 'restrict_once_per_email';
    public const BLOCK_DISCOUNT_SCOPE = 'block_discount_scope';
    public const ADDITIONAL_POLICY_FLAGS = 'additional_policy_flags';
    public const CREATED_AT = 'created_at';
    public const UPDATED_AT = 'updated_at';

    public function getConfigId(): ?int;

    public function setConfigId(?int $configId): self;

    public function getRuleId(): ?int;

    public function setRuleId(?int $ruleId): self;

    public function getUsesPerEmail(): int;

    public function setUsesPerEmail(int $usesPerEmail): self;

    public function getBlockDiscountScope(): string;

    public function setBlockDiscountScope(string $blockDiscountScope): self;

    public function getAdditionalPolicyFlags(): ?string;

    public function setAdditionalPolicyFlags(?string $additionalPolicyFlags): self;

    public function getCreatedAt(): ?string;

    public function setCreatedAt(?string $createdAt): self;

    public function getUpdatedAt(): ?string;

    public function setUpdatedAt(?string $updatedAt): self;
}
