// Copyright (c) 2026 Tigera, Inc. All rights reserved.

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

package v3

import (
	projectcalicov3 "github.com/projectcalico/api/pkg/apis/projectcalico/v3"
)

// BGPDaemonStatusApplyConfiguration represents a declarative configuration of the BGPDaemonStatus type for use
// with apply.
//
// BGPDaemonStatus defines the observed state of BGP daemon.
type BGPDaemonStatusApplyConfiguration struct {
	// The state of the BGP Daemon.
	State *projectcalicov3.BGPDaemonState `json:"state,omitempty"`
	// Version of the BGP daemon
	Version *string `json:"version,omitempty"`
	// Router ID used by bird.
	RouterID *string `json:"routerID,omitempty"`
	// LastBootTime holds the value of lastBootTime from bird.ctl output.
	LastBootTime *string `json:"lastBootTime,omitempty"`
	// LastReconfigurationTime holds the value of lastReconfigTime from bird.ctl output.
	LastReconfigurationTime *string `json:"lastReconfigurationTime,omitempty"`
}

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

// WithState sets the State 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 State field is set to the value of the last call.
func (b *BGPDaemonStatusApplyConfiguration) WithState(value projectcalicov3.BGPDaemonState) *BGPDaemonStatusApplyConfiguration {
	b.State = &value
	return b
}

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

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

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

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