// Copyright AGNTCY Contributors (https://github.com/agntcy)
// SPDX-License-Identifier: Apache-2.0
/*
Agent Manifest Definition

No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)

API version: 0.1
*/

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

package manifests

import (
	"encoding/json"
)

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

// LangGraphConfig Describes langgraph based agent deployment config
type LangGraphConfig struct {
	FrameworkType string `json:"framework_type"`
	Graph         string `json:"graph"`
}

// NewLangGraphConfig instantiates a new LangGraphConfig 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 NewLangGraphConfig(frameworkType string, graph string) *LangGraphConfig {
	this := LangGraphConfig{}
	this.FrameworkType = frameworkType
	this.Graph = graph
	return &this
}

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

// GetFrameworkType returns the FrameworkType field value
func (o *LangGraphConfig) GetFrameworkType() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.FrameworkType
}

// GetFrameworkTypeOk returns a tuple with the FrameworkType field value
// and a boolean to check if the value has been set.
func (o *LangGraphConfig) GetFrameworkTypeOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.FrameworkType, true
}

// SetFrameworkType sets field value
func (o *LangGraphConfig) SetFrameworkType(v string) {
	o.FrameworkType = v
}

// GetGraph returns the Graph field value
func (o *LangGraphConfig) GetGraph() string {
	if o == nil {
		var ret string
		return ret
	}

	return o.Graph
}

// GetGraphOk returns a tuple with the Graph field value
// and a boolean to check if the value has been set.
func (o *LangGraphConfig) GetGraphOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return &o.Graph, true
}

// SetGraph sets field value
func (o *LangGraphConfig) SetGraph(v string) {
	o.Graph = v
}

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

func (o LangGraphConfig) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	toSerialize["framework_type"] = o.FrameworkType
	toSerialize["graph"] = o.Graph
	return toSerialize, nil
}

type NullableLangGraphConfig struct {
	value *LangGraphConfig
	isSet bool
}

func (v NullableLangGraphConfig) Get() *LangGraphConfig {
	return v.value
}

func (v *NullableLangGraphConfig) Set(val *LangGraphConfig) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableLangGraphConfig(val *LangGraphConfig) *NullableLangGraphConfig {
	return &NullableLangGraphConfig{value: val, isSet: true}
}

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

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