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

package v1

import (
	operatorv1 "github.com/openshift/api/operator/v1"
)

// ProviderLoadBalancerParametersApplyConfiguration represents a declarative configuration of the ProviderLoadBalancerParameters type for use
// with apply.
type ProviderLoadBalancerParametersApplyConfiguration struct {
	Type      *operatorv1.LoadBalancerProviderType               `json:"type,omitempty"`
	AWS       *AWSLoadBalancerParametersApplyConfiguration       `json:"aws,omitempty"`
	GCP       *GCPLoadBalancerParametersApplyConfiguration       `json:"gcp,omitempty"`
	IBM       *IBMLoadBalancerParametersApplyConfiguration       `json:"ibm,omitempty"`
	OpenStack *OpenStackLoadBalancerParametersApplyConfiguration `json:"openstack,omitempty"`
}

// ProviderLoadBalancerParametersApplyConfiguration constructs a declarative configuration of the ProviderLoadBalancerParameters type for use with
// apply.
func ProviderLoadBalancerParameters() *ProviderLoadBalancerParametersApplyConfiguration {
	return &ProviderLoadBalancerParametersApplyConfiguration{}
}

// WithType sets the Type 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 Type field is set to the value of the last call.
func (b *ProviderLoadBalancerParametersApplyConfiguration) WithType(value operatorv1.LoadBalancerProviderType) *ProviderLoadBalancerParametersApplyConfiguration {
	b.Type = &value
	return b
}

// WithAWS sets the AWS 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 AWS field is set to the value of the last call.
func (b *ProviderLoadBalancerParametersApplyConfiguration) WithAWS(value *AWSLoadBalancerParametersApplyConfiguration) *ProviderLoadBalancerParametersApplyConfiguration {
	b.AWS = value
	return b
}

// WithGCP sets the GCP 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 GCP field is set to the value of the last call.
func (b *ProviderLoadBalancerParametersApplyConfiguration) WithGCP(value *GCPLoadBalancerParametersApplyConfiguration) *ProviderLoadBalancerParametersApplyConfiguration {
	b.GCP = value
	return b
}

// WithIBM sets the IBM 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 IBM field is set to the value of the last call.
func (b *ProviderLoadBalancerParametersApplyConfiguration) WithIBM(value *IBMLoadBalancerParametersApplyConfiguration) *ProviderLoadBalancerParametersApplyConfiguration {
	b.IBM = value
	return b
}

// WithOpenStack sets the OpenStack 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 OpenStack field is set to the value of the last call.
func (b *ProviderLoadBalancerParametersApplyConfiguration) WithOpenStack(value *OpenStackLoadBalancerParametersApplyConfiguration) *ProviderLoadBalancerParametersApplyConfiguration {
	b.OpenStack = value
	return b
}
