import { FrameDeliverySettings } from '@vertexvis/stream-api';
import { AdaptiveRenderingSettings, QualityOfServiceSettings } from '@vertexvis/stream-api';
import { DeepPartial } from '@vertexvis/utils';
import { Environment } from './environment';
import { Animation, Events, Flags, Interactions } from './types';
interface NetworkConfig {
    apiHost: string;
    renderingHost: string;
    sceneTreeHost: string;
    sceneViewHost: string;
}
export interface Config {
    network: NetworkConfig;
    flags: Flags.Flags;
    events: Events.EventConfig;
    animation: Animation.AnimationConfig;
    interactions: Interactions.InteractionConfig;
    EXPERIMENTAL_frameDelivery: Omit<FrameDeliverySettings, 'rateLimitingEnabled'>;
    EXPERIMENTAL_adaptiveRendering: Omit<AdaptiveRenderingSettings, 'enabled'>;
    EXPERIMENTAL_qualityOfService: QualityOfServiceSettings;
    EXPERIMENTAL_annotationPollingIntervalInMs: number | undefined;
}
export type PartialConfig = DeepPartial<Config>;
export type ConfigProvider = () => Config;
export type InteractionConfigProvider = () => Interactions.InteractionConfig;
export declare function parseAndValidateConfig(environment?: Environment, config?: string | PartialConfig): Config;
export declare function parseConfig(environment?: Environment, config?: string | PartialConfig): Config;
export declare function sanitizeConfig(config: Config): Config;
export declare function validateConfig(config: Config): Config;
export {};
