namespace BudgetApp.Domain.Interfaces;

using BudgetApp.Domain.Models;

/// <summary>
/// Repository interface for ledger persistence operations.
/// </summary>
public interface ILedgerRepository
{
    Task<Ledger?> GetByIdAsync(Guid id);
    Task<Ledger> GetOrCreateAsync();
    Task SaveAsync(Ledger ledger);
    Task<LedgerEntry?> GetEntryByIdAsync(Guid entryId);
    Task<IEnumerable<LedgerEntry>> GetAllEntriesAsync();
    Task SaveEntryAsync(LedgerEntry entry);
    Task DeleteEntryAsync(Guid entryId);
}

