import { CidAssigner } from '@croct/sdk/cid';
import { ContextFactory } from '@croct/sdk/facade/evaluatorFacade';
import { Campaign, Page } from '@croct/sdk/evaluator';
import { Plugin, PluginFactory } from './plugin.cjs';
import { SdkEventSubscriber } from './sdk/index.cjs';
import { TokenProvider } from '@croct/sdk/token';
import { Tab } from '@croct/sdk/tab';
import { Logger } from '@croct/sdk/logging';
import '@croct/sdk/facade/trackerFacade';
import '@croct/sdk/facade/userFacade';
import '@croct/sdk/facade/sessionFacade';
import '@croct/sdk/eventManager';
import '@croct/sdk/sdkEvents';

type Configuration = {
    appId: string;
    connectionId?: string;
    sdkVersion: string;
    tab: Tab;
    contextFactory: ContextFactory;
    storage: Storage;
    eventSubscriber: SdkEventSubscriber;
    cidAssigner: CidAssigner;
    tokenProvider: TokenProvider;
    logger: Logger;
};
type SyncPayload = {
    appId: string;
    connectionId: string;
    sdkVersion: string;
    cid: string;
    tabId: string;
    token: string | null;
    context: {
        campaign?: Campaign;
        page?: Page;
        timezone?: string;
    };
};
declare class PlaygroundPlugin implements Plugin {
    private readonly sdkVersion;
    private readonly appId;
    private readonly connectionId?;
    private readonly tab;
    private readonly contextFactory;
    private readonly storage;
    private readonly eventSubscriber;
    private readonly cidAssigner;
    private readonly tokenProvider;
    private readonly logger;
    private syncListener?;
    constructor(configuration: Configuration);
    enable(): Promise<void> | void;
    private resolveConnectionId;
    disable(): Promise<void> | void;
    private syncToken;
    private createContext;
}
type Options = {
    connectionId?: string;
};
declare const factory: PluginFactory<Options>;

export { type Configuration, type Options, PlaygroundPlugin, type SyncPayload, factory };
