/*
FinFeedAPI Stock REST API

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

API version: v1
Contact: support@apibricks.io
*/

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

package openapi

import (
	"encoding/json"
	"time"
)

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

// AdminSecurityDirectoryModel Represents the response DTO for security directory information
type AdminSecurityDirectoryModel struct {
	// The stock symbol
	Symbol NullableString `json:"symbol,omitempty"`
	// Original timestamp in nanoseconds since epoch
	TimestampNanos *int64 `json:"timestamp_nanos,omitempty"`
	// Time when the security directory information was recorded as DateTime
	Timestamp *time.Time `json:"timestamp,omitempty"`
	// Flags for the security
	Flags *int32 `json:"flags,omitempty"`
	// Number of shares that represent a round lot
	RoundLotSize *int32 `json:"round_lot_size,omitempty"`
	// Adjusted previous official closing price as decimal
	AdjustedPocPrice *float64 `json:"adjusted_poc_price,omitempty"`
	// LULD tier as byte value
	LuldTier *int32 `json:"luld_tier,omitempty"`
	// LULD tier as numeric string
	LuldTierCode NullableString `json:"luld_tier_code,omitempty"`
	// Human-readable description of the LULD tier
	LuldTierText NullableString `json:"luld_tier_text,omitempty"`
	// Indicates if LULD Tier is 'Not applicable' (0x0).
	IsLuldTierNotApplicable *bool `json:"is_luld_tier_not_applicable,omitempty"`
	// Indicates if LULD Tier is 'Tier 1 NMS Stock' (0x1).
	IsLuldTier1 *bool `json:"is_luld_tier1,omitempty"`
	// Indicates if LULD Tier is 'Tier 2 NMS Stock' (0x2).
	IsLuldTier2 *bool `json:"is_luld_tier2,omitempty"`
}

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

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

// GetSymbol returns the Symbol field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *AdminSecurityDirectoryModel) GetSymbol() string {
	if o == nil || IsNil(o.Symbol.Get()) {
		var ret string
		return ret
	}
	return *o.Symbol.Get()
}

// GetSymbolOk returns a tuple with the Symbol field value if set, nil otherwise
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *AdminSecurityDirectoryModel) GetSymbolOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.Symbol.Get(), o.Symbol.IsSet()
}

// HasSymbol returns a boolean if a field has been set.
func (o *AdminSecurityDirectoryModel) HasSymbol() bool {
	if o != nil && o.Symbol.IsSet() {
		return true
	}

	return false
}

// SetSymbol gets a reference to the given NullableString and assigns it to the Symbol field.
func (o *AdminSecurityDirectoryModel) SetSymbol(v string) {
	o.Symbol.Set(&v)
}
// SetSymbolNil sets the value for Symbol to be an explicit nil
func (o *AdminSecurityDirectoryModel) SetSymbolNil() {
	o.Symbol.Set(nil)
}

// UnsetSymbol ensures that no value is present for Symbol, not even an explicit nil
func (o *AdminSecurityDirectoryModel) UnsetSymbol() {
	o.Symbol.Unset()
}

// GetTimestampNanos returns the TimestampNanos field value if set, zero value otherwise.
func (o *AdminSecurityDirectoryModel) GetTimestampNanos() int64 {
	if o == nil || IsNil(o.TimestampNanos) {
		var ret int64
		return ret
	}
	return *o.TimestampNanos
}

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

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

	return false
}

// SetTimestampNanos gets a reference to the given int64 and assigns it to the TimestampNanos field.
func (o *AdminSecurityDirectoryModel) SetTimestampNanos(v int64) {
	o.TimestampNanos = &v
}

// GetTimestamp returns the Timestamp field value if set, zero value otherwise.
func (o *AdminSecurityDirectoryModel) GetTimestamp() time.Time {
	if o == nil || IsNil(o.Timestamp) {
		var ret time.Time
		return ret
	}
	return *o.Timestamp
}

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

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

	return false
}

// SetTimestamp gets a reference to the given time.Time and assigns it to the Timestamp field.
func (o *AdminSecurityDirectoryModel) SetTimestamp(v time.Time) {
	o.Timestamp = &v
}

// GetFlags returns the Flags field value if set, zero value otherwise.
func (o *AdminSecurityDirectoryModel) GetFlags() int32 {
	if o == nil || IsNil(o.Flags) {
		var ret int32
		return ret
	}
	return *o.Flags
}

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

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

	return false
}

