import { Config, LogLevel, Logger } from '@amplitude/analytics-types';
import { StoreType, ConsoleLogLevel } from '../typings/session-replay';
export interface SamplingConfig {
    sample_rate: number;
    capture_enabled: boolean;
}
export interface InteractionConfig {
    trackEveryNms?: number;
    enabled: boolean;
    batch: boolean;
}
export interface LoggingConfig {
    console: {
        enabled: boolean;
        levels: ConsoleLogLevel[];
    };
    network?: {
        enabled: boolean;
    };
}
export type SessionReplayRemoteConfig = {
    sr_sampling_config?: SamplingConfig;
    sr_privacy_config?: PrivacyConfig;
    sr_interaction_config?: InteractionConfig;
    sr_logging_config?: LoggingConfig;
};
export interface SessionReplayRemoteConfigAPIResponse {
    configs: {
        sessionReplay: SessionReplayRemoteConfig;
    };
}
export type MaskLevel = 'light' | 'medium' | 'conservative';
export declare const DEFAULT_MASK_LEVEL = "medium";
export type PrivacyConfig = {
    blockSelector?: string | string[];
    defaultMaskLevel?: MaskLevel;
    maskSelector?: string[];
    unmaskSelector?: string[];
};
export interface SessionReplayLocalConfig extends Config {
    apiKey: string;
    loggerProvider: Logger;
    logLevel: LogLevel;
    flushMaxRetries: number;
    sampleRate: number;
    privacyConfig?: PrivacyConfig;
    debugMode?: boolean;
    configServerUrl?: string;
    trackServerUrl?: string;
    shouldInlineStylesheet?: boolean;
    version?: SessionReplayVersion;
    performanceConfig?: SessionReplayPerformanceConfig;
    storeType: StoreType;
    experimental?: {
        useWebWorker: boolean;
    };
}
export interface SessionReplayJoinedConfig extends SessionReplayLocalConfig {
    captureEnabled?: boolean;
    interactionConfig?: InteractionConfig;
    loggingConfig?: LoggingConfig;
}
export interface SessionReplayRemoteConfigFetch {
    getServerUrl: () => void;
    getSamplingConfig: (sessionId?: number) => Promise<SessionReplayRemoteConfig['sr_sampling_config'] | void>;
    fetchRemoteConfig: (sessionId?: number) => Promise<SessionReplayRemoteConfig | void>;
    getRemoteConfig: (sessionId?: number) => Promise<SessionReplayRemoteConfig | void>;
}
export interface SessionReplayJoinedConfigGenerator {
    generateJoinedConfig: (sessionId?: string | number) => Promise<SessionReplayJoinedConfig>;
}
export interface SessionReplayVersion {
    version: string;
    type: SessionReplayType;
}
export interface SessionReplayPerformanceConfig {
    enabled: boolean;
    timeout?: number;
}
export type SessionReplayType = 'standalone' | 'plugin' | 'segment';
//# sourceMappingURL=types.d.ts.map