import { RestSession } from "../RestSession";
import { RestDocument } from "../documents";
import { AxiosProgressEvent } from "axios";
import { AggregationServerState, Application, ApplicationCheck, ClusterCheck, ClusterSettings, ClusterStatus, ConfigurationResult, ConnectorKeyStore, DataSourceServerState, ExecutableName, FileDataStore, FileGroupDataStore, GlobalKeyStore, LogCheck, LogFileConfiguration, ProviderCheck, ProviderSettings, Server, ServerCheck, ServerStatus, SessionTable, Statistic, SupportEntryGroup, TrustStoreKeyStore, UserCheck, Users, Webservice } from "../../../generated-sources";
export interface AdministrationManager<T_REST_DOCUMENT extends RestDocument> {
    getSession(): RestSession<T_REST_DOCUMENT>;
    fetchLogLength(date?: string): Promise<number>;
    fetchLog(range?: string, date?: string): Promise<string>;
    fetchServerStatus(): Promise<ServerStatus>;
    buildSupportPackage(group?: Array<SupportEntryGroup>, start?: string, end?: string, options?: {
        onProgress?: (event: AxiosProgressEvent) => void;
        abortSignal?: AbortSignal;
    }): Promise<Buffer>;
    restartServer(): Promise<void>;
    fetchApplicationConfiguration(): Promise<Application>;
    getApplicationConfiguration(): Promise<Application>;
    updateApplicationConfiguration(configuration: Application, checks?: Array<ApplicationCheck>): Promise<ConfigurationResult>;
    validateApplicationConfiguration(configuration: Application, checks: Array<ApplicationCheck>): Promise<ConfigurationResult>;
    fetchServerConfiguration(): Promise<Server>;
    getServerConfiguration(): Promise<Server>;
    updateServerConfiguration(configuration: Server, checks?: Array<ServerCheck>): Promise<ConfigurationResult>;
    validateServerConfiguration(configuration: Server, checks: Array<ServerCheck>): Promise<ConfigurationResult>;
    fetchUserConfiguration(): Promise<Users>;
    getUserConfiguration(): Promise<Users>;
    updateUserConfiguration(configuration: Users, checks?: Array<UserCheck>): Promise<ConfigurationResult>;
    validateUserConfiguration(configuration: Users, checks: Array<UserCheck>): Promise<ConfigurationResult>;
    fetchLogConfiguration(): Promise<LogFileConfiguration>;
    getLogConfiguration(): Promise<LogFileConfiguration>;
    updateLogConfiguration(configuration: LogFileConfiguration, checks?: Array<LogCheck>): Promise<ConfigurationResult>;
    validateLogConfiguration(configuration: LogFileConfiguration, checks: Array<LogCheck>): Promise<ConfigurationResult>;
    fetchGlobalKeyStore(): Promise<GlobalKeyStore>;
    getGlobalKeyStore(): Promise<GlobalKeyStore>;
    setGlobalKeyStore(keystore: GlobalKeyStore): void;
    fetchTrustStoreKeyStore(): Promise<TrustStoreKeyStore>;
    getTrustStoreKeyStore(): Promise<TrustStoreKeyStore>;
    setTrustStoreKeyStore(keystore: TrustStoreKeyStore): void;
    fetchConnectorKeyStore(): Promise<{
        [key: string]: ConnectorKeyStore;
    }>;
    getConnectorKeyStore(): Promise<{
        [key: string]: ConnectorKeyStore;
    }>;
    setConnectorKeyStore(keystore: {
        [key: string]: ConnectorKeyStore;
    }): void;
    testExecutables(configuration: Application, executables: Array<ExecutableName>): Promise<ConfigurationResult>;
    fetchDatastore(group: FileGroupDataStore, filename?: string): Promise<FileDataStore>;
    updateDatastore(fileDataStore: FileDataStore): Promise<void>;
    deleteDatastore(group: FileGroupDataStore, filename?: string): Promise<void>;
    fetchServerStatistic(dataSource: DataSourceServerState, aggregation: AggregationServerState, webservices: Array<Webservice>, start: Date, end: Date): Promise<Statistic>;
    fetchSessionTable(): Promise<SessionTable>;
    closeSession(sessionId: string): Promise<void>;
    fetchClusterConfiguration(): Promise<ClusterSettings>;
    getClusterConfiguration(): Promise<ClusterSettings>;
    updateClusterConfiguration(configuration: ClusterSettings, checks?: Array<ClusterCheck>): Promise<ConfigurationResult>;
    validateClusterConfiguration(configuration: ClusterSettings, checks: Array<ClusterCheck>): Promise<ConfigurationResult>;
    fetchProviderConfiguration(): Promise<ProviderSettings>;
    getProviderConfiguration(): Promise<ProviderSettings>;
    updateProviderConfiguration(configuration: ProviderSettings, checks?: Array<ProviderCheck>): Promise<ConfigurationResult>;
    validateProviderConfiguration(configuration: ProviderSettings, checks: Array<ProviderCheck>): Promise<ConfigurationResult>;
    fetchClusterStatus(): Promise<ClusterStatus>;
}
