<?php

declare(strict_types=1);

namespace Autogedal\PromoRules\Api\Data;

/**
 * Contract for guest email usage tracking for promo rules.
 */
interface RuleUsageInterface
{
    public const USAGE_ID = 'usage_id';
    public const RULE_ID = 'rule_id';
    public const COUPON_ID = 'coupon_id';
    public const NORMALIZED_EMAIL = 'normalized_email';
    public const TIMES_USED = 'times_used';
    public const CREATED_AT = 'created_at';
    public const UPDATED_AT = 'updated_at';

    public function getUsageId(): ?int;

    public function setUsageId(?int $usageId): self;

    public function getRuleId(): ?int;

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

    public function getCouponId(): ?int;

    public function setCouponId(?int $couponId): self;

    public function getNormalizedEmail(): string;

    public function setNormalizedEmail(string $normalizedEmail): self;

    public function getTimesUsed(): int;

    public function setTimesUsed(int $timesUsed): self;

    public function getCreatedAt(): ?string;

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

    public function getUpdatedAt(): ?string;

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