// This file has been generated by Specta. DO NOT EDIT.

export type AppRepo = { author: string; repo: string }

export type AssetData = ({ type: "AssetName" } & string) | ({ type: "ArbitraryUrl" } & string)

export type Hero = { title: string; description: string; button: string; background: string; author: string; appId: string }

/**
 * 🔬 Under Development
 * 
 * 
 */
export type AndroidAbi = "Aarch64" | "Armv7" | "X86" | "X64"

export type DeveloperUser = { name: string; description: string; gh_username: string; icon_base64: string | null; ahq_official: boolean; email: string; support: AppSupport; apps: string[] }

export type Attestations = { oidc: string; ed25519: string; workflow: string; workflowSha: string; security_reports: SecurityReports }

export type AppUpdateInstallStatus = { status: "Pending" } | { status: "PendingUserAction" } | { status: "Cancelled"; time: BigInt } | { status: "Downloading"; progress: number } | { status: "AVScanning" } | { status: "PendingInstall" } | { status: "Installing"; progress: number | null } | { status: "MoreDwnlNeeded"; progress: number; current: BigInt; items: BigInt } | { status: "CopyingFiles"; percentage: number; total: BigInt } | { status: "Finalizing" } | { status: "Updating" } | { status: "Uninstalling" } | { status: "Successful"; time: BigInt } | { status: "Error"; err: string; time: BigInt }

export type Home = { splash: Splash | null; home: HomeMapData }

export type AndroidAssetId = { assetType: "Universal"; assetId: number } | { assetType: "AbiBased"; aarch64: number | null; armv7: number | null; x86: number | null; x86_64: number | null }

export type QueuedAppData = { id: string; transaction: number; status: AppUpdateInstallStatus; intent: AppActionIntent }

export type Semi = { title: string; background: string; appId: string; color: string | null }

export type Platform = "WindowsX64" | "WindowsArm64" | "LinuxX64" | "LinuxArm64" | "AndroidX64" | "AndroidX86" | "AndroidArm7" | "AndroidArm64"

export type SearchEntry = { name: string; title: string; id: string }

export type ClamAVReport = { status: SecurityReportStatus; goodFiles: string[]; badFiles: string[]; virusNames: string[] }

export type AppActionIntent = "Install" | "Uninstall" | "Update"

export type SecurityReports = { windowsDefenderStatus: SecurityReportStatus; clamAVReport: ClamAVReport; mobSFReport: MobSFReport; ciIntegrity: LLMCICDReport; ciReferencesSecondaryScripts: boolean }

/**
 * 🔬 Under Development
 * 
 * 
 */
export type InstallerOptionsAndroid = { asset: AndroidAssetId; min_sdk: number }

export type SubHero = { title: string; background: string; appId: string; color: string | null }

export type DevData = { name: string | null; id: string; github: string; avatar_url: string | null; verified?: boolean }

export type Resource = { intent: FileIntent; asset: AssetData; sha: string }

export type MobSFReport = { status: SecurityReportStatus; score: BigInt }

export type StatusUpdateData = { queue: QueuedAppData[]; supportsUpdate: boolean; queueOverflow: boolean }

export type Commits = { ahqstore: string; alt: string }

/**
 * Use the official ahqstore (<https://crates.io/crates/ahqstore_cli_rs>) cli\n🎯 Introduced in v1
 * 
 * Please note that this entire file (encoded as JSON), must be supplemented with
 * OIDC Rekor Transparency bundle log
 */
export type AHQStoreApplication = { appId: string; appShortcutName: string; appDisplayName: string; authorId: string; resources: { [key: number]: Resource }; ahqtarball: string; install: InstallerOptions; description: string; repo: AppRepo; usrVersion: string | null; version: number; site: string | null; source: string | null; licenseOrTos: string | null; totalImages: number; verified: boolean; attestations: Attestations }

export type InstallerScheme = { PackageIdentifier: string; PackageVersion: string; Scope: string; Installers: Installer[] }

export type GHRepoCommit = { sha: string }

export type SecurityReportStatus = "Passed" | "Failed" | "Unknown"

export type FileIntent = { type: "ArtifactZip" } | { type: "Artifact"; extension: string } | { type: "WindowsZip" } | { type: "WindowsInstallerMsi" } | { type: "WindowsInstallerExe" } | { type: "WindowsUWPMsix" } | { type: "WindowsAHQDB" } | { type: "LinuxAppImage" } | { type: "AndroidApkZip" }

/**
 * 🔬 Under Development
 * 
 * 
 */
export type InstallerOptionsLinux = { assetId: number }

export type AppSupport = { discord: string | null; website: string | null; github: string | null }

export type InstallerOptions = { win32: InstallerOptionsWindows | null; winarm: InstallerOptionsWindows | null; linux: InstallerOptionsLinux | null; linuxArm64: InstallerOptionsLinux | null; android: InstallerOptionsAndroid | null }

export type InstallerOptionsWindows = { assetId: number; exec: string | null; scope: WindowsInstallScope | null; installerArgs: string[] | null }

/**
 * This is exactly `Vec<(String, Vec<String>)>`
 */
export type HomeMapData = { inner: ([string, string[]])[] }

/**
 * This uses an LLM to verify and attest that the building
 * CI CD indeed builds the codebase on the fly of the exact repository
 */
export type LLMCICDReport = { status: SecurityReportStatus; integrityScore: BigInt; intentScore: BigInt; bestPracticesScore: BigInt; totalScore: BigInt }

export type Installer = { Architecture: string; InstallerType: string | null; InstallerLocale: string | null; InstallerUrl: string }

export type WingetApplication = { PackageIdentifier: string; PackageVersion: string; Publisher: string | null; PublisherUrl: string | null; Copyright: string | null; ShortDescription: string | null; Description: string | null; ReleaseNotes: string | null; PackageName: string; PackageUrl: string | null; License: string | null; LicenseUrl: string | null }

export type WindowsInstallScope = "User" | "Machine"

export type Splash = { hero: Hero; subhero: SubHero; third: Semi; fourth: Semi }

