// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.communication.jobrouter.implementation.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;

/** The JobMatchingModeInternal model. */
@Fluent
public final class JobMatchingModeInternal {
    /*
     * The modeType property.
     */
    @JsonProperty(value = "modeType")
    private JobMatchModeTypeInternal modeType;

    /*
     * Any object
     */
    @JsonProperty(value = "queueAndMatchMode")
    private Object queueAndMatchMode;

    /*
     * The scheduleAndSuspendMode property.
     */
    @JsonProperty(value = "scheduleAndSuspendMode")
    private ScheduleAndSuspendModeInternal scheduleAndSuspendMode;

    /*
     * Any object
     */
    @JsonProperty(value = "suspendMode")
    private Object suspendMode;

    /** Creates an instance of JobMatchingModeInternal class. */
    public JobMatchingModeInternal() {}

    /**
     * Get the modeType property: The modeType property.
     *
     * @return the modeType value.
     */
    public JobMatchModeTypeInternal getModeType() {
        return this.modeType;
    }

    /**
     * Set the modeType property: The modeType property.
     *
     * @param modeType the modeType value to set.
     * @return the JobMatchingModeInternal object itself.
     */
    public JobMatchingModeInternal setModeType(JobMatchModeTypeInternal modeType) {
        this.modeType = modeType;
        return this;
    }

    /**
     * Get the queueAndMatchMode property: Any object.
     *
     * @return the queueAndMatchMode value.
     */
    public Object getQueueAndMatchMode() {
        return this.queueAndMatchMode;
    }

    /**
     * Set the queueAndMatchMode property: Any object.
     *
     * @param queueAndMatchMode the queueAndMatchMode value to set.
     * @return the JobMatchingModeInternal object itself.
     */
    public JobMatchingModeInternal setQueueAndMatchMode(Object queueAndMatchMode) {
        this.queueAndMatchMode = queueAndMatchMode;
        return this;
    }

    /**
     * Get the scheduleAndSuspendMode property: The scheduleAndSuspendMode property.
     *
     * @return the scheduleAndSuspendMode value.
     */
    public ScheduleAndSuspendModeInternal getScheduleAndSuspendMode() {
        return this.scheduleAndSuspendMode;
    }

    /**
     * Set the scheduleAndSuspendMode property: The scheduleAndSuspendMode property.
     *
     * @param scheduleAndSuspendMode the scheduleAndSuspendMode value to set.
     * @return the JobMatchingModeInternal object itself.
     */
    public JobMatchingModeInternal setScheduleAndSuspendMode(ScheduleAndSuspendModeInternal scheduleAndSuspendMode) {
        this.scheduleAndSuspendMode = scheduleAndSuspendMode;
        return this;
    }

    /**
     * Get the suspendMode property: Any object.
     *
     * @return the suspendMode value.
     */
    public Object getSuspendMode() {
        return this.suspendMode;
    }

    /**
     * Set the suspendMode property: Any object.
     *
     * @param suspendMode the suspendMode value to set.
     * @return the JobMatchingModeInternal object itself.
     */
    public JobMatchingModeInternal setSuspendMode(Object suspendMode) {
        this.suspendMode = suspendMode;
        return this;
    }
}
