react-native-healthkit-bridge
Version:
A comprehensive React Native bridge for Apple HealthKit with TypeScript support, advanced authorization, and flexible data queries
59 lines (48 loc) • 1.83 kB
text/typescript
import { HealthKitQuantitySample, HealthKitCategorySample, HealthKitWorkout } from '../entities/HealthKitSample';
import { HealthKitIdentifier, HealthKitUnit, DateRange } from '../value-objects/HealthKitIdentifier';
export interface HealthKitRepository {
// Autorização
requestAuthorization(): Promise<boolean>;
requestSelectiveAuthorization(identifiers: HealthKitIdentifier[]): Promise<boolean>;
getAuthorizationStatus(identifiers: HealthKitIdentifier[]): Promise<AuthorizationStatus[]>;
// Consultas por período
getQuantitySamples(
identifier: HealthKitIdentifier,
unit: HealthKitUnit,
dateRange: DateRange
): Promise<HealthKitQuantitySample[]>;
getCategorySamples(
identifier: HealthKitIdentifier,
dateRange: DateRange
): Promise<HealthKitCategorySample[]>;
getWorkouts(dateRange: DateRange): Promise<HealthKitWorkout[]>;
// Consultas por dias (conveniência)
getQuantitySamplesForDays(
identifier: HealthKitIdentifier,
unit: HealthKitUnit,
days: number
): Promise<HealthKitQuantitySample[]>;
getCategorySamplesForDays(
identifier: HealthKitIdentifier,
days: number
): Promise<HealthKitCategorySample[]>;
getWorkoutsForDays(days: number): Promise<HealthKitWorkout[]>;
// Verificação de disponibilidade
isAvailable(): boolean;
}
export interface AuthorizationStatus {
readonly identifier: string;
readonly status: 'notDetermined' | 'sharingDenied' | 'sharingAuthorized' | 'unknown';
}
export interface HealthKitTypeInfo {
readonly identifier: string;
readonly name: string;
readonly description: string;
readonly category: string;
readonly type: string;
}
export interface HealthKitRepositoryConfig {
readonly defaultDays?: number;
readonly enableLogging?: boolean;
readonly retryAttempts?: number;
}