import type { BleAdapterState } from './public/ble-adapter.js'; import { type BleManager } from './public/ble-manager.js'; import { type BleManagerCreateOptions } from './public/host-identity.js'; import type { ReactNativeBleManagerOptions } from './react-native-manager.js'; export type { BleManagerCreateOptions } from './public/host-identity.js'; export { normalizeBleManagerCreateOptions } from './public/host-identity.js'; export type BlePermission = 'bluetooth'; export type ExpoSettingsTarget = 'app' | 'bluetooth' | 'location-services'; export type BleReadinessAction = { readonly kind: 'request-permission'; readonly permission: BlePermission; } | { readonly kind: 'open-settings'; readonly target: ExpoSettingsTarget; } | { readonly kind: 'enable-bluetooth'; readonly systemUiOnly: true; } | { readonly kind: 'create-development-build'; } | { readonly kind: 'rebuild-native-app'; readonly reason: string; }; export interface BleReadiness { readonly state: 'ready' | 'action-required' | 'unavailable'; readonly adapter: BleAdapterState; readonly actions: readonly BleReadinessAction[]; } export interface ExpoPermissionRequest { readonly purpose: 'scan-and-connect'; } export interface ExpoPermissionResult { readonly requested: readonly BlePermission[]; readonly granted: readonly BlePermission[]; readonly denied: readonly BlePermission[]; readonly recommendedSettingsTarget: ExpoSettingsTarget | null; } export interface ExpoBackgroundRequest { readonly kind: 'connected-device'; readonly reason: string; } export interface ExpoBackgroundLease { readonly release: () => Promise; } export interface ExpoBackgroundNotificationUpdate { readonly title: string; readonly body?: string; } export interface ExpoCompanionAssociationRequest { readonly name?: string; readonly serviceUuid?: string; } export interface ExpoCompanionAssociationResult { readonly source: 'associated'; readonly associationId: number; readonly peerId: string | null; readonly displayName: string | null; } export interface ExpoRestoredRecord { readonly kind: 'adapter' | 'connection'; readonly ordinal: number; readonly peerId: string | null; } export interface ExpoRestorationClaimResult { readonly outcome: 'adopted' | 'already-consumed' | 'attachment-mismatch' | 'backend-mismatch' | 'namespace-mismatch' | 'epoch-mismatch'; readonly replayRecordCount: number; readonly records: readonly ExpoRestoredRecord[]; } export interface ExpoBleManager extends BleManager { readonly readiness: () => Promise; readonly permissions: { readonly request: (request: ExpoPermissionRequest) => Promise; }; readonly openSettings: (target: ExpoSettingsTarget) => Promise; readonly background: { readonly acquire: (request: ExpoBackgroundRequest) => Promise; readonly updateNotification: (request: ExpoBackgroundNotificationUpdate) => Promise; }; readonly association: { readonly associate: (request?: ExpoCompanionAssociationRequest) => Promise; }; readonly restoration: { readonly claim: () => Promise; }; } export interface ExpoSettingsBridge { (target: ExpoSettingsTarget): Promise; } export interface ExpoPermissionBridge { (request: ExpoPermissionRequest): Promise; } export interface ExpoRuntimeConfiguration { /** Trusted host platform used to project platform-specific readiness prerequisites. */ readonly platform?: 'android' | 'apple'; readonly executionEnvironment?: 'expo-go' | 'development-build' | 'production'; readonly nativeModuleAvailable?: boolean; readonly nativeConfiguration?: { readonly digest: string; }; readonly expectedConfiguration?: { readonly digest: string; }; /** Trusted Android API level used to project pre-Android-12 scan prerequisites. */ readonly androidApiLevel?: number; readonly permissions?: { readonly android?: { readonly legacyLocation?: 'auto' | 'required' | 'none'; }; }; readonly settingsBridge?: ExpoSettingsBridge; readonly permissionBridge?: ExpoPermissionBridge; } export type ExpoBleManagerEnvironment = ReactNativeBleManagerOptions & { readonly expo?: ExpoRuntimeConfiguration; }; /** Creates the same RN manager and adds only Expo host ergonomics to it. */ export declare function createExpoBleManager(options?: BleManagerCreateOptions, runtimeConfiguration?: ExpoRuntimeConfiguration): Promise; export declare function createExpoBleManagerWithEnvironment(environment: ExpoBleManagerEnvironment): Promise; /** Reads one trusted adapter snapshot and derives deterministic Expo guidance. */ export declare function getExpoBleReadiness(manager: Pick, configuration?: ExpoRuntimeConfiguration): Promise; /** Pure readiness mapping shared by both Expo factory forms. */ export declare function mapExpoReadiness(adapter: BleAdapterState, configuration?: ExpoRuntimeConfiguration): BleReadiness; //# sourceMappingURL=expo.d.ts.map