68 lines
1.2 KiB
TypeScript
68 lines
1.2 KiB
TypeScript
export type AppCategory =
|
|
| "windows"
|
|
| "android"
|
|
| "efficiency"
|
|
| "developer"
|
|
| "ai"
|
|
| "media"
|
|
| "design"
|
|
| "network";
|
|
|
|
export interface DownloadSource {
|
|
id: string;
|
|
name: string;
|
|
type: "official" | "pan" | "mirror" | "affiliate";
|
|
href: string;
|
|
hint?: string;
|
|
}
|
|
|
|
export interface VersionHistoryItem {
|
|
version: string;
|
|
size: string;
|
|
updatedAt: string;
|
|
notes: string;
|
|
downloadHref: string;
|
|
}
|
|
|
|
export interface ChangelogItem {
|
|
date: string;
|
|
title: string;
|
|
description: string;
|
|
}
|
|
|
|
export interface AppResource {
|
|
id: string;
|
|
slug: string;
|
|
name: string;
|
|
subtitle: string;
|
|
description: string;
|
|
icon: string;
|
|
category: AppCategory;
|
|
tags: string[];
|
|
version: string;
|
|
size: string;
|
|
updatedAt: string;
|
|
uploadedAt: string;
|
|
downloads: number;
|
|
featured?: boolean;
|
|
safety: ("official" | "verified" | "clean")[];
|
|
screenshots: string[];
|
|
channels: DownloadSource[];
|
|
versionHistory: VersionHistoryItem[];
|
|
changelog: ChangelogItem[];
|
|
usage: string[];
|
|
}
|
|
|
|
export interface InsightTrendPoint {
|
|
date: string;
|
|
downloads: number;
|
|
}
|
|
|
|
export type AccessLevel = "guest" | "unlocked" | "vip";
|
|
|
|
export interface SessionState {
|
|
isLoggedIn: boolean;
|
|
accessLevel: AccessLevel;
|
|
userName?: string;
|
|
}
|