"""Genius negotiator implementations.

This module provides Python wrappers for negotiation agents from the Genius
negotiation platform. Agents are organized by ANAC competition year.

Submodules:
    - basic: Basic utility agents (time-dependent, random, etc.)
    - others: TU Delft course agents and miscellaneous
    - y2010-y2019: ANAC competition agents by year
"""

from __future__ import annotations

from .basic import (
    ABMPAgent2,
    BayesianAgent,
    BoulwareNegotiationParty,
    ConcederNegotiationParty,
    FunctionalAcceptor,
    FuzzyAgent,
    ImmediateAcceptor,
    OptimalBidderSimple,
    RandomCounterOfferNegotiationParty,
    RandomParty,
    RandomParty2,
    SimilarityAgent,
    SimpleAgent,
    TimeDependentAgentBoulware,
    TimeDependentAgentConceder,
    TimeDependentAgentHardliner,
    TimeDependentAgentLinear,
    UtilityBasedAcceptor,
)
from .others import (
    AI2014Group2,
    Group1,
    Group10,
    Group11,
    Group12,
    Group13,
    Group14,
    Group15,
    Group16,
    Group17,
    Group18,
    Group19,
    Group20,
    Group21,
    Group22,
    Group3Q2015,
    Group4,
    Group5,
    Group6,
    Group7,
    Group8,
    Group9,
    Q12015Group2,
)
from .y2010 import (
    AgentFSEGA,
    AgentK,
    AgentSmith,
    IAMcrazyHaggler,
    IAMhaggler,
    Nozomi,
    SouthamptonAgent,
    Yushu,
)
from .y2011 import (
    AgentK2,
    BramAgent,
    BramAgent2,
    Gahboninho,
    HardHeaded,
    IAMhaggler2011,
    NiceTitForTat,
    TheNegotiator,
    ValueModelAgent,
)
from .y2012 import (
    AgentLG,
    AgentMR,
    CUHKAgent,
    IAMhaggler2012,
    MetaAgent,
    MetaAgent2012,
    OMACagent,
    TheNegotiatorReloaded,
)
from .y2013 import (
    AgentI,
    AgentKF,
    GAgent,
    InoxAgent,
    MetaAgent2013,
    SlavaAgent,
    TMFAgent,
    TheFawkes,
)
from .y2014 import (
    AgentM,
    AgentQuest,
    AgentTD,
    AgentTRP,
    AgentYK,
    AnacSampleAgent,
    ArisawaYaki,
    Aster,
    Atlas,
    BraveCat,
    DoNA,
    E2Agent,
    Flinch,
    Gangester,
    Gangster,
    KGAgent,
    Simpatico,
    Sobut,
    TUDelftGroup2,
    WhaleAgent,
)
from .y2015 import (
    AgentBuyog,
    AgentH,
    AgentHP,
    AgentNeo,
    AgentW,
    AgentX,
    AresParty,
    Atlas3,
    CUHKAgent2015,
    DrageKnight,
    Group2,
    JonnyBlack,
    Kawaii,
    MeanBot,
    Mercury,
    ParsAgent,
    PhoenixParty,
    PNegotiator,
    PokerFace,
    RandomDance,
    SENGOKU,
    TUDMixedStrategyAgent,
    XianFaAgent,
    Y2015Group2,
)
from .y2016 import (
    AgentHP2,
    AgentLight,
    AgentSmith2016,
    Atlas32016,
    Caduceus,
    ClockworkAgent,
    Farma,
    GrandmaAgent,
    MaxOops,
    MyAgent,
    Ngent,
    ParsAgent2,
    ParsCat,
    ParsCat2,
    SYAgent,
    Terra,
    YXAgent,
)
from .y2017 import (
    AgentF,
    AgentKN,
    CaduceusDC16,
    Farma17,
    Farma2017,
    GeneKing,
    Gin,
    Group3,
    Imitator,
    MadAgent,
    Mamenchis,
    Mosa,
    ParsAgent3,
    PonPokoAgent,
    Rubick,
    ShahAgent,
    SimpleAgent2017,
    TaxiBox,
    TucAgent,
)
from .y2018 import (
    Agent33,
    Agent36,
    AgentHerb,
    AgentNP1,
    AgreeableAgent2018,
    AteamAgent,
    Ateamagent,
    BetaOne,
    Betaone,
    ConDAgent,
    ExpRubick,
    FullAgent,
    GroupY,
    IQSun2018,
    Lancelot,
    Libra,
    MengWan,
    PonPokoRampage,
    Seto,
    Shiboy,
    SMACAgent,
    Sontag,
    Yeela,
)
from .y2019 import (
    AgentGG,
    AgentGP,
    AgentLarry,
    DandikAgent,
    EAgent,
    FSEGA2019,
    GaravelAgent,
    Gravity,
    Group1BOA,
    HardDealer,
    KAgent,
    KakeSoba,
    MINF,
    PodAgent,
    SACRA,
    SAGA,
    SolverAgent,
    TheNewDeal,
    WinkyAgent,
)

