from gymnasium import spaces

# Observation Space Constants
SCENARIO_SPACE_SIZE = 4  # 시나리오 상태 수 (0-3)
PRICE_ZONE_SIZE = 3  # 가격 구간 수 (0-2)
ACCEPTANCE_RATE_SIZE = 3  # 수락률 레벨 수 (0-2)

# Observation Space Mappings
SCENARIO_MAPPING = {
    0: "높은 구매 의지",
    1: "중간 구매 의지",
    2: "낮은 구매 의지",
    3: "매우 낮은 구매 의지",
}

PRICE_ZONE_MAPPING = {0: "목표가격 이하", 1: "목표가격~임계가격", 2: "임계가격 초과"}

ACCEPTANCE_RATE_MAPPING = {0: "낮음 (<10%)", 1: "중간 (10-25%)", 2: "높음 (>25%)"}

# Action Space Constants
ACTION_SPACE_SIZE = 9

# Action Space Mappings
ACTION_MAPPING = {
    0: "강한 수락",
    1: "중간 수락",
    2: "약한 수락",
    3: "강한 거절",
    4: "중간 거절",
    5: "약한 거절",
    6: "강한 가격 제안",
    7: "중간 가격 제안",
    8: "약한 가격 제안",
}

# Spaces Definition
OBSERVATION_SPACE = spaces.MultiDiscrete(
    [SCENARIO_SPACE_SIZE, PRICE_ZONE_SIZE, ACCEPTANCE_RATE_SIZE]
)

ACTION_SPACE = spaces.Discrete(ACTION_SPACE_SIZE)
