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

package v1

// OIDCProviderApplyConfiguration represents an declarative configuration of the OIDCProvider type for use
// with apply.
type OIDCProviderApplyConfiguration struct {
	Name                 *string                                      `json:"name,omitempty"`
	Issuer               *TokenIssuerApplyConfiguration               `json:"issuer,omitempty"`
	OIDCClients          []OIDCClientConfigApplyConfiguration         `json:"oidcClients,omitempty"`
	ClaimMappings        *TokenClaimMappingsApplyConfiguration        `json:"claimMappings,omitempty"`
	ClaimValidationRules []TokenClaimValidationRuleApplyConfiguration `json:"claimValidationRules,omitempty"`
}

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

// WithName sets the Name 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 Name field is set to the value of the last call.
func (b *OIDCProviderApplyConfiguration) WithName(value string) *OIDCProviderApplyConfiguration {
	b.Name = &value
	return b
}

// WithIssuer sets the Issuer 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 Issuer field is set to the value of the last call.
func (b *OIDCProviderApplyConfiguration) WithIssuer(value *TokenIssuerApplyConfiguration) *OIDCProviderApplyConfiguration {
	b.Issuer = value
	return b
}

// WithOIDCClients adds the given value to the OIDCClients 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 OIDCClients field.
func (b *OIDCProviderApplyConfiguration) WithOIDCClients(values ...*OIDCClientConfigApplyConfiguration) *OIDCProviderApplyConfiguration {
	for i := range values {
		if values[i] == nil {
			panic("nil value passed to WithOIDCClients")
		}
		b.OIDCClients = append(b.OIDCClients, *values[i])
	}
	return b
}

// WithClaimMappings sets the ClaimMappings 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 ClaimMappings field is set to the value of the last call.
func (b *OIDCProviderApplyConfiguration) WithClaimMappings(value *TokenClaimMappingsApplyConfiguration) *OIDCProviderApplyConfiguration {
	b.ClaimMappings = value
	return b
}

// WithClaimValidationRules adds the given value to the ClaimValidationRules 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 ClaimValidationRules field.
func (b *OIDCProviderApplyConfiguration) WithClaimValidationRules(values ...*TokenClaimValidationRuleApplyConfiguration) *OIDCProviderApplyConfiguration {
	for i := range values {
		if values[i] == nil {
			panic("nil value passed to WithClaimValidationRules")
		}
		b.ClaimValidationRules = append(b.ClaimValidationRules, *values[i])
	}
	return b
}
