import { Db, MongoClient } from 'mongodb';
import { LocalLogManager } from './managers/local-log.manager';
import { MongoManager } from './managers/mongo.manager';
import { ResolveIOMainServer } from './server-app';
export declare class ResolveIOServer {
    private static _serverConfig;
    private static _clientRoutes;
    private static _mongoConnection;
    private static _mainDB;
    private static _mainServer;
    private static _localLogManager;
    private static _mongoManager;
    private static _client;
    private static _clientDir;
    private static _sesMail;
    private static _publicProgram;
    private static _reconnecting;
    private static _mongoReconnectPromise;
    private static _lastMongoPoolClearedLogMs;
    private static readonly MONGO_POOL_CLEARED_DEBOUNCE_MS;
    private static connectMongo;
    private static attachMongoListeners;
    private static detachMongoListeners;
    private static handleMongoClose;
    private static handleMongoError;
    private static handleMongoServerClosed;
    private static handleMongoTopologyClosed;
    private static handleMongoPoolCleared;
    private static handleMongoDisconnectSignal;
    private static isMongoConnectionHealthy;
    static requestMongoReconnect(reason?: string, signal?: any): Promise<void>;
    private static summarizeMongoSignal;
    private static closeMongoClientQuietly;
    private static notifyMongoReconnect;
    private static reconnectMongo;
    private static handleMongoDisconnect;
    private static delay;
    private static resolveMongoClientOptions;
    private static pickMongoOptionValue;
    private static pickMongoBooleanOptionValue;
    constructor();
    static create(serverConfig: any, clientRoutes: string[], client: string, clientDir: any, sesMail?: boolean, publicProgram?: boolean): Promise<ResolveIOServer>;
    private initialize;
    static getClientName(): string;
    static getMainServer(): ResolveIOMainServer;
    static setMainServer(mainServer: ResolveIOMainServer): void;
    static setMongoConnection(mongoConnection: MongoClient): void;
    static getMongoConnection(): MongoClient;
    static getMainDB(): Db;
    static setMainDB(mainDB: Db): void;
    static getMongoManager(): MongoManager;
    static setMongoManager(mongoManager: MongoManager): void;
    static getLocalLogManager(): LocalLogManager;
    static setLocalLogManager(localLogManager: LocalLogManager): void;
    static getServerConfig(): any;
    static getLogStorageMode(): 'offline' | 'direct';
    static shouldWriteLogsOffline(): boolean;
    private static resolveConfiguredLogStorageMode;
    private static resolveLegacyLogStorageMode;
    static getInstanceHost(): string;
    static getServerApiBaseUrl(): string;
    static buildServerApiUrl(pathname: string): string;
    private static findFirstNonEmptyString;
    private static normalizeBaseUrl;
    private static extractHostName;
    static getClientRoutes(): any[];
    static getClientDir(): string;
    static getSESMail(): boolean;
    static getpublicProgram(): boolean;
}
