package openapi

import (
	"encoding/json"
)

type ValidatorValidator struct {
	ActivatedStake *int32 `json:"activatedStake,omitempty"`
	StakePercentage *int32 `json:"stakePercentage,omitempty"`
	Commission *int32 `json:"commission,omitempty"`
	EpochCredits *[]int32 `json:"epochCredits,omitempty"`
	EpochVoteAccount *bool `json:"epochVoteAccount,omitempty"`
	LastVote *int32 `json:"lastVote,omitempty"`
	NodePubkey *string `json:"nodePubkey,omitempty"`
	RootSlot *int32 `json:"rootSlot,omitempty"`
	VotePubkey *string `json:"votePubkey,omitempty"`
	BlockProduction *ValidatorValidatorBlockProduction `json:"blockProduction,omitempty"`
	DelegatingStakeAccounts *[]StakeAccount `json:"delegatingStakeAccounts,omitempty"`
	DelegatorCount *int32 `json:"delegatorCount,omitempty"`
	Location *NonvalidatorsLocation `json:"location,omitempty"`
	Moniker *string `json:"moniker,omitempty"`
	Website *string `json:"website,omitempty"`
	PictureURL *string `json:"pictureURL,omitempty"`
	Version *string `json:"version,omitempty"`
	Details *string `json:"details,omitempty"`
	Asn *ValidatorValidatorAsn `json:"asn,omitempty"`
}

func NewValidatorValidator() *ValidatorValidator {
	this := ValidatorValidator{}
	return &this
}

func NewValidatorValidatorWithDefaults() *ValidatorValidator {
	this := ValidatorValidator{}
	return &this
}

func (o *ValidatorValidator) GetActivatedStake() int32 {
	if o == nil || o.ActivatedStake == nil {
		var ret int32
		return ret
	}
	return *o.ActivatedStake
}

func (o *ValidatorValidator) GetActivatedStakeOk() (*int32, bool) {
	if o == nil || o.ActivatedStake == nil {
		return nil, false
	}
	return o.ActivatedStake, true
}

