"""Convenience re-exports for `fuggers_py.bonds`."""

from __future__ import annotations

from .cashflows import (
    AccruedInterestCalculator,
    AccruedInterestInputs,
    CashFlowGenerator,
    Schedule,
    ScheduleConfig,
    SettlementCalculator,
)
from .conventions import BondConventionRegistry, BondConventions, BondConventionsBuilder, BondMarket
from .curve_instruments import GovernmentCouponBond, GovernmentZeroCoupon, MarketConvention, day_count_factor
from .indices import (
    ArrearConvention,
    BondIndex,
    IndexConventions,
    IndexFixing,
    IndexFixingStore,
    IndexSource,
    LockoutDays,
    LookbackDays,
    ObservationShiftType,
    OvernightCompounding,
    PublicationTime,
    ShiftType,
)
from .errors import *  # noqa: F403
from .instruments import (
    AccelerationOption,
    CallEntry,
    CallSchedule,
    CallType,
    CallableBond,
    CallableBondBuilder,
    EmbeddedOptionBond,
    FixedBond,
    FixedBondBuilder,
    FixedRateBond,
    FixedRateBondBuilder,
    FloatingRateNote,
    FloatingRateNoteBuilder,
    SinkingFundBond,
    SinkingFundBondBuilder,
    SinkingFundEntry,
    SinkingFundPayment,
    SinkingFundSchedule,
    ZeroCouponBond,
)
from .options import BinomialTree, BondOption, ExerciseStyle, HullWhite, HullWhiteModel, ModelError, OptionType, ShortRateModel
from .pricing import BondPricer, BondResult, PriceResult, StandardYieldEngine, YieldResult
from .risk import DurationResult, RiskMetrics
from .traits import (
    AmortizingBond,
    Bond,
    BondAnalytics,
    BondCashFlow,
    CashFlowType,
    FixedCouponBond,
    FloatingCouponBond,
    InflationLinkedBond,
)
from .types import *  # noqa: F403
from .yields import YieldSolver, current_yield, current_yield_from_bond

__all__ = [
    # Errors (from .errors)
    "BondError",
    "IdentifierError",
    "InvalidIdentifier",
    "InvalidBondSpec",
    "MissingRequiredField",
    "BondPricingError",
    "YieldConvergenceFailed",
    "ScheduleError",
    "SettlementError",
    # Indices
    "ArrearConvention",
    "BondIndex",
    "IndexConventions",
    "IndexFixing",
    "IndexFixingStore",
    "IndexSource",
    "LockoutDays",
    "LookbackDays",
    "ObservationShiftType",
    "OvernightCompounding",
    "PublicationTime",
    "ShiftType",
    # Types (from .types)
    "BondType",
    "Isin",
    "Cusip",
    "Sedol",
    "Figi",
    "BondIdentifiers",
    "CalendarId",
    "TenorUnit",
    "Tenor",
    "PriceQuoteConvention",
    "PriceQuote",
    "RateIndex",
    "AmortizationEntry",
    "AmortizationSchedule",
    "AmortizationType",
    "YieldConvention",
    "AccruedConvention",
    "RoundingKind",
    "RoundingConvention",
    "YieldCalculationRules",
    "CompoundingKind",
    "CompoundingMethod",
    "SettlementAdjustment",
    "SettlementRules",
    "StubType",
    "StubPeriodRules",
    "ExDividendRules",
    "PutEntry",
    "PutSchedule",
    "PutType",
    "SOFRConvention",
    "InflationIndexType",
    "CreditRating",
    "RatingInfo",
    "Sector",
    "SectorInfo",
    "Seniority",
    "SeniorityInfo",
    # Traits / cashflows
    "CashFlowType",
    "BondCashFlow",
    "Bond",
    "BondAnalytics",
    "AmortizingBond",
    "FixedCouponBond",
    "FloatingCouponBond",
    "InflationLinkedBond",
    "ScheduleConfig",
    "Schedule",
    "CashFlowGenerator",
    "AccruedInterestInputs",
    "AccruedInterestCalculator",
    "SettlementCalculator",
    "MarketConvention",
    "day_count_factor",
    # Instruments
    "FixedBond",
    "FixedBondBuilder",
    "GovernmentZeroCoupon",
    "GovernmentCouponBond",
    "CallEntry",
    "CallSchedule",
    "CallType",
    "AccelerationOption",
    "CallableBond",
    "CallableBondBuilder",
    "EmbeddedOptionBond",
    "FloatingRateNote",
    "FloatingRateNoteBuilder",
    "FixedRateBond",
    "FixedRateBondBuilder",
    "SinkingFundBond",
    "SinkingFundBondBuilder",
    "SinkingFundEntry",
    "SinkingFundPayment",
    "SinkingFundSchedule",
    "ZeroCouponBond",
    # Options/models
    "BinomialTree",
    "BondOption",
    "ExerciseStyle",
    "HullWhite",
    "HullWhiteModel",
    "ModelError",
    "OptionType",
    "ShortRateModel",
    # Pricing
    "StandardYieldEngine",
    "BondPricer",
    "PriceResult",
    "BondResult",
    "YieldResult",
    "YieldSolver",
    "current_yield",
    "current_yield_from_bond",
    # Risk
    "RiskMetrics",
    "DurationResult",
    # Conventions
    "BondConventionRegistry",
    "BondConventions",
    "BondConventionsBuilder",
    "BondMarket",
]
