import type { TurboModule } from 'react-native'; import { TurboModuleRegistry } from 'react-native'; export interface Spec extends TurboModule { // Configuration configure( enabled: boolean, updateUrl: string, runtimeVersion: string, checkOnLaunch: string, launchWaitMs: number, channel: string | null, signingKeyId: string | null, signingPublicKey: string | null ): void; // Get current state (since constants are captured at init) getStateAsync(): Promise<{ isEnabled: boolean; updateId: string | null; runtimeVersion: string | null; channel: string | null; manifestString: string | null; isEmbeddedLaunch: boolean; commitTime: number | null; localAssets?: { [key: string]: string }; }>; // Methods checkForUpdateAsync(): Promise<{ isAvailable: boolean; manifestString?: string; isRollback?: boolean; failedReason?: string; }>; fetchUpdateAsync(): Promise<{ isNew: boolean; manifestString?: string; }>; reloadAsync(): Promise; markAppReady(): Promise; reportLaunchFailure(reason: string): Promise; // Event emitter addListener(eventName: string): void; removeListeners(count: number): void; } export default TurboModuleRegistry.get('PulseUpdates');