func (o *ValidatorValidator) HasActivatedStake() bool {
	if o != nil && o.ActivatedStake != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetActivatedStake(v int32) {
	o.ActivatedStake = &v
}

func (o *ValidatorValidator) GetStakePercentage() int32 {
	if o == nil || o.StakePercentage == nil {
		var ret int32
		return ret
	}
	return *o.StakePercentage
}

func (o *ValidatorValidator) GetStakePercentageOk() (*int32, bool) {
	if o == nil || o.StakePercentage == nil {
		return nil, false
	}
	return o.StakePercentage, true
}

func (o *ValidatorValidator) HasStakePercentage() bool {
	if o != nil && o.StakePercentage != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetStakePercentage(v int32) {
	o.StakePercentage = &v
}

func (o *ValidatorValidator) GetCommission() int32 {
	if o == nil || o.Commission == nil {
		var ret int32
		return ret
	}
	return *o.Commission
}

func (o *ValidatorValidator) GetCommissionOk() (*int32, bool) {
	if o == nil || o.Commission == nil {
		return nil, false
	}
	return o.Commission, true
}

func (o *ValidatorValidator) HasCommission() bool {
	if o != nil && o.Commission != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetCommission(v int32) {
	o.Commission = &v
}

func (o *ValidatorValidator) GetEpochCredits() []int32 {
	if o == nil || o.EpochCredits == nil {
		var ret []int32
		return ret
	}
	return *o.EpochCredits
}

func (o *ValidatorValidator) GetEpochCreditsOk() (*[]int32, bool) {
	if o == nil || o.EpochCredits == nil {
		return nil, false
	}
	return o.EpochCredits, true
}

func (o *ValidatorValidator) HasEpochCredits() bool {
	if o != nil && o.EpochCredits != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetEpochCredits(v []int32) {
	o.EpochCredits = &v
}

func (o *ValidatorValidator) GetEpochVoteAccount() bool {
	if o == nil || o.EpochVoteAccount == nil {
		var ret bool
		return ret
	}
	return *o.EpochVoteAccount
}

func (o *ValidatorValidator) GetEpochVoteAccountOk() (*bool, bool) {
	if o == nil || o.EpochVoteAccount == nil {
		return nil, false
	}
	return o.EpochVoteAccount, true
}

func (o *ValidatorValidator) HasEpochVoteAccount() bool {
	if o != nil && o.EpochVoteAccount != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetEpochVoteAccount(v bool) {
	o.EpochVoteAccount = &v
}

func (o *ValidatorValidator) GetLastVote() int32 {
	if o == nil || o.LastVote == nil {
		var ret int32
		return ret
	}
	return *o.LastVote
}

func (o *ValidatorValidator) GetLastVoteOk() (*int32, bool) {
	if o == nil || o.LastVote == nil {
		return nil, false
	}
	return o.LastVote, true
}

func (o *ValidatorValidator) HasLastVote() bool {
	if o != nil && o.LastVote != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetLastVote(v int32) {
	o.LastVote = &v
}

func (o *ValidatorValidator) GetNodePubkey() string {
	if o == nil || o.NodePubkey == nil {
		var ret string
		return ret
	}
	return *o.NodePubkey
}

func (o *ValidatorValidator) GetNodePubkeyOk() (*string, bool) {
	if o == nil || o.NodePubkey == nil {
		return nil, false
	}
	return o.NodePubkey, true
}

func (o *ValidatorValidator) HasNodePubkey() bool {
	if o != nil && o.NodePubkey != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetNodePubkey(v string) {
	o.NodePubkey = &v
}

func (o *ValidatorValidator) GetRootSlot() int32 {
	if o == nil || o.RootSlot == nil {
		var ret int32
		return ret
	}
	return *o.RootSlot
}

func (o *ValidatorValidator) GetRootSlotOk() (*int32, bool) {
	if o == nil || o.RootSlot == nil {
		return nil, false
	}
	return o.RootSlot, true
}

func (o *ValidatorValidator) HasRootSlot() bool {
	if o != nil && o.RootSlot != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetRootSlot(v int32) {
	o.RootSlot = &v
}

func (o *ValidatorValidator) GetVotePubkey() string {
	if o == nil || o.VotePubkey == nil {
		var ret string
		return ret
	}
	return *o.VotePubkey
}

func (o *ValidatorValidator) GetVotePubkeyOk() (*string, bool) {
	if o == nil || o.VotePubkey == nil {
		return nil, false
	}
	return o.VotePubkey, true
}

func (o *ValidatorValidator) HasVotePubkey() bool {
	if o != nil && o.VotePubkey != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetVotePubkey(v string) {
	o.VotePubkey = &v
}

func (o *ValidatorValidator) GetBlockProduction() ValidatorValidatorBlockProduction {
	if o == nil || o.BlockProduction == nil {
		var ret ValidatorValidatorBlockProduction
		return ret
	}
	return *o.BlockProduction
}

func (o *ValidatorValidator) GetBlockProductionOk() (*ValidatorValidatorBlockProduction, bool) {
	if o == nil || o.BlockProduction == nil {
		return nil, false
	}
	return o.BlockProduction, true
}

func (o *ValidatorValidator) HasBlockProduction() bool {
	if o != nil && o.BlockProduction != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetBlockProduction(v ValidatorValidatorBlockProduction) {
	o.BlockProduction = &v
}

func (o *ValidatorValidator) GetDelegatingStakeAccounts() []StakeAccount {
	if o == nil || o.DelegatingStakeAccounts == nil {
		var ret []StakeAccount
		return ret
	}
	return *o.DelegatingStakeAccounts
}

func (o *ValidatorValidator) GetDelegatingStakeAccountsOk() (*[]StakeAccount, bool) {
	if o == nil || o.DelegatingStakeAccounts == nil {
		return nil, false
	}
	return o.DelegatingStakeAccounts, true
}

func (o *ValidatorValidator) HasDelegatingStakeAccounts() bool {
	if o != nil && o.DelegatingStakeAccounts != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetDelegatingStakeAccounts(v []StakeAccount) {
	o.DelegatingStakeAccounts = &v
}

func (o *ValidatorValidator) GetDelegatorCount() int32 {
	if o == nil || o.DelegatorCount == nil {
		var ret int32
		return ret
	}
	return *o.DelegatorCount
}

func (o *ValidatorValidator) GetDelegatorCountOk() (*int32, bool) {
	if o == nil || o.DelegatorCount == nil {
		return nil, false
	}
	return o.DelegatorCount, true
}

func (o *ValidatorValidator) HasDelegatorCount() bool {
	if o != nil && o.DelegatorCount != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetDelegatorCount(v int32) {
	o.DelegatorCount = &v
}

func (o *ValidatorValidator) GetLocation() NonvalidatorsLocation {
	if o == nil || o.Location == nil {
		var ret NonvalidatorsLocation
		return ret
	}
	return *o.Location
}

func (o *ValidatorValidator) GetLocationOk() (*NonvalidatorsLocation, bool) {
	if o == nil || o.Location == nil {
		return nil, false
	}
	return o.Location, true
}

func (o *ValidatorValidator) HasLocation() bool {
	if o != nil && o.Location != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetLocation(v NonvalidatorsLocation) {
	o.Location = &v
}

func (o *ValidatorValidator) GetMoniker() string {
	if o == nil || o.Moniker == nil {
		var ret string
		return ret
	}
	return *o.Moniker
}

func (o *ValidatorValidator) GetMonikerOk() (*string, bool) {
	if o == nil || o.Moniker == nil {
		return nil, false
	}
	return o.Moniker, true
}

func (o *ValidatorValidator) HasMoniker() bool {
	if o != nil && o.Moniker != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetMoniker(v string) {
	o.Moniker = &v
}

func (o *ValidatorValidator) GetWebsite() string {
	if o == nil || o.Website == nil {
		var ret string
		return ret
	}
	return *o.Website
}

func (o *ValidatorValidator) GetWebsiteOk() (*string, bool) {
	if o == nil || o.Website == nil {
		return nil, false
	}
	return o.Website, true
}

func (o *ValidatorValidator) HasWebsite() bool {
	if o != nil && o.Website != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetWebsite(v string) {
	o.Website = &v
}

func (o *ValidatorValidator) GetPictureURL() string {
	if o == nil || o.PictureURL == nil {
		var ret string
		return ret
	}
	return *o.PictureURL
}

func (o *ValidatorValidator) GetPictureURLOk() (*string, bool) {
	if o == nil || o.PictureURL == nil {
		return nil, false
	}
	return o.PictureURL, true
}

func (o *ValidatorValidator) HasPictureURL() bool {
	if o != nil && o.PictureURL != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetPictureURL(v string) {
	o.PictureURL = &v
}

func (o *ValidatorValidator) GetVersion() string {
	if o == nil || o.Version == nil {
		var ret string
		return ret
	}
	return *o.Version
}

func (o *ValidatorValidator) GetVersionOk() (*string, bool) {
	if o == nil || o.Version == nil {
		return nil, false
	}
	return o.Version, true
}

func (o *ValidatorValidator) HasVersion() bool {
	if o != nil && o.Version != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetVersion(v string) {
	o.Version = &v
}

func (o *ValidatorValidator) GetDetails() string {
	if o == nil || o.Details == nil {
		var ret string
		return ret
	}
	return *o.Details
}

func (o *ValidatorValidator) GetDetailsOk() (*string, bool) {
	if o == nil || o.Details == nil {
		return nil, false
	}
	return o.Details, true
}

func (o *ValidatorValidator) HasDetails() bool {
	if o != nil && o.Details != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetDetails(v string) {
	o.Details = &v
}

func (o *ValidatorValidator) GetAsn() ValidatorValidatorAsn {
	if o == nil || o.Asn == nil {
		var ret ValidatorValidatorAsn
		return ret
	}
	return *o.Asn
}

func (o *ValidatorValidator) GetAsnOk() (*ValidatorValidatorAsn, bool) {
	if o == nil || o.Asn == nil {
		return nil, false
	}
	return o.Asn, true
}

func (o *ValidatorValidator) HasAsn() bool {
	if o != nil && o.Asn != nil {
		return true
	}

	return false
}

func (o *ValidatorValidator) SetAsn(v ValidatorValidatorAsn) {
	o.Asn = &v
}

func (o ValidatorValidator) MarshalJSON() ([]byte, error) {
	toSerialize := map[string]interface{}{}
	if o.ActivatedStake != nil {
		toSerialize["activatedStake"] = o.ActivatedStake
	}
	if o.StakePercentage != nil {
		toSerialize["stakePercentage"] = o.StakePercentage
	}
	if o.Commission != nil {
		toSerialize["commission"] = o.Commission
	}
	if o.EpochCredits != nil {
		toSerialize["epochCredits"] = o.EpochCredits
	}
	if o.EpochVoteAccount != nil {
		toSerialize["epochVoteAccount"] = o.EpochVoteAccount
	}
	if o.LastVote != nil {
		toSerialize["lastVote"] = o.LastVote
	}
	if o.NodePubkey != nil {
		toSerialize["nodePubkey"] = o.NodePubkey
	}
	if o.RootSlot != nil {
		toSerialize["rootSlot"] = o.RootSlot
	}
	if o.VotePubkey != nil {
		toSerialize["votePubkey"] = o.VotePubkey
	}
	if o.BlockProduction != nil {
		toSerialize["blockProduction"] = o.BlockProduction
	}
	if o.DelegatingStakeAccounts != nil {
		toSerialize["delegatingStakeAccounts"] = o.DelegatingStakeAccounts
	}
	if o.DelegatorCount != nil {
		toSerialize["delegatorCount"] = o.DelegatorCount
	}
	if o.Location != nil {
		toSerialize["location"] = o.Location
	}
	if o.Moniker != nil {
		toSerialize["moniker"] = o.Moniker
	}
	if o.Website != nil {
		toSerialize["website"] = o.Website
	}
	if o.PictureURL != nil {
		toSerialize["pictureURL"] = o.PictureURL
	}
	if o.Version != nil {
		toSerialize["version"] = o.Version
	}
	if o.Details != nil {
		toSerialize["details"] = o.Details
	}
	if o.Asn != nil {
		toSerialize["asn"] = o.Asn
	}
	return json.Marshal(toSerialize)
}

type NullableValidatorValidator struct {
	value *ValidatorValidator
	isSet bool
}

func (v NullableValidatorValidator) Get() *ValidatorValidator {
	return v.value
}

func (v *NullableValidatorValidator) Set(val *ValidatorValidator) {
	v.value = val
	v.isSet = true
}

func (v NullableValidatorValidator) IsSet() bool {
	return v.isSet
}

func (v *NullableValidatorValidator) Unset() {
	v.value = nil
	v.isSet = false
}

func NewNullableValidatorValidator(val *ValidatorValidator) *NullableValidatorValidator {
	return &NullableValidatorValidator{value: val, isSet: true}
}

func (v NullableValidatorValidator) MarshalJSON() ([]byte, error) {
	return json.Marshal(v.value)
}

func (v *NullableValidatorValidator) UnmarshalJSON(src []byte) error {
	v.isSet = true
	return json.Unmarshal(src, &v.value)
}
/*
Solanabeach Backend API

Solanabeach Backend REST API documentation.  ## Rate limiting Current API rate limit per IP is 100 requests per second.    ## Pagination Most of the endpoints returning array data support pagination. The API uses two types of pagination, depending on the returned data. Some endpoints support both, some are limited to just one type.    ## Supported pagination types ### Offset / limit Offset / limit pagination is the simplest form of pagination supported by the API. Offset parameter represents the number of results to skip before returning the data, and the limit parameter limits the number of returned results.   To prevent overloading the API, all limit params have a max value. Each API endpoint has its own max value.  ### Cursor Cursor pagination is more complex than the offset / limit one, but, it comes naturally for some blockchain data (such as blocks, transactions, token transfers, etc). Cursors contain data like blocknumber, transaction index, ... and they're described on their respective API endpoints. Limit parameter works exactly the same way as it does in the offset / limit pagination.  ## Authentication The public API uses a Bearer OAuth authentication method, and the API key should be provided in the `Authorization` header in each request. API keys are issued on request. 

API version: 0.0.1
Contact: andrej@vgng.io
*/

// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

package openapi

import (
	"encoding/json"
)

// ValidatorValidator struct for ValidatorValidator
type ValidatorValidator struct {
	ActivatedStake *int32 `json:"activatedStake,omitempty"`
	StakePercentage *int32 `json:"stakePercentage,omitempty"`
	Commission *int32 `json:"commission,omitempty"`
	EpochCredits *[]int32 `json:"epochCredits,omitempty"`
	EpochVoteAccount *bool `json:"epochVoteAccount,omitempty"`
	LastVote *int32 `json:"lastVote,omitempty"`
	NodePubkey *string `json:"nodePubkey,omitempty"`
	RootSlot *int32 `json:"rootSlot,omitempty"`
	VotePubkey *string `json:"votePubkey,omitempty"`
	BlockProduction *ValidatorValidatorBlockProduction `json:"blockProduction,omitempty"`
	DelegatingStakeAccounts *[]StakeAccount `json:"delegatingStakeAccounts,omitempty"`
	DelegatorCount *int32 `json:"delegatorCount,omitempty"`
	Location *NonvalidatorsLocation `json:"location,omitempty"`
	Moniker *string `json:"moniker,omitempty"`
	Website *string `json:"website,omitempty"`
	PictureURL *string `json:"pictureURL,omitempty"`
	Version *string `json:"version,omitempty"`
	Details *string `json:"details,omitempty"`
	Asn *ValidatorValidatorAsn `json:"asn,omitempty"`
}

// NewValidatorValidator instantiates a new ValidatorValidator object
// This constructor will assign default values to properties that have it defined,
// and makes sure properties required by API are set, but the set of arguments
// will change when the set of required properties is changed
func NewValidatorValidator() *ValidatorValidator {
	this := ValidatorValidator{}
	return &this
}

// NewValidatorValidatorWithDefaults instantiates a new ValidatorValidator object
// This constructor will only assign default values to properties that have it defined,
// but it doesn't guarantee that properties required by API are set
func NewValidatorValidatorWithDefaults() *ValidatorValidator {
	this := ValidatorValidator{}
	return &this
}

// GetActivatedStake returns the ActivatedStake field value if set, zero value otherwise.
func (o *ValidatorValidator) GetActivatedStake() int32 {
	if o == nil || o.ActivatedStake == nil {
		var ret int32
		return ret
	}
	return *o.ActivatedStake
}

// GetActivatedStakeOk returns a tuple with the ActivatedStake field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetActivatedStakeOk() (*int32, bool) {
	if o == nil || o.ActivatedStake == nil {
		return nil, false
	}
	return o.ActivatedStake, true
}

// HasActivatedStake returns a boolean if a field has been set.
func (o *ValidatorValidator) HasActivatedStake() bool {
	if o != nil && o.ActivatedStake != nil {
		return true
	}

	return false
}

// SetActivatedStake gets a reference to the given int32 and assigns it to the ActivatedStake field.
func (o *ValidatorValidator) SetActivatedStake(v int32) {
	o.ActivatedStake = &v
}

// GetStakePercentage returns the StakePercentage field value if set, zero value otherwise.
func (o *ValidatorValidator) GetStakePercentage() int32 {
	if o == nil || o.StakePercentage == nil {
		var ret int32
		return ret
	}
	return *o.StakePercentage
}

// GetStakePercentageOk returns a tuple with the StakePercentage field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetStakePercentageOk() (*int32, bool) {
	if o == nil || o.StakePercentage == nil {
		return nil, false
	}
	return o.StakePercentage, true
}

// HasStakePercentage returns a boolean if a field has been set.
func (o *ValidatorValidator) HasStakePercentage() bool {
	if o != nil && o.StakePercentage != nil {
		return true
	}

	return false
}

// SetStakePercentage gets a reference to the given int32 and assigns it to the StakePercentage field.
func (o *ValidatorValidator) SetStakePercentage(v int32) {
	o.StakePercentage = &v
}

// GetCommission returns the Commission field value if set, zero value otherwise.
func (o *ValidatorValidator) GetCommission() int32 {
	if o == nil || o.Commission == nil {
		var ret int32
		return ret
	}
	return *o.Commission
}

// GetCommissionOk returns a tuple with the Commission field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetCommissionOk() (*int32, bool) {
	if o == nil || o.Commission == nil {
		return nil, false
	}
	return o.Commission, true
}

// HasCommission returns a boolean if a field has been set.
func (o *ValidatorValidator) HasCommission() bool {
	if o != nil && o.Commission != nil {
		return true
	}

	return false
}

// SetCommission gets a reference to the given int32 and assigns it to the Commission field.
func (o *ValidatorValidator) SetCommission(v int32) {
	o.Commission = &v
}

// GetEpochCredits returns the EpochCredits field value if set, zero value otherwise.
func (o *ValidatorValidator) GetEpochCredits() []int32 {
	if o == nil || o.EpochCredits == nil {
		var ret []int32
		return ret
	}
	return *o.EpochCredits
}

// GetEpochCreditsOk returns a tuple with the EpochCredits field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetEpochCreditsOk() (*[]int32, bool) {
	if o == nil || o.EpochCredits == nil {
		return nil, false
	}
	return o.EpochCredits, true
}

// HasEpochCredits returns a boolean if a field has been set.
func (o *ValidatorValidator) HasEpochCredits() bool {
	if o != nil && o.EpochCredits != nil {
		return true
	}

	return false
}

// SetEpochCredits gets a reference to the given []int32 and assigns it to the EpochCredits field.
func (o *ValidatorValidator) SetEpochCredits(v []int32) {
	o.EpochCredits = &v
}

// GetEpochVoteAccount returns the EpochVoteAccount field value if set, zero value otherwise.
func (o *ValidatorValidator) GetEpochVoteAccount() bool {
	if o == nil || o.EpochVoteAccount == nil {
		var ret bool
		return ret
	}
	return *o.EpochVoteAccount
}

// GetEpochVoteAccountOk returns a tuple with the EpochVoteAccount field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetEpochVoteAccountOk() (*bool, bool) {
	if o == nil || o.EpochVoteAccount == nil {
		return nil, false
	}
	return o.EpochVoteAccount, true
}

// HasEpochVoteAccount returns a boolean if a field has been set.
func (o *ValidatorValidator) HasEpochVoteAccount() bool {
	if o != nil && o.EpochVoteAccount != nil {
		return true
	}

	return false
}

// SetEpochVoteAccount gets a reference to the given bool and assigns it to the EpochVoteAccount field.
func (o *ValidatorValidator) SetEpochVoteAccount(v bool) {
	o.EpochVoteAccount = &v
}

// GetLastVote returns the LastVote field value if set, zero value otherwise.
func (o *ValidatorValidator) GetLastVote() int32 {
	if o == nil || o.LastVote == nil {
		var ret int32
		return ret
	}
	return *o.LastVote
}

// GetLastVoteOk returns a tuple with the LastVote field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetLastVoteOk() (*int32, bool) {
	if o == nil || o.LastVote == nil {
		return nil, false
	}
	return o.LastVote, true
}

// HasLastVote returns a boolean if a field has been set.
func (o *ValidatorValidator) HasLastVote() bool {
	if o != nil && o.LastVote != nil {
		return true
	}

	return false
}

// SetLastVote gets a reference to the given int32 and assigns it to the LastVote field.
func (o *ValidatorValidator) SetLastVote(v int32) {
	o.LastVote = &v
}

// GetNodePubkey returns the NodePubkey field value if set, zero value otherwise.
func (o *ValidatorValidator) GetNodePubkey() string {
	if o == nil || o.NodePubkey == nil {
		var ret string
		return ret
	}
	return *o.NodePubkey
}

// GetNodePubkeyOk returns a tuple with the NodePubkey field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetNodePubkeyOk() (*string, bool) {
	if o == nil || o.NodePubkey == nil {
		return nil, false
	}
	return o.NodePubkey, true
}

// HasNodePubkey returns a boolean if a field has been set.
func (o *ValidatorValidator) HasNodePubkey() bool {
	if o != nil && o.NodePubkey != nil {
		return true
	}

	return false
}

// SetNodePubkey gets a reference to the given string and assigns it to the NodePubkey field.
func (o *ValidatorValidator) SetNodePubkey(v string) {
	o.NodePubkey = &v
}

// GetRootSlot returns the RootSlot field value if set, zero value otherwise.
func (o *ValidatorValidator) GetRootSlot() int32 {
	if o == nil || o.RootSlot == nil {
		var ret int32
		return ret
	}
	return *o.RootSlot
}

// GetRootSlotOk returns a tuple with the RootSlot field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetRootSlotOk() (*int32, bool) {
	if o == nil || o.RootSlot == nil {
		return nil, false
	}
	return o.RootSlot, true
}

// HasRootSlot returns a boolean if a field has been set.
func (o *ValidatorValidator) HasRootSlot() bool {
	if o != nil && o.RootSlot != nil {
		return true
	}

	return false
}

// SetRootSlot gets a reference to the given int32 and assigns it to the RootSlot field.
func (o *ValidatorValidator) SetRootSlot(v int32) {
	o.RootSlot = &v
}

// GetVotePubkey returns the VotePubkey field value if set, zero value otherwise.
func (o *ValidatorValidator) GetVotePubkey() string {
	if o == nil || o.VotePubkey == nil {
		var ret string
		return ret
	}
	return *o.VotePubkey
}

// GetVotePubkeyOk returns a tuple with the VotePubkey field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetVotePubkeyOk() (*string, bool) {
	if o == nil || o.VotePubkey == nil {
		return nil, false
	}
	return o.VotePubkey, true
}

// HasVotePubkey returns a boolean if a field has been set.
func (o *ValidatorValidator) HasVotePubkey() bool {
	if o != nil && o.VotePubkey != nil {
		return true
	}

	return false
}

// SetVotePubkey gets a reference to the given string and assigns it to the VotePubkey field.
func (o *ValidatorValidator) SetVotePubkey(v string) {
	o.VotePubkey = &v
}

// GetBlockProduction returns the BlockProduction field value if set, zero value otherwise.
func (o *ValidatorValidator) GetBlockProduction() ValidatorValidatorBlockProduction {
	if o == nil || o.BlockProduction == nil {
		var ret ValidatorValidatorBlockProduction
		return ret
	}
	return *o.BlockProduction
}

// GetBlockProductionOk returns a tuple with the BlockProduction field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetBlockProductionOk() (*ValidatorValidatorBlockProduction, bool) {
	if o == nil || o.BlockProduction == nil {
		return nil, false
	}
	return o.BlockProduction, true
}

// HasBlockProduction returns a boolean if a field has been set.
func (o *ValidatorValidator) HasBlockProduction() bool {
	if o != nil && o.BlockProduction != nil {
		return true
	}

	return false
}

// SetBlockProduction gets a reference to the given ValidatorValidatorBlockProduction and assigns it to the BlockProduction field.
func (o *ValidatorValidator) SetBlockProduction(v ValidatorValidatorBlockProduction) {
	o.BlockProduction = &v
}

// GetDelegatingStakeAccounts returns the DelegatingStakeAccounts field value if set, zero value otherwise.
func (o *ValidatorValidator) GetDelegatingStakeAccounts() []StakeAccount {
	if o == nil || o.DelegatingStakeAccounts == nil {
		var ret []StakeAccount
		return ret
	}
	return *o.DelegatingStakeAccounts
}

// GetDelegatingStakeAccountsOk returns a tuple with the DelegatingStakeAccounts field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetDelegatingStakeAccountsOk() (*[]StakeAccount, bool) {
	if o == nil || o.DelegatingStakeAccounts == nil {
		return nil, false
	}
	return o.DelegatingStakeAccounts, true
}

// HasDelegatingStakeAccounts returns a boolean if a field has been set.
func (o *ValidatorValidator) HasDelegatingStakeAccounts() bool {
	if o != nil && o.DelegatingStakeAccounts != nil {
		return true
	}

	return false
}

// SetDelegatingStakeAccounts gets a reference to the given []StakeAccount and assigns it to the DelegatingStakeAccounts field.
func (o *ValidatorValidator) SetDelegatingStakeAccounts(v []StakeAccount) {
	o.DelegatingStakeAccounts = &v
}

// GetDelegatorCount returns the DelegatorCount field value if set, zero value otherwise.
func (o *ValidatorValidator) GetDelegatorCount() int32 {
	if o == nil || o.DelegatorCount == nil {
		var ret int32
		return ret
	}
	return *o.DelegatorCount
}

// GetDelegatorCountOk returns a tuple with the DelegatorCount field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetDelegatorCountOk() (*int32, bool) {
	if o == nil || o.DelegatorCount == nil {
		return nil, false
	}
	return o.DelegatorCount, true
}

// HasDelegatorCount returns a boolean if a field has been set.
func (o *ValidatorValidator) HasDelegatorCount() bool {
	if o != nil && o.DelegatorCount != nil {
		return true
	}

	return false
}

// SetDelegatorCount gets a reference to the given int32 and assigns it to the DelegatorCount field.
func (o *ValidatorValidator) SetDelegatorCount(v int32) {
	o.DelegatorCount = &v
}

// GetLocation returns the Location field value if set, zero value otherwise.
func (o *ValidatorValidator) GetLocation() NonvalidatorsLocation {
	if o == nil || o.Location == nil {
		var ret NonvalidatorsLocation
		return ret
	}
	return *o.Location
}

// GetLocationOk returns a tuple with the Location field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetLocationOk() (*NonvalidatorsLocation, bool) {
	if o == nil || o.Location == nil {
		return nil, false
	}
	return o.Location, true
}

// HasLocation returns a boolean if a field has been set.
func (o *ValidatorValidator) HasLocation() bool {
	if o != nil && o.Location != nil {
		return true
	}

	return false
}

// SetLocation gets a reference to the given NonvalidatorsLocation and assigns it to the Location field.
func (o *ValidatorValidator) SetLocation(v NonvalidatorsLocation) {
	o.Location = &v
}

// GetMoniker returns the Moniker field value if set, zero value otherwise.
func (o *ValidatorValidator) GetMoniker() string {
	if o == nil || o.Moniker == nil {
		var ret string
		return ret
	}
	return *o.Moniker
}

// GetMonikerOk returns a tuple with the Moniker field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetMonikerOk() (*string, bool) {
	if o == nil || o.Moniker == nil {
		return nil, false
	}
	return o.Moniker, true
}

// HasMoniker returns a boolean if a field has been set.
func (o *ValidatorValidator) HasMoniker() bool {
	if o != nil && o.Moniker != nil {
		return true
	}

	return false
}

// SetMoniker gets a reference to the given string and assigns it to the Moniker field.
func (o *ValidatorValidator) SetMoniker(v string) {
	o.Moniker = &v
}

// GetWebsite returns the Website field value if set, zero value otherwise.
func (o *ValidatorValidator) GetWebsite() string {
	if o == nil || o.Website == nil {
		var ret string
		return ret
	}
	return *o.Website
}

// GetWebsiteOk returns a tuple with the Website field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetWebsiteOk() (*string, bool) {
	if o == nil || o.Website == nil {
		return nil, false
	}
	return o.Website, true
}

// HasWebsite returns a boolean if a field has been set.
func (o *ValidatorValidator) HasWebsite() bool {
	if o != nil && o.Website != nil {
		return true
	}

	return false
}

// SetWebsite gets a reference to the given string and assigns it to the Website field.
func (o *ValidatorValidator) SetWebsite(v string) {
	o.Website = &v
}

// GetPictureURL returns the PictureURL field value if set, zero value otherwise.
func (o *ValidatorValidator) GetPictureURL() string {
	if o == nil || o.PictureURL == nil {
		var ret string
		return ret
	}
	return *o.PictureURL
}

// GetPictureURLOk returns a tuple with the PictureURL field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetPictureURLOk() (*string, bool) {
	if o == nil || o.PictureURL == nil {
		return nil, false
	}
	return o.PictureURL, true
}

// HasPictureURL returns a boolean if a field has been set.
func (o *ValidatorValidator) HasPictureURL() bool {
	if o != nil && o.PictureURL != nil {
		return true
	}

	return false
}

// SetPictureURL gets a reference to the given string and assigns it to the PictureURL field.
func (o *ValidatorValidator) SetPictureURL(v string) {
	o.PictureURL = &v
}

// GetVersion returns the Version field value if set, zero value otherwise.
func (o *ValidatorValidator) GetVersion() string {
	if o == nil || o.Version == nil {
		var ret string
		return ret
	}
	return *o.Version
}

// GetVersionOk returns a tuple with the Version field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetVersionOk() (*string, bool) {
	if o == nil || o.Version == nil {
		return nil, false
	}
	return o.Version, true
}

// HasVersion returns a boolean if a field has been set.
func (o *ValidatorValidator) HasVersion() bool {
	if o != nil && o.Version != nil {
		return true
	}

	return false
}

// SetVersion gets a reference to the given string and assigns it to the Version field.
func (o *ValidatorValidator) SetVersion(v string) {
	o.Version = &v
}

// GetDetails returns the Details field value if set, zero value otherwise.
func (o *ValidatorValidator) GetDetails() string {
	if o == nil || o.Details == nil {
		var ret string
		return ret
	}
	return *o.Details
}

// GetDetailsOk returns a tuple with the Details field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetDetailsOk() (*string, bool) {
	if o == nil || o.Details == nil {
		return nil, false
	}
	return o.Details, true
}

