/// import express from 'express'; import persist from 'node-persist'; import { Jwt } from '../util/jwt.js'; import { CoralJwtPayload, NintendoAccountIdTokenJwtPayload } from '../util/types.js'; import { HttpServer } from '../util/http-server.js'; import { DeviceConnection, DevicePool } from './devices.js'; import MetricsCollector from './metrics.js'; import { FRequest, FResult, PackageInfo } from './types.js'; export default class Server extends HttpServer { readonly devices: DevicePool; readonly metrics: MetricsCollector | null; validate_tokens: boolean; strict_validate: boolean; reattach: (() => void) | null; health_ttl: number; readonly app: express.Express; storage: persist.LocalStorage | null; limits_coral: [requests: number, period_ms: number] | null; limits_webservice: [requests: number, period_ms: number] | null; last_result: { req: express.Request; data?: FRequest; result: FResult; device?: DeviceConnection; time: Date; dv?: number; dw?: number; da?: number; } | null; constructor(devices: DevicePool, metrics?: MetricsCollector | null); setDeviceHeaders(res: express.Response, device: DeviceConnection): void; handleDevicesRequest(req: express.Request, res: express.Response): Promise<{ devices: { busy: boolean; id: string; name: string; data: {}; }[]; worker_count: number; available_count: number; queue: number; }>; handleConfigRequest(req: express.Request, res: express.Response): Promise<{ versions: (PackageInfo & { platform: string; build: number; worker_count: number; })[]; nso_version: string; }>; handleFRequest(req: express.Request, res: express.Response): Promise<{ f: string; timestamp: string | number | undefined; request_id: string | undefined; warnings: { error: string; error_message: string; }[] | undefined; }>; handleHealthRequest(req: express.Request, res: express.Response): Promise<{ last_result_at: string; worker_count: number; available_count: number; queue: number; }>; callWithFridaScript(req: express.Request, res: express.Response, fn: (api: DeviceConnection, queue?: number, attach?: number, device?: DeviceConnection) => Promise, platform?: string | null, version?: string | null, wait?: boolean): Promise; validateFRequest(req: express.Request, data: FRequest, strict?: boolean, warnings?: { error: string; error_message: string; }[]): Promise; validateToken(req: express.Request, jwt: Jwt, sig: Buffer, hash_method: '1' | '2', _errors: { error: string; error_message: string; }[], warnings?: { error: string; error_message: string; }[]): Promise; }