package media

import "io"

// MediaType classifies the kind of media asset.
type MediaType string

const (
	MediaTypeImage MediaType = "image"
	MediaTypeAudio MediaType = "audio"
	MediaTypeVideo MediaType = "video"
	MediaTypeFile  MediaType = "file"
)

// Asset is the domain representation of a persisted media object.
// ContentHash is the content-addressed identifier (SHA-256 hex).
type Asset struct {
	ContentHash string `json:"content_hash"`
	BotID       string `json:"bot_id"`
	Mime        string `json:"mime"`
	SizeBytes   int64  `json:"size_bytes"`
	StorageKey  string `json:"storage_key"`
}

// IngestInput carries the data needed to persist a new media asset.
type IngestInput struct {
	BotID string
	Mime  string
	// Reader provides the raw bytes; caller is responsible for closing.
	Reader io.Reader
	// MaxBytes optionally overrides the default size limit.
	MaxBytes int64
	// OriginalExt preserves the source file extension (e.g. ".md") so it
	// survives even when the MIME type is unknown / generic.
	OriginalExt string
}
