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

import type * as Intercom from "../../../../../index.js";

/**
 * A ticket state, used to define the state of a ticket.
 */
export interface TicketStateDetailed {
    /** String representing the object's type. Always has the value `ticket_state`. */
    type?: string;
    /** The id of the ticket state */
    id?: string;
    /** The category of the ticket state */
    category?: TicketStateDetailed.Category;
    /** The state the ticket is currently in, in a human readable form - visible in Intercom */
    internal_label?: string;
    /** The state the ticket is currently in, in a human readable form - visible to customers, in the messenger, email and tickets portal. */
    external_label?: string;
    /** Whether the ticket state is archived */
    archived?: boolean;
    /** A list of ticket types associated with a given ticket state. */
    ticket_types?: TicketStateDetailed.TicketTypes;
}

export namespace TicketStateDetailed {
    /** The category of the ticket state */
    export const Category = {
        Submitted: "submitted",
        InProgress: "in_progress",
        WaitingOnCustomer: "waiting_on_customer",
        Resolved: "resolved",
    } as const;
    export type Category = (typeof Category)[keyof typeof Category];

    /**
     * A list of ticket types associated with a given ticket state.
     */
    export interface TicketTypes {
        /** String representing the object's type. Always has the value `list`. */
        type?: string;
        /** A list of ticket type attributes associated with a given ticket type. */
        data?: (Intercom.unstable.TicketType | undefined)[];
    }
}
