import type { LoopKitConfig, ILoopKit, TrackOptions, BatchEventInput } from '../types';
import { Logger } from '../utils/Logger';
import { IdGenerator } from '../utils/IdGenerator';
import { StorageManager } from './StorageManager';
import { SessionManager } from './SessionManager';
import { QueueManager } from './QueueManager';
import { EventTracker } from './EventTracker';
import { NetworkManager } from './NetworkManager';
import { BrowserFeatures } from './BrowserFeatures';
/**
 * Main LoopKit SDK class
 */
export declare class LoopKit implements ILoopKit {
    readonly version: string;
    config: LoopKitConfig;
    initialized: boolean;
    userId: string | null;
    userProperties: Record<string, any>;
    groupId: string | null;
    groupProperties: Record<string, any>;
    logger: Logger;
    idGenerator: IdGenerator;
    storageManager: StorageManager;
    sessionManager: SessionManager;
    queueManager: QueueManager;
    eventTracker: EventTracker;
    networkManager: NetworkManager;
    browserFeatures?: BrowserFeatures;
    constructor();
    /**
     * Initialize LoopKit with API key and configuration
     */
    init(apiKey: string, config?: Partial<LoopKitConfig>): LoopKit;
    /**
     * Update configuration
     */
    configure(config: Partial<LoopKitConfig>): LoopKit;
    /**
     * Get current configuration
     */
    getConfig(): LoopKitConfig;
    /**
     * Track an event
     */
    track(eventName: string, properties?: Record<string, any>, options?: TrackOptions): LoopKit;
    /**
     * Track multiple events in batch
     */
    trackBatch(events: BatchEventInput[]): LoopKit;
    /**
     * Identify a user
     */
    identify(userId: string, properties?: Record<string, any>): LoopKit;
    /**
     * Associate user with a group
     */
    group(groupId: string, properties?: Record<string, any>, groupType?: string): LoopKit;
    /**
     * Manually flush queued events
     */
    flush(): Promise<void>;
    /**
     * Get current queue size
     */
    getQueueSize(): number;
    /**
     * Reset SDK state
     */
    reset(): void;
    /**
     * Reset for testing (internal method)
     */
    resetForTesting(): void;
}
//# sourceMappingURL=LoopKit.d.ts.map