package kr.or.bok.rtgs.common

/**
 * 거래 처리상태(ISO 20022 pacs.002 TxSts 계열).
 * 흐름: RCVD -> ACTC -> (PDNG) -> ACSP -> ACCC, 실패 시 RJCT.
 * - RCVD: 접수(Received)                — Chanel이 인메모리에 최초 저장
 * - ACTC: 승인(AcceptedTechnicalValidation) — 검증 통과, 순번기로 전달/저널 등록
 * - PDNG: 대기(Pending)                  — 타 센터에서 수신되어 아직 결제 전
 * - ACSP: 예약(AcceptedSettlementInProcess) — 결제처리(원장 반영) 완료, 결과 대기
 * - ACCC: 입금처리완료(AcceptedSettlementCompleted) — 과반 확정, 최종 완결
 * - RJCT: 반려(Rejected)                 — 검증 실패/잔액부족 등
 */
enum class TxSts {
    RCVD,
    ACTC,
    PDNG,
    ACSP,
    ACCC,
    RJCT,
    ;

    companion object {
        /** 완결(대외 효력) 상태 여부. */
        fun isFinal(s: TxSts): Boolean = s == ACCC || s == RJCT
    }
}
