import type { Handler, MiddlewareHandler } from 'hono';
import type { IPicGo, IServerManager, PluginRouterSetup } from '../../types';
import type { IServerUploadAdapter } from '../../types/internal';
declare class ServerManager implements IServerManager {
    private app;
    private readonly ctx;
    private server?;
    private listeningPort?;
    private listeningHost?;
    private authSecret?;
    private warnedQuerySecret;
    private staticRoutePrefixes;
    private uploadAdapter?;
    constructor(ctx: IPicGo);
    registerGet<P extends string>(path: P, handler: Handler<any, P>, isInternal?: boolean): void;
    registerPost<P extends string>(path: P, handler: Handler<any, P>, isInternal?: boolean): void;
    registerPut<P extends string>(path: P, handler: Handler<any, P>, isInternal?: boolean): void;
    registerDelete<P extends string>(path: P, handler: Handler<any, P>, isInternal?: boolean): void;
    registerMiddleware<P extends string>(path: P, handler: MiddlewareHandler<any, P>): void;
    setUploadAdapter(adapter?: IServerUploadAdapter): void;
    registerStatic(path: string, root: string): void;
    private handleRegister;
    mount(path: string, setup: PluginRouterSetup): void;
    getServerInfo(): string;
    isListening(): boolean;
    private initMiddleware;
    private initCoreRoutes;
    private t;
    private getRequestPath;
    private isStaticPath;
    private shouldSkipAuth;
    private extractAuthToken;
    private warnQuerySecretOnce;
    private getClientIp;
    private logUnauthorized;
    private handleAuth;
    private startServer;
    private isExistingPicGoServer;
    listen(port?: number, host?: string, ignoreExistingExternalServer?: boolean, secret?: string): Promise<number | void>;
    shutdown(): void;
}
export { ServerManager };
