import type { ApiApp, ApiAppComponent } from './runtime'; export type ComponentType = 'ELECTRON' | 'CONTAINER' | 'STATIC_WEB' | 'DATABASE' | 'MIGRATION'; export type JobStatus = 'PENDING' | 'RUNNING' | 'SUCCEEDED' | 'FAILED' | 'CANCELED'; export type AppWithComponents = ApiApp & { description?: string | null; createdAt?: string; updatedAt?: string; components?: ApiAppComponent[]; }; export type SourceComponent = ApiAppComponent & { app: ApiApp; buildJobs?: BuildJob[]; }; export type BuildJob = { id: string; componentId: string; branch: string; commitSha?: string | null; artifact?: string | null; image?: string | null; status: JobStatus; logs?: string | null; startedAt?: string | null; finishedAt?: string | null; createdAt: string; component: ApiAppComponent & { app: ApiApp }; }; export type AppRelease = { id: string; appId: string; version: string; branch: string; commitSha?: string | null; artifact?: string | null; imageTags?: unknown; status: JobStatus; logs?: string | null; createdAt: string; updatedAt?: string; app: ApiApp; }; export type DeploymentJob = { id: string; appId: string; releaseId?: string | null; environment: string; namespace: string; status: JobStatus; requestedBy?: string | null; logs?: string | null; startedAt?: string | null; finishedAt?: string | null; createdAt: string; app: ApiApp; release?: AppRelease | null; }; export type RuntimeControlJob = { id: string; namespace: string; kind: string; name: string; action: string; status: JobStatus; requestedBy?: string | null; request?: Record | null; result?: Record | null; logs?: string | null; startedAt?: string | null; finishedAt?: string | null; createdAt: string; }; export type GiteaRepo = { id?: number; name: string; full_name: string; fullName?: string; html_url?: string; htmlUrl?: string; clone_url?: string; cloneUrl?: string; ssh_url?: string; sshUrl?: string; private?: boolean; owner?: { login: string }; };