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

package com.azure.resourcemanager.billing.models;

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

/** The policies for Enterprise Agreement enrollments. */
@Immutable
public final class EnrollmentPolicies {
    /*
     * The policy that controls whether Account Owners can view charges.
     */
    @JsonProperty(value = "accountOwnerViewCharges", access = JsonProperty.Access.WRITE_ONLY)
    private Boolean accountOwnerViewCharges;

    /*
     * The policy that controls whether Department Administrators can view charges.
     */
    @JsonProperty(value = "departmentAdminViewCharges", access = JsonProperty.Access.WRITE_ONLY)
    private Boolean departmentAdminViewCharges;

    /*
     * The policy that controls whether Azure marketplace purchases are allowed in the enrollment.
     */
    @JsonProperty(value = "marketplaceEnabled", access = JsonProperty.Access.WRITE_ONLY)
    private Boolean marketplaceEnabled;

    /*
     * The policy that controls whether Azure reservation purchases are allowed in the enrollment.
     */
    @JsonProperty(value = "reservedInstancesEnabled", access = JsonProperty.Access.WRITE_ONLY)
    private Boolean reservedInstancesEnabled;

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

    /**
     * Get the accountOwnerViewCharges property: The policy that controls whether Account Owners can view charges.
     *
     * @return the accountOwnerViewCharges value.
     */
    public Boolean accountOwnerViewCharges() {
        return this.accountOwnerViewCharges;
    }

    /**
     * Get the departmentAdminViewCharges property: The policy that controls whether Department Administrators can view
     * charges.
     *
     * @return the departmentAdminViewCharges value.
     */
    public Boolean departmentAdminViewCharges() {
        return this.departmentAdminViewCharges;
    }

    /**
     * Get the marketplaceEnabled property: The policy that controls whether Azure marketplace purchases are allowed in
     * the enrollment.
     *
     * @return the marketplaceEnabled value.
     */
    public Boolean marketplaceEnabled() {
        return this.marketplaceEnabled;
    }

    /**
     * Get the reservedInstancesEnabled property: The policy that controls whether Azure reservation purchases are
     * allowed in the enrollment.
     *
     * @return the reservedInstancesEnabled value.
     */
    public Boolean reservedInstancesEnabled() {
        return this.reservedInstancesEnabled;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
