// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.31.1

package db

import (
	"github.com/google/uuid"
	"github.com/jackc/pgx/v5/pgtype"
)

type Channel struct {
	ID             int32              `json:"id"`
	ChannelHash    []byte             `json:"channel_hash"`
	KeyFingerprint []byte             `json:"key_fingerprint"`
	Name           *string            `json:"name"`
	Hashtag        *string            `json:"hashtag"`
	IsHashtag      *bool              `json:"is_hashtag"`
	IsPublic       *bool              `json:"is_public"`
	KeyKnown       *bool              `json:"key_known"`
	FirstSeen      pgtype.Timestamptz `json:"first_seen"`
	LastSeen       pgtype.Timestamptz `json:"last_seen"`
	MessageCount   *int64             `json:"message_count"`
}

type ChannelIata struct {
	ChannelHash []byte             `json:"channel_hash"`
	Iata        string             `json:"iata"`
	LastHeard   pgtype.Timestamptz `json:"last_heard"`
}

type ChannelKey struct {
	ChannelID      int32              `json:"channel_id"`
	KeyBytes       []byte             `json:"key_bytes"`
	KeyFingerprint []byte             `json:"key_fingerprint"`
	AddedAt        pgtype.Timestamptz `json:"added_at"`
	AddedBy        *string            `json:"added_by"`
}

type ChannelMessage struct {
	ID           int64              `json:"id"`
	ChannelID    int32              `json:"channel_id"`
	PacketHash   []byte             `json:"packet_hash"`
	SenderName   *string            `json:"sender_name"`
	SenderPubkey []byte             `json:"sender_pubkey"`
	Content      *string            `json:"content"`
	SentAt       pgtype.Timestamptz `json:"sent_at"`
}

type IataCode struct {
	Iata        string             `json:"iata"`
	DisplayName *string            `json:"display_name"`
	ApproxLat   *float64           `json:"approx_lat"`
	ApproxLng   *float64           `json:"approx_lng"`
	AddedAt     pgtype.Timestamptz `json:"added_at"`
	Border      []byte             `json:"border"`
}

type KnownRoute struct {
	ID                int64              `json:"id"`
	PathKey           []byte             `json:"path_key"`
	NodeIds           []uuid.UUID        `json:"node_ids"`
	HashPrefix        [][]byte           `json:"hash_prefix"`
	Iata              string             `json:"iata"`
	HopCount          int32              `json:"hop_count"`
	FirstSeen         pgtype.Timestamptz `json:"first_seen"`
	LastSeen          pgtype.Timestamptz `json:"last_seen"`
	ObservationCount  int64              `json:"observation_count"`
	LastReconfirmedAt pgtype.Timestamptz `json:"last_reconfirmed_at"`
}

type MvHourlyIataStat struct {
	Iata             string             `json:"iata"`
	Hour             pgtype.Timestamptz `json:"hour"`
	ObservationCount int64              `json:"observation_count"`
	UniquePackets    int64              `json:"unique_packets"`
	ActiveObservers  int64              `json:"active_observers"`
}

type MvPayloadBreakdownByIatum struct {
	Iata        string             `json:"iata"`
	PayloadType *int16             `json:"payload_type"`
	Bucket      pgtype.Timestamptz `json:"bucket"`
	Count       int64              `json:"count"`
}

type MvRadioPreset struct {
	Preset     string `json:"preset"`
	Iata       string `json:"iata"`
	SourceType string `json:"source_type"`
	Count      int64  `json:"count"`
}

type MvTopAdvertisersByIatum struct {
	Iata              string             `json:"iata"`
	NodeID            uuid.UUID          `json:"node_id"`
	Name              *string            `json:"name"`
	NodeType          int16              `json:"node_type"`
	Bucket            pgtype.Timestamptz `json:"bucket"`
	AdvertCount       int64              `json:"advert_count"`
	FloodAdvertCount  int64              `json:"flood_advert_count"`
	DirectAdvertCount int64              `json:"direct_advert_count"`
	LastHeard         interface{}        `json:"last_heard"`
}

type MvTopNodesByIatum struct {
	Iata             string             `json:"iata"`
	NodeID           uuid.UUID          `json:"node_id"`
	Name             *string            `json:"name"`
	NodeType         int16              `json:"node_type"`
	ObservationCount *int64             `json:"observation_count"`
	LastHeard        pgtype.Timestamptz `json:"last_heard"`
}

type MvTopObserversByIatum struct {
	Iata             string             `json:"iata"`
	ObserverID       uuid.UUID          `json:"observer_id"`
	DisplayName      *string            `json:"display_name"`
	ObserverType     *string            `json:"observer_type"`
	Bucket           pgtype.Timestamptz `json:"bucket"`
	ObservationCount int64              `json:"observation_count"`
}

