# This file was auto-generated by Fern from our API Definition.

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class Status(str, enum.Enum):
    DRAFT = "draft"
    PUBLISH = "publish"
    PRIVATE = "private"
    PENDING = "pending"
    TRASH = "trash"

    def visit(
        self,
        draft: typing.Callable[[], T_Result],
        publish: typing.Callable[[], T_Result],
        private: typing.Callable[[], T_Result],
        pending: typing.Callable[[], T_Result],
        trash: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is Status.DRAFT:
            return draft()
        if self is Status.PUBLISH:
            return publish()
        if self is Status.PRIVATE:
            return private()
        if self is Status.PENDING:
            return pending()
        if self is Status.TRASH:
            return trash()