__all__ = [
    # Basic agents (18)
    "ABMPAgent2",
    "BayesianAgent",
    "BoulwareNegotiationParty",
    "ConcederNegotiationParty",
    "FunctionalAcceptor",
    "FuzzyAgent",
    "ImmediateAcceptor",
    "OptimalBidderSimple",
    "RandomCounterOfferNegotiationParty",
    "RandomParty",
    "RandomParty2",
    "SimilarityAgent",
    "SimpleAgent",
    "TimeDependentAgentBoulware",
    "TimeDependentAgentConceder",
    "TimeDependentAgentHardliner",
    "TimeDependentAgentLinear",
    "UtilityBasedAcceptor",
    # Others (23)
    "AI2014Group2",
    "Group1",
    "Group10",
    "Group11",
    "Group12",
    "Group13",
    "Group14",
    "Group15",
    "Group16",
    "Group17",
    "Group18",
    "Group19",
    "Group20",
    "Group21",
    "Group22",
    "Group3Q2015",
    "Group4",
    "Group5",
    "Group6",
    "Group7",
    "Group8",
    "Group9",
    "Q12015Group2",
    # ANAC 2010 (8)
    "AgentFSEGA",
    "AgentK",
    "AgentSmith",
    "IAMcrazyHaggler",
    "IAMhaggler",
    "Nozomi",
    "SouthamptonAgent",
    "Yushu",
    # ANAC 2011 (9)
    "AgentK2",
    "BramAgent",
    "BramAgent2",
    "Gahboninho",
    "HardHeaded",
    "IAMhaggler2011",
    "NiceTitForTat",
    "TheNegotiator",
    "ValueModelAgent",
    # ANAC 2012 (8)
    "AgentLG",
    "AgentMR",
    "CUHKAgent",
    "IAMhaggler2012",
    "MetaAgent",
    "MetaAgent2012",
    "OMACagent",
    "TheNegotiatorReloaded",
    # ANAC 2013 (8)
    "AgentI",
    "AgentKF",
    "GAgent",
    "InoxAgent",
    "MetaAgent2013",
    "SlavaAgent",
    "TMFAgent",
    "TheFawkes",
    # ANAC 2014 (20)
    "AgentM",
    "AgentQuest",
    "AgentTD",
    "AgentTRP",
    "AgentYK",
    "AnacSampleAgent",
    "ArisawaYaki",
    "Aster",
    "Atlas",
    "BraveCat",
    "DoNA",
    "E2Agent",
    "Flinch",
    "Gangester",
    "Gangster",
    "KGAgent",
    "Simpatico",
    "Sobut",
    "TUDelftGroup2",
    "WhaleAgent",
    # ANAC 2015 (24)
    "AgentBuyog",
    "AgentH",
    "AgentHP",
    "AgentNeo",
    "AgentW",
    "AgentX",
    "AresParty",
    "Atlas3",
    "CUHKAgent2015",
    "DrageKnight",
    "Group2",
    "JonnyBlack",
    "Kawaii",
    "MeanBot",
    "Mercury",
    "ParsAgent",
    "PhoenixParty",
    "PNegotiator",
    "PokerFace",
    "RandomDance",
    "SENGOKU",
    "TUDMixedStrategyAgent",
    "XianFaAgent",
    "Y2015Group2",
    # ANAC 2016 (17)
    "AgentHP2",
    "AgentLight",
    "AgentSmith2016",
    "Atlas32016",
    "Caduceus",
    "ClockworkAgent",
    "Farma",
    "GrandmaAgent",
    "MaxOops",
    "MyAgent",
    "Ngent",
    "ParsAgent2",
    "ParsCat",
    "ParsCat2",
    "SYAgent",
    "Terra",
    "YXAgent",
    # ANAC 2017 (19)
    "AgentF",
    "AgentKN",
    "CaduceusDC16",
    "Farma17",
    "Farma2017",
    "GeneKing",
    "Gin",
    "Group3",
    "Imitator",
    "MadAgent",
    "Mamenchis",
    "Mosa",
    "ParsAgent3",
    "PonPokoAgent",
    "Rubick",
    "ShahAgent",
    "SimpleAgent2017",
    "TaxiBox",
    "TucAgent",
    # ANAC 2018 (23)
    "Agent33",
    "Agent36",
    "AgentHerb",
    "AgentNP1",
    "AgreeableAgent2018",
    "AteamAgent",
    "Ateamagent",
    "BetaOne",
    "Betaone",
    "ConDAgent",
    "ExpRubick",
    "FullAgent",
    "GroupY",
    "IQSun2018",
    "Lancelot",
    "Libra",
    "MengWan",
    "PonPokoRampage",
    "Seto",
    "Shiboy",
    "SMACAgent",
    "Sontag",
    "Yeela",
    # ANAC 2019 (19)
    "AgentGG",
    "AgentGP",
    "AgentLarry",
    "DandikAgent",
    "EAgent",
    "FSEGA2019",
    "GaravelAgent",
    "Gravity",
    "Group1BOA",
    "HardDealer",
    "KAgent",
    "KakeSoba",
    "MINF",
    "PodAgent",
    "SACRA",
    "SAGA",
    "SolverAgent",
    "TheNewDeal",
    "WinkyAgent",
]
