// ------------------------------------------------------------------------------
//  Copyright (c) Microsoft Corporation.  All Rights Reserved.  Licensed under the MIT License.  See License in the project root for license information.
// ------------------------------------------------------------------------------

// **NOTE** This file was generated by a tool and any changes will be overwritten.


namespace Microsoft.Graph
{
    using System;
    using System.IO;
    using System.Net.Http;
    using System.Threading;
    using System.Linq.Expressions;

    /// <summary>
    /// The interface IInferenceClassificationOverrideRequest.
    /// </summary>
    public partial interface IInferenceClassificationOverrideRequest : IBaseRequest
    {
        /// <summary>
        /// Creates the specified InferenceClassificationOverride using PUT.
        /// </summary>
        /// <param name="inferenceClassificationOverrideToCreate">The InferenceClassificationOverride to create.</param>
        /// <returns>The created InferenceClassificationOverride.</returns>
        System.Threading.Tasks.Task<InferenceClassificationOverride> CreateAsync(InferenceClassificationOverride inferenceClassificationOverrideToCreate);        /// <summary>
        /// Creates the specified InferenceClassificationOverride using PUT.
        /// </summary>
        /// <param name="inferenceClassificationOverrideToCreate">The InferenceClassificationOverride to create.</param>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
        /// <returns>The created InferenceClassificationOverride.</returns>
        System.Threading.Tasks.Task<InferenceClassificationOverride> CreateAsync(InferenceClassificationOverride inferenceClassificationOverrideToCreate, CancellationToken cancellationToken);

        /// <summary>
        /// Deletes the specified InferenceClassificationOverride.
        /// </summary>
        /// <returns>The task to await.</returns>
        System.Threading.Tasks.Task DeleteAsync();

        /// <summary>
        /// Deletes the specified InferenceClassificationOverride.
        /// </summary>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
        /// <returns>The task to await.</returns>
        System.Threading.Tasks.Task DeleteAsync(CancellationToken cancellationToken);

        /// <summary>
        /// Gets the specified InferenceClassificationOverride.
        /// </summary>
        /// <returns>The InferenceClassificationOverride.</returns>
        System.Threading.Tasks.Task<InferenceClassificationOverride> GetAsync();

        /// <summary>
        /// Gets the specified InferenceClassificationOverride.
        /// </summary>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
        /// <returns>The InferenceClassificationOverride.</returns>
        System.Threading.Tasks.Task<InferenceClassificationOverride> GetAsync(CancellationToken cancellationToken);

        /// <summary>
        /// Updates the specified InferenceClassificationOverride using PATCH.
        /// </summary>
        /// <param name="inferenceClassificationOverrideToUpdate">The InferenceClassificationOverride to update.</param>
        /// <returns>The updated InferenceClassificationOverride.</returns>
        System.Threading.Tasks.Task<InferenceClassificationOverride> UpdateAsync(InferenceClassificationOverride inferenceClassificationOverrideToUpdate);

        /// <summary>
        /// Updates the specified InferenceClassificationOverride using PATCH.
        /// </summary>
        /// <param name="inferenceClassificationOverrideToUpdate">The InferenceClassificationOverride to update.</param>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/> for the request.</param>
        /// <returns>The updated InferenceClassificationOverride.</returns>
        System.Threading.Tasks.Task<InferenceClassificationOverride> UpdateAsync(InferenceClassificationOverride inferenceClassificationOverrideToUpdate, CancellationToken cancellationToken);

        /// <summary>
        /// Adds the specified expand value to the request.
        /// </summary>
        /// <param name="value">The expand value.</param>
        /// <returns>The request object to send.</returns>
        IInferenceClassificationOverrideRequest Expand(string value);

        /// <summary>
        /// Adds the specified expand value to the request.
        /// </summary>
        /// <param name="expandExpression">The expression from which to calculate the expand value.</param>
        /// <returns>The request object to send.</returns>
        IInferenceClassificationOverrideRequest Expand(Expression<Func<InferenceClassificationOverride, object>> expandExpression);

        /// <summary>
        /// Adds the specified select value to the request.
        /// </summary>
        /// <param name="value">The select value.</param>
        /// <returns>The request object to send.</returns>
        IInferenceClassificationOverrideRequest Select(string value);

        /// <summary>
        /// Adds the specified select value to the request.
        /// </summary>
        /// <param name="selectExpression">The expression from which to calculate the select value.</param>
        /// <returns>The request object to send.</returns>
        IInferenceClassificationOverrideRequest Select(Expression<Func<InferenceClassificationOverride, object>> selectExpression);

    }
}
