/*
CoinAPI Market Data 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 V1Asset type satisfies the MappedNullable interface at compile time
var _ MappedNullable = &V1Asset{}

// V1Asset Represents an asset.
type V1Asset struct {
	// Gets or sets the asset ID.
	AssetId NullableString `json:"asset_id,omitempty"`
	// Gets or sets the name of the asset.
	Name NullableString `json:"name,omitempty"`
	// Gets or sets a value indicating whether the asset is a cryptocurrency.
	TypeIsCrypto *int32 `json:"type_is_crypto,omitempty"`
	// Gets or sets the start date of quote data.
	DataQuoteStart NullableTime `json:"data_quote_start,omitempty"`
	// Gets or sets the end date of quote data.
	DataQuoteEnd NullableTime `json:"data_quote_end,omitempty"`
	// Gets or sets the start date of order book data.
	DataOrderbookStart NullableTime `json:"data_orderbook_start,omitempty"`
	// Gets or sets the end date of order book data.
	DataOrderbookEnd NullableTime `json:"data_orderbook_end,omitempty"`
	// Gets or sets the start date of trade data.
	DataTradeStart NullableTime `json:"data_trade_start,omitempty"`
	// Gets or sets the end date of trade data.
	DataTradeEnd NullableTime `json:"data_trade_end,omitempty"`
	// Gets or sets the number of symbols.
	DataSymbolsCount NullableInt64 `json:"data_symbols_count,omitempty"`
	// Gets or sets the USD volume in the last 1 hour.
	Volume1hrsUsd NullableFloat64 `json:"volume_1hrs_usd,omitempty"`
	// Gets or sets the USD volume in the last 1 day.
	Volume1dayUsd NullableFloat64 `json:"volume_1day_usd,omitempty"`
	// Gets or sets the USD volume in the last 1 month.
	Volume1mthUsd NullableFloat64 `json:"volume_1mth_usd,omitempty"`
	// Gets or sets the USD price of the asset.
	PriceUsd NullableFloat64 `json:"price_usd,omitempty"`
	// Gets or sets the ID of the icon for the asset.
	IdIcon NullableString `json:"id_icon,omitempty"`
	// Gets or sets the current supply of the asset.
	SupplyCurrent NullableFloat64 `json:"supply_current,omitempty"`
	// Gets or sets the total supply of the asset.
	SupplyTotal NullableFloat64 `json:"supply_total,omitempty"`
	// Gets or sets the maximum supply of the asset.
	SupplyMax NullableFloat64 `json:"supply_max,omitempty"`
	// 
	ChainAddresses []V1ChainNetworkAddress `json:"chain_addresses,omitempty"`
	DataStart NullableString `json:"data_start,omitempty"`
	DataEnd NullableString `json:"data_end,omitempty"`
}

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

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

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

// GetAssetIdOk returns a tuple with the AssetId 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 *V1Asset) GetAssetIdOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.AssetId.Get(), o.AssetId.IsSet()
}

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

	return false
}

// SetAssetId gets a reference to the given NullableString and assigns it to the AssetId field.
func (o *V1Asset) SetAssetId(v string) {
	o.AssetId.Set(&v)
}
// SetAssetIdNil sets the value for AssetId to be an explicit nil
func (o *V1Asset) SetAssetIdNil() {
	o.AssetId.Set(nil)
}

// UnsetAssetId ensures that no value is present for AssetId, not even an explicit nil
func (o *V1Asset) UnsetAssetId() {
	o.AssetId.Unset()
}

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

// GetNameOk returns a tuple with the Name 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 *V1Asset) GetNameOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.Name.Get(), o.Name.IsSet()
}

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

	return false
}

// SetName gets a reference to the given NullableString and assigns it to the Name field.
func (o *V1Asset) SetName(v string) {
	o.Name.Set(&v)
}
// SetNameNil sets the value for Name to be an explicit nil
func (o *V1Asset) SetNameNil() {
	o.Name.Set(nil)
}

// UnsetName ensures that no value is present for Name, not even an explicit nil
func (o *V1Asset) UnsetName() {
	o.Name.Unset()
}

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

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

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

	return false
}

// SetTypeIsCrypto gets a reference to the given int32 and assigns it to the TypeIsCrypto field.
func (o *V1Asset) SetTypeIsCrypto(v int32) {
	o.TypeIsCrypto = &v
}

// GetDataQuoteStart returns the DataQuoteStart field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *V1Asset) GetDataQuoteStart() time.Time {
	if o == nil || IsNil(o.DataQuoteStart.Get()) {
		var ret time.Time
		return ret
	}
	return *o.DataQuoteStart.Get()
}

// GetDataQuoteStartOk returns a tuple with the DataQuoteStart 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 *V1Asset) GetDataQuoteStartOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return o.DataQuoteStart.Get(), o.DataQuoteStart.IsSet()
}

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

	return false
}

// SetDataQuoteStart gets a reference to the given NullableTime and assigns it to the DataQuoteStart field.
func (o *V1Asset) SetDataQuoteStart(v time.Time) {
	o.DataQuoteStart.Set(&v)
}
// SetDataQuoteStartNil sets the value for DataQuoteStart to be an explicit nil
func (o *V1Asset) SetDataQuoteStartNil() {
	o.DataQuoteStart.Set(nil)
}

// UnsetDataQuoteStart ensures that no value is present for DataQuoteStart, not even an explicit nil
func (o *V1Asset) UnsetDataQuoteStart() {
	o.DataQuoteStart.Unset()
}

// GetDataQuoteEnd returns the DataQuoteEnd field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *V1Asset) GetDataQuoteEnd() time.Time {
	if o == nil || IsNil(o.DataQuoteEnd.Get()) {
		var ret time.Time
		return ret
	}
	return *o.DataQuoteEnd.Get()
}

// GetDataQuoteEndOk returns a tuple with the DataQuoteEnd 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 *V1Asset) GetDataQuoteEndOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return o.DataQuoteEnd.Get(), o.DataQuoteEnd.IsSet()
}

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

	return false
}

// SetDataQuoteEnd gets a reference to the given NullableTime and assigns it to the DataQuoteEnd field.
func (o *V1Asset) SetDataQuoteEnd(v time.Time) {
	o.DataQuoteEnd.Set(&v)
}
// SetDataQuoteEndNil sets the value for DataQuoteEnd to be an explicit nil
func (o *V1Asset) SetDataQuoteEndNil() {
	o.DataQuoteEnd.Set(nil)
}

// UnsetDataQuoteEnd ensures that no value is present for DataQuoteEnd, not even an explicit nil
func (o *V1Asset) UnsetDataQuoteEnd() {
	o.DataQuoteEnd.Unset()
}

// GetDataOrderbookStart returns the DataOrderbookStart field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *V1Asset) GetDataOrderbookStart() time.Time {
	if o == nil || IsNil(o.DataOrderbookStart.Get()) {
		var ret time.Time
		return ret
	}
	return *o.DataOrderbookStart.Get()
}

// GetDataOrderbookStartOk returns a tuple with the DataOrderbookStart 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 *V1Asset) GetDataOrderbookStartOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return o.DataOrderbookStart.Get(), o.DataOrderbookStart.IsSet()
}

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

	return false
}

// SetDataOrderbookStart gets a reference to the given NullableTime and assigns it to the DataOrderbookStart field.
func (o *V1Asset) SetDataOrderbookStart(v time.Time) {
	o.DataOrderbookStart.Set(&v)
}
// SetDataOrderbookStartNil sets the value for DataOrderbookStart to be an explicit nil
func (o *V1Asset) SetDataOrderbookStartNil() {
	o.DataOrderbookStart.Set(nil)
}

// UnsetDataOrderbookStart ensures that no value is present for DataOrderbookStart, not even an explicit nil
func (o *V1Asset) UnsetDataOrderbookStart() {
	o.DataOrderbookStart.Unset()
}

// GetDataOrderbookEnd returns the DataOrderbookEnd field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *V1Asset) GetDataOrderbookEnd() time.Time {
	if o == nil || IsNil(o.DataOrderbookEnd.Get()) {
		var ret time.Time
		return ret
	}
	return *o.DataOrderbookEnd.Get()
}

// GetDataOrderbookEndOk returns a tuple with the DataOrderbookEnd 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 *V1Asset) GetDataOrderbookEndOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return o.DataOrderbookEnd.Get(), o.DataOrderbookEnd.IsSet()
}

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

	return false
}

// SetDataOrderbookEnd gets a reference to the given NullableTime and assigns it to the DataOrderbookEnd field.
func (o *V1Asset) SetDataOrderbookEnd(v time.Time) {
	o.DataOrderbookEnd.Set(&v)
}
// SetDataOrderbookEndNil sets the value for DataOrderbookEnd to be an explicit nil
func (o *V1Asset) SetDataOrderbookEndNil() {
	o.DataOrderbookEnd.Set(nil)
}

// UnsetDataOrderbookEnd ensures that no value is present for DataOrderbookEnd, not even an explicit nil
func (o *V1Asset) UnsetDataOrderbookEnd() {
	o.DataOrderbookEnd.Unset()
}

// GetDataTradeStart returns the DataTradeStart field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *V1Asset) GetDataTradeStart() time.Time {
	if o == nil || IsNil(o.DataTradeStart.Get()) {
		var ret time.Time
		return ret
	}
	return *o.DataTradeStart.Get()
}

// GetDataTradeStartOk returns a tuple with the DataTradeStart 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 *V1Asset) GetDataTradeStartOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return o.DataTradeStart.Get(), o.DataTradeStart.IsSet()
}

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

	return false
}

// SetDataTradeStart gets a reference to the given NullableTime and assigns it to the DataTradeStart field.
func (o *V1Asset) SetDataTradeStart(v time.Time) {
	o.DataTradeStart.Set(&v)
}
// SetDataTradeStartNil sets the value for DataTradeStart to be an explicit nil
func (o *V1Asset) SetDataTradeStartNil() {
	o.DataTradeStart.Set(nil)
}

// UnsetDataTradeStart ensures that no value is present for DataTradeStart, not even an explicit nil
func (o *V1Asset) UnsetDataTradeStart() {
	o.DataTradeStart.Unset()
}

// GetDataTradeEnd returns the DataTradeEnd field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *V1Asset) GetDataTradeEnd() time.Time {
	if o == nil || IsNil(o.DataTradeEnd.Get()) {
		var ret time.Time
		return ret
	}
	return *o.DataTradeEnd.Get()
}

// GetDataTradeEndOk returns a tuple with the DataTradeEnd 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 *V1Asset) GetDataTradeEndOk() (*time.Time, bool) {
	if o == nil {
		return nil, false
	}
	return o.DataTradeEnd.Get(), o.DataTradeEnd.IsSet()
}

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

	return false
}

// SetDataTradeEnd gets a reference to the given NullableTime and assigns it to the DataTradeEnd field.
func (o *V1Asset) SetDataTradeEnd(v time.Time) {
	o.DataTradeEnd.Set(&v)
}
// SetDataTradeEndNil sets the value for DataTradeEnd to be an explicit nil
func (o *V1Asset) SetDataTradeEndNil() {
	o.DataTradeEnd.Set(nil)
}

// UnsetDataTradeEnd ensures that no value is present for DataTradeEnd, not even an explicit nil
func (o *V1Asset) UnsetDataTradeEnd() {
	o.DataTradeEnd.Unset()
}

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

// GetDataSymbolsCountOk returns a tuple with the DataSymbolsCount 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 *V1Asset) GetDataSymbolsCountOk() (*int64, bool) {
	if o == nil {
		return nil, false
	}
	return o.DataSymbolsCount.Get(), o.DataSymbolsCount.IsSet()
}

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

	return false
}

// SetDataSymbolsCount gets a reference to the given NullableInt64 and assigns it to the DataSymbolsCount field.
func (o *V1Asset) SetDataSymbolsCount(v int64) {
	o.DataSymbolsCount.Set(&v)
}
// SetDataSymbolsCountNil sets the value for DataSymbolsCount to be an explicit nil
func (o *V1Asset) SetDataSymbolsCountNil() {
	o.DataSymbolsCount.Set(nil)
}

// UnsetDataSymbolsCount ensures that no value is present for DataSymbolsCount, not even an explicit nil
func (o *V1Asset) UnsetDataSymbolsCount() {
	o.DataSymbolsCount.Unset()
}

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

// GetVolume1hrsUsdOk returns a tuple with the Volume1hrsUsd 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 *V1Asset) GetVolume1hrsUsdOk() (*float64, bool) {
	if o == nil {
		return nil, false
	}
	return o.Volume1hrsUsd.Get(), o.Volume1hrsUsd.IsSet()
}

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

	return false
}

// SetVolume1hrsUsd gets a reference to the given NullableFloat64 and assigns it to the Volume1hrsUsd field.
func (o *V1Asset) SetVolume1hrsUsd(v float64) {
	o.Volume1hrsUsd.Set(&v)
}
// SetVolume1hrsUsdNil sets the value for Volume1hrsUsd to be an explicit nil
func (o *V1Asset) SetVolume1hrsUsdNil() {
	o.Volume1hrsUsd.Set(nil)
}

// UnsetVolume1hrsUsd ensures that no value is present for Volume1hrsUsd, not even an explicit nil
func (o *V1Asset) UnsetVolume1hrsUsd() {
	o.Volume1hrsUsd.Unset()
}

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

// GetVolume1dayUsdOk returns a tuple with the Volume1dayUsd 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 *V1Asset) GetVolume1dayUsdOk() (*float64, bool) {
	if o == nil {
		return nil, false
	}
	return o.Volume1dayUsd.Get(), o.Volume1dayUsd.IsSet()
}

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

	return false
}

// SetVolume1dayUsd gets a reference to the given NullableFloat64 and assigns it to the Volume1dayUsd field.
func (o *V1Asset) SetVolume1dayUsd(v float64) {
	o.Volume1dayUsd.Set(&v)
}
// SetVolume1dayUsdNil sets the value for Volume1dayUsd to be an explicit nil
func (o *V1Asset) SetVolume1dayUsdNil() {
	o.Volume1dayUsd.Set(nil)
}

// UnsetVolume1dayUsd ensures that no value is present for Volume1dayUsd, not even an explicit nil
func (o *V1Asset) UnsetVolume1dayUsd() {
	o.Volume1dayUsd.Unset()
}

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

// GetVolume1mthUsdOk returns a tuple with the Volume1mthUsd 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 *V1Asset) GetVolume1mthUsdOk() (*float64, bool) {
	if o == nil {
		return nil, false
	}
	return o.Volume1mthUsd.Get(), o.Volume1mthUsd.IsSet()
}

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

	return false
}

// SetVolume1mthUsd gets a reference to the given NullableFloat64 and assigns it to the Volume1mthUsd field.
func (o *V1Asset) SetVolume1mthUsd(v float64) {
	o.Volume1mthUsd.Set(&v)
}
// SetVolume1mthUsdNil sets the value for Volume1mthUsd to be an explicit nil
func (o *V1Asset) SetVolume1mthUsdNil() {
	o.Volume1mthUsd.Set(nil)
}

// UnsetVolume1mthUsd ensures that no value is present for Volume1mthUsd, not even an explicit nil
func (o *V1Asset) UnsetVolume1mthUsd() {
	o.Volume1mthUsd.Unset()
}

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

// GetPriceUsdOk returns a tuple with the PriceUsd 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 *V1Asset) GetPriceUsdOk() (*float64, bool) {
	if o == nil {
		return nil, false
	}
	return o.PriceUsd.Get(), o.PriceUsd.IsSet()
}

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

	return false
}

// SetPriceUsd gets a reference to the given NullableFloat64 and assigns it to the PriceUsd field.
func (o *V1Asset) SetPriceUsd(v float64) {
	o.PriceUsd.Set(&v)
}
// SetPriceUsdNil sets the value for PriceUsd to be an explicit nil
func (o *V1Asset) SetPriceUsdNil() {
	o.PriceUsd.Set(nil)
}

// UnsetPriceUsd ensures that no value is present for PriceUsd, not even an explicit nil
func (o *V1Asset) UnsetPriceUsd() {
	o.PriceUsd.Unset()
}

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

// GetIdIconOk returns a tuple with the IdIcon 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 *V1Asset) GetIdIconOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.IdIcon.Get(), o.IdIcon.IsSet()
}

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

	return false
}

// SetIdIcon gets a reference to the given NullableString and assigns it to the IdIcon field.
func (o *V1Asset) SetIdIcon(v string) {
	o.IdIcon.Set(&v)
}
// SetIdIconNil sets the value for IdIcon to be an explicit nil
func (o *V1Asset) SetIdIconNil() {
	o.IdIcon.Set(nil)
}

// UnsetIdIcon ensures that no value is present for IdIcon, not even an explicit nil
func (o *V1Asset) UnsetIdIcon() {
	o.IdIcon.Unset()
}

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

// GetSupplyCurrentOk returns a tuple with the SupplyCurrent 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 *V1Asset) GetSupplyCurrentOk() (*float64, bool) {
	if o == nil {
		return nil, false
	}
	return o.SupplyCurrent.Get(), o.SupplyCurrent.IsSet()
}

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

	return false
}

// SetSupplyCurrent gets a reference to the given NullableFloat64 and assigns it to the SupplyCurrent field.
func (o *V1Asset) SetSupplyCurrent(v float64) {
	o.SupplyCurrent.Set(&v)
}
// SetSupplyCurrentNil sets the value for SupplyCurrent to be an explicit nil
func (o *V1Asset) SetSupplyCurrentNil() {
	o.SupplyCurrent.Set(nil)
}

// UnsetSupplyCurrent ensures that no value is present for SupplyCurrent, not even an explicit nil
func (o *V1Asset) UnsetSupplyCurrent() {
	o.SupplyCurrent.Unset()
}

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

// GetSupplyTotalOk returns a tuple with the SupplyTotal 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 *V1Asset) GetSupplyTotalOk() (*float64, bool) {
	if o == nil {
		return nil, false
	}
	return o.SupplyTotal.Get(), o.SupplyTotal.IsSet()
}

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

	return false
}

// SetSupplyTotal gets a reference to the given NullableFloat64 and assigns it to the SupplyTotal field.
func (o *V1Asset) SetSupplyTotal(v float64) {
	o.SupplyTotal.Set(&v)
}
// SetSupplyTotalNil sets the value for SupplyTotal to be an explicit nil
func (o *V1Asset) SetSupplyTotalNil() {
	o.SupplyTotal.Set(nil)
}

// UnsetSupplyTotal ensures that no value is present for SupplyTotal, not even an explicit nil
func (o *V1Asset) UnsetSupplyTotal() {
	o.SupplyTotal.Unset()
}

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

// GetSupplyMaxOk returns a tuple with the SupplyMax 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 *V1Asset) GetSupplyMaxOk() (*float64, bool) {
	if o == nil {
		return nil, false
	}
	return o.SupplyMax.Get(), o.SupplyMax.IsSet()
}

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

	return false
}

// SetSupplyMax gets a reference to the given NullableFloat64 and assigns it to the SupplyMax field.
func (o *V1Asset) SetSupplyMax(v float64) {
	o.SupplyMax.Set(&v)
}
// SetSupplyMaxNil sets the value for SupplyMax to be an explicit nil
func (o *V1Asset) SetSupplyMaxNil() {
	o.SupplyMax.Set(nil)
}

// UnsetSupplyMax ensures that no value is present for SupplyMax, not even an explicit nil
func (o *V1Asset) UnsetSupplyMax() {
	o.SupplyMax.Unset()
}

// GetChainAddresses returns the ChainAddresses field value if set, zero value otherwise (both if not set or set to explicit null).
func (o *V1Asset) GetChainAddresses() []V1ChainNetworkAddress {
	if o == nil {
		var ret []V1ChainNetworkAddress
		return ret
	}
	return o.ChainAddresses
}

// GetChainAddressesOk returns a tuple with the ChainAddresses 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 *V1Asset) GetChainAddressesOk() ([]V1ChainNetworkAddress, bool) {
	if o == nil || IsNil(o.ChainAddresses) {
		return nil, false
	}
	return o.ChainAddresses, true
}

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

	return false
}

// SetChainAddresses gets a reference to the given []V1ChainNetworkAddress and assigns it to the ChainAddresses field.
func (o *V1Asset) SetChainAddresses(v []V1ChainNetworkAddress) {
	o.ChainAddresses = v
}

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

// GetDataStartOk returns a tuple with the DataStart 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 *V1Asset) GetDataStartOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.DataStart.Get(), o.DataStart.IsSet()
}

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

	return false
}

// SetDataStart gets a reference to the given NullableString and assigns it to the DataStart field.
func (o *V1Asset) SetDataStart(v string) {
	o.DataStart.Set(&v)
}
// SetDataStartNil sets the value for DataStart to be an explicit nil
func (o *V1Asset) SetDataStartNil() {
	o.DataStart.Set(nil)
}

// UnsetDataStart ensures that no value is present for DataStart, not even an explicit nil
func (o *V1Asset) UnsetDataStart() {
	o.DataStart.Unset()
}

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

// GetDataEndOk returns a tuple with the DataEnd 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 *V1Asset) GetDataEndOk() (*string, bool) {
	if o == nil {
		return nil, false
	}
	return o.DataEnd.Get(), o.DataEnd.IsSet()
}

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

	return false
}

// SetDataEnd gets a reference to the given NullableString and assigns it to the DataEnd field.
func (o *V1Asset) SetDataEnd(v string) {
	o.DataEnd.Set(&v)
}
// SetDataEndNil sets the value for DataEnd to be an explicit nil
func (o *V1Asset) SetDataEndNil() {
	o.DataEnd.Set(nil)
}

// UnsetDataEnd ensures that no value is present for DataEnd, not even an explicit nil
func (o *V1Asset) UnsetDataEnd() {
	o.DataEnd.Unset()
}

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

func (o V1Asset) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if o.AssetId.IsSet() {
		toSerialize["asset_id"] = o.AssetId.Get()
	}
	if o.Name.IsSet() {
		toSerialize["name"] = o.Name.Get()
	}
	if !IsNil(o.TypeIsCrypto) {
		toSerialize["type_is_crypto"] = o.TypeIsCrypto
	}
	if o.DataQuoteStart.IsSet() {
		toSerialize["data_quote_start"] = o.DataQuoteStart.Get()
	}
	if o.DataQuoteEnd.IsSet() {
		toSerialize["data_quote_end"] = o.DataQuoteEnd.Get()
	}
	if o.DataOrderbookStart.IsSet() {
		toSerialize["data_orderbook_start"] = o.DataOrderbookStart.Get()
	}
	if o.DataOrderbookEnd.IsSet() {
		toSerialize["data_orderbook_end"] = o.DataOrderbookEnd.Get()
	}
	if o.DataTradeStart.IsSet() {
		toSerialize["data_trade_start"] = o.DataTradeStart.Get()
	}
	if o.DataTradeEnd.IsSet() {
		toSerialize["data_trade_end"] = o.DataTradeEnd.Get()
	}
	if o.DataSymbolsCount.IsSet() {
		toSerialize["data_symbols_count"] = o.DataSymbolsCount.Get()
	}
	if o.Volume1hrsUsd.IsSet() {
		toSerialize["volume_1hrs_usd"] = o.Volume1hrsUsd.Get()
	}
	if o.Volume1dayUsd.IsSet() {
		toSerialize["volume_1day_usd"] = o.Volume1dayUsd.Get()
	}
	if o.Volume1mthUsd.IsSet() {
		toSerialize["volume_1mth_usd"] = o.Volume1mthUsd.Get()
	}
	if o.PriceUsd.IsSet() {
		toSerialize["price_usd"] = o.PriceUsd.Get()
	}
	if o.IdIcon.IsSet() {
		toSerialize["id_icon"] = o.IdIcon.Get()
	}
	if o.SupplyCurrent.IsSet() {
		toSerialize["supply_current"] = o.SupplyCurrent.Get()
	}
	if o.SupplyTotal.IsSet() {
		toSerialize["supply_total"] = o.SupplyTotal.Get()
	}
	if o.SupplyMax.IsSet() {
		toSerialize["supply_max"] = o.SupplyMax.Get()
	}
	if o.ChainAddresses != nil {
		toSerialize["chain_addresses"] = o.ChainAddresses
	}
	if o.DataStart.IsSet() {
		toSerialize["data_start"] = o.DataStart.Get()
	}
	if o.DataEnd.IsSet() {
		toSerialize["data_end"] = o.DataEnd.Get()
	}
	return toSerialize, nil
}

type NullableV1Asset struct {
	value *V1Asset
	isSet bool
}

func (v NullableV1Asset) Get() *V1Asset {
	return v.value
}

func (v *NullableV1Asset) Set(val *V1Asset) {
	v.value = val
	v.isSet = true
}

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

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

func NewNullableV1Asset(val *V1Asset) *NullableV1Asset {
	return &NullableV1Asset{value: val, isSet: true}
}

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

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


