/// <summary>
 /// Creates, updates, or removes account budget proposals.  Operation statuses
 /// are returned.
 ///
 /// List of thrown errors:
 /// [AccountBudgetProposalError]()
 /// [AuthenticationError]()
 /// [AuthorizationError]()
 /// [DatabaseError]()
 /// [DateError]()
 /// [FieldError]()
 /// [FieldMaskError]()
 /// [HeaderError]()
 /// [InternalError]()
 /// [MutateError]()
 /// [QuotaError]()
 /// [RequestError]()
 /// [StringLengthError]()
 /// </summary>
 /// <param name="customerId">
 /// Required. The ID of the customer.
 /// </param>
 /// <param name="operation">
 /// Required. The operation to perform on an individual account-level budget proposal.
 /// </param>
 /// <param name="cancellationToken">A <see cref="st::CancellationToken"/> to use for this RPC.</param>
 /// <returns>A Task containing the RPC response.</returns>
 public virtual stt::Task <MutateAccountBudgetProposalResponse> MutateAccountBudgetProposalAsync(string customerId, AccountBudgetProposalOperation operation, st::CancellationToken cancellationToken) =>
 MutateAccountBudgetProposalAsync(customerId, operation, gaxgrpc::CallSettings.FromCancellationToken(cancellationToken));
 /// <summary>
 /// Creates, updates, or removes account budget proposals.  Operation statuses
 /// are returned.
 ///
 /// List of thrown errors:
 /// [AccountBudgetProposalError]()
 /// [AuthenticationError]()
 /// [AuthorizationError]()
 /// [DatabaseError]()
 /// [DateError]()
 /// [FieldError]()
 /// [FieldMaskError]()
 /// [HeaderError]()
 /// [InternalError]()
 /// [MutateError]()
 /// [QuotaError]()
 /// [RequestError]()
 /// [StringLengthError]()
 /// </summary>
 /// <param name="customerId">
 /// Required. The ID of the customer.
 /// </param>
 /// <param name="operation">
 /// Required. The operation to perform on an individual account-level budget proposal.
 /// </param>
 /// <param name="callSettings">If not null, applies overrides to this RPC call.</param>
 /// <returns>A Task containing the RPC response.</returns>
 public virtual stt::Task <MutateAccountBudgetProposalResponse> MutateAccountBudgetProposalAsync(string customerId, AccountBudgetProposalOperation operation, gaxgrpc::CallSettings callSettings = null) =>
 MutateAccountBudgetProposalAsync(new MutateAccountBudgetProposalRequest
 {
     CustomerId = gax::GaxPreconditions.CheckNotNullOrEmpty(customerId, nameof(customerId)),
     Operation  = gax::GaxPreconditions.CheckNotNull(operation, nameof(operation)),
 }, callSettings);