import { ISwrveInternalConfig, SwrveStack } from "./ISwrveInternalConfig";
import { ISwrveEmbeddedMessage } from "../Campaigns/ISwrveCampaign";
import IDictionary from "../utils/IDictionary";
import { IPlatform, IPlatformName } from "../utils/platforms/IPlatform";
import { IKeyMapping } from "../utils/platforms/IKeymapping";
export declare type OnEmbeddedMessageListener = (msg: ISwrveEmbeddedMessage, personalizationProperties?: IDictionary<string>) => void;
export declare type OnPersonalizationProvider = (eventPayload: IDictionary<string>) => IDictionary<string>;
export declare type OnUserDisabledListener = (swrveUserId: string, externalId: string) => void;
export default interface ISwrveConfig {
    appId: number;
    apiKey: string;
    appVersion?: string;
    stack?: SwrveStack;
    newSessionInterval?: number;
    httpsTimeoutSeconds?: number;
    language?: string;
    contentUrl?: string;
    apiUrl?: string;
    identityUrl?: string;
    abTestDetailsEnabled?: boolean;
    autoShowMessagesMaxDelay?: number;
    inAppMessageButtonStyle?: ICSSStyle | string;
    inAppMessageButtonFocusStyle?: ICSSStyle | string;
    inAppMessageStyleOverride?: string;
    managedMode?: boolean;
    autoStartLastUser?: boolean;
    embeddedMessageConfig?: ISwrveEmbeddedMessageConfig;
    personalizationProvider?: OnPersonalizationProvider;
    customKeyMappingTizen?: IKeyMapping;
    customKeyMappingWebOS?: IKeyMapping;
    customKeyMappingBase?: IKeyMapping;
    customPlatform?: IPlatform;
    customOSVersion?: string;
    customOS?: string;
    customDeviceName?: IPlatformName;
    customAppStore?: string;
}
export interface ICSSStyle {
    [key: string]: string;
}
export declare function configWithDefaults(config: ISwrveConfig, lastUserId: string): ISwrveInternalConfig;
export interface IPreviousConfig {
    userId?: string;
}
export interface ISwrveEmbeddedMessageConfig {
    embeddedCallback?: OnEmbeddedMessageListener;
}