type MvTopTalkersByIatum struct {
	Iata         string             `json:"iata"`
	SenderName   *string            `json:"sender_name"`
	Bucket       pgtype.Timestamptz `json:"bucket"`
	MessageCount int64              `json:"message_count"`
	LastSent     interface{}        `json:"last_sent"`
}

type Node struct {
	ID                      uuid.UUID          `json:"id"`
	PublicKey               []byte             `json:"public_key"`
	NodeType                int16              `json:"node_type"`
	Name                    *string            `json:"name"`
	Latitude                *float64           `json:"latitude"`
	Longitude               *float64           `json:"longitude"`
	LocationSource          *string            `json:"location_source"`
	LastAdvertAt            pgtype.Timestamptz `json:"last_advert_at"`
	SupportsMultibytePaths  bool               `json:"supports_multibyte_paths"`
	SupportsMultibyteTraces bool               `json:"supports_multibyte_traces"`
	DefaultScopeID          *int32             `json:"default_scope_id"`
	MinFirmwareVersion      *string            `json:"min_firmware_version"`
	FirstSeen               pgtype.Timestamptz `json:"first_seen"`
	LastSeen                pgtype.Timestamptz `json:"last_seen"`
	RadioFreqMhz            *float32           `json:"radio_freq_mhz"`
	RadioSf                 *int16             `json:"radio_sf"`
	RadioBwKhz              *float32           `json:"radio_bw_khz"`
	Metadata                []byte             `json:"metadata"`
	DeviceClockDriftSeconds *int32             `json:"device_clock_drift_seconds"`
}

type NodeIata struct {
	NodeID           uuid.UUID          `json:"node_id"`
	Iata             string             `json:"iata"`
	FirstHeard       pgtype.Timestamptz `json:"first_heard"`
	LastHeard        pgtype.Timestamptz `json:"last_heard"`
	ObservationCount *int64             `json:"observation_count"`
}

type NodeNeighbor struct {
	NodeID           uuid.UUID          `json:"node_id"`
	NeighborID       uuid.UUID          `json:"neighbor_id"`
	Iata             string             `json:"iata"`
	FirstSeen        pgtype.Timestamptz `json:"first_seen"`
	LastSeen         pgtype.Timestamptz `json:"last_seen"`
	ObservationCount int64              `json:"observation_count"`
	Snr              *float32           `json:"snr"`
	RegionScope      *string            `json:"region_scope"`
}

type NodeShortID struct {
	NodeID  uuid.UUID `json:"node_id"`
	Iata    string    `json:"iata"`
	Prefix4 []byte    `json:"prefix_4"`
	Prefix1 []byte    `json:"prefix_1"`
	Prefix2 []byte    `json:"prefix_2"`
	Prefix3 []byte    `json:"prefix_3"`
}

type Observer struct {
	ID               uuid.UUID          `json:"id"`
	PublicKey        []byte             `json:"public_key"`
	DisplayName      *string            `json:"display_name"`
	ObserverType     *string            `json:"observer_type"`
	SoftwareVersion  *string            `json:"software_version"`
	HardwareModel    *string            `json:"hardware_model"`
	FirmwareVersion  *string            `json:"firmware_version"`
	FirmwareBuild    *string            `json:"firmware_build"`
	RadioFreqMhz     *float32           `json:"radio_freq_mhz"`
	RadioSf          *int16             `json:"radio_sf"`
	RadioBwKhz       *float32           `json:"radio_bw_khz"`
	RadioCr          *int16             `json:"radio_cr"`
	BatteryLevel     *float32           `json:"battery_level"`
	UptimeSeconds    *int64             `json:"uptime_seconds"`
	StatusMetadata   []byte             `json:"status_metadata"`
	LastStatusAt     pgtype.Timestamptz `json:"last_status_at"`
	FirstSeen        pgtype.Timestamptz `json:"first_seen"`
	LastSeen         pgtype.Timestamptz `json:"last_seen"`
	ObservationCount *int64             `json:"observation_count"`
	Metadata         []byte             `json:"metadata"`
	RegionScope      *string            `json:"region_scope"`
}

type ObserverBroker struct {
	ObserverID   uuid.UUID          `json:"observer_id"`
	BrokerName   string             `json:"broker_name"`
	FirstSeen    pgtype.Timestamptz `json:"first_seen"`
	LastSeen     pgtype.Timestamptz `json:"last_seen"`
	LastPacketAt pgtype.Timestamptz `json:"last_packet_at"`
	AuthOk       *bool              `json:"auth_ok"`
}

type ObserverLocation struct {
	ObserverID uuid.UUID          `json:"observer_id"`
	Iata       *string            `json:"iata"`
	Latitude   *float64           `json:"latitude"`
	Longitude  *float64           `json:"longitude"`
	ReportedAt pgtype.Timestamptz `json:"reported_at"`
}

