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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class PostFormat(str, enum.Enum):
    STANDARD = "standard"
    ASIDE = "aside"
    GALLERY = "gallery"
    LINK = "link"
    IMAGE = "image"
    QUOTE = "quote"
    STATUS = "status"
    VIDEO = "video"
    AUDIO = "audio"
    CHAT = "chat"

    def visit(
        self,
        standard: typing.Callable[[], T_Result],
        aside: typing.Callable[[], T_Result],
        gallery: typing.Callable[[], T_Result],
        link: typing.Callable[[], T_Result],
        image: typing.Callable[[], T_Result],
        quote: typing.Callable[[], T_Result],
        status: typing.Callable[[], T_Result],
        video: typing.Callable[[], T_Result],
        audio: typing.Callable[[], T_Result],
        chat: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is PostFormat.STANDARD:
            return standard()
        if self is PostFormat.ASIDE:
            return aside()
        if self is PostFormat.GALLERY:
            return gallery()
        if self is PostFormat.LINK:
            return link()
        if self is PostFormat.IMAGE:
            return image()
        if self is PostFormat.QUOTE:
            return quote()
        if self is PostFormat.STATUS:
            return status()
        if self is PostFormat.VIDEO:
            return video()
        if self is PostFormat.AUDIO:
            return audio()
        if self is PostFormat.CHAT:
            return chat()
