import type { TurboModule } from 'react-native';
import IRudderContext from './IRudderContext';
type dictionary = {
    [key: string]: unknown;
} | null;
export interface Configuration {
    dataPlaneUrl?: string;
    controlPlaneUrl?: string;
    flushQueueSize?: number;
    dbCountThreshold?: number;
    sleepTimeOut?: number;
    configRefreshInterval?: number;
    autoCollectAdvertId?: boolean;
    trackAppLifecycleEvents?: boolean;
    recordScreenViews?: boolean;
    logLevel?: number;
    autoSessionTracking?: boolean;
    sessionTimeout?: number;
    enableBackgroundMode?: boolean;
    collectDeviceId?: boolean;
    enableGzip?: boolean;
    dbEncryption?: unknown;
    withFactories?: Array<Record<string, unknown> | Function>;
}
export interface Spec extends TurboModule {
    setup(configuration: dictionary, options: dictionary): Promise<void>;
    track(event: string, properties: dictionary, options: dictionary | null): Promise<void>;
    screen(name: string, properties: dictionary, options: dictionary): Promise<void>;
    identify(userId: string, traits: dictionary, options: dictionary): Promise<void>;
    alias(newId: string, previousId: string | null, options: dictionary): Promise<void>;
    group(groupId: string, traits: dictionary, options: dictionary): Promise<void>;
    reset(clearAnonymousId: boolean): Promise<void>;
    flush(): Promise<void>;
    optOut(optOut: boolean): Promise<void>;
    putDeviceToken(token: string): Promise<void>;
    putAdvertisingId(id: string): Promise<void>;
    clearAdvertisingId(): Promise<void>;
    putAnonymousId(id: string): Promise<void>;
    registerCallback(integrationName: string, callback: (data: unknown) => void): void;
    getRudderContext(): Promise<IRudderContext | null>;
    startSession(sessionId?: string): Promise<void>;
    endSession(): Promise<void>;
    getSessionId(): Promise<number | null>;
}
declare const _default: Spec;
export default _default;
