<?php

declare(strict_types=1);

namespace ApiModel\Domain\Repository;

interface PayrollRepositoryInterface
{
    public function findById(string $id): ?array;

    /** @return list<array<string, mixed>> */
    public function listByCompany(string $companyId): array;

    public function insert(array $payroll): void;

    public function update(string $id, array $payroll): void;

    public function delete(string $id): void;

    /** @return list<array<string, mixed>> */
    public function findLinesByPayrollId(string $payrollId): array;

    public function insertLines(string $payrollId, array $lines): void;

    public function deleteLines(string $payrollId): void;

    public function updateStatus(string $id, string $status, ?string $journalEntryId): void;
}
