import { BaseFields, Locale } from ".";
export interface SubjectCategory extends BaseFields {
    color: string;
    image: string | null;
    languages: null | string;
    name: string;
    order: number;
    updated_at: string;
}
export interface SubjectCategoryLanguage {
    enterprise_id: number;
    created_at: string;
    updated_at: string;
    locale: Locale;
    translations?: {
        id: string;
        created_at: string;
        updated_at: string;
        subject_category_id: string;
        name: string;
    } | null;
}
export interface WithSubjectCategoryLanguageTranslations {
    languages: {
        [locale: string]: SubjectCategoryLanguage;
    };
}
export interface Subject extends BaseFields {
    completion_outcome_list_id: string | null;
    customer_cancellation_outcome_list_id: string | null;
    contact_cancellation_outcome_list_id: string | null;
    category_id: string;
    description: string | null;
    instructions: string | null;
    is_active: boolean;
    is_default: boolean;
    is_shortlist: boolean;
    order: number;
    timezone: string | null;
    title: string;
}
export interface WithAppointmentSubject {
    subject: Subject & WithCategory;
}
/**
 * @deprecated
 * Use the following composable interfaces:
 * - WithCategory
 */
export interface SubjectWithCategory extends Subject {
    subject_category: SubjectCategory | null;
}
export interface WithCategory {
    subject_category: SubjectCategory | null;
}
/**
 * No support for enum in d.ts files
 * Use MeetingTypeEnum for mapped enum value
 */
export type MeetingType = "office" | "on_location" | "phone" | "video";
export declare enum MeetingTypeEnum {
    OFFICE = "office",
    ON_LOCATION = "on_location",
    PHONE = "phone",
    VIDEO = "video"
}
export type ReceiverType = "customer" | "contact";
export interface SubjectAvailabilitySettings {
    auto_accept?: boolean | null;
    created_at?: string;
    estimated_duration?: number | null;
    id?: string;
    is_meeting_type_allowed?: boolean | null;
    max_concurrent_appointments?: number | null;
    meeting_type: MeetingType;
    priority1_offset?: number | null;
    priority2_offset?: number | null;
    subject_id: string;
    time_slot_earliest_possible?: number | null;
    time_slot_granularity?: number | null;
    time_slot_latest_possible?: number | null;
    trailing_buffer_time?: number | null;
    updated_at?: string;
}
export interface OfficeSubjectAvailabilitySettings extends SubjectAvailabilitySettings {
    id: string;
    office_id: string;
}
export interface SubjectTranslation {
    id: string;
    subject_id: string;
    title: string;
    description: string | null;
    instructions: string | null;
    created_at: string;
    updated_at: string;
}
export interface SubjectLanguages {
    [locale: string]: {
        enterprise_id: string;
        created_at: string;
        updated_at: string;
        translations?: SubjectTranslation | null;
    };
}
export interface WithSubjectQuestionLanguages {
    languages: {
        [locale: string]: {
            enterprise_id: string;
            created_at: string;
            updated_at: string;
            translations: {
                label?: string;
                help_text?: string;
                placeholder?: string;
            } | null;
        };
    };
}
export interface WithSubjectOptionLanguages {
    languages: {
        [locale: string]: {
            enterprise_id: string;
            created_at: string;
            updated_at: string;
            translations: {
                label?: string;
            } | null;
        };
    };
}
export interface WithAvailabilitySettings {
    availability_settings: SubjectAvailabilitySettings[];
}
export interface WithLanguages {
    languages: SubjectLanguages;
}
export interface WithSubjectQuestions<T = unknown> {
    questions: (SubjectQuestion & T)[];
}
export type SubjectQuestionDataType = "final_remarks" | "text" | "number" | "website";
export type SubjectQuestionInputType = "text_area" | "text_field" | "check_boxes" | "radio_buttons";
export type SubjectQuestionType = "long_text" | "short_text" | "select" | "number";
export declare const QuestionDataTypeEnum: {
    readonly FINAL_REMARKS: "final_remarks";
    readonly TEXT: "text";
    readonly NUMBER: "number";
    readonly WEBSITE: "website";
};
export declare const QuestionInputTypeEnum: {
    readonly TEXT_AREA: "text_area";
    readonly TEXT_FIELD: "text_field";
    readonly CHECK_BOXES: "check_boxes";
    readonly RADIO_BUTTONS: "radio_buttons";
};
export declare const QuestionTypeEnum: {
    readonly LONG_TEXT: "long_text";
    readonly SHORT_TEXT: "short_text";
    readonly SELECT: "select";
    readonly NUMBER: "number";
};
interface SubjectSettings {
    label_visible: boolean;
    help_text_visible: boolean;
    required: boolean;
}
export interface SubjectOption extends Omit<BaseFields, "enterprise_id"> {
    question_id: string;
    label: string;
    value: string;
    is_open?: number;
    updated_at: string;
}
export interface SubjectQuestion extends Omit<BaseFields, "enterprise_id"> {
    subject_id: string;
    label: string;
    data_type: SubjectQuestionDataType;
    input_type: SubjectQuestionInputType;
    category: string;
    order: number;
    settings?: SubjectSettings | null;
    visible: boolean;
    help_text: string | null;
    placeholder?: string | null;
    is_conditional: boolean;
    updated_at: string;
    languages?: unknown;
    options: SubjectOption[];
}
export {};
//# sourceMappingURL=subject.d.ts.map