// HasDetails returns a boolean if a field has been set.
func (o *ValidatorValidator) HasDetails() bool {
	if o != nil && o.Details != nil {
		return true
	}

	return false
}

// SetDetails gets a reference to the given string and assigns it to the Details field.
func (o *ValidatorValidator) SetDetails(v string) {
	o.Details = &v
}

// GetAsn returns the Asn field value if set, zero value otherwise.
func (o *ValidatorValidator) GetAsn() ValidatorValidatorAsn {
	if o == nil || o.Asn == nil {
		var ret ValidatorValidatorAsn
		return ret
	}
	return *o.Asn
}

// GetAsnOk returns a tuple with the Asn field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *ValidatorValidator) GetAsnOk() (*ValidatorValidatorAsn, bool) {
	if o == nil || o.Asn == nil {
		return nil, false
	}
	return o.Asn, true
}

// HasAsn returns a boolean if a field has been set.
func (o *ValidatorValidator) HasAsn() bool {
	if o != nil && o.Asn != nil {
		return true
	}

	return false
}

// SetAsn gets a reference to the given ValidatorValidatorAsn and assigns it to the Asn field.
func (o *ValidatorValidator) SetAsn(v ValidatorValidatorAsn) {
	o.Asn = &v
}

func (o ValidatorValidator) MarshalJSON() ([]byte, error) {
	toSerialize := map[string]interface{}{}
	if o.ActivatedStake != nil {
		toSerialize["activatedStake"] = o.ActivatedStake
	}
	if o.StakePercentage != nil {
		toSerialize["stakePercentage"] = o.StakePercentage
	}
	if o.Commission != nil {
		toSerialize["commission"] = o.Commission
	}
	if o.EpochCredits != nil {
		toSerialize["epochCredits"] = o.EpochCredits
	}
	if o.EpochVoteAccount != nil {
		toSerialize["epochVoteAccount"] = o.EpochVoteAccount
	}
	if o.LastVote != nil {
		toSerialize["lastVote"] = o.LastVote
	}
	if o.NodePubkey != nil {
		toSerialize["nodePubkey"] = o.NodePubkey
	}
	if o.RootSlot != nil {
		toSerialize["rootSlot"] = o.RootSlot
	}
	if o.VotePubkey != nil {
		toSerialize["votePubkey"] = o.VotePubkey
	}
	if o.BlockProduction != nil {
		toSerialize["blockProduction"] = o.BlockProduction
	}
	if o.DelegatingStakeAccounts != nil {
		toSerialize["delegatingStakeAccounts"] = o.DelegatingStakeAccounts
	}
	if o.DelegatorCount != nil {
		toSerialize["delegatorCount"] = o.DelegatorCount
	}
	if o.Location != nil {
		toSerialize["location"] = o.Location
	}
	if o.Moniker != nil {
		toSerialize["moniker"] = o.Moniker
	}
	if o.Website != nil {
		toSerialize["website"] = o.Website
	}
	if o.PictureURL != nil {
		toSerialize["pictureURL"] = o.PictureURL
	}
	if o.Version != nil {
		toSerialize["version"] = o.Version
	}
	if o.Details != nil {
		toSerialize["details"] = o.Details
	}
	if o.Asn != nil {
		toSerialize["asn"] = o.Asn
	}
	return json.Marshal(toSerialize)
}

type NullableValidatorValidator struct {
	value *ValidatorValidator
	isSet bool
}

func (v NullableValidatorValidator) Get() *ValidatorValidator {
	return v.value
}

func (v *NullableValidatorValidator) Set(val *ValidatorValidator) {
	v.value = val
	v.isSet = true
}

func (v NullableValidatorValidator) IsSet() bool {
	return v.isSet
}

func (v *NullableValidatorValidator) Unset() {
	v.value = nil
	v.isSet = false
}

func NewNullableValidatorValidator(val *ValidatorValidator) *NullableValidatorValidator {
	return &NullableValidatorValidator{value: val, isSet: true}
}

func (v NullableValidatorValidator) MarshalJSON() ([]byte, error) {
	return json.Marshal(v.value)
}

func (v *NullableValidatorValidator) UnmarshalJSON(src []byte) error {
	v.isSet = true
	return json.Unmarshal(src, &v.value)
}


