package kernelimage

import "time"

type AvailabilityStatus string

const (
	AvailabilityStatusUnknown     AvailabilityStatus = "UNKNOWN"
	AvailabilityStatusChecking    AvailabilityStatus = "CHECKING"
	AvailabilityStatusAvailable   AvailabilityStatus = "AVAILABLE"
	AvailabilityStatusPartial     AvailabilityStatus = "PARTIAL"
	AvailabilityStatusUnavailable AvailabilityStatus = "UNAVAILABLE"
	AvailabilityStatusCheckFailed AvailabilityStatus = "CHECK_FAILED"
)

type PlatformAvailabilityStatus string

const (
	PlatformAvailabilityStatusAvailable      PlatformAvailabilityStatus = "AVAILABLE"
	PlatformAvailabilityStatusMissing        PlatformAvailabilityStatus = "MISSING"
	PlatformAvailabilityStatusDigestMismatch PlatformAvailabilityStatus = "DIGEST_MISMATCH"
	PlatformAvailabilityStatusCheckFailed    PlatformAvailabilityStatus = "CHECK_FAILED"
)

type PlatformAvailability struct {
	CloudProvider  string                     `json:"cloud_provider"`
	Registry       string                     `json:"registry"`
	ImageRef       string                     `json:"image_ref"`
	Status         PlatformAvailabilityStatus `json:"status"`
	Digest         string                     `json:"digest,omitempty"`
	DigestMatches  *bool                      `json:"digest_matches,omitempty"`
	MultiArch      bool                       `json:"multi_arch"`
	OCIPlatforms   []string                   `json:"oci_platforms,omitempty"`
	ImageCreatedAt *time.Time                 `json:"image_created_at,omitempty"`
	CheckedAt      time.Time                  `json:"checked_at"`
	WorkflowRunID  int64                      `json:"workflow_run_id,omitempty"`
	WorkflowRunURL string                     `json:"workflow_run_url,omitempty"`
	ErrorMessage   string                     `json:"error_message,omitempty"`
	Source         string                     `json:"source"`
}
