UNPKG

@kingstinct/react-native-healthkit

Version:
283 lines (260 loc) 7.7 kB
import type { AnyMap } from 'react-native-nitro-modules' import type { WorkoutProxy } from '../specs/WorkoutProxy.nitro' import type { Device } from './Device' import type { Quantity } from './QuantityType' import type { PredicateForSamples } from './QueryOptions' import type { DeletedSample, GenericMetadata } from './Shared' import type { SourceRevision } from './Source' export enum WorkoutActivityType { americanFootball = 1, archery = 2, australianFootball = 3, badminton = 4, baseball = 5, basketball = 6, bowling = 7, boxing = 8, // See also HKWorkoutActivityTypeKickboxing., climbing = 9, cricket = 10, crossTraining = 11, // Any mix of cardio and/or strength training. See also HKWorkoutActivityTypeCoreTraining and HKWorkoutActivityTypeFlexibility., curling = 12, cycling = 13, dance = 14, danceInspiredTraining = 15, // This enum remains available to access older data., elliptical = 16, equestrianSports = 17, // Polo, Horse Racing, Horse Riding, etc., fencing = 18, fishing = 19, functionalStrengthTraining = 20, // Primarily free weights and/or body weight and/or accessories, golf = 21, gymnastics = 22, handball = 23, hiking = 24, hockey = 25, // Ice Hockey, Field Hockey, etc., hunting = 26, lacrosse = 27, martialArts = 28, mindAndBody = 29, // Qigong, meditation, etc., mixedMetabolicCardioTraining = 30, // This enum remains available to access older data., paddleSports = 31, // Canoeing, Kayaking, Outrigger, Stand Up Paddle Board, etc., play = 32, // Dodge Ball, Hopscotch, Tetherball, Jungle Gym, etc., preparationAndRecovery = 33, // Foam rolling, stretching, etc., racquetball = 34, rowing = 35, rugby = 36, running = 37, sailing = 38, skatingSports = 39, // Ice Skating, Speed Skating, Inline Skating, Skateboarding, etc., snowSports = 40, // Sledding, Snowmobiling, Building a Snowman, etc. See also HKWorkoutActivityTypeCrossCountrySkiing, HKWorkoutActivityTypeSnowboarding, and HKWorkoutActivityTypeDownhillSkiing., soccer = 41, softball = 42, squash = 43, stairClimbing = 44, // See also HKWorkoutActivityTypeStairs and HKWorkoutActivityTypeStepTraining., surfingSports = 45, // Traditional Surfing, Kite Surfing, Wind Surfing, etc., swimming = 46, tableTennis = 47, tennis = 48, trackAndField = 49, // Shot Put, Javelin, Pole Vaulting, etc., traditionalStrengthTraining = 50, // Primarily machines and/or free weights, volleyball = 51, walking = 52, waterFitness = 53, waterPolo = 54, waterSports = 55, // Water Skiing, Wake Boarding, etc., wrestling = 56, yoga = 57, barre = 58, // HKWorkoutActivityTypeDanceInspiredTraining, coreTraining = 59, crossCountrySkiing = 60, downhillSkiing = 61, flexibility = 62, highIntensityIntervalTraining = 63, jumpRope = 64, kickboxing = 65, pilates = 66, // HKWorkoutActivityTypeDanceInspiredTraining, snowboarding = 67, stairs = 68, stepTraining = 69, wheelchairWalkPace = 70, wheelchairRunPace = 71, taiChi = 72, mixedCardio = 73, // HKWorkoutActivityTypeMixedMetabolicCardioTraining, handCycling = 74, discSports = 75, fitnessGaming = 76, cardioDance = 77, socialDance = 78, pickleball = 79, cooldown = 80, swimBikeRun = 82, transition = 83, underwaterDiving = 84, other = 3000, } // documented at https://developer.apple.com/documentation/healthkit/hkweathercondition export enum WeatherCondition { none = 0, clear = 1, fair = 2, partlyCloudy = 3, mostlyCloudy = 4, cloudy = 5, foggy = 6, haze = 7, windy = 8, blustery = 9, smoky = 10, dust = 11, snow = 12, hail = 13, sleet = 14, freezingDrizzle = 15, freezingRain = 16, mixedRainAndHail = 17, mixedRainAndSnow = 18, mixedRainAndSleet = 19, mixedSnowAndSleet = 20, drizzle = 21, scatteredShowers = 22, showers = 23, thunderstorms = 24, tropicalStorm = 25, hurricane = 26, tornado = 27, } export interface WorkoutMetadata extends GenericMetadata { readonly HKWeatherCondition?: WeatherCondition readonly HKWeatherHumidity?: Quantity readonly HKWeatherTemperature?: Quantity readonly HKAverageMETs?: Quantity readonly HKElevationAscended?: Quantity readonly HKIndoorWorkout?: boolean } export interface WorkoutEvent { readonly type: WorkoutEventType readonly startDate: Date readonly endDate: Date } export enum WorkoutEventType { pause = 1, resume = 2, lap = 3, marker = 4, motionPaused = 5, motionResumed = 6, segment = 7, pauseOrResumeRequest = 8, } export interface WorkoutActivity { readonly startDate: Date readonly endDate: Date readonly uuid: string readonly duration: number } export interface WorkoutRoute { readonly locations: readonly WorkoutRouteLocation[] readonly HKMetadataKeySyncIdentifier?: string readonly HKMetadataKeySyncVersion?: number } export interface QueryWorkoutSamplesWithAnchorResponse { readonly workouts: readonly WorkoutProxy[] readonly deletedSamples: readonly DeletedSample[] readonly newAnchor: string } type WorkoutActivityTypePredicate = { readonly workoutActivityType: WorkoutActivityType } enum ComparisonPredicateOperator { lessThan = 0, lessThanOrEqualTo = 1, greaterThan = 2, greaterThanOrEqualTo = 3, equalTo = 4, notEqualTo = 5, matches = 6, like = 7, beginsWith = 8, endsWith = 9, in = 10, customSelector = 11, contains = 99, between = 100, } type WorkoutDurationPredicate = { readonly predicateOperator: ComparisonPredicateOperator readonly durationInSeconds: number } export type PredicateForWorkouts = | PredicateForSamples | WorkoutActivityTypePredicate | WorkoutDurationPredicate export type PredicateForWorkoutsOr = { readonly OR: readonly PredicateForWorkouts[] } export type PredicateForWorkoutsAnd = { readonly AND: readonly PredicateForWorkouts[] } export type FilterForWorkouts = | PredicateForWorkouts | PredicateForWorkoutsOr | PredicateForWorkoutsAnd export interface WorkoutQueryOptionsWithAnchor { energyUnit?: string distanceUnit?: string filter?: FilterForWorkouts limit?: number anchor?: string } export interface WorkoutQueryOptions { energyUnit?: string distanceUnit?: string filter?: FilterForWorkouts limit?: number ascending?: boolean } export interface WorkoutRouteLocation { readonly altitude: number readonly course: number readonly date: Date readonly distance: number | null readonly horizontalAccuracy: number readonly latitude: number readonly longitude: number readonly speed: number readonly speedAccuracy: number readonly verticalAccuracy: number } export interface LocationForSaving { readonly altitude: number readonly course: number readonly date: Date // unix timestamp in milliseconds readonly horizontalAccuracy: number readonly latitude: number readonly longitude: number readonly speed: number readonly verticalAccuracy: number } export interface WorkoutPlan { readonly id: string readonly activityType: WorkoutActivityType } export interface WorkoutTotals { readonly distance?: number readonly energyBurned?: number } export interface WorkoutSample { readonly uuid: string readonly device?: Device readonly workoutActivityType: WorkoutActivityType readonly duration: Quantity readonly totalDistance?: Quantity readonly totalEnergyBurned?: Quantity readonly totalSwimmingStrokeCount?: Quantity readonly totalFlightsClimbed?: Quantity readonly startDate: Date readonly endDate: Date readonly metadata?: AnyMap readonly sourceRevision?: SourceRevision readonly events?: readonly WorkoutEvent[] readonly activities?: readonly WorkoutActivity[] }