import Client, { ClientOptions, ClientRequestOptions } from "./client";
import Context, { ContextData, ContextOptions, ContextParams, Exposure, Goal } from "./context";
import { ContextPublisher, PublishParams } from "./publisher";
import { ContextDataProvider } from "./provider";
export type EventLoggerData = Error | Exposure | Goal | ContextData | PublishParams;
export type EventName = "error" | "ready" | "refresh" | "publish" | "exposure" | "goal" | "finalize";
export type EventLogger = (context: Context, eventName: EventName, data?: EventLoggerData) => void;
export type SDKOptions = {
    client?: Client;
    eventLogger?: EventLogger;
    publisher?: ContextPublisher;
    provider?: ContextDataProvider;
};
export default class SDK {
    static defaultEventLogger: EventLogger;
    private _eventLogger;
    private _publisher;
    private _provider;
    private readonly _client;
    constructor(options: ClientOptions & SDKOptions);
    getContextData(requestOptions: ClientRequestOptions): any;
    createContext(params: ContextParams, options?: Partial<ContextOptions>, requestOptions?: Partial<ClientRequestOptions>): Context;
    setEventLogger(logger: EventLogger): void;
    getEventLogger(): EventLogger;
    setContextPublisher(publisher: ContextPublisher): void;
    getContextPublisher(): ContextPublisher;
    setContextDataProvider(provider: ContextDataProvider): void;
    getContextDataProvider(): ContextDataProvider;
    getClient(): Client;
    createContextWith(params: ContextParams, data: ContextData | Promise<ContextData>, options?: Partial<ContextOptions>): Context;
    private static _contextOptions;
    private static _validateParams;
}
//# sourceMappingURL=sdk.d.ts.map