/**
 * SDK version for telemetry tracking.
 * This value is automatically injected from package.json at build time.
 * The placeholder '__SDK_VERSION_PLACEHOLDER__' is replaced by rollup.
 */
export declare const SDK_VERSION = "__SDK_VERSION_PLACEHOLDER__";
/**
 * OTA Telemetry events that can be reported to Norrix.
 */
export type OtaTelemetryEvent = 'ota_check' | 'ota_download_started' | 'ota_download_complete' | 'ota_install_started' | 'ota_install_complete' | 'ota_app_launch' | 'ota_store_update_prompted' | 'ota_store_update_accepted' | 'ota_store_update_declined' | 'ota_rollback' | 'ota_rollback_skipped' | 'ota_crash_recovery' | 'ota_error';
/**
 * Telemetry event properties.
 */
export interface TelemetryProperties {
    bundleId: string;
    platform: 'ios' | 'android' | 'visionos';
    sdkVersion?: string;
    appVersion?: string;
    buildNumber?: string;
    otaVersion?: string;
    otaBuildNumber?: string;
    fingerprintHash?: string;
    configuration?: string;
    deviceId?: string;
    deviceModel?: string;
    osVersion?: string;
    syncStatus?: string;
    requiresStoreUpdate?: boolean;
    isRollback?: boolean;
    error?: string;
    [key: string]: unknown;
}
/**
 * Configure telemetry reporting.
 *
 * @param config.updateUrl The base URL for the Norrix update server
 * @param config.enabled Whether telemetry is enabled (default: true)
 */
export declare function configureTelemetry(config: {
    updateUrl: string;
    enabled?: boolean;
}): void;
/**
 * Track an OTA telemetry event.
 *
 * Events are queued and sent in batches to reduce network overhead.
 * If the queue reaches MAX_QUEUE_SIZE or FLUSH_INTERVAL_MS passes,
 * the queue is flushed automatically.
 *
 * @param event The telemetry event type
 * @param properties Additional event properties (merged with device info)
 */
export declare function trackOtaEvent(event: OtaTelemetryEvent, properties?: Partial<Omit<TelemetryProperties, 'bundleId' | 'platform'>>): void;
/**
 * Flush queued telemetry events to the server.
 *
 * This is called automatically, but can be invoked manually
 * before app suspension or exit.
 */
export declare function flushTelemetry(): Promise<void>;
/**
 * Track app launch with OTA context.
 *
 * This should be called when the app launches to report whether
 * it's running from an OTA update or the original binary.
 *
 * @param otaFingerprint The current OTA fingerprint (if running from OTA)
 * @param configuration The current configuration/environment
 */
export declare function trackAppLaunch(otaFingerprint?: string, configuration?: string): void;
//# sourceMappingURL=norrix-telemetry.d.ts.map