import { BaseImmutable, Property } from 'immutable-class';
import { SettingsLocation } from '../settings-location/settings-location';
export declare type Iframe = "allow" | "deny";
export declare type TrustProxy = "none" | "always";
export declare type StrictTransportSecurity = "none" | "always";
export interface ServerSettingsValue {
    port?: number;
    serverHost?: string;
    serverRoot?: string;
    requestLogFormat?: string;
    trackingUrl?: string;
    trackingContext?: Lookup<string>;
    pageMustLoadTimeout?: number;
    iframe?: Iframe;
    trustProxy?: TrustProxy;
    strictTransportSecurity?: StrictTransportSecurity;
    auth?: string;
    settingsLocation?: SettingsLocation;
}
export declare type ServerSettingsJS = ServerSettingsValue;
export declare class ServerSettings extends BaseImmutable<ServerSettingsValue, ServerSettingsJS> {
    static DEFAULT_PORT: number;
    static DEFAULT_SERVER_ROOT: string;
    static DEFAULT_REQUEST_LOG_FORMAT: string;
    static DEFAULT_PAGE_MUST_LOAD_TIMEOUT: number;
    static IFRAME_VALUES: Iframe[];
    static DEFAULT_IFRAME: Iframe;
    static TRUST_PROXY_VALUES: TrustProxy[];
    static DEFAULT_TRUST_PROXY: TrustProxy;
    static STRICT_TRANSPORT_SECURITY_VALUES: StrictTransportSecurity[];
    static DEFAULT_STRICT_TRANSPORT_SECURITY: StrictTransportSecurity;
    static isServerSettings(candidate: any): candidate is ServerSettings;
    static fromJS(parameters: ServerSettingsJS): ServerSettings;
    static PROPERTIES: Property[];
    port: number;
    serverHost: string;
    serverRoot: string;
    requestLogFormat: string;
    trackingUrl: string;
    trackingContext: Lookup<string>;
    pageMustLoadTimeout: number;
    iframe: Iframe;
    trustProxy: TrustProxy;
    strictTransportSecurity: StrictTransportSecurity;
    auth: string;
    settingsLocation: SettingsLocation;
    constructor(parameters: ServerSettingsValue);
    getPort: () => number;
    getServerHost: () => string;
    getServerRoot: () => string;
    getRequestLogFormat: () => string;
    getTrackingUrl: () => string;
    getTrackingContext: () => Lookup<string>;
    getPageMustLoadTimeout: () => number;
    getIframe: () => Iframe;
    getTrustProxy: () => TrustProxy;
    getStrictTransportSecurity: () => StrictTransportSecurity;
    getSettingsLocation: () => SettingsLocation;
}
