import { ButtonElement } from "../InteractiveElements/index";
import { CometChat } from "@cometchat/chat-sdk-react-native";
import { MessageTypeConstants } from "../../../constants/UIKitConstants";
export class SchedulerMessage extends CometChat.InteractiveMessage {
    interactiveData;
    title;
    avatarUrl;
    goalCompletionText;
    timezoneCode;
    bufferTime;
    duration;
    availability;
    dateRangeStart;
    dateRangeEnd;
    icsFileUrl;
    scheduleElement;
    constructor(receiverId, receiverType, interactiveData) {
        super(receiverId, receiverType, MessageTypeConstants.scheduler, interactiveData);
        this.interactiveData = interactiveData;
        Object.assign(this, interactiveData);
    }
    // Setters
    setInteractiveData(interactiveData) {
        this.interactiveData = interactiveData;
    }
    setTitle(title) {
        this.title = title;
    }
    setAvatarUrl(avatarUrl) {
        this.avatarUrl = avatarUrl;
    }
    setGoalCompletionText(goalCompletionText) {
        this.goalCompletionText = goalCompletionText;
    }
    setTimezoneCode(timezoneCode) {
        this.timezoneCode = timezoneCode;
    }
    setDuration(duration) {
        this.duration = duration;
    }
    setBufferTime(bufferTime) {
        this.bufferTime = bufferTime;
    }
    setAvailability(availability) {
        this.availability = availability;
    }
    setDateRangeStart(dateRangeStart) {
        this.dateRangeStart = dateRangeStart;
    }
    setDateRangeEnd(dateRangeEnd) {
        this.dateRangeEnd = dateRangeEnd;
    }
    setIcsFileUrl(icsFileUrl) {
        this.icsFileUrl = icsFileUrl;
    }
    setScheduleElement(scheduleElement) {
        this.scheduleElement = ButtonElement.fromJSON(scheduleElement);
    }
    // ... more setters as needed
    // Getters
    getInteractiveData() {
        return this.interactiveData;
    }
    getTitle() {
        return this.title;
    }
    getAvatarUrl() {
        return this.avatarUrl;
    }
    getGoalCompletionText() {
        return this.goalCompletionText;
    }
    getTimezoneCode() {
        return this.timezoneCode;
    }
    getDuration() {
        return this.duration;
    }
    getBufferTime() {
        return this.bufferTime;
    }
    getAvailability() {
        return this.availability;
    }
    getDateRangeStart() {
        return this.dateRangeStart;
    }
    getDateRangeEnd() {
        return this.dateRangeEnd;
    }
    getIcsFileUrl() {
        return this.icsFileUrl;
    }
    getScheduleElement() {
        return this.scheduleElement;
    }
    // ... more getters as needed
    // Method to refresh the data in the parent class
    static fromJSON(json) {
        let interactiveData = json.data.interactiveData;
        const schedulerMessage = new SchedulerMessage(json.receiverId, json.receiverType, interactiveData);
        Object.assign(schedulerMessage, { ...json, ...interactiveData });
        return schedulerMessage;
    }
}
//# sourceMappingURL=SchedulerMessage.js.map