📝 Типы: Marzban API структуры и Telegram WebApp интерфейсы

This commit is contained in:
Umbrix Dev
2026-02-04 05:02:05 +03:00
parent ea15346552
commit 92aa148f06
2 changed files with 140 additions and 0 deletions

75
types/marzban.ts Normal file
View File

@@ -0,0 +1,75 @@
/**
* Marzban API Types
* Типы для работы с Marzban Panel API
*/
export interface MarzbanUser {
username: string;
status: 'active' | 'limited' | 'expired' | 'disabled';
used_traffic: number; // bytes
data_limit: number | null; // bytes, null = unlimited
data_limit_reset_strategy: string;
expire: number | null; // Unix timestamp, null = unlimited
sub_updated_at: string; // ISO 8601 datetime
on_hold_expire_duration: number;
on_hold_timeout: string | null;
subscription_url?: string; // URL подписки (опционально)
note?: string;
}
export interface MarzbanUsage {
date: string; // YYYY-MM-DD
upload: number; // bytes
download: number; // bytes
total: number; // bytes
}
export interface MarzbanUsageResponse {
username: string;
usages: MarzbanUsage[];
}
export interface SubscriptionUserInfo {
upload: number;
download: number;
total: number;
expire: number;
}
export interface MarzbanUsersListResponse {
users: MarzbanUser[];
total: number;
}
export interface CreateUserRequest {
username: string;
status: 'active' | 'disabled';
expire: number;
data_limit: number;
data_limit_reset_strategy: string;
proxies: {
vmess?: { id: string };
vless?: {};
trojan?: {};
};
inbounds: {
vless?: string[];
vmess?: string[];
trojan?: string[];
};
note: string;
}
export interface CreateUserResponse {
username: string;
subscription_url?: string;
[key: string]: any;
}
export type PlanType = 'trial' | 'start' | 'plus' | 'max';
export interface PlanConfig {
name: string;
expireTimestamp: number;
dataLimitBytes: number;
}

65
types/telegram.ts Normal file
View File

@@ -0,0 +1,65 @@
/**
* Telegram WebApp Types
* Типы для работы с Telegram Mini App API
*/
export interface TelegramUser {
id: number;
first_name: string;
last_name?: string;
username?: string;
language_code?: string;
is_premium?: boolean;
photo_url?: string;
}
export interface TelegramWebAppInitData {
query_id?: string;
user?: TelegramUser;
receiver?: TelegramUser;
chat?: any;
start_param?: string;
auth_date: number;
hash: string;
}
export interface TelegramWebApp {
initData: string;
initDataUnsafe: TelegramWebAppInitData;
version: string;
platform: string;
colorScheme: 'light' | 'dark';
themeParams: any;
isExpanded: boolean;
viewportHeight: number;
viewportStableHeight: number;
headerColor: string;
backgroundColor: string;
isClosingConfirmationEnabled: boolean;
// Methods
ready(): void;
expand(): void;
close(): void;
showAlert(message: string, callback?: () => void): void;
showConfirm(message: string, callback?: (confirmed: boolean) => void): void;
showPopup(params: any, callback?: () => void): void;
onEvent(eventType: string, callback: () => void): void;
offEvent(eventType: string, callback: () => void): void;
}
export interface TelegramUserData {
webApp: TelegramWebApp | null;
telegramId: number | null;
telegramUsername: string | null;
firstName: string | null;
lastName: string | null;
}
declare global {
interface Window {
Telegram?: {
WebApp: TelegramWebApp;
};
}
}