UNPKG

@kingstinct/react-native-healthkit

Version:
181 lines (180 loc) 23 kB
import useHealthkitAuthorization from './hooks/useHealthkitAuthorization'; import { useIsHealthDataAvailable } from './hooks/useIsHealthDataAvailable'; import useMostRecentCategorySample from './hooks/useMostRecentCategorySample'; import useMostRecentQuantitySample from './hooks/useMostRecentQuantitySample'; import useMostRecentWorkout from './hooks/useMostRecentWorkout'; import useSources from './hooks/useSources'; import useStatisticsForQuantity from './hooks/useStatisticsForQuantity'; import useSubscribeToCategorySamples from './hooks/useSubscribeToCategorySamples'; import useSubscribeToChanges from './hooks/useSubscribeToChanges'; import useSubscribeToQuantitySamples from './hooks/useSubscribeToQuantitySamples'; import type { QuantityTypeIdentifier } from './types/QuantityTypeIdentifier'; import getMostRecentCategorySample from './utils/getMostRecentCategorySample'; import getMostRecentQuantitySample from './utils/getMostRecentQuantitySample'; import getMostRecentWorkout from './utils/getMostRecentWorkout'; import getPreferredUnit from './utils/getPreferredUnit'; import { subscribeToCategorySamples } from './utils/subscribeToCategorySamples'; import { subscribeToChanges } from './utils/subscribeToChanges'; import { subscribeToQuantitySamples } from './utils/subscribeToQuantitySamples'; export * from './types'; declare const currentMajorVersionIOS: number; /** * Quantity types that are not available before iOS 17 */ type QuantityTypesIOS17Plus = 'HKQuantityTypeIdentifierCyclingCadence' | 'HKQuantityTypeIdentifierCyclingFunctionalThresholdPower' | 'HKQuantityTypeIdentifierCyclingPower' | 'HKQuantityTypeIdentifierCyclingSpeed' | 'HKQuantityTypeIdentifierPhysicalEffort' | 'HKQuantityTypeIdentifierTimeInDaylight'; /** * Available quantity types for iOS versions before iOS 17 */ export type AvailableQuantityTypesBeforeIOS17 = Exclude<QuantityTypeIdentifier, QuantityTypesIOS17Plus>; export { getMostRecentCategorySample, getMostRecentQuantitySample, getMostRecentWorkout, getPreferredUnit, subscribeToCategorySamples, subscribeToChanges, subscribeToQuantitySamples, useHealthkitAuthorization, useIsHealthDataAvailable, useMostRecentCategorySample, useMostRecentQuantitySample, useMostRecentWorkout, useSources, useStatisticsForQuantity, useSubscribeToCategorySamples, useSubscribeToChanges, useSubscribeToQuantitySamples, }; /** * Available quantity types for iOS 17 and later (all quantity types) */ export type AvailableQuantityTypesIOS17Plus = QuantityTypeIdentifier; /** * Get available quantity types based on iOS version * @param majorVersionIOS - iOS major version number (defaults to current iOS version) * @returns Available quantity types for the given iOS version */ export type AvailableQuantityTypes<T extends number = typeof currentMajorVersionIOS> = T extends 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 ? AvailableQuantityTypesIOS17Plus : AvailableQuantityTypesBeforeIOS17; export declare const authorizationStatusFor: (type: import("./types").ObjectTypeIdentifier) => import("./types").AuthorizationStatus; export declare const requestPerObjectReadAuthorization: (typeIdentifier: import("./types").PerObjectTypeIdentifier) => Promise<void>; export declare const disableAllBackgroundDelivery: () => Promise<boolean>; export declare const disableBackgroundDelivery: (typeIdentifier: import("./types").ObjectTypeIdentifier) => Promise<boolean>; export declare const enableBackgroundDelivery: (typeIdentifier: import("./types").ObjectTypeIdentifier, updateFrequency: import("./types").UpdateFrequency) => Promise<boolean>; export declare const getBiologicalSex: () => import("./types").BiologicalSex; export declare const getBloodType: () => import("./types").BloodType; export declare const getDateOfBirth: () => Date | undefined; export declare const getFitzpatrickSkinType: () => import("./types").FitzpatrickSkinType; export declare const getPreferredUnits: (identifiers: readonly QuantityTypeIdentifier[], forceUpdate?: boolean) => Promise<import("./types").IdentifierWithUnit[]>; export declare const getRequestStatusForAuthorization: (toCheck: import("./specs/CoreModule.nitro").AuthDataTypes) => Promise<import("./types").AuthorizationRequestStatus>; export declare const getWheelchairUse: () => import("./types").WheelchairUse; export declare const isHealthDataAvailable: () => boolean; export declare const isHealthDataAvailableAsync: () => Promise<boolean>; export declare const queryCategorySamples: <T extends import("./types").CategoryTypeIdentifier>(identifier: T, options: import("./types").QueryOptionsWithSortOrder) => Promise<readonly import("./types").CategorySampleTyped<T>[]>; export declare const queryCategorySamplesWithAnchor: <T extends import("./types").CategoryTypeIdentifier>(identifier: T, options: import("./types").QueryOptionsWithAnchor) => Promise<import("./types").CategorySamplesWithAnchorResponseTyped<T>>; export declare const queryCorrelationSamples: (typeIdentifier: import("./types").CorrelationTypeIdentifier, options: import("./types").QueryOptionsWithSortOrder) => Promise<readonly import("./types").CorrelationSample[]>; export declare const queryCorrelationSamplesWithAnchor: (typeIdentifier: import("./types").CorrelationTypeIdentifier, options: import("./types").QueryOptionsWithAnchor) => Promise<import("./types").QueryCorrelationSamplesWithAnchorResponse>; export declare const queryHeartbeatSeriesSamples: (options: import("./types").QueryOptionsWithSortOrder) => Promise<readonly import("./types").HeartbeatSeriesSample[]>; export declare const queryHeartbeatSeriesSamplesWithAnchor: (options: import("./types").QueryOptionsWithAnchor) => Promise<import("./types").HeartbeatSeriesSamplesWithAnchorResponse>; export declare const queryElectrocardiogramSamples: (options: import("./types/ElectrocardiogramSample").ECGQueryOptionsWithSortOrder) => Promise<readonly import("./types/ElectrocardiogramSample").ElectrocardiogramSample[]>; export declare const queryElectrocardiogramSamplesWithAnchor: (options: import("./types/ElectrocardiogramSample").ECGQueryOptionsWithAnchor) => Promise<import("./types/ElectrocardiogramSample").ElectrocardiogramSamplesWithAnchorResponse>; export declare const queryQuantitySamples: (identifier: QuantityTypeIdentifier, options: import("./types").QueryOptionsWithSortOrderAndUnit) => Promise<readonly import("./types").QuantitySample[]>; export declare const queryQuantitySamplesWithAnchor: (identifier: QuantityTypeIdentifier, options: import("./types").QueryOptionsWithAnchorAndUnit) => Promise<import("./types").QuantitySamplesWithAnchorResponse>; export declare const queryStatisticsForQuantity: (identifier: QuantityTypeIdentifier, statistics: readonly import("./types").StatisticsOptions[], options?: import("./types").StatisticsQueryOptions) => Promise<import("./types").QueryStatisticsResponse>; export declare const queryStatisticsCollectionForQuantity: (identifier: QuantityTypeIdentifier, statistics: readonly import("./types").StatisticsOptions[], anchorDate: Date, intervalComponents: import("./types").IntervalComponents, options?: import("./types").StatisticsQueryOptions) => Promise<readonly import("./types").QueryStatisticsResponse[]>; export declare const queryStatisticsForQuantitySeparateBySource: (identifier: QuantityTypeIdentifier, statistics: readonly import("./types").StatisticsOptions[], options?: import("./types").StatisticsQueryOptions) => Promise<import("./types").QueryStatisticsResponseFromSingleSource[]>; export declare const queryStatisticsCollectionForQuantitySeparateBySource: (identifier: QuantityTypeIdentifier, statistics: readonly import("./types").StatisticsOptions[], anchorDate: Date, intervalComponents: import("./types").IntervalComponents, options?: import("./types").StatisticsQueryOptions) => Promise<readonly import("./types").QueryStatisticsResponseFromSingleSource[]>; export declare const queryWorkoutSamples: (options: import("./types").WorkoutQueryOptions) => Promise<import("./specs/WorkoutProxy.nitro").WorkoutProxy[]>; export declare const queryWorkoutSamplesWithAnchor: (options: import("./types").WorkoutQueryOptionsWithAnchor) => Promise<import("./types").QueryWorkoutSamplesWithAnchorResponse>; export declare const querySources: (identifier: import("./types").SampleTypeIdentifier, filter?: import("./types").FilterForSamples) => Promise<readonly import("./specs/SourceProxy.nitro").SourceProxy[]>; export declare const requestAuthorization: (toRequest: import("./specs/CoreModule.nitro").AuthDataTypes) => Promise<boolean>; export declare const deleteObjects: (objectTypeIdentifier: import("./types").SampleTypeIdentifierWriteable, filter: import("./types").FilterForSamples) => Promise<number>; export declare const saveCategorySample: <T extends import("./types").CategoryTypeIdentifier>(identifier: T, value: import("./types").CategoryValueForIdentifier, startDate: Date, endDate: Date, metadata?: import("./types").MetadataForCategoryIdentifier<T>) => Promise<import("./types").CategorySample | undefined>; export declare const saveCorrelationSample: (typeIdentifier: import("./types").CorrelationTypeIdentifier, samples: import("./types").SampleForSaving[], start: Date, end: Date, metadata?: import("react-native-nitro-modules").AnyMap) => Promise<import("./types").CorrelationSample | undefined>; export declare const saveQuantitySample: (identifier: QuantityTypeIdentifier, unit: string, value: number, start: Date, end: Date, metadata?: import("react-native-nitro-modules").AnyMap) => Promise<import("./types").QuantitySample | undefined>; export declare const saveWorkoutSample: (workoutActivityType: import("./types").WorkoutActivityType, quantities: readonly import("./types").QuantitySampleForSaving[], startDate: Date, endDate: Date, totals?: import("./types").WorkoutTotals, metadata?: import("react-native-nitro-modules").AnyMap) => Promise<import("./specs/WorkoutProxy.nitro").WorkoutProxy>; export declare const startWatchApp: (workoutConfiguration: import("./types").WorkoutConfiguration) => Promise<boolean>; export declare const isProtectedDataAvailable: () => boolean; export declare const queryStateOfMindSamples: (options: import("./types").QueryOptionsWithSortOrder) => Promise<readonly import("./types").StateOfMindSample[]>; export declare const queryStateOfMindSamplesWithAnchor: (options: import("./types").QueryOptionsWithAnchor) => Promise<import("./types").StateOfMindSamplesWithAnchorResponse>; export declare const saveStateOfMindSample: (date: Date, kind: import("./types").StateOfMindKind, valence: number, labels: readonly import("./types").StateOfMindLabel[], associations: readonly import("./types").StateOfMindAssociation[], metadata?: import("react-native-nitro-modules").AnyMap) => Promise<import("./types").StateOfMindSample | undefined>; export declare const isQuantityCompatibleWithUnit: (identifier: QuantityTypeIdentifier, unit: string) => boolean; export declare const isObjectTypeAvailable: (objectTypeIdentifier: import("./types").ObjectTypeIdentifier) => boolean; export declare const isObjectTypeAvailableAsync: (objectTypeIdentifier: import("./types").ObjectTypeIdentifier) => Promise<boolean>; export declare const areObjectTypesAvailable: (objectTypeIdentifiers: readonly import("./types").ObjectTypeIdentifier[]) => Record<string, boolean>; export declare const areObjectTypesAvailableAsync: (objectTypeIdentifiers: import("./types").ObjectTypeIdentifier[]) => Promise<Record<string, boolean>>; export declare const requestMedicationsAuthorization: () => Promise<boolean>; export declare const queryMedications: () => Promise<readonly import("./specs/MedicationModule.nitro").UserAnnotatedMedication[]>; export declare const queryMedicationEvents: (options: import("./types").QueryOptionsWithSortOrder) => Promise<readonly import("./specs/MedicationModule.nitro").MedicationDoseEvent[]>; export declare const queryMedicationEventsWithAnchor: (options: import("./types").QueryOptionsWithAnchor) => Promise<import("./specs/MedicationModule.nitro").MedicationDoseEventsWithAnchorResponse>; export declare const currentAppSource: () => import("./specs/SourceProxy.nitro").SourceProxy; export declare const getBiologicalSexAsync: () => Promise<import("./types").BiologicalSex>; export declare const getBloodTypeAsync: () => Promise<import("./types").BloodType>; export declare const getDateOfBirthAsync: () => Promise<Date | undefined>; export declare const getFitzpatrickSkinTypeAsync: () => Promise<import("./types").FitzpatrickSkinType>; export declare const getWheelchairUseAsync: () => Promise<import("./types").WheelchairUse>; declare const _default: { authorizationStatusFor: (type: import("./types").ObjectTypeIdentifier) => import("./types").AuthorizationStatus; isObjectTypeAvailable: (objectTypeIdentifier: import("./types").ObjectTypeIdentifier) => boolean; isObjectTypeAvailableAsync: (objectTypeIdentifier: import("./types").ObjectTypeIdentifier) => Promise<boolean>; areObjectTypesAvailable: (objectTypeIdentifiers: readonly import("./types").ObjectTypeIdentifier[]) => Record<string, boolean>; areObjectTypesAvailableAsync: (objectTypeIdentifiers: import("./types").ObjectTypeIdentifier[]) => Promise<Record<string, boolean>>; isQuantityCompatibleWithUnit: (identifier: QuantityTypeIdentifier, unit: string) => boolean; disableAllBackgroundDelivery: () => Promise<boolean>; disableBackgroundDelivery: (typeIdentifier: import("./types").ObjectTypeIdentifier) => Promise<boolean>; enableBackgroundDelivery: (typeIdentifier: import("./types").ObjectTypeIdentifier, updateFrequency: import("./types").UpdateFrequency) => Promise<boolean>; getBiologicalSex: () => import("./types").BiologicalSex; getBloodType: () => import("./types").BloodType; getDateOfBirth: () => Date | undefined; getFitzpatrickSkinType: () => import("./types").FitzpatrickSkinType; getBiologicalSexAsync: () => Promise<import("./types").BiologicalSex>; getBloodTypeAsync: () => Promise<import("./types").BloodType>; getDateOfBirthAsync: () => Promise<Date | undefined>; getFitzpatrickSkinTypeAsync: () => Promise<import("./types").FitzpatrickSkinType>; getWheelchairUseAsync: () => Promise<import("./types").WheelchairUse>; getMostRecentCategorySample: typeof getMostRecentCategorySample; getMostRecentQuantitySample: typeof getMostRecentQuantitySample; getMostRecentWorkout: () => Promise<import("./specs/WorkoutProxy.nitro").WorkoutProxy | undefined>; getPreferredUnits: (identifiers: readonly QuantityTypeIdentifier[], forceUpdate?: boolean) => Promise<import("./types").IdentifierWithUnit[]>; getPreferredUnit: (quantityType: QuantityTypeIdentifier) => Promise<string>; getRequestStatusForAuthorization: (toCheck: import("./specs/CoreModule.nitro").AuthDataTypes) => Promise<import("./types").AuthorizationRequestStatus>; getWheelchairUse: () => import("./types").WheelchairUse; isHealthDataAvailable: () => boolean; isHealthDataAvailableAsync: () => Promise<boolean>; queryCategorySamples: <T extends import("./types").CategoryTypeIdentifier>(identifier: T, options: import("./types").QueryOptionsWithSortOrder) => Promise<readonly import("./types").CategorySampleTyped<T>[]>; queryCategorySamplesWithAnchor: <T extends import("./types").CategoryTypeIdentifier>(identifier: T, options: import("./types").QueryOptionsWithAnchor) => Promise<import("./types").CategorySamplesWithAnchorResponseTyped<T>>; queryCorrelationSamples: (typeIdentifier: import("./types").CorrelationTypeIdentifier, options: import("./types").QueryOptionsWithSortOrder) => Promise<readonly import("./types").CorrelationSample[]>; queryCorrelationSamplesWithAnchor: (typeIdentifier: import("./types").CorrelationTypeIdentifier, options: import("./types").QueryOptionsWithAnchor) => Promise<import("./types").QueryCorrelationSamplesWithAnchorResponse>; queryHeartbeatSeriesSamples: (options: import("./types").QueryOptionsWithSortOrder) => Promise<readonly import("./types").HeartbeatSeriesSample[]>; queryHeartbeatSeriesSamplesWithAnchor: (options: import("./types").QueryOptionsWithAnchor) => Promise<import("./types").HeartbeatSeriesSamplesWithAnchorResponse>; queryElectrocardiogramSamples: (options: import("./types/ElectrocardiogramSample").ECGQueryOptionsWithSortOrder) => Promise<readonly import("./types/ElectrocardiogramSample").ElectrocardiogramSample[]>; queryElectrocardiogramSamplesWithAnchor: (options: import("./types/ElectrocardiogramSample").ECGQueryOptionsWithAnchor) => Promise<import("./types/ElectrocardiogramSample").ElectrocardiogramSamplesWithAnchorResponse>; queryQuantitySamples: (identifier: QuantityTypeIdentifier, options: import("./types").QueryOptionsWithSortOrderAndUnit) => Promise<readonly import("./types").QuantitySample[]>; queryQuantitySamplesWithAnchor: (identifier: QuantityTypeIdentifier, options: import("./types").QueryOptionsWithAnchorAndUnit) => Promise<import("./types").QuantitySamplesWithAnchorResponse>; queryStatisticsForQuantity: (identifier: QuantityTypeIdentifier, statistics: readonly import("./types").StatisticsOptions[], options?: import("./types").StatisticsQueryOptions) => Promise<import("./types").QueryStatisticsResponse>; queryStatisticsCollectionForQuantity: (identifier: QuantityTypeIdentifier, statistics: readonly import("./types").StatisticsOptions[], anchorDate: Date, intervalComponents: import("./types").IntervalComponents, options?: import("./types").StatisticsQueryOptions) => Promise<readonly import("./types").QueryStatisticsResponse[]>; queryStatisticsForQuantitySeparateBySource: (identifier: QuantityTypeIdentifier, statistics: readonly import("./types").StatisticsOptions[], options?: import("./types").StatisticsQueryOptions) => Promise<import("./types").QueryStatisticsResponseFromSingleSource[]>; queryStatisticsCollectionForQuantitySeparateBySource: (identifier: QuantityTypeIdentifier, statistics: readonly import("./types").StatisticsOptions[], anchorDate: Date, intervalComponents: import("./types").IntervalComponents, options?: import("./types").StatisticsQueryOptions) => Promise<readonly import("./types").QueryStatisticsResponseFromSingleSource[]>; queryWorkoutSamples: (options: import("./types").WorkoutQueryOptions) => Promise<import("./specs/WorkoutProxy.nitro").WorkoutProxy[]>; queryWorkoutSamplesWithAnchor: (options: import("./types").WorkoutQueryOptionsWithAnchor) => Promise<import("./types").QueryWorkoutSamplesWithAnchorResponse>; querySources: (identifier: import("./types").SampleTypeIdentifier, filter?: import("./types").FilterForSamples) => Promise<readonly import("./specs/SourceProxy.nitro").SourceProxy[]>; requestAuthorization: (toRequest: import("./specs/CoreModule.nitro").AuthDataTypes) => Promise<boolean>; requestPerObjectReadAuthorization: (typeIdentifier: import("./types").PerObjectTypeIdentifier) => Promise<void>; deleteObjects: (objectTypeIdentifier: import("./types").SampleTypeIdentifierWriteable, filter: import("./types").FilterForSamples) => Promise<number>; saveCategorySample: <T extends import("./types").CategoryTypeIdentifier>(identifier: T, value: import("./types").CategoryValueForIdentifier, startDate: Date, endDate: Date, metadata?: import("./types").MetadataForCategoryIdentifier<T>) => Promise<import("./types").CategorySample | undefined>; saveCorrelationSample: (typeIdentifier: import("./types").CorrelationTypeIdentifier, samples: import("./types").SampleForSaving[], start: Date, end: Date, metadata?: import("react-native-nitro-modules").AnyMap) => Promise<import("./types").CorrelationSample | undefined>; saveQuantitySample: (identifier: QuantityTypeIdentifier, unit: string, value: number, start: Date, end: Date, metadata?: import("react-native-nitro-modules").AnyMap) => Promise<import("./types").QuantitySample | undefined>; saveWorkoutSample: (workoutActivityType: import("./types").WorkoutActivityType, quantities: readonly import("./types").QuantitySampleForSaving[], startDate: Date, endDate: Date, totals?: import("./types").WorkoutTotals, metadata?: import("react-native-nitro-modules").AnyMap) => Promise<import("./specs/WorkoutProxy.nitro").WorkoutProxy>; subscribeToChanges: (identifier: import("./types").SampleTypeIdentifier, callback: (args: import("./types").OnChangeCallbackArgs) => void) => { remove: () => boolean; }; subscribeToQuantitySamples: (identifier: QuantityTypeIdentifier, callback: (args: import("./types").OnQuantitySamplesCallback) => void, after?: Date) => { remove: () => boolean; }; startWatchApp: (workoutConfiguration: import("./types").WorkoutConfiguration) => Promise<boolean>; isProtectedDataAvailable: () => boolean; queryStateOfMindSamples: (options: import("./types").QueryOptionsWithSortOrder) => Promise<readonly import("./types").StateOfMindSample[]>; queryStateOfMindSamplesWithAnchor: (options: import("./types").QueryOptionsWithAnchor) => Promise<import("./types").StateOfMindSamplesWithAnchorResponse>; saveStateOfMindSample: (date: Date, kind: import("./types").StateOfMindKind, valence: number, labels: readonly import("./types").StateOfMindLabel[], associations: readonly import("./types").StateOfMindAssociation[], metadata?: import("react-native-nitro-modules").AnyMap) => Promise<import("./types").StateOfMindSample | undefined>; requestMedicationsAuthorization: () => Promise<boolean>; currentAppSource: () => import("./specs/SourceProxy.nitro").SourceProxy; queryMedicationEventsWithAnchor: (options: import("./types").QueryOptionsWithAnchor) => Promise<import("./specs/MedicationModule.nitro").MedicationDoseEventsWithAnchorResponse>; queryMedicationEvents: (options: import("./types").QueryOptionsWithSortOrder) => Promise<readonly import("./specs/MedicationModule.nitro").MedicationDoseEvent[]>; queryMedications: () => Promise<readonly import("./specs/MedicationModule.nitro").UserAnnotatedMedication[]>; subscribeToCategorySamples: typeof subscribeToCategorySamples; useSubscribeToCategorySamples: typeof useSubscribeToCategorySamples; useMostRecentCategorySample: typeof useMostRecentCategorySample; useMostRecentQuantitySample: typeof useMostRecentQuantitySample; useMostRecentWorkout: typeof useMostRecentWorkout; useSubscribeToChanges: typeof useSubscribeToChanges; useSubscribeToQuantitySamples: typeof useSubscribeToQuantitySamples; useHealthkitAuthorization: ({ toWrite, toRead, }: { toRead?: readonly import("./types").ObjectTypeIdentifier[]; toWrite?: readonly import("./types").SampleTypeIdentifierWriteable[]; }) => readonly [import("./types").AuthorizationRequestStatus | null, () => Promise<import("./types").AuthorizationRequestStatus>]; useIsHealthDataAvailable: () => boolean | null; useSources: typeof useSources; useStatisticsForQuantity: typeof useStatisticsForQuantity; }; export default _default;