// @generated
// This file is @generated by prost-build.
// ============================================================================
// Holiday Entity
// ============================================================================

/// 휴일 - 시장이 휴장하는 날
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Holiday {
    /// 리소스 이름 (holidays/{date})
    #[prost(string, tag="1")]
    pub name: ::prost::alloc::string::String,
    /// 날짜 (YYYYMMDD) - 고유 식별자
    #[prost(string, tag="2")]
    pub date: ::prost::alloc::string::String,
    /// 휴일명 (예: "신정", "설날", "임시공휴일")
    #[prost(string, tag="3")]
    pub display_name: ::prost::alloc::string::String,
    /// 휴일 유형
    #[prost(enumeration="HolidayType", tag="4")]
    pub holiday_type: i32,
    /// 비고 (optional)
    #[prost(string, tag="5")]
    pub description: ::prost::alloc::string::String,
    /// 생성 시간
    #[prost(message, optional, tag="11")]
    pub create_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
    /// 수정 시간
    #[prost(message, optional, tag="12")]
    pub update_time: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
}
// ============================================================================
// Request/Response Messages
// ============================================================================

#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateHolidayRequest {
    /// 등록할 휴일
    #[prost(message, optional, tag="1")]
    pub holiday: ::core::option::Option<Holiday>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListHolidaysRequest {
    /// 페이지 크기 (optional)
    #[prost(int32, optional, tag="1")]
    pub page_size: ::core::option::Option<i32>,
    /// 페이지 토큰 (optional, for pagination)
    #[prost(string, optional, tag="2")]
    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
    /// 필터링 조건 (optional, AIP-160)
    ///
    /// Available Fields:
    /// * date - 날짜 (YYYYMMDD, 부분 일치로 연/월 조회 가능)
    /// * display_name - 휴일명 (문자열, 부분 일치)
    /// * holiday_type - 휴일 유형 (HOLIDAY_TYPE_PUBLIC, HOLIDAY_TYPE_TEMPORARY, HOLIDAY_TYPE_MARKET_CLOSED)
    ///
    /// Operators:
    /// * = : 일치
    /// * != : 불일치
    /// * : : 포함 (문자열 부분 일치)
    ///
    /// Examples:
    /// * date:"2026"
    /// * date:"202601"
    /// * holiday_type=HOLIDAY_TYPE_PUBLIC
    /// * holiday_type=HOLIDAY_TYPE_MARKET_CLOSED AND date:"2026"
    #[prost(string, tag="3")]
    pub filter: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListHolidaysResponse {
    /// 휴일 목록
    #[prost(message, repeated, tag="1")]
    pub holidays: ::prost::alloc::vec::Vec<Holiday>,
    /// 다음 페이지 토큰
    #[prost(string, tag="2")]
    pub next_page_token: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetHolidayByDateRequest {
    /// 조회할 날짜 (YYYYMMDD)
    #[prost(string, tag="1")]
    pub date: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CheckHolidayRequest {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CheckHolidayResponse {
    /// 확인한 날짜 (서버 기준 오늘, YYYYMMDD)
    #[prost(string, tag="1")]
    pub date: ::prost::alloc::string::String,
    /// 휴일 여부
    #[prost(bool, tag="2")]
    pub is_holiday: bool,
    /// 휴일 상세 정보 (is_holiday=true 인 경우에만 채워짐)
    #[prost(message, optional, tag="3")]
    pub holiday: ::core::option::Option<Holiday>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetLatestBusinessDayRequest {
    /// 기준 날짜 (YYYYMMDD). 미지정 시 오늘 날짜 기준.
    /// 이 날짜를 포함한 이전의 가장 최근 영업일을 반환합니다.
    #[prost(string, optional, tag="1")]
    pub as_of_date: ::core::option::Option<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetLatestBusinessDayResponse {
    /// 가장 최근 영업일 (YYYYMMDD)
    #[prost(string, tag="1")]
    pub date: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DeleteHolidayRequest {
    /// 리소스 이름 (holidays/{date})
    #[prost(string, tag="1")]
    pub holiday: ::prost::alloc::string::String,
}
/// 휴일 유형
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum HolidayType {
    Unspecified = 0,
    /// 법정 공휴일
    Public = 1,
    /// 임시 공휴일
    Temporary = 2,
    /// 거래소 휴장일 (공휴일은 아니나 시장이 열리지 않는 날)
    MarketClosed = 3,
}
impl HolidayType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            HolidayType::Unspecified => "HOLIDAY_TYPE_UNSPECIFIED",
            HolidayType::Public => "HOLIDAY_TYPE_PUBLIC",
            HolidayType::Temporary => "HOLIDAY_TYPE_TEMPORARY",
            HolidayType::MarketClosed => "HOLIDAY_TYPE_MARKET_CLOSED",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "HOLIDAY_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
            "HOLIDAY_TYPE_PUBLIC" => Some(Self::Public),
            "HOLIDAY_TYPE_TEMPORARY" => Some(Self::Temporary),
            "HOLIDAY_TYPE_MARKET_CLOSED" => Some(Self::MarketClosed),
            _ => None,
        }
    }
}
include!("system_ops.v1.holiday.tonic.rs");
include!("system_ops.v1.holiday.serde.rs");
// @@protoc_insertion_point(module)