"""Core PINN building blocks."""

from anypinn.core.config import (
    AdamConfig,
    CosineAnnealingConfig,
    EarlyStoppingConfig,
    GenerationConfig,
    IngestionConfig,
    LBFGSConfig,
    MLPConfig,
    PINNHyperparameters,
    ReduceLROnPlateauConfig,
    ScalarConfig,
    SMMAStoppingConfig,
    TrainingDataConfig,
)
from anypinn.core.context import InferredContext
from anypinn.core.dataset import DataCallback, PINNDataModule, PINNDataset
from anypinn.core.nn import (
    ArgsRegistry,
    Argument,
    Domain,
    Field,
    FieldsRegistry,
    Parameter,
    ParamsRegistry,
    build_criterion,
    get_activation,
)
from anypinn.core.problem import Constraint, Problem
from anypinn.core.samplers import (
    AdaptiveSampler,
    CollocationSampler,
    LatinHypercubeSampler,
    LogUniform1DSampler,
    RandomSampler,
    ResidualScorer,
    UniformSampler,
    build_sampler,
)
from anypinn.core.types import (
    LOSS_KEY,
    Activations,
    CollocationStrategies,
    Criteria,
    DataBatch,
    LogFn,
    Predictions,
    TrainingBatch,
)
from anypinn.core.validation import (
    ColumnRef,
    ResolvedValidation,
    ValidationRegistry,
    ValidationSource,
    resolve_validation,
)
from anypinn.lib.encodings import FourierEncoding, RandomFourierFeatures

__all__ = [
    "LOSS_KEY",
    "Activations",
    "AdamConfig",
    "AdaptiveSampler",
    "ArgsRegistry",
    "Argument",
    "CollocationSampler",
    "CollocationStrategies",
    "ColumnRef",
    "Constraint",
    "CosineAnnealingConfig",
    "Criteria",
    "DataBatch",
    "DataCallback",
    "Domain",
    "EarlyStoppingConfig",
    "Field",
    "FieldsRegistry",
    "FourierEncoding",
    "GenerationConfig",
    "InferredContext",
    "IngestionConfig",
    "LBFGSConfig",
    "LatinHypercubeSampler",
    "LogFn",
    "LogUniform1DSampler",
    "MLPConfig",
    "PINNDataModule",
    "PINNDataset",
    "PINNHyperparameters",
    "Parameter",
    "ParamsRegistry",
    "Predictions",
    "Problem",
    "RandomFourierFeatures",
    "RandomSampler",
    "ReduceLROnPlateauConfig",
    "ResidualScorer",
    "ResolvedValidation",
    "SMMAStoppingConfig",
    "ScalarConfig",
    "TrainingBatch",
    "TrainingDataConfig",
    "UniformSampler",
    "ValidationRegistry",
    "ValidationSource",
    "build_criterion",
    "build_sampler",
    "get_activation",
    "resolve_validation",
]
