namespace CashLineERP.Application.Reporting;

public interface ICoreReportingRepository
{
    CoreFinanceReportView GetCoreFinanceReport(DateOnly? dateFrom, DateOnly? dateTo);

    CoreOperationsReportView GetCoreOperationsReport(DateOnly? dateFrom, DateOnly? dateTo);

    IslamicFinancePipelineReportView GetIslamicFinancePipelineReport(DateOnly? dateFrom, DateOnly? dateTo, long? partnerLenderId = null);

    FinanceStakeholderSummaryReportView GetFinanceStakeholderSummaryReport(DateOnly? dateFrom, DateOnly? dateTo);

    FinanceStakeholderDetailReportView GetFinanceStakeholderDetailReport(string stakeholderType, long stakeholderId, string currencyCode, DateOnly? dateFrom, DateOnly? dateTo);

    FinancialStatementReportView GetFinancialStatementReport(string statementCode, DateOnly? dateFrom, DateOnly? dateTo, DateOnly? asOfDate);

    AgingReportView GetAccountsPayableAgingReport(DateOnly? asOfDate);

    AgingReportView GetAccountsReceivableAgingReport(DateOnly? asOfDate);

    IReadOnlyCollection<ReportingSnapshotSummaryView> GetReportingSnapshots(string? reportCode = null);

    ReportingSnapshotDetailView? GetReportingSnapshot(long reportingSnapshotId);

    ReportingSnapshotDetailView CreateReportingSnapshot(long actorUserId, CreateReportingSnapshotCommand command);
}
