// Code generated from developer.reits.tech/contract-registry/v1. DO NOT EDIT.
package contracts

type ErrorEnvelope struct {
	Code      string         `json:"code"`
	Message   string         `json:"message"`
	TraceID   string         `json:"traceId"`
	Retryable bool           `json:"retryable"`
	Details   map[string]any `json:"details,omitempty"`
}

type AppType string

const (
	AppTypeOrdinary   AppType = "ordinary"
	AppTypeEnterprise AppType = "enterprise"
)

type AppKind string

const (
	AppKindMiniapp AppKind = "miniapp"
	AppKindBot     AppKind = "bot"
)

type ReleaseStatus string

const (
	ReleaseStatusDraft      ReleaseStatus = "draft"
	ReleaseStatusUploaded   ReleaseStatus = "uploaded"
	ReleaseStatusScanning   ReleaseStatus = "scanning"
	ReleaseStatusReview     ReleaseStatus = "review"
	ReleaseStatusRejected   ReleaseStatus = "rejected"
	ReleaseStatusApproved   ReleaseStatus = "approved"
	ReleaseStatusLive       ReleaseStatus = "live"
	ReleaseStatusRolledBack ReleaseStatus = "rolled_back"
)

type BookingOrderStatus string

const (
	BookingOrderStatusHeld            BookingOrderStatus = "held"
	BookingOrderStatusConfirmed       BookingOrderStatus = "confirmed"
	BookingOrderStatusCancelRequested BookingOrderStatus = "cancel_requested"
	BookingOrderStatusCancelled       BookingOrderStatus = "cancelled"
	BookingOrderStatusCompleted       BookingOrderStatus = "completed"
	BookingOrderStatusExpired         BookingOrderStatus = "expired"
	BookingOrderStatusRefunded        BookingOrderStatus = "refunded"
)

type MarketSliceStatus string

const (
	MarketSliceStatusStaging  MarketSliceStatus = "staging"
	MarketSliceStatusReady    MarketSliceStatus = "ready"
	MarketSliceStatusRejected MarketSliceStatus = "rejected"
	MarketSliceStatusExpired  MarketSliceStatus = "expired"
)

type QuantRunStatus string

const (
	QuantRunStatusQueued    QuantRunStatus = "queued"
	QuantRunStatusRunning   QuantRunStatus = "running"
	QuantRunStatusSucceeded QuantRunStatus = "succeeded"
	QuantRunStatusFailed    QuantRunStatus = "failed"
	QuantRunStatusCancelled QuantRunStatus = "cancelled"
)

type AuthSession struct {
	SessionID string         `json:"sessionId"`
	ClientID  string         `json:"clientId"`
	Subject   map[string]any `json:"subject"`
	Scopes    []string       `json:"scopes"`
	State     string         `json:"state"`
	IssuedAt  string         `json:"issuedAt"`
	ExpiresAt string         `json:"expiresAt"`
}

type DeveloperApp struct {
	ID       int64   `json:"id"`
	AppKey   string  `json:"appKey"`
	Name     string  `json:"name"`
	Kind     AppKind `json:"kind"`
	AppType  AppType `json:"appType"`
	Status   string  `json:"status"`
	OwnerID  string  `json:"ownerId"`
	Revision int64   `json:"revision"`
}

type ReleaseCandidate struct {
	ReleaseID   string         `json:"releaseId"`
	AppID       int64          `json:"appId"`
	VersionCode int64          `json:"versionCode"`
	VersionName string         `json:"versionName"`
	Artifact    map[string]any `json:"artifact"`
	Status      ReleaseStatus  `json:"status"`
	CreatedAt   string         `json:"createdAt"`
}

type EventEnvelope struct {
	EventID        string             `json:"eventId"`
	EventType      string             `json:"eventType"`
	EventVersion   int64              `json:"eventVersion"`
	OccurredAt     string             `json:"occurredAt"`
	Producer       string             `json:"producer"`
	TenantID       string             `json:"tenantId"`
	Actor          *map[string]string `json:"actor,omitempty"`
	Resource       map[string]string  `json:"resource"`
	IdempotencyKey string             `json:"idempotencyKey"`
	TraceID        string             `json:"traceId"`
	Data           map[string]any     `json:"data"`
}

type MediaAsset struct {
	AssetID        string `json:"assetId"`
	ObjectKey      string `json:"objectKey"`
	ContentType    string `json:"contentType"`
	Size           int64  `json:"size"`
	SHA256         string `json:"sha256"`
	Status         string `json:"status"`
	StorageBackend string `json:"storageBackend"`
	CreatedAt      string `json:"createdAt"`
}

type BookingOrder struct {
	OrderID        string             `json:"orderId"`
	ConsumerID     string             `json:"consumerId"`
	MerchantID     string             `json:"merchantId"`
	ServiceID      string             `json:"serviceId"`
	SlotID         string             `json:"slotId"`
	Quantity       int64              `json:"quantity"`
	Amount         map[string]any     `json:"amount"`
	Status         BookingOrderStatus `json:"status"`
	Revision       int64              `json:"revision"`
	IdempotencyKey string             `json:"idempotencyKey"`
}

type MarketSlice struct {
	SliceID      string            `json:"sliceId"`
	Symbol       string            `json:"symbol"`
	Venue        string            `json:"venue"`
	Interval     string            `json:"interval"`
	StartAt      string            `json:"startAt"`
	EndAt        string            `json:"endAt"`
	DataAsOf     string            `json:"dataAsOf"`
	RecordCount  int64             `json:"recordCount"`
	StorageURI   string            `json:"storageUri"`
	Checksum     string            `json:"checksum"`
	LicenseClass string            `json:"licenseClass"`
	Status       MarketSliceStatus `json:"status"`
}

type QuantRun struct {
	RunID             string         `json:"runId"`
	StrategyVersionID string         `json:"strategyVersionId"`
	MarketSliceIds    []string       `json:"marketSliceIds"`
	Status            QuantRunStatus `json:"status"`
	InputHash         string         `json:"inputHash"`
	EngineHash        string         `json:"engineHash"`
	ResultHash        *string        `json:"resultHash,omitempty"`
	CreatedAt         string         `json:"createdAt"`
	StartedAt         *string        `json:"startedAt,omitempty"`
	CompletedAt       *string        `json:"completedAt,omitempty"`
	Error             *ErrorEnvelope `json:"error,omitempty"`
}
