/*
Merlin

API Guide for accessing Merlin's model management, deployment, and serving functionalities

API version: 0.14.0
*/

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

package client

import (
	"encoding/json"
)

// checks if the StandardTransformerSimulationRequest type satisfies the MappedNullable interface at compile time
var _ MappedNullable = &StandardTransformerSimulationRequest{}

// StandardTransformerSimulationRequest struct for StandardTransformerSimulationRequest
type StandardTransformerSimulationRequest struct {
	Payload               map[string]interface{} `json:"payload,omitempty"`
	Headers               map[string]interface{} `json:"headers,omitempty"`
	Config                map[string]interface{} `json:"config,omitempty"`
	ModelPredictionConfig *ModelPredictionConfig `json:"model_prediction_config,omitempty"`
	Protocol              *Protocol              `json:"protocol,omitempty"`
}

// NewStandardTransformerSimulationRequest instantiates a new StandardTransformerSimulationRequest 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 NewStandardTransformerSimulationRequest() *StandardTransformerSimulationRequest {
	this := StandardTransformerSimulationRequest{}
	return &this
}

// NewStandardTransformerSimulationRequestWithDefaults instantiates a new StandardTransformerSimulationRequest 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 NewStandardTransformerSimulationRequestWithDefaults() *StandardTransformerSimulationRequest {
	this := StandardTransformerSimulationRequest{}
	return &this
}

// GetPayload returns the Payload field value if set, zero value otherwise.
func (o *StandardTransformerSimulationRequest) GetPayload() map[string]interface{} {
	if o == nil || IsNil(o.Payload) {
		var ret map[string]interface{}
		return ret
	}
	return o.Payload
}

// GetPayloadOk returns a tuple with the Payload field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *StandardTransformerSimulationRequest) GetPayloadOk() (map[string]interface{}, bool) {
	if o == nil || IsNil(o.Payload) {
		return map[string]interface{}{}, false
	}
	return o.Payload, true
}

// HasPayload returns a boolean if a field has been set.
func (o *StandardTransformerSimulationRequest) HasPayload() bool {
	if o != nil && !IsNil(o.Payload) {
		return true
	}

	return false
}

// SetPayload gets a reference to the given map[string]interface{} and assigns it to the Payload field.
func (o *StandardTransformerSimulationRequest) SetPayload(v map[string]interface{}) {
	o.Payload = v
}

// GetHeaders returns the Headers field value if set, zero value otherwise.
func (o *StandardTransformerSimulationRequest) GetHeaders() map[string]interface{} {
	if o == nil || IsNil(o.Headers) {
		var ret map[string]interface{}
		return ret
	}
	return o.Headers
}

// GetHeadersOk returns a tuple with the Headers field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *StandardTransformerSimulationRequest) GetHeadersOk() (map[string]interface{}, bool) {
	if o == nil || IsNil(o.Headers) {
		return map[string]interface{}{}, false
	}
	return o.Headers, true
}

// HasHeaders returns a boolean if a field has been set.
func (o *StandardTransformerSimulationRequest) HasHeaders() bool {
	if o != nil && !IsNil(o.Headers) {
		return true
	}

	return false
}

// SetHeaders gets a reference to the given map[string]interface{} and assigns it to the Headers field.
func (o *StandardTransformerSimulationRequest) SetHeaders(v map[string]interface{}) {
	o.Headers = v
}

// GetConfig returns the Config field value if set, zero value otherwise.
func (o *StandardTransformerSimulationRequest) GetConfig() map[string]interface{} {
	if o == nil || IsNil(o.Config) {
		var ret map[string]interface{}
		return ret
	}
	return o.Config
}

// GetConfigOk returns a tuple with the Config field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *StandardTransformerSimulationRequest) GetConfigOk() (map[string]interface{}, bool) {
	if o == nil || IsNil(o.Config) {
		return map[string]interface{}{}, false
	}
	return o.Config, true
}

// HasConfig returns a boolean if a field has been set.
func (o *StandardTransformerSimulationRequest) HasConfig() bool {
	if o != nil && !IsNil(o.Config) {
		return true
	}

	return false
}

// SetConfig gets a reference to the given map[string]interface{} and assigns it to the Config field.
func (o *StandardTransformerSimulationRequest) SetConfig(v map[string]interface{}) {
	o.Config = v
}

// GetModelPredictionConfig returns the ModelPredictionConfig field value if set, zero value otherwise.
func (o *StandardTransformerSimulationRequest) GetModelPredictionConfig() ModelPredictionConfig {
	if o == nil || IsNil(o.ModelPredictionConfig) {
		var ret ModelPredictionConfig
		return ret
	}
	return *o.ModelPredictionConfig
}

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

// HasModelPredictionConfig returns a boolean if a field has been set.
func (o *StandardTransformerSimulationRequest) HasModelPredictionConfig() bool {
	if o != nil && !IsNil(o.ModelPredictionConfig) {
		return true
	}

	return false
}

// SetModelPredictionConfig gets a reference to the given ModelPredictionConfig and assigns it to the ModelPredictionConfig field.
func (o *StandardTransformerSimulationRequest) SetModelPredictionConfig(v ModelPredictionConfig) {
	o.ModelPredictionConfig = &v
}

// GetProtocol returns the Protocol field value if set, zero value otherwise.
func (o *StandardTransformerSimulationRequest) GetProtocol() Protocol {
	if o == nil || IsNil(o.Protocol) {
		var ret Protocol
		return ret
	}
	return *o.Protocol
}

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

// HasProtocol returns a boolean if a field has been set.
func (o *StandardTransformerSimulationRequest) HasProtocol() bool {
	if o != nil && !IsNil(o.Protocol) {
		return true
	}

	return false
}

// SetProtocol gets a reference to the given Protocol and assigns it to the Protocol field.
func (o *StandardTransformerSimulationRequest) SetProtocol(v Protocol) {
	o.Protocol = &v
}

func (o StandardTransformerSimulationRequest) MarshalJSON() ([]byte, error) {
	toSerialize, err := o.ToMap()
	if err != nil {
		return []byte{}, err
	}
	return json.Marshal(toSerialize)
}

func (o StandardTransformerSimulationRequest) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if !IsNil(o.Payload) {
		toSerialize["payload"] = o.Payload
	}
	if !IsNil(o.Headers) {
		toSerialize["headers"] = o.Headers
	}
	if !IsNil(o.Config) {
		toSerialize["config"] = o.Config
	}
	if !IsNil(o.ModelPredictionConfig) {
		toSerialize["model_prediction_config"] = o.ModelPredictionConfig
	}
	if !IsNil(o.Protocol) {
		toSerialize["protocol"] = o.Protocol
	}
	return toSerialize, nil
}

type NullableStandardTransformerSimulationRequest struct {
	value *StandardTransformerSimulationRequest
	isSet bool
}

func (v NullableStandardTransformerSimulationRequest) Get() *StandardTransformerSimulationRequest {
	return v.value
}

func (v *NullableStandardTransformerSimulationRequest) Set(val *StandardTransformerSimulationRequest) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableStandardTransformerSimulationRequest(val *StandardTransformerSimulationRequest) *NullableStandardTransformerSimulationRequest {
	return &NullableStandardTransformerSimulationRequest{value: val, isSet: true}
}

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

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