// SetFlags gets a reference to the given int32 and assigns it to the Flags field.
func (o *AdminSecurityDirectoryModel) SetFlags(v int32) {
	o.Flags = &v
}

// GetRoundLotSize returns the RoundLotSize field value if set, zero value otherwise.
func (o *AdminSecurityDirectoryModel) GetRoundLotSize() int32 {
	if o == nil || IsNil(o.RoundLotSize) {
		var ret int32
		return ret
	}
	return *o.RoundLotSize
}

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

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

	return false
}

// SetRoundLotSize gets a reference to the given int32 and assigns it to the RoundLotSize field.
func (o *AdminSecurityDirectoryModel) SetRoundLotSize(v int32) {
	o.RoundLotSize = &v
}

// GetAdjustedPocPrice returns the AdjustedPocPrice field value if set, zero value otherwise.
func (o *AdminSecurityDirectoryModel) GetAdjustedPocPrice() float64 {
	if o == nil || IsNil(o.AdjustedPocPrice) {
		var ret float64
		return ret
	}
	return *o.AdjustedPocPrice
}

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

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

	return false
}

// SetAdjustedPocPrice gets a reference to the given float64 and assigns it to the AdjustedPocPrice field.
func (o *AdminSecurityDirectoryModel) SetAdjustedPocPrice(v float64) {
	o.AdjustedPocPrice = &v
}

// GetLuldTier returns the LuldTier field value if set, zero value otherwise.
func (o *AdminSecurityDirectoryModel) GetLuldTier() int32 {
	if o == nil || IsNil(o.LuldTier) {
		var ret int32
		return ret
	}
	return *o.LuldTier
}

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

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

	return false
}

// SetLuldTier gets a reference to the given int32 and assigns it to the LuldTier field.
func (o *AdminSecurityDirectoryModel) SetLuldTier(v int32) {
	o.LuldTier = &v
}

// GetLuldTierCode returns the LuldTierCode field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *AdminSecurityDirectoryModel) GetLuldTierCode() string {
	if o == nil || IsNil(o.LuldTierCode.Get()) {
		var ret string
		return ret
	}
	return *o.LuldTierCode.Get()
}

// GetLuldTierCodeOk returns a tuple with the LuldTierCode field value if set, nil otherwise
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *AdminSecurityDirectoryModel) GetLuldTierCodeOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.LuldTierCode.Get(), o.LuldTierCode.IsSet()
}

// HasLuldTierCode returns a boolean if a field has been set.
func (o *AdminSecurityDirectoryModel) HasLuldTierCode() bool {
	if o != nil && o.LuldTierCode.IsSet() {
		return true
	}

	return false
}

// SetLuldTierCode gets a reference to the given NullableString and assigns it to the LuldTierCode field.
func (o *AdminSecurityDirectoryModel) SetLuldTierCode(v string) {
	o.LuldTierCode.Set(&v)
}
// SetLuldTierCodeNil sets the value for LuldTierCode to be an explicit nil
func (o *AdminSecurityDirectoryModel) SetLuldTierCodeNil() {
	o.LuldTierCode.Set(nil)
}

// UnsetLuldTierCode ensures that no value is present for LuldTierCode, not even an explicit nil
func (o *AdminSecurityDirectoryModel) UnsetLuldTierCode() {
	o.LuldTierCode.Unset()
}

// GetLuldTierText returns the LuldTierText field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *AdminSecurityDirectoryModel) GetLuldTierText() string {
	if o == nil || IsNil(o.LuldTierText.Get()) {
		var ret string
		return ret
	}
	return *o.LuldTierText.Get()
}

// GetLuldTierTextOk returns a tuple with the LuldTierText field value if set, nil otherwise
// and a boolean to check if the value has been set.
// NOTE: If the value is an explicit nil, `nil, true` will be returned
func (o *AdminSecurityDirectoryModel) GetLuldTierTextOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.LuldTierText.Get(), o.LuldTierText.IsSet()
}

// HasLuldTierText returns a boolean if a field has been set.
func (o *AdminSecurityDirectoryModel) HasLuldTierText() bool {
	if o != nil && o.LuldTierText.IsSet() {
		return true
	}

	return false
}

// SetLuldTierText gets a reference to the given NullableString and assigns it to the LuldTierText field.
func (o *AdminSecurityDirectoryModel) SetLuldTierText(v string) {
	o.LuldTierText.Set(&v)
}
// SetLuldTierTextNil sets the value for LuldTierText to be an explicit nil
func (o *AdminSecurityDirectoryModel) SetLuldTierTextNil() {
	o.LuldTierText.Set(nil)
}