type ObserverOwner struct {
	ObserverID   uuid.UUID          `json:"observer_id"`
	OwnerNodeID  pgtype.UUID        `json:"owner_node_id"`
	OwnerPubkey  []byte             `json:"owner_pubkey"`
	ContactName  *string            `json:"contact_name"`
	ContactEmail *string            `json:"contact_email"`
	Notes        *string            `json:"notes"`
	Source       *string            `json:"source"`
	AddedAt      pgtype.Timestamptz `json:"added_at"`
	UpdatedAt    pgtype.Timestamptz `json:"updated_at"`
}

type ObserverScope struct {
	ObserverID uuid.UUID          `json:"observer_id"`
	ScopeID    int32              `json:"scope_id"`
	FirstSeen  pgtype.Timestamptz `json:"first_seen"`
	LastSeen   pgtype.Timestamptz `json:"last_seen"`
}

type ObserverTelemetry struct {
	ID               int64              `json:"id"`
	ObserverID       uuid.UUID          `json:"observer_id"`
	ReportedAt       pgtype.Timestamptz `json:"reported_at"`
	BatteryVoltageMv *int32             `json:"battery_voltage_mv"`
	AirtimeTxPct     *float32           `json:"airtime_tx_pct"`
	AirtimeRxPct     *float32           `json:"airtime_rx_pct"`
	NoiseFloorDb     *float32           `json:"noise_floor_db"`
	UptimeSeconds    *int64             `json:"uptime_seconds"`
	QueueLength      *int32             `json:"queue_length"`
	DebugFlags       *int32             `json:"debug_flags"`
	ReceiveErrors    *int32             `json:"receive_errors"`
}

type Packet struct {
	PacketHash            []byte             `json:"packet_hash"`
	PayloadType           int16              `json:"payload_type"`
	PayloadVersion        int16              `json:"payload_version"`
	RouteType             int16              `json:"route_type"`
	TransportCodesPresent *bool              `json:"transport_codes_present"`
	RegionCode            *int32             `json:"region_code"`
	SubRegionCode         *int32             `json:"sub_region_code"`
	ScopeID               *int32             `json:"scope_id"`
	OriginPubkey          []byte             `json:"origin_pubkey"`
	RawPayload            []byte             `json:"raw_payload"`
	RawHeader             []byte             `json:"raw_header"`
	ParsedPayload         []byte             `json:"parsed_payload"`
	Decrypted             *bool              `json:"decrypted"`
	ChannelHash           []byte             `json:"channel_hash"`
	TraceTag              []byte             `json:"trace_tag"`
	FirstHeardAt          pgtype.Timestamptz `json:"first_heard_at"`
	LastHeardAt           pgtype.Timestamptz `json:"last_heard_at"`
}

type PacketObservation struct {
	ID                int64              `json:"id"`
	PacketHash        []byte             `json:"packet_hash"`
	ObserverID        uuid.UUID          `json:"observer_id"`
	Iata              string             `json:"iata"`
	HeardAt           pgtype.Timestamptz `json:"heard_at"`
	PathLengthByte    int16              `json:"path_length_byte"`
	HashSize          int16              `json:"hash_size"`
	HopCount          int16              `json:"hop_count"`
	PathBytes         []byte             `json:"path_bytes"`
	Rssi              *int16             `json:"rssi"`
	Snr               *float32           `json:"snr"`
	PropagationTimeMs *int32             `json:"propagation_time_ms"`
	RadioFreqMhz      *float32           `json:"radio_freq_mhz"`
	SpreadFactor      *int16             `json:"spread_factor"`
	BandwidthKhz      *float32           `json:"bandwidth_khz"`
	CodingRate        *int16             `json:"coding_rate"`
	SourceBroker      *string            `json:"source_broker"`
	PayloadType       *int16             `json:"payload_type"`
	ResolvedEndpoints []byte             `json:"resolved_endpoints"`
}

type Region struct {
	ID           int32              `json:"id"`
	Slug         string             `json:"slug"`
	Name         string             `json:"name"`
	Description  *string            `json:"description"`
	DisplayOrder *int32             `json:"display_order"`
	CenterLat    *float64           `json:"center_lat"`
	CenterLng    *float64           `json:"center_lng"`
	ZoomLevel    *int32             `json:"zoom_level"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
	UpdatedAt    pgtype.Timestamptz `json:"updated_at"`
}

type RegionIata struct {
	RegionID int32              `json:"region_id"`
	Iata     string             `json:"iata"`
	AddedAt  pgtype.Timestamptz `json:"added_at"`
}

type TraceIata struct {
	TraceTag  []byte             `json:"trace_tag"`
	Iata      string             `json:"iata"`
	LastHeard pgtype.Timestamptz `json:"last_heard"`
}

type TransportScope struct {
	ID             int32              `json:"id"`
	Name           string             `json:"name"`
	DisplayName    *string            `json:"display_name"`
	TransportKey   []byte             `json:"transport_key"`
	KeyFingerprint []byte             `json:"key_fingerprint"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
}
