// Code generated by applyconfiguration-gen. DO NOT EDIT.

package v1

// APIServerSpecApplyConfiguration represents an declarative configuration of the APIServerSpec type for use
// with apply.
type APIServerSpecApplyConfiguration struct {
	ServingCerts                 *APIServerServingCertsApplyConfiguration  `json:"servingCerts,omitempty"`
	ClientCA                     *ConfigMapNameReferenceApplyConfiguration `json:"clientCA,omitempty"`
	AdditionalCORSAllowedOrigins []string                                  `json:"additionalCORSAllowedOrigins,omitempty"`
	Encryption                   *APIServerEncryptionApplyConfiguration    `json:"encryption,omitempty"`
	TLSSecurityProfile           *TLSSecurityProfileApplyConfiguration     `json:"tlsSecurityProfile,omitempty"`
	Audit                        *AuditApplyConfiguration                  `json:"audit,omitempty"`
}

// APIServerSpecApplyConfiguration constructs an declarative configuration of the APIServerSpec type for use with
// apply.
func APIServerSpec() *APIServerSpecApplyConfiguration {
	return &APIServerSpecApplyConfiguration{}
}

// WithServingCerts sets the ServingCerts field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the ServingCerts field is set to the value of the last call.
func (b *APIServerSpecApplyConfiguration) WithServingCerts(value *APIServerServingCertsApplyConfiguration) *APIServerSpecApplyConfiguration {
	b.ServingCerts = value
	return b
}

// WithClientCA sets the ClientCA field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the ClientCA field is set to the value of the last call.
func (b *APIServerSpecApplyConfiguration) WithClientCA(value *ConfigMapNameReferenceApplyConfiguration) *APIServerSpecApplyConfiguration {
	b.ClientCA = value
	return b
}

// WithAdditionalCORSAllowedOrigins adds the given value to the AdditionalCORSAllowedOrigins field in the declarative configuration
// and returns the receiver, so that objects can be build by chaining "With" function invocations.
// If called multiple times, values provided by each call will be appended to the AdditionalCORSAllowedOrigins field.
func (b *APIServerSpecApplyConfiguration) WithAdditionalCORSAllowedOrigins(values ...string) *APIServerSpecApplyConfiguration {
	for i := range values {
		b.AdditionalCORSAllowedOrigins = append(b.AdditionalCORSAllowedOrigins, values[i])
	}
	return b
}

// WithEncryption sets the Encryption field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Encryption field is set to the value of the last call.
func (b *APIServerSpecApplyConfiguration) WithEncryption(value *APIServerEncryptionApplyConfiguration) *APIServerSpecApplyConfiguration {
	b.Encryption = value
	return b
}

// WithTLSSecurityProfile sets the TLSSecurityProfile field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the TLSSecurityProfile field is set to the value of the last call.
func (b *APIServerSpecApplyConfiguration) WithTLSSecurityProfile(value *TLSSecurityProfileApplyConfiguration) *APIServerSpecApplyConfiguration {
	b.TLSSecurityProfile = value
	return b
}

// WithAudit sets the Audit field in the declarative configuration to the given value
// and returns the receiver, so that objects can be built by chaining "With" function invocations.
// If called multiple times, the Audit field is set to the value of the last call.
func (b *APIServerSpecApplyConfiguration) WithAudit(value *AuditApplyConfiguration) *APIServerSpecApplyConfiguration {
	b.Audit = value
	return b
}