// UnsetLuldTierText ensures that no value is present for LuldTierText, not even an explicit nil
func (o *AdminSecurityDirectoryModel) UnsetLuldTierText() {
	o.LuldTierText.Unset()
}

// GetIsLuldTierNotApplicable returns the IsLuldTierNotApplicable field value if set, zero value otherwise.
func (o *AdminSecurityDirectoryModel) GetIsLuldTierNotApplicable() bool {
	if o == nil || IsNil(o.IsLuldTierNotApplicable) {
		var ret bool
		return ret
	}
	return *o.IsLuldTierNotApplicable
}

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

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

	return false
}

// SetIsLuldTierNotApplicable gets a reference to the given bool and assigns it to the IsLuldTierNotApplicable field.
func (o *AdminSecurityDirectoryModel) SetIsLuldTierNotApplicable(v bool) {
	o.IsLuldTierNotApplicable = &v
}

// GetIsLuldTier1 returns the IsLuldTier1 field value if set, zero value otherwise.
func (o *AdminSecurityDirectoryModel) GetIsLuldTier1() bool {
	if o == nil || IsNil(o.IsLuldTier1) {
		var ret bool
		return ret
	}
	return *o.IsLuldTier1
}

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

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

	return false
}

// SetIsLuldTier1 gets a reference to the given bool and assigns it to the IsLuldTier1 field.
func (o *AdminSecurityDirectoryModel) SetIsLuldTier1(v bool) {
	o.IsLuldTier1 = &v
}

// GetIsLuldTier2 returns the IsLuldTier2 field value if set, zero value otherwise.
func (o *AdminSecurityDirectoryModel) GetIsLuldTier2() bool {
	if o == nil || IsNil(o.IsLuldTier2) {
		var ret bool
		return ret
	}
	return *o.IsLuldTier2
}

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

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

	return false
}

// SetIsLuldTier2 gets a reference to the given bool and assigns it to the IsLuldTier2 field.
func (o *AdminSecurityDirectoryModel) SetIsLuldTier2(v bool) {
	o.IsLuldTier2 = &v
}

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

func (o AdminSecurityDirectoryModel) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if o.Symbol.IsSet() {
		toSerialize["symbol"] = o.Symbol.Get()
	}
	if !IsNil(o.TimestampNanos) {
		toSerialize["timestamp_nanos"] = o.TimestampNanos
	}
	if !IsNil(o.Timestamp) {
		toSerialize["timestamp"] = o.Timestamp
	}
	if !IsNil(o.Flags) {
		toSerialize["flags"] = o.Flags
	}
	if !IsNil(o.RoundLotSize) {
		toSerialize["round_lot_size"] = o.RoundLotSize
	}
	if !IsNil(o.AdjustedPocPrice) {
		toSerialize["adjusted_poc_price"] = o.AdjustedPocPrice
	}
	if !IsNil(o.LuldTier) {
		toSerialize["luld_tier"] = o.LuldTier
	}
	if o.LuldTierCode.IsSet() {
		toSerialize["luld_tier_code"] = o.LuldTierCode.Get()
	}
	if o.LuldTierText.IsSet() {
		toSerialize["luld_tier_text"] = o.LuldTierText.Get()
	}
	if !IsNil(o.IsLuldTierNotApplicable) {
		toSerialize["is_luld_tier_not_applicable"] = o.IsLuldTierNotApplicable
	}
	if !IsNil(o.IsLuldTier1) {
		toSerialize["is_luld_tier1"] = o.IsLuldTier1
	}
	if !IsNil(o.IsLuldTier2) {
		toSerialize["is_luld_tier2"] = o.IsLuldTier2
	}
	return toSerialize, nil
}

type NullableAdminSecurityDirectoryModel struct {
	value *AdminSecurityDirectoryModel
	isSet bool
}

func (v NullableAdminSecurityDirectoryModel) Get() *AdminSecurityDirectoryModel {
	return v.value
}

func (v *NullableAdminSecurityDirectoryModel) Set(val *AdminSecurityDirectoryModel) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableAdminSecurityDirectoryModel(val *AdminSecurityDirectoryModel) *NullableAdminSecurityDirectoryModel {
	return &NullableAdminSecurityDirectoryModel{value: val, isSet: true}
}

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

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


