from bayesline.api._src.equity.report.covariance import (
    AsyncFactorCovarianceReportAccessorImpl,
    FactorCovarianceReportAccessorImpl,
    FactorCovarianceReportSettings,
)
from bayesline.api._src.equity.report.exposure import (
    AsyncExposureReportAccessorImpl,
    ExposureReportAccessorImpl,
    ExposureReportSettings,
)
from bayesline.api._src.equity.report.factor_stats import (
    AsyncFactorStatsReportAccessorImpl,
    FactorStatsReportAccessorImpl,
    FactorStatsReportSettings,
)
from bayesline.api._src.equity.report.idio import (
    AsyncIdioReportAccessorImpl,
    IdioReportAccessorImpl,
    IdioReportSettings,
)
from bayesline.api._src.equity.report.mcap_exposure import (
    AsyncMcapExposureReportAccessorImpl,
    McapExposureReportAccessorImpl,
    McapExposureReportSettings,
)
from bayesline.api._src.equity.report.portfolio_holdings import (
    AsyncPortfolioHoldingsReportAccessorImpl,
    PortfolioHoldingsReportAccessorImpl,
    PortfolioHoldingsReportSettings,
)
from bayesline.api._src.equity.report.portfolio_returns import (
    AsyncPortfolioReturnsReportAccessorImpl,
    PortfolioReturnsReportAccessorImpl,
    PortfolioReturnsReportSettings,
)
from bayesline.api._src.equity.report.return_attribution import (
    AsyncReturnAttributionReportAccessorImpl,
    ReturnAttributionReportAccessorImpl,
    ReturnAttributionReportSettings,
)
from bayesline.api._src.equity.report.universe import (
    AsyncUniverseCountReportAccessorImpl,
    UniverseCountReportAccessorImpl,
    UniverseCountReportSettings,
)
from bayesline.api._src.equity.report.weights import (
    AsyncWeightsReportAccessorImpl,
    WeightsReportAccessorImpl,
    WeightsReportSettings,
)
from bayesline.api._src.equity.report.xsr import (
    AsyncXSRReportAccessorImpl,
    XSRReportAccessorImpl,
    XSRReportSettings,
)

ACCESSOR_IMPLS = {
    UniverseCountReportSettings: UniverseCountReportAccessorImpl,
    ExposureReportSettings: ExposureReportAccessorImpl,
    FactorStatsReportSettings: FactorStatsReportAccessorImpl,
    FactorCovarianceReportSettings: FactorCovarianceReportAccessorImpl,
    PortfolioHoldingsReportSettings: PortfolioHoldingsReportAccessorImpl,
    PortfolioReturnsReportSettings: PortfolioReturnsReportAccessorImpl,
    ReturnAttributionReportSettings: ReturnAttributionReportAccessorImpl,
    XSRReportSettings: XSRReportAccessorImpl,
    IdioReportSettings: IdioReportAccessorImpl,
    McapExposureReportSettings: McapExposureReportAccessorImpl,
    WeightsReportSettings: WeightsReportAccessorImpl,
}
ASYNC_ACCESSOR_IMPLS = {
    UniverseCountReportSettings: AsyncUniverseCountReportAccessorImpl,
    ExposureReportSettings: AsyncExposureReportAccessorImpl,
    FactorStatsReportSettings: AsyncFactorStatsReportAccessorImpl,
    FactorCovarianceReportSettings: AsyncFactorCovarianceReportAccessorImpl,
    PortfolioHoldingsReportSettings: AsyncPortfolioHoldingsReportAccessorImpl,
    PortfolioReturnsReportSettings: AsyncPortfolioReturnsReportAccessorImpl,
    ReturnAttributionReportSettings: AsyncReturnAttributionReportAccessorImpl,
    XSRReportSettings: AsyncXSRReportAccessorImpl,
    IdioReportSettings: AsyncIdioReportAccessorImpl,
    McapExposureReportSettings: AsyncMcapExposureReportAccessorImpl,
    WeightsReportSettings: AsyncWeightsReportAccessorImpl,
}
