@tryterra/react-native 0.0.0-stage → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -2
  3. package/TerraReactNative.podspec +48 -0
  4. package/android/build.gradle +87 -0
  5. package/android/src/bridgeCore/kotlin/README.md +1 -0
  6. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/BridgeBootstrap.kt +133 -0
  7. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/BridgeHost.kt +32 -0
  8. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/Conversions.kt +468 -0
  9. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/LauncherSlots.kt +41 -0
  10. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/Rejections.kt +150 -0
  11. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/StreamRegistry.kt +77 -0
  12. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/TerraBridge.kt +86 -0
  13. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/TerraBridgeOpsImpl.kt +258 -0
  14. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/TerraBridgeStreamsImpl.kt +52 -0
  15. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/TokenBroker.kt +198 -0
  16. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/generated/BridgeErrors.kt +217 -0
  17. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/generated/BridgeOps.kt +493 -0
  18. package/android/src/bridgeCore/kotlin/co/tryterra/sdk/bridge/generated/BridgeTypes.kt +897 -0
  19. package/android/src/healthConnectOnly/kotlin/co/tryterra/sdk/reactnative/TerraStores.kt +11 -0
  20. package/android/src/main/AndroidManifest.xml +24 -0
  21. package/android/src/main/java/co/tryterra/sdk/reactnative/TerraBridgeModule.kt +96 -0
  22. package/android/src/main/java/co/tryterra/sdk/reactnative/TerraReactNativePackage.kt +26 -0
  23. package/android/src/main/java/co/tryterra/sdk/reactnative/TerraStartup.kt +46 -0
  24. package/android/src/samsung/kotlin/co/tryterra/sdk/reactnative/TerraStores.kt +13 -0
  25. package/docs/availability.md +246 -0
  26. package/frameworks/TerraSDK.xcframework/Info.plist +48 -0
  27. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Info.plist +0 -0
  28. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios.abi.json +81513 -0
  29. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios.package.swiftinterface +2150 -0
  30. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +2150 -0
  31. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  32. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios.swiftinterface +2127 -0
  33. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/PrivacyInfo.xcprivacy +96 -0
  34. package/frameworks/TerraSDK.xcframework/ios-arm64/TerraSDK.framework/TerraSDK +0 -0
  35. package/frameworks/TerraSDK.xcframework/ios-arm64/dSYMs/TerraSDK.framework.dSYM/Contents/Info.plist +20 -0
  36. package/frameworks/TerraSDK.xcframework/ios-arm64/dSYMs/TerraSDK.framework.dSYM/Contents/Resources/DWARF/TerraSDK +0 -0
  37. package/frameworks/TerraSDK.xcframework/ios-arm64/dSYMs/TerraSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/TerraSDK.yml +6473 -0
  38. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Info.plist +0 -0
  39. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +81513 -0
  40. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios-simulator.package.swiftinterface +2150 -0
  41. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +2150 -0
  42. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  43. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +2127 -0
  44. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +81513 -0
  45. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/x86_64-apple-ios-simulator.package.swiftinterface +2150 -0
  46. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +2150 -0
  47. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  48. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/Modules/TerraSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +2127 -0
  49. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/PrivacyInfo.xcprivacy +96 -0
  50. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/TerraSDK +0 -0
  51. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/TerraSDK.framework/_CodeSignature/CodeResources +223 -0
  52. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/TerraSDK.framework.dSYM/Contents/Info.plist +20 -0
  53. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/TerraSDK.framework.dSYM/Contents/Resources/DWARF/TerraSDK +0 -0
  54. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/TerraSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/TerraSDK.yml +6474 -0
  55. package/frameworks/TerraSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/TerraSDK.framework.dSYM/Contents/Resources/Relocations/x86_64/TerraSDK.yml +6392 -0
  56. package/ios/TerraBridgeCore/BridgeBootstrap.swift +89 -0
  57. package/ios/TerraBridgeCore/BridgeHost.swift +13 -0
  58. package/ios/TerraBridgeCore/Conversions.swift +467 -0
  59. package/ios/TerraBridgeCore/Generated/BridgeErrors.swift +179 -0
  60. package/ios/TerraBridgeCore/Generated/BridgeOps.swift +795 -0
  61. package/ios/TerraBridgeCore/Generated/BridgeTypes.swift +1317 -0
  62. package/ios/TerraBridgeCore/Locked.swift +15 -0
  63. package/ios/TerraBridgeCore/README.md +1 -0
  64. package/ios/TerraBridgeCore/Rejections.swift +130 -0
  65. package/ios/TerraBridgeCore/RuntimeAttachment.swift +60 -0
  66. package/ios/TerraBridgeCore/StreamRegistry.swift +59 -0
  67. package/ios/TerraBridgeCore/TerraBridge.swift +122 -0
  68. package/ios/TerraBridgeCore/TerraBridgeOpsImpl.swift +254 -0
  69. package/ios/TerraBridgeCore/TerraBridgeStreamsImpl.swift +60 -0
  70. package/ios/TerraBridgeCore/TokenBroker.swift +147 -0
  71. package/ios/TerraBridgeModule.mm +79 -0
  72. package/ios/TerraBridgeModuleImpl.swift +49 -0
  73. package/ios/TerraReactNative.swift +19 -0
  74. package/lib/EndUser.d.ts +12 -0
  75. package/lib/EndUser.js +13 -0
  76. package/lib/NativeTerraBridge.d.ts +23 -0
  77. package/lib/NativeTerraBridge.js +13 -0
  78. package/lib/Terra.d.ts +154 -0
  79. package/lib/Terra.js +280 -0
  80. package/lib/TerraError.d.ts +42 -0
  81. package/lib/TerraError.js +95 -0
  82. package/lib/createTerra.d.ts +8 -0
  83. package/lib/createTerra.js +19 -0
  84. package/lib/generated/client.d.ts +92 -0
  85. package/lib/generated/client.js +196 -0
  86. package/lib/generated/codecs.d.ts +135 -0
  87. package/lib/generated/codecs.js +1358 -0
  88. package/lib/generated/errors.d.ts +13 -0
  89. package/lib/generated/errors.js +68 -0
  90. package/lib/generated/ops.d.ts +13 -0
  91. package/lib/generated/ops.js +137 -0
  92. package/lib/generated/streams.d.ts +23 -0
  93. package/lib/generated/streams.js +58 -0
  94. package/lib/generated/types.d.ts +481 -0
  95. package/lib/generated/types.js +92 -0
  96. package/lib/index.d.ts +29 -0
  97. package/lib/index.js +55 -0
  98. package/package.json +71 -4
  99. package/src/EndUser.ts +15 -0
  100. package/src/NativeTerraBridge.ts +27 -0
  101. package/src/Terra.ts +462 -0
  102. package/src/TerraError.ts +116 -0
  103. package/src/createTerra.ts +18 -0
  104. package/src/generated/client.ts +243 -0
  105. package/src/generated/codecs.ts +1287 -0
  106. package/src/generated/errors.ts +113 -0
  107. package/src/generated/ops.ts +197 -0
  108. package/src/generated/streams.ts +74 -0
  109. package/src/generated/types.ts +667 -0
  110. package/src/index.ts +52 -0
@@ -0,0 +1,2150 @@
1
+ // swift-interface-format-version: 1.0
2
+ // swift-compiler-version: Apple Swift version 6.3.3 (swiftlang-6.3.3.1.3 clang-2100.1.1.101)
3
+ // swift-module-flags: -target arm64-apple-ios15.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 6 -O -enable-experimental-feature DebugDescriptionMacro -module-name TerraSDK -package-name ios
4
+ // swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.3.3
5
+ import BackgroundTasks
6
+ import Compression
7
+ import CoreLocation
8
+ import CryptoKit
9
+ import Foundation
10
+ import Foundation/*.Bundle*/
11
+ import Foundation/*.ProcessInfo*/
12
+ import Foundation/*.URL*/
13
+ import HealthKit
14
+ import Security
15
+ import Swift
16
+ import UIKit
17
+ import WorkoutKit
18
+ import _Concurrency
19
+ import _StringProcessing
20
+ import _SwiftConcurrencyShims
21
+ public struct AthleteProfile : Swift.Sendable, Swift.Equatable {
22
+ public enum BiologicalSex : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
23
+ case female
24
+ case male
25
+ case other
26
+ case notSet
27
+ public init?(rawValue: Swift.String)
28
+ public typealias AllCases = [TerraSDK.AthleteProfile.BiologicalSex]
29
+ public typealias RawValue = Swift.String
30
+ nonisolated public static var allCases: [TerraSDK.AthleteProfile.BiologicalSex] {
31
+ get
32
+ }
33
+ public var rawValue: Swift.String {
34
+ get
35
+ }
36
+ }
37
+ public enum ActivityMoveMode : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
38
+ case activeEnergy
39
+ case appleMoveTime
40
+ public init?(rawValue: Swift.String)
41
+ public typealias AllCases = [TerraSDK.AthleteProfile.ActivityMoveMode]
42
+ public typealias RawValue = Swift.String
43
+ nonisolated public static var allCases: [TerraSDK.AthleteProfile.ActivityMoveMode] {
44
+ get
45
+ }
46
+ public var rawValue: Swift.String {
47
+ get
48
+ }
49
+ }
50
+ public let biologicalSex: TerraSDK.AthleteProfile.BiologicalSex
51
+ public let dateOfBirth: Foundation.Date?
52
+ public let wheelchairUse: Swift.Bool?
53
+ public let activityMoveMode: TerraSDK.AthleteProfile.ActivityMoveMode?
54
+ public init(biologicalSex: TerraSDK.AthleteProfile.BiologicalSex, dateOfBirth: Foundation.Date? = nil, wheelchairUse: Swift.Bool? = nil, activityMoveMode: TerraSDK.AthleteProfile.ActivityMoveMode? = nil)
55
+ public static func == (a: TerraSDK.AthleteProfile, b: TerraSDK.AthleteProfile) -> Swift.Bool
56
+ }
57
+ public struct LinkRequest : Swift.Sendable, Swift.Equatable {
58
+ public let token: Swift.String
59
+ public let source: TerraSDK.Source
60
+ public let devID: Swift.String
61
+ public let providerUserID: Swift.String
62
+ public let appIdentifier: Swift.String?
63
+ public let devicePublicKey: Swift.String
64
+ public init(token: Swift.String, source: TerraSDK.Source, devID: Swift.String, providerUserID: Swift.String, devicePublicKey: Swift.String, appIdentifier: Swift.String? = nil)
65
+ public static func == (a: TerraSDK.LinkRequest, b: TerraSDK.LinkRequest) -> Swift.Bool
66
+ }
67
+ public enum UploadContentEncoding : Swift.String, Swift.Sendable, Swift.Equatable {
68
+ case gzip
69
+ public init?(rawValue: Swift.String)
70
+ public typealias RawValue = Swift.String
71
+ public var rawValue: Swift.String {
72
+ get
73
+ }
74
+ }
75
+ public struct UploadRequest : Swift.Sendable, Swift.Equatable {
76
+ public let source: TerraSDK.Source
77
+ public let dataType: TerraSDK.UploadDataType
78
+ public let providerUserID: Swift.String
79
+ public let timestampMilliseconds: Swift.Int64
80
+ public let body: Foundation.Data
81
+ public let contentEncoding: TerraSDK.UploadContentEncoding?
82
+ public let signature: Swift.String
83
+ public init(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, providerUserID: Swift.String, timestampMilliseconds: Swift.Int64, body: Foundation.Data, signature: Swift.String, contentEncoding: TerraSDK.UploadContentEncoding? = nil)
84
+ public static func == (a: TerraSDK.UploadRequest, b: TerraSDK.UploadRequest) -> Swift.Bool
85
+ }
86
+ public struct LinkGrant : Swift.Sendable, Swift.Equatable {
87
+ public let userID: Swift.String
88
+ public init(userID: Swift.String)
89
+ public static func == (a: TerraSDK.LinkGrant, b: TerraSDK.LinkGrant) -> Swift.Bool
90
+ }
91
+ public struct PlannedWorkoutRequest : Swift.Sendable, Swift.Equatable {
92
+ public let source: TerraSDK.Source
93
+ public let providerUserID: Swift.String
94
+ public let signature: Swift.String
95
+ public let timestampMilliseconds: Swift.Int64
96
+ public init(source: TerraSDK.Source, providerUserID: Swift.String, signature: Swift.String, timestampMilliseconds: Swift.Int64)
97
+ public static func == (a: TerraSDK.PlannedWorkoutRequest, b: TerraSDK.PlannedWorkoutRequest) -> Swift.Bool
98
+ }
99
+ public struct PlannedWorkoutUpdate : Swift.Sendable, Swift.Equatable {
100
+ public enum Change : Swift.Sendable, Swift.Equatable {
101
+ case completed(at: Foundation.Date)
102
+ case deleted
103
+ public static func == (a: TerraSDK.PlannedWorkoutUpdate.Change, b: TerraSDK.PlannedWorkoutUpdate.Change) -> Swift.Bool
104
+ }
105
+ public let id: Swift.String
106
+ public let change: TerraSDK.PlannedWorkoutUpdate.Change
107
+ public let source: TerraSDK.Source
108
+ public let providerUserID: Swift.String
109
+ public let signature: Swift.String
110
+ public let timestampMilliseconds: Swift.Int64
111
+ public let body: Foundation.Data
112
+ public init(id: Swift.String, change: TerraSDK.PlannedWorkoutUpdate.Change, source: TerraSDK.Source, providerUserID: Swift.String, signature: Swift.String, timestampMilliseconds: Swift.Int64, body: Foundation.Data)
113
+ public static func encodedBody(id: Swift.String, change: TerraSDK.PlannedWorkoutUpdate.Change) throws -> Foundation.Data
114
+ public static func == (a: TerraSDK.PlannedWorkoutUpdate, b: TerraSDK.PlannedWorkoutUpdate) -> Swift.Bool
115
+ }
116
+ public protocol TerraBackend : Swift.Sendable {
117
+ func link(_ request: TerraSDK.LinkRequest) async throws -> TerraSDK.LinkGrant
118
+ func upload(_ request: TerraSDK.UploadRequest) async throws
119
+ func backfillRequests(_ request: TerraSDK.BackfillPollRequest) async throws -> [TerraSDK.BackfillDirective]
120
+ func acknowledgeBackfills(_ request: TerraSDK.BackfillAckRequest) async throws
121
+ func sendDiagnostics(_ request: TerraSDK.DiagnosticsRequest) async throws
122
+ func revokeDeviceKey(_ request: TerraSDK.RevokeDeviceKeyRequest) async throws
123
+ func plannedWorkouts(_ request: TerraSDK.PlannedWorkoutRequest) async throws -> [TerraSDK.PlannedWorkout]
124
+ func updatePlannedWorkout(_ request: TerraSDK.PlannedWorkoutUpdate) async throws
125
+ func pendingPlanActions(_ request: TerraSDK.PlanQueueRequest) async throws -> [TerraSDK.PendingPlanAction]
126
+ func acknowledgePlanActions(_ request: TerraSDK.PlanAckRequest) async throws
127
+ func reportScheduledWorkouts(_ request: TerraSDK.ScheduledWorkoutReportRequest) async throws
128
+ }
129
+ extension TerraSDK.TerraBackend {
130
+ public func pendingPlanActions(_ request: TerraSDK.PlanQueueRequest) async throws -> [TerraSDK.PendingPlanAction]
131
+ public func acknowledgePlanActions(_ request: TerraSDK.PlanAckRequest) async throws
132
+ public func reportScheduledWorkouts(_ request: TerraSDK.ScheduledWorkoutReportRequest) async throws
133
+ }
134
+ public protocol SignedRoute : Swift.Sendable {
135
+ static var label: Swift.String { get }
136
+ }
137
+ public enum DiagnosticsRoute : TerraSDK.SignedRoute {
138
+ public static let label: Swift.String
139
+ }
140
+ public enum BackfillAckRoute : TerraSDK.SignedRoute {
141
+ public static let label: Swift.String
142
+ }
143
+ public enum DeviceKeyRevokeRoute : TerraSDK.SignedRoute {
144
+ public static let label: Swift.String
145
+ }
146
+ public enum PlanQueueRoute : TerraSDK.SignedRoute {
147
+ public static let label: Swift.String
148
+ }
149
+ public enum PlanAckRoute : TerraSDK.SignedRoute {
150
+ public static let label: Swift.String
151
+ }
152
+ public enum ScheduledWorkoutReportRoute : TerraSDK.SignedRoute {
153
+ public static let label: Swift.String
154
+ }
155
+ public struct SignedRequest<Route> : Swift.Sendable, Swift.Equatable where Route : TerraSDK.SignedRoute {
156
+ public static var signedLabel: Swift.String {
157
+ get
158
+ }
159
+ public let source: TerraSDK.Source
160
+ public let providerUserID: Swift.String
161
+ public let timestampMilliseconds: Swift.Int64
162
+ public let body: Foundation.Data
163
+ public let signature: Swift.String
164
+ public init(source: TerraSDK.Source, providerUserID: Swift.String, timestampMilliseconds: Swift.Int64, body: Foundation.Data, signature: Swift.String)
165
+ public static func == (a: TerraSDK.SignedRequest<Route>, b: TerraSDK.SignedRequest<Route>) -> Swift.Bool
166
+ }
167
+ public typealias DiagnosticsRequest = TerraSDK.SignedRequest<TerraSDK.DiagnosticsRoute>
168
+ public typealias BackfillAckRequest = TerraSDK.SignedRequest<TerraSDK.BackfillAckRoute>
169
+ public typealias RevokeDeviceKeyRequest = TerraSDK.SignedRequest<TerraSDK.DeviceKeyRevokeRoute>
170
+ public typealias PlanQueueRequest = TerraSDK.SignedRequest<TerraSDK.PlanQueueRoute>
171
+ public typealias PlanAckRequest = TerraSDK.SignedRequest<TerraSDK.PlanAckRoute>
172
+ public typealias ScheduledWorkoutReportRequest = TerraSDK.SignedRequest<TerraSDK.ScheduledWorkoutReportRoute>
173
+ public struct PendingPlanAction : Swift.Sendable, Swift.Equatable, Swift.Decodable {
174
+ public enum Kind : Swift.Sendable, Swift.Equatable {
175
+ case create, update, delete
176
+ case unknown(Swift.String)
177
+ public static func == (a: TerraSDK.PendingPlanAction.Kind, b: TerraSDK.PendingPlanAction.Kind) -> Swift.Bool
178
+ }
179
+ public let actionID: Swift.String
180
+ public let kind: TerraSDK.PendingPlanAction.Kind
181
+ public let plannedWorkoutID: Swift.String
182
+ public let plannedOn: Foundation.DateComponents?
183
+ public let workoutKitID: Swift.String?
184
+ public let completedAt: Foundation.Date?
185
+ public let workout: TerraSDK.WorkoutComposition?
186
+ public let workoutUnreadable: Swift.Bool
187
+ public let unreadable: Swift.Bool
188
+ public init(actionID: Swift.String, kind: TerraSDK.PendingPlanAction.Kind, plannedWorkoutID: Swift.String, plannedOn: Foundation.DateComponents? = nil, workoutKitID: Swift.String? = nil, completedAt: Foundation.Date? = nil, workout: TerraSDK.WorkoutComposition? = nil, workoutUnreadable: Swift.Bool = false, unreadable: Swift.Bool = false)
189
+ public init(from decoder: any Swift.Decoder) throws
190
+ public static func == (a: TerraSDK.PendingPlanAction, b: TerraSDK.PendingPlanAction) -> Swift.Bool
191
+ }
192
+ public struct PlanActionAck : Swift.Sendable, Swift.Equatable {
193
+ public enum Outcome : Swift.Sendable, Swift.Equatable {
194
+ case applied(workoutKitID: Foundation.UUID?)
195
+ case refused(TerraSDK.WorkoutScheduleRefusal)
196
+ public static func == (a: TerraSDK.PlanActionAck.Outcome, b: TerraSDK.PlanActionAck.Outcome) -> Swift.Bool
197
+ }
198
+ public let actionID: Swift.String
199
+ public let outcome: TerraSDK.PlanActionAck.Outcome
200
+ public init(actionID: Swift.String, outcome: TerraSDK.PlanActionAck.Outcome)
201
+ public static func == (a: TerraSDK.PlanActionAck, b: TerraSDK.PlanActionAck) -> Swift.Bool
202
+ }
203
+ public struct LocallyScheduledWorkout : Swift.Sendable, Swift.Equatable {
204
+ public let workoutKitID: Foundation.UUID
205
+ public let plannedOn: Foundation.DateComponents
206
+ public init(workoutKitID: Foundation.UUID, plannedOn: Foundation.DateComponents)
207
+ public static func == (a: TerraSDK.LocallyScheduledWorkout, b: TerraSDK.LocallyScheduledWorkout) -> Swift.Bool
208
+ }
209
+ extension TerraSDK.SignedRequest where Route == TerraSDK.PlanAckRoute {
210
+ public static func encodedBody(acks: [TerraSDK.PlanActionAck]) throws -> Foundation.Data
211
+ }
212
+ extension TerraSDK.SignedRequest where Route == TerraSDK.ScheduledWorkoutReportRoute {
213
+ public static func encodedBody(workouts: [TerraSDK.LocallyScheduledWorkout]) throws -> Foundation.Data
214
+ }
215
+ extension TerraSDK.SignedRequest where Route == TerraSDK.DeviceKeyRevokeRoute {
216
+ public static func encodedBody(publicKeyBase64DER: Swift.String) throws -> Foundation.Data
217
+ }
218
+ public struct BackfillPollRequest : Swift.Sendable, Swift.Equatable {
219
+ public static let signedLabel: Swift.String
220
+ public let source: TerraSDK.Source
221
+ public let providerUserID: Swift.String
222
+ public let timestampMilliseconds: Swift.Int64
223
+ public let signature: Swift.String
224
+ public init(source: TerraSDK.Source, providerUserID: Swift.String, timestampMilliseconds: Swift.Int64, signature: Swift.String)
225
+ public static func == (a: TerraSDK.BackfillPollRequest, b: TerraSDK.BackfillPollRequest) -> Swift.Bool
226
+ }
227
+ public struct BackfillDirective : Swift.Sendable, Swift.Equatable {
228
+ public let dataType: Swift.String
229
+ public let start: Foundation.Date
230
+ public let end: Foundation.Date
231
+ public let reference: Swift.String?
232
+ public init(dataType: Swift.String, start: Foundation.Date, end: Foundation.Date, reference: Swift.String?)
233
+ public static func == (a: TerraSDK.BackfillDirective, b: TerraSDK.BackfillDirective) -> Swift.Bool
234
+ }
235
+ public enum BackgroundSync {
236
+ public static func registerForHostTask(terra: TerraSDK.Terra, source: TerraSDK.Source = .health)
237
+ public static func run(terra: TerraSDK.Terra, source: TerraSDK.Source = .health, within budget: Foundation.TimeInterval = 18) async -> Swift.Bool
238
+ }
239
+ extension TerraSDK.BackgroundSync {
240
+ @discardableResult
241
+ public static func register(terra: TerraSDK.Terra, source: TerraSDK.Source = .health, earliestInterval: Foundation.TimeInterval = 3600) -> Swift.Bool
242
+ }
243
+ public struct BodyReading : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
244
+ public enum Kind : Swift.Sendable, Swift.Equatable, Swift.Hashable {
245
+ case measurement(TerraSDK.BodyMetric, Swift.Double)
246
+ case bloodPressure(systolic: Swift.Double, diastolic: Swift.Double)
247
+ case bloodGlucose(Swift.Double, unit: TerraSDK.BloodGlucoseUnit, mealTime: TerraSDK.GlucoseMealTime? = nil, specimen: TerraSDK.GlucoseSpecimen? = nil)
248
+ case oxygenSaturation(fraction: Swift.Double)
249
+ case temperature(TerraSDK.BodyTemperatureMetric, celsius: Swift.Double)
250
+ case heartRateVariability(TerraSDK.HeartRateVariabilityMetric, milliseconds: Swift.Double)
251
+ case respiratoryRate(breathsPerMinute: Swift.Double)
252
+ case vo2Max(millilitresPerKilogramMinute: Swift.Double, testType: TerraSDK.VO2MaxTestType? = nil)
253
+ case insulinDelivery(internationalUnits: Swift.Double, reason: TerraSDK.InsulinDeliveryReason)
254
+ case electrocardiogram(TerraSDK.Electrocardiogram)
255
+ case heartbeatSeries(beats: [TerraSDK.Heartbeat])
256
+ public var recordType: Swift.String {
257
+ get
258
+ }
259
+ public static func == (a: TerraSDK.BodyReading.Kind, b: TerraSDK.BodyReading.Kind) -> Swift.Bool
260
+ public func hash(into hasher: inout Swift.Hasher)
261
+ public var hashValue: Swift.Int {
262
+ get
263
+ }
264
+ }
265
+ public let id: Foundation.UUID
266
+ public let kind: TerraSDK.BodyReading.Kind
267
+ public let interval: Foundation.DateInterval
268
+ public let source: TerraSDK.SampleSource
269
+ public let userEntered: Swift.Bool
270
+ public let timeZone: Foundation.TimeZone?
271
+ public init(id: Foundation.UUID, kind: TerraSDK.BodyReading.Kind, interval: Foundation.DateInterval, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil)
272
+ public static func == (a: TerraSDK.BodyReading, b: TerraSDK.BodyReading) -> Swift.Bool
273
+ public typealias ID = Foundation.UUID
274
+ }
275
+ public enum BodyMetric : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
276
+ case weight
277
+ case height
278
+ case bodyFatPercentage
279
+ case leanBodyMass
280
+ case bmi
281
+ case waistCircumference
282
+ public var unit: Swift.String {
283
+ get
284
+ }
285
+ public init?(rawValue: Swift.String)
286
+ public typealias AllCases = [TerraSDK.BodyMetric]
287
+ public typealias RawValue = Swift.String
288
+ nonisolated public static var allCases: [TerraSDK.BodyMetric] {
289
+ get
290
+ }
291
+ public var rawValue: Swift.String {
292
+ get
293
+ }
294
+ }
295
+ public enum BloodGlucoseUnit : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
296
+ case milligramsPerDecilitre
297
+ case millimolesPerLitre
298
+ public init?(rawValue: Swift.String)
299
+ public typealias AllCases = [TerraSDK.BloodGlucoseUnit]
300
+ public typealias RawValue = Swift.String
301
+ nonisolated public static var allCases: [TerraSDK.BloodGlucoseUnit] {
302
+ get
303
+ }
304
+ public var rawValue: Swift.String {
305
+ get
306
+ }
307
+ }
308
+ public enum GlucoseMealTime : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
309
+ case preprandial
310
+ case postprandial
311
+ case unknown
312
+ public init?(rawValue: Swift.String)
313
+ public typealias AllCases = [TerraSDK.GlucoseMealTime]
314
+ public typealias RawValue = Swift.String
315
+ nonisolated public static var allCases: [TerraSDK.GlucoseMealTime] {
316
+ get
317
+ }
318
+ public var rawValue: Swift.String {
319
+ get
320
+ }
321
+ }
322
+ public enum GlucoseSpecimen : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
323
+ case capillary
324
+ case interstitial
325
+ case plasma
326
+ case serum
327
+ case tears
328
+ case wholeBlood
329
+ case unknown
330
+ public init?(rawValue: Swift.String)
331
+ public typealias AllCases = [TerraSDK.GlucoseSpecimen]
332
+ public typealias RawValue = Swift.String
333
+ nonisolated public static var allCases: [TerraSDK.GlucoseSpecimen] {
334
+ get
335
+ }
336
+ public var rawValue: Swift.String {
337
+ get
338
+ }
339
+ }
340
+ public enum BodyTemperatureMetric : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
341
+ case body
342
+ case basal
343
+ case wrist
344
+ case skin
345
+ public init?(rawValue: Swift.String)
346
+ public typealias AllCases = [TerraSDK.BodyTemperatureMetric]
347
+ public typealias RawValue = Swift.String
348
+ nonisolated public static var allCases: [TerraSDK.BodyTemperatureMetric] {
349
+ get
350
+ }
351
+ public var rawValue: Swift.String {
352
+ get
353
+ }
354
+ }
355
+ public enum HeartRateVariabilityMetric : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
356
+ case sdnn
357
+ case rmssd
358
+ public init?(rawValue: Swift.String)
359
+ public typealias AllCases = [TerraSDK.HeartRateVariabilityMetric]
360
+ public typealias RawValue = Swift.String
361
+ nonisolated public static var allCases: [TerraSDK.HeartRateVariabilityMetric] {
362
+ get
363
+ }
364
+ public var rawValue: Swift.String {
365
+ get
366
+ }
367
+ }
368
+ public enum VO2MaxTestType : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
369
+ case maxExercise
370
+ case predictedSubMaxExercise
371
+ case predictedNonExercise
372
+ public init?(rawValue: Swift.String)
373
+ public typealias AllCases = [TerraSDK.VO2MaxTestType]
374
+ public typealias RawValue = Swift.String
375
+ nonisolated public static var allCases: [TerraSDK.VO2MaxTestType] {
376
+ get
377
+ }
378
+ public var rawValue: Swift.String {
379
+ get
380
+ }
381
+ }
382
+ public enum InsulinDeliveryReason : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
383
+ case basal
384
+ case bolus
385
+ public init?(rawValue: Swift.String)
386
+ public typealias AllCases = [TerraSDK.InsulinDeliveryReason]
387
+ public typealias RawValue = Swift.String
388
+ nonisolated public static var allCases: [TerraSDK.InsulinDeliveryReason] {
389
+ get
390
+ }
391
+ public var rawValue: Swift.String {
392
+ get
393
+ }
394
+ }
395
+ public struct Electrocardiogram : Swift.Sendable, Swift.Equatable, Swift.Hashable {
396
+ public enum Classification : Swift.String, Swift.Sendable, Swift.CaseIterable {
397
+ case sinusRhythm
398
+ case atrialFibrillation
399
+ case inconclusiveLowHeartRate
400
+ case inconclusiveHighHeartRate
401
+ case inconclusivePoorReading
402
+ case inconclusiveOther
403
+ case notSet
404
+ public init?(rawValue: Swift.String)
405
+ public typealias AllCases = [TerraSDK.Electrocardiogram.Classification]
406
+ public typealias RawValue = Swift.String
407
+ nonisolated public static var allCases: [TerraSDK.Electrocardiogram.Classification] {
408
+ get
409
+ }
410
+ public var rawValue: Swift.String {
411
+ get
412
+ }
413
+ }
414
+ public enum SymptomsStatus : Swift.String, Swift.Sendable, Swift.CaseIterable {
415
+ case present
416
+ case notPresent
417
+ case notSet
418
+ public init?(rawValue: Swift.String)
419
+ public typealias AllCases = [TerraSDK.Electrocardiogram.SymptomsStatus]
420
+ public typealias RawValue = Swift.String
421
+ nonisolated public static var allCases: [TerraSDK.Electrocardiogram.SymptomsStatus] {
422
+ get
423
+ }
424
+ public var rawValue: Swift.String {
425
+ get
426
+ }
427
+ }
428
+ public let classification: TerraSDK.Electrocardiogram.Classification
429
+ public let averageHeartRate: Swift.Double?
430
+ public let samplingFrequencyHz: Swift.Double?
431
+ public let symptomsStatus: TerraSDK.Electrocardiogram.SymptomsStatus?
432
+ public init(classification: TerraSDK.Electrocardiogram.Classification, averageHeartRate: Swift.Double? = nil, samplingFrequencyHz: Swift.Double? = nil, symptomsStatus: TerraSDK.Electrocardiogram.SymptomsStatus? = nil)
433
+ public static func == (a: TerraSDK.Electrocardiogram, b: TerraSDK.Electrocardiogram) -> Swift.Bool
434
+ public func hash(into hasher: inout Swift.Hasher)
435
+ public var hashValue: Swift.Int {
436
+ get
437
+ }
438
+ }
439
+ public struct Heartbeat : Swift.Sendable, Swift.Equatable, Swift.Hashable {
440
+ public let millisecondsFromStart: Swift.Int64
441
+ public let precededByGap: Swift.Bool
442
+ public init(millisecondsFromStart: Swift.Int64, precededByGap: Swift.Bool)
443
+ public static func == (a: TerraSDK.Heartbeat, b: TerraSDK.Heartbeat) -> Swift.Bool
444
+ public func hash(into hasher: inout Swift.Hasher)
445
+ public var hashValue: Swift.Int {
446
+ get
447
+ }
448
+ }
449
+ public enum ObservedChange : Swift.Sendable, Swift.Equatable {
450
+ case days(Swift.Set<Foundation.Date>)
451
+ case deferred
452
+ public static func == (a: TerraSDK.ObservedChange, b: TerraSDK.ObservedChange) -> Swift.Bool
453
+ }
454
+ public struct HealthChange : Swift.Sendable, Swift.Equatable, Swift.Hashable {
455
+ public let category: TerraSDK.DataCategory
456
+ public let day: Foundation.Date
457
+ public init(category: TerraSDK.DataCategory, day: Foundation.Date)
458
+ public static func == (a: TerraSDK.HealthChange, b: TerraSDK.HealthChange) -> Swift.Bool
459
+ public func hash(into hasher: inout Swift.Hasher)
460
+ public var hashValue: Swift.Int {
461
+ get
462
+ }
463
+ }
464
+ public struct ObservedWake : Swift.Sendable {
465
+ public let change: TerraSDK.ObservedChange
466
+ public init(_ change: TerraSDK.ObservedChange, acknowledging handler: @escaping @Sendable () -> Swift.Void = {})
467
+ public func acknowledge()
468
+ }
469
+ @_hasMissingDesignatedInitializers final public class Acknowledgement : @unchecked Swift.Sendable {
470
+ public init(_ handler: @escaping @Sendable () -> Swift.Void)
471
+ @objc deinit
472
+ final public func fire()
473
+ }
474
+ public struct DeferredWake : Swift.Sendable, Swift.Equatable {
475
+ public let generation: Swift.Int
476
+ public let version: Swift.Int
477
+ public init(generation: Swift.Int, version: Swift.Int)
478
+ public static func == (a: TerraSDK.DeferredWake, b: TerraSDK.DeferredWake) -> Swift.Bool
479
+ }
480
+ public struct Connection : Swift.Sendable {
481
+ public let source: TerraSDK.Source
482
+ public let userID: Swift.String
483
+ public var workouts: TerraSDK.PlannedWorkouts {
484
+ get
485
+ }
486
+ public static let firstSyncDays: Swift.Int
487
+ @_spi(Testing) @discardableResult
488
+ public func sync(_ dataType: TerraSDK.UploadDataType, backfillDays: Swift.Int = Connection.firstSyncDays) async throws -> TerraSDK.SyncOutcome
489
+ @_spi(Testing) @discardableResult
490
+ public func syncAll(backfillDays: Swift.Int = Connection.firstSyncDays) async -> TerraSDK.BackgroundSyncResult
491
+ public func disconnect() async throws
492
+ }
493
+ public struct BackgroundSyncResult : Swift.Sendable {
494
+ public let outcomes: [TerraSDK.UploadDataType : TerraSDK.SyncOutcome]
495
+ public let failures: [TerraSDK.UploadDataType : TerraSDK.TerraError]
496
+ public let skipped: [TerraSDK.UploadDataType : TerraSDK.BackgroundSyncResult.Skip]
497
+ public enum Skip : Swift.Sendable, Swift.Equatable {
498
+ case alreadyRunning
499
+ case notAuthorized(TerraSDK.TerraError)
500
+ case awaitingConverter
501
+ public static func == (a: TerraSDK.BackgroundSyncResult.Skip, b: TerraSDK.BackgroundSyncResult.Skip) -> Swift.Bool
502
+ }
503
+ public var recordsUploaded: Swift.Int {
504
+ get
505
+ }
506
+ public var windowsSkipped: Swift.Int {
507
+ get
508
+ }
509
+ public var uploadedSomething: Swift.Bool {
510
+ get
511
+ }
512
+ public var hadFailure: Swift.Bool {
513
+ get
514
+ }
515
+ }
516
+ public struct SyncOutcome : Swift.Sendable, Swift.Equatable {
517
+ public let recordsUploaded: Swift.Int
518
+ public let windowsUploaded: Swift.Int
519
+ public let windowsSkipped: Swift.Int
520
+ public let syncedThrough: Foundation.Date
521
+ public static func == (a: TerraSDK.SyncOutcome, b: TerraSDK.SyncOutcome) -> Swift.Bool
522
+ }
523
+ public protocol DeviceKeyStore : Swift.Sendable {
524
+ func createKey(for source: TerraSDK.Source, generation: Swift.Int) throws -> TerraSDK.DeviceKey
525
+ func existingKey(for source: TerraSDK.Source, generation: Swift.Int) throws -> TerraSDK.DeviceKey?
526
+ func deleteKey(for source: TerraSDK.Source, generation: Swift.Int) throws
527
+ }
528
+ public struct DeviceKey : Swift.Sendable {
529
+ public let publicKeyBase64DER: Swift.String
530
+ public init(publicKeyBase64DER: Swift.String, sign: @escaping @Sendable (Foundation.Data) throws -> Foundation.Data)
531
+ public func signature(over message: Foundation.Data) throws -> Swift.String
532
+ }
533
+ public struct KeychainDeviceKeyStore : TerraSDK.DeviceKeyStore {
534
+ public init(service: Swift.String = "co.tryterra.sdk.devicekey")
535
+ public func createKey(for source: TerraSDK.Source, generation: Swift.Int) throws -> TerraSDK.DeviceKey
536
+ public func existingKey(for source: TerraSDK.Source, generation: Swift.Int) throws -> TerraSDK.DeviceKey?
537
+ public func deleteKey(for source: TerraSDK.Source, generation: Swift.Int) throws
538
+ }
539
+ public struct TerraEvent : Swift.Sendable, Swift.Equatable {
540
+ public let at: Foundation.Date
541
+ public let kind: TerraSDK.TerraEvent.Kind
542
+ public init(at: Foundation.Date, kind: TerraSDK.TerraEvent.Kind)
543
+ public enum Kind : Swift.Sendable, Swift.Equatable {
544
+ case connected(TerraSDK.Source)
545
+ case disconnected(TerraSDK.Source)
546
+ case linkRevoked(TerraSDK.Source)
547
+ case permissionResult(asked: Swift.Set<TerraSDK.DataCategory>, covered: Swift.Set<TerraSDK.DataCategory>)
548
+ case backgroundWake(TerraSDK.Source)
549
+ case backgroundWakeRefused(TerraSDK.Source, code: TerraSDK.TerraEvent.FailureCode)
550
+ case backgroundRefreshUnscheduled(identifier: Swift.String, source: TerraSDK.Source)
551
+ case uploadBatch(TerraSDK.UploadDataType, source: TerraSDK.Source, records: Swift.Int, bytes: Swift.Int)
552
+ case uploadFailed(TerraSDK.UploadDataType, source: TerraSDK.Source, code: TerraSDK.TerraEvent.FailureCode)
553
+ case retryScheduled(TerraSDK.UploadDataType, source: TerraSDK.Source, afterSeconds: Foundation.TimeInterval, attempt: Swift.Int)
554
+ case backfillProgress(TerraSDK.UploadDataType, source: TerraSDK.Source, uploaded: Swift.Int, skipped: Swift.Int)
555
+ case dailyDayTooLarge(source: TerraSDK.Source, day: Foundation.Date, bytes: Swift.Int)
556
+ case sleepWakeDateTooLarge(source: TerraSDK.Source, wakeDate: Foundation.Date, bytes: Swift.Int)
557
+ case serverBackfillQueued(TerraSDK.UploadDataType, source: TerraSDK.Source)
558
+ case serverBackfillCompleted(TerraSDK.UploadDataType, source: TerraSDK.Source, uploaded: Swift.Int)
559
+ case serverBackfillAbandoned(TerraSDK.UploadDataType, source: TerraSDK.Source, code: TerraSDK.TerraEvent.FailureCode)
560
+ case serverBackfillRefused(source: TerraSDK.Source)
561
+ case serverBackfillUnsupported(source: TerraSDK.Source)
562
+ case serverBackfillPollFailed(source: TerraSDK.Source, code: TerraSDK.TerraEvent.FailureCode)
563
+ case backgroundObservationUnavailable(TerraSDK.DataCategory, source: TerraSDK.Source)
564
+ case observationDropped(TerraSDK.DataCategory, source: TerraSDK.Source)
565
+ case samplesLogged(TerraSDK.DataCategory, count: Swift.Int, source: TerraSDK.Source)
566
+ case sampleDeleted(TerraSDK.DataCategory, source: TerraSDK.Source)
567
+ case plannedWorkoutUpdated(TerraSDK.Source)
568
+ case plannedWorkoutsScheduled(TerraSDK.Source, scheduled: Swift.Int, removed: Swift.Int, refused: Swift.Int)
569
+ case plannedWorkoutScheduleFailed(source: TerraSDK.Source, code: TerraSDK.TerraEvent.FailureCode)
570
+ case tokenRefreshed
571
+ case deviceKeyRevokeAnswered(TerraSDK.Source, outcome: TerraSDK.DeviceKeyRevokeOutcome)
572
+ case deviceKeyRevokeFailed(TerraSDK.Source, code: TerraSDK.TerraEvent.FailureCode, attempt: Swift.Int, owed: Swift.Bool)
573
+ case diagnosticsReported(TerraSDK.DiagnosticsReason, source: TerraSDK.Source)
574
+ public static func == (a: TerraSDK.TerraEvent.Kind, b: TerraSDK.TerraEvent.Kind) -> Swift.Bool
575
+ }
576
+ public enum FailureCode : Swift.String, Swift.Sendable, Swift.Equatable, Swift.Encodable {
577
+ case healthDataUnavailable, notConnected, tokenUnavailable, tokenRejected
578
+ case tokenProviderFailed, offline, timedOut, serverError, transport, malformedResponse
579
+ case userLimitReached, upgradeRequired, platform, deviceKeyUnavailable
580
+ case signatureRejected, linkRevoked, linkConflict, clockSkewed, devIDMismatch
581
+ case syncAlreadyRunning, linkAlreadyRunning, storeLocked, storeUnreadable
582
+ case deadlineExceeded, permissionDenied, authorizationNotDetermined
583
+ case sampleNotFound, rollbackIncomplete, distanceNotAttributable, bloodPressureIncomplete
584
+ case authorizationUnavailableInExtension, plannedWorkoutUnnamed
585
+ case routeAwaitingConverter
586
+ public init?(rawValue: Swift.String)
587
+ public typealias RawValue = Swift.String
588
+ public var rawValue: Swift.String {
589
+ get
590
+ }
591
+ }
592
+ public static func == (a: TerraSDK.TerraEvent, b: TerraSDK.TerraEvent) -> Swift.Bool
593
+ }
594
+ public enum DeviceKeyRevokeOutcome : Swift.String, Swift.Sendable, Swift.Equatable, Swift.Encodable {
595
+ case revoked
596
+ case alreadyRevoked
597
+ case routeAbsent
598
+ public init?(rawValue: Swift.String)
599
+ public typealias RawValue = Swift.String
600
+ public var rawValue: Swift.String {
601
+ get
602
+ }
603
+ }
604
+ public enum DiagnosticsState : Swift.Sendable, Swift.Equatable {
605
+ case healthy
606
+ case quiet(since: Foundation.Date)
607
+ case backgroundRestricted
608
+ case backgroundRefreshUnscheduled
609
+ case pendingRetry
610
+ case linkRevoked
611
+ case devIDMismatch
612
+ public static func == (a: TerraSDK.DiagnosticsState, b: TerraSDK.DiagnosticsState) -> Swift.Bool
613
+ }
614
+ public enum DiagnosticsReason : Swift.String, Swift.Sendable, Swift.Equatable, Swift.Encodable, Swift.CaseIterable {
615
+ case uploadFailed
616
+ case backfillAbandoned
617
+ case backgroundObservationUnavailable
618
+ case backgroundRestricted
619
+ case backgroundRefreshUnscheduled
620
+ case quiet
621
+ case requested
622
+ public init?(rawValue: Swift.String)
623
+ public typealias AllCases = [TerraSDK.DiagnosticsReason]
624
+ public typealias RawValue = Swift.String
625
+ nonisolated public static var allCases: [TerraSDK.DiagnosticsReason] {
626
+ get
627
+ }
628
+ public var rawValue: Swift.String {
629
+ get
630
+ }
631
+ }
632
+ public enum DiagnosticsPolicy {
633
+ public static let automaticPerDay: Swift.Int
634
+ public static func admits(_ send: TerraSDK.DiagnosticsSend, into ledger: [TerraSDK.DiagnosticsSend], notWithin interval: Foundation.TimeInterval, automaticLimit limit: Swift.Int?) -> Swift.Bool
635
+ public static let day: Swift.Double
636
+ public static let week: Swift.Double
637
+ public static let requestedInterval: Swift.Double
638
+ public struct Rule : Swift.Sendable, Swift.Equatable {
639
+ public let rate: Swift.Double
640
+ public let interval: Foundation.TimeInterval
641
+ public static func == (a: TerraSDK.DiagnosticsPolicy.Rule, b: TerraSDK.DiagnosticsPolicy.Rule) -> Swift.Bool
642
+ }
643
+ public static func rule(for reason: TerraSDK.DiagnosticsReason, code: TerraSDK.TerraEvent.FailureCode? = nil) -> TerraSDK.DiagnosticsPolicy.Rule?
644
+ public static func sampled(identity: Swift.String, rate: Swift.Double) -> Swift.Bool
645
+ }
646
+ public struct DiagnosticsSend : Swift.Sendable, Swift.Equatable, Swift.Codable {
647
+ public let key: Swift.String
648
+ public let at: Foundation.Date
649
+ public static let ledgerLimit: Swift.Int
650
+ public static func trimmed(_ ledger: [TerraSDK.DiagnosticsSend], now: Foundation.Date) -> [TerraSDK.DiagnosticsSend]
651
+ public init(key: Swift.String, at: Foundation.Date)
652
+ public static func == (a: TerraSDK.DiagnosticsSend, b: TerraSDK.DiagnosticsSend) -> Swift.Bool
653
+ public func encode(to encoder: any Swift.Encoder) throws
654
+ public init(from decoder: any Swift.Decoder) throws
655
+ }
656
+ public struct SupportReport : Swift.Sendable, Swift.Equatable, Swift.Encodable {
657
+ public let sdkVersion: Swift.String
658
+ public let generatedAt: Foundation.Date
659
+ public let state: TerraSDK.DiagnosticsState
660
+ public let lastDelivery: Foundation.Date?
661
+ public let isConnected: Swift.Bool
662
+ public let requestedCategories: [Swift.String]
663
+ public let requestedWrites: [Swift.String]
664
+ public let requestedWorkouts: [Swift.String]
665
+ public let recentEvents: [TerraSDK.TerraEvent]
666
+ public func json() throws -> Foundation.Data
667
+ public static func == (a: TerraSDK.SupportReport, b: TerraSDK.SupportReport) -> Swift.Bool
668
+ public func encode(to encoder: any Swift.Encoder) throws
669
+ }
670
+ extension TerraSDK.DiagnosticsState : Swift.Encodable {
671
+ public func encode(to encoder: any Swift.Encoder) throws
672
+ }
673
+ extension TerraSDK.TerraEvent : Swift.Encodable {
674
+ public func encode(to encoder: any Swift.Encoder) throws
675
+ }
676
+ public enum EndUser : Swift.Sendable, Swift.Hashable {
677
+ case reference(Swift.String)
678
+ case anonymous
679
+ public static func == (a: TerraSDK.EndUser, b: TerraSDK.EndUser) -> Swift.Bool
680
+ public func hash(into hasher: inout Swift.Hasher)
681
+ public var hashValue: Swift.Int {
682
+ get
683
+ }
684
+ }
685
+ public enum TerraError : Swift.Error, Swift.Sendable {
686
+ case healthDataUnavailable
687
+ case notConnected(TerraSDK.Source)
688
+ case routeAwaitingConverter(TerraSDK.UploadDataType)
689
+ case tokenUnavailable
690
+ case tokenRejected
691
+ case tokenProviderFailed(any Swift.Error)
692
+ case network(TerraSDK.TerraError.Network)
693
+ case userLimitReached
694
+ case upgradeRequired
695
+ case platform(any Swift.Error)
696
+ case deviceKeyUnavailable
697
+ case signatureRejected
698
+ case clockSkewed
699
+ case linkRevoked(TerraSDK.Source)
700
+ case devIDMismatch(TerraSDK.Source)
701
+ case linkConflict
702
+ case syncAlreadyRunning(TerraSDK.UploadDataType)
703
+ case linkAlreadyRunning(TerraSDK.Source)
704
+ case storeLocked
705
+ case storeUnreadable
706
+ case deadlineExceeded
707
+ case permissionDenied(TerraSDK.DataCategory)
708
+ case authorizationNotDetermined
709
+ case sampleNotFound(Foundation.UUID)
710
+ indirect case rollbackIncomplete(remaining: [Foundation.UUID], cause: TerraSDK.TerraError)
711
+ case distanceNotAttributable(TerraSDK.WorkoutActivity)
712
+ case bloodPressureIncomplete
713
+ case plannedWorkoutUnnamed
714
+ case authorizationUnavailableInExtension
715
+ public enum Network : Swift.Sendable, Swift.Equatable {
716
+ case offline
717
+ case timedOut
718
+ case serverError(status: Swift.Int)
719
+ case throttled(retryAfter: Foundation.TimeInterval?)
720
+ case transport(code: Swift.Int)
721
+ case malformedResponse
722
+ public var code: Swift.String {
723
+ get
724
+ }
725
+ public static func == (a: TerraSDK.TerraError.Network, b: TerraSDK.TerraError.Network) -> Swift.Bool
726
+ }
727
+ public var code: Swift.String {
728
+ get
729
+ }
730
+ public var isRetryable: Swift.Bool {
731
+ get
732
+ }
733
+ public var isAuthorizationRefusal: Swift.Bool {
734
+ get
735
+ }
736
+ }
737
+ extension TerraSDK.TerraError : Foundation.LocalizedError {
738
+ public var errorDescription: Swift.String? {
739
+ get
740
+ }
741
+ }
742
+ extension TerraSDK.TerraError : Swift.Equatable {
743
+ public static func == (lhs: TerraSDK.TerraError, rhs: TerraSDK.TerraError) -> Swift.Bool
744
+ }
745
+ public struct HTTPBackend : TerraSDK.TerraBackend {
746
+ public static let defaultTimeout: Swift.Double
747
+ public init(baseURL: Foundation.URL, session: Foundation.URLSession? = nil)
748
+ public func link(_ request: TerraSDK.LinkRequest) async throws -> TerraSDK.LinkGrant
749
+ public func upload(_ request: TerraSDK.UploadRequest) async throws
750
+ public func plannedWorkouts(_ request: TerraSDK.PlannedWorkoutRequest) async throws -> [TerraSDK.PlannedWorkout]
751
+ public func updatePlannedWorkout(_ request: TerraSDK.PlannedWorkoutUpdate) async throws
752
+ public func pendingPlanActions(_ request: TerraSDK.PlanQueueRequest) async throws -> [TerraSDK.PendingPlanAction]
753
+ public func acknowledgePlanActions(_ request: TerraSDK.PlanAckRequest) async throws
754
+ public func reportScheduledWorkouts(_ request: TerraSDK.ScheduledWorkoutReportRequest) async throws
755
+ public func backfillRequests(_ request: TerraSDK.BackfillPollRequest) async throws -> [TerraSDK.BackfillDirective]
756
+ public func acknowledgeBackfills(_ request: TerraSDK.BackfillAckRequest) async throws
757
+ public func sendDiagnostics(_ request: TerraSDK.DiagnosticsRequest) async throws
758
+ public func revokeDeviceKey(_ request: TerraSDK.RevokeDeviceKeyRequest) async throws
759
+ }
760
+ public struct HealthAccess : Swift.Sendable, Swift.Equatable {
761
+ public var read: Swift.Set<TerraSDK.DataCategory>
762
+ public var write: Swift.Set<TerraSDK.DataCategory>
763
+ public var workouts: Swift.Set<TerraSDK.WorkoutScope>
764
+ public init(read: Swift.Set<TerraSDK.DataCategory> = [], write: Swift.Set<TerraSDK.DataCategory> = [], workouts: Swift.Set<TerraSDK.WorkoutScope> = [])
765
+ public var isEmpty: Swift.Bool {
766
+ get
767
+ }
768
+ public func union(_ other: TerraSDK.HealthAccess) -> TerraSDK.HealthAccess
769
+ public func intersection(_ other: TerraSDK.HealthAccess) -> TerraSDK.HealthAccess
770
+ public static func == (a: TerraSDK.HealthAccess, b: TerraSDK.HealthAccess) -> Swift.Bool
771
+ }
772
+ extension TerraSDK.HealthKitStore {
773
+ public func bodyReadings(in interval: Foundation.DateInterval) async throws -> [TerraSDK.BodyReading]
774
+ public func dietaryQuantities(in interval: Foundation.DateInterval) async throws -> [TerraSDK.DietaryQuantity]
775
+ public func hydration(in interval: Foundation.DateInterval) async throws -> [TerraSDK.HydrationSample]
776
+ public func menstrualEvents(in interval: Foundation.DateInterval) async throws -> [TerraSDK.MenstrualEvent]
777
+ public func menstruationFlow(in interval: Foundation.DateInterval) async throws -> [TerraSDK.MenstruationFlowDay]
778
+ public func healthObservations(in interval: Foundation.DateInterval) async throws -> [TerraSDK.HealthObservation]
779
+ public func athleteProfile() async throws -> TerraSDK.AthleteProfile?
780
+ public func workoutIntensity(inside workouts: [TerraSDK.Workout]) async throws -> [TerraSDK.WorkoutIntensitySample]
781
+ public func workoutRoutes(of workouts: [TerraSDK.Workout]) async throws -> [TerraSDK.WorkoutRoute]
782
+ }
783
+ @_hasMissingDesignatedInitializers public actor HealthKitStore : TerraSDK.HealthStore {
784
+ nonisolated final public let isAvailable: Swift.Bool
785
+ public init(anchors: any TerraSDK.DeviceStore = KeychainDeviceStore())
786
+ public func readStatus(for category: TerraSDK.DataCategory) async -> TerraSDK.PermissionStatus
787
+ nonisolated public var canPresentAuthorization: Swift.Bool {
788
+ get
789
+ }
790
+ public func servable(_ access: TerraSDK.HealthAccess) async throws -> TerraSDK.HealthAccess
791
+ public func requestAccess(_ access: TerraSDK.HealthAccess) async throws
792
+ public func writeStatus(for category: TerraSDK.DataCategory) async -> TerraSDK.PermissionStatus
793
+ public func save(_ entries: [TerraSDK.HeartRateEntry]) async throws -> [Foundation.UUID]
794
+ public func save(_ entries: [TerraSDK.StepEntry]) async throws -> [Foundation.UUID]
795
+ public func save(_ entries: [TerraSDK.SleepEntry]) async throws -> [Foundation.UUID]
796
+ public func writeAccess(for entries: [TerraSDK.WorkoutEntry]) async throws -> TerraSDK.HealthAccess
797
+ public func requireWritable(_ entries: [TerraSDK.WorkoutEntry]) async throws
798
+ public func save(_ entry: TerraSDK.WorkoutEntry) async throws -> Foundation.UUID
799
+ public func delete(_ id: Foundation.UUID, in category: TerraSDK.DataCategory) async throws
800
+ public func changes(for dataType: TerraSDK.UploadDataType, since anchor: Foundation.Data?, limit: Swift.Int) async throws -> TerraSDK.HealthChanges
801
+ public func changes(for dataType: TerraSDK.UploadDataType, since anchor: Foundation.Data?, limit: Swift.Int, attachingContents: Swift.Bool) async throws -> TerraSDK.HealthChanges
802
+ public func heartRate(in interval: Foundation.DateInterval) async throws -> [TerraSDK.HeartRateSample]
803
+ public func restingHeartRate(in interval: Foundation.DateInterval) async throws -> [TerraSDK.RestingHeartRateSample]
804
+ public func stepSamples(in interval: Foundation.DateInterval) async throws -> [TerraSDK.StepCount]
805
+ public func intradaySamples(in interval: Foundation.DateInterval) async throws -> [TerraSDK.IntradaySample]
806
+ public func sleep(in interval: Foundation.DateInterval) async throws -> [TerraSDK.SleepSegment]
807
+ public func workouts(in interval: Foundation.DateInterval) async throws -> [TerraSDK.Workout]
808
+ nonisolated public func observe(_ category: TerraSDK.DataCategory, source: TerraSDK.Source) -> _Concurrency.AsyncStream<TerraSDK.ObservedWake>
809
+ public func enableBackgroundObservation(_ category: TerraSDK.DataCategory, source: TerraSDK.Source) async -> Swift.Bool
810
+ public func replayObservation(_ category: TerraSDK.DataCategory, source: TerraSDK.Source) async -> TerraSDK.ObservedChange
811
+ @objc deinit
812
+ @available(iOS 13.0, tvOS 13.0, watchOS 6.0, macOS 10.15, *)
813
+ @_semantics("defaultActor") nonisolated final public var unownedExecutor: _Concurrency.UnownedSerialExecutor {
814
+ get
815
+ }
816
+ }
817
+ extension TerraSDK.HealthKitStore {
818
+ public func dayTotals(in interval: Foundation.DateInterval) async throws -> [TerraSDK.DayTotal]
819
+ public func dayTotals(in interval: Foundation.DateInterval, zone: Foundation.TimeZone) async throws -> [TerraSDK.DayTotal]
820
+ nonisolated public var appliesDayTotalPolicy: Swift.Bool {
821
+ get
822
+ }
823
+ public func dayTotals(in interval: Foundation.DateInterval, zone: Foundation.TimeZone, policy: TerraSDK.DayTotalPolicy) async throws -> [TerraSDK.DayTotal]
824
+ }
825
+ extension TerraSDK.HealthKitStore {
826
+ public func save(_ entries: [TerraSDK.BodyEntry]) async throws -> [Foundation.UUID]
827
+ public func save(_ entries: [TerraSDK.NutritionEntry]) async throws -> [Foundation.UUID]
828
+ }
829
+ public struct HealthObservation : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
830
+ public enum Category : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
831
+ case symptom
832
+ case selfCare
833
+ case lab
834
+ public init?(rawValue: Swift.String)
835
+ public typealias AllCases = [TerraSDK.HealthObservation.Category]
836
+ public typealias RawValue = Swift.String
837
+ nonisolated public static var allCases: [TerraSDK.HealthObservation.Category] {
838
+ get
839
+ }
840
+ public var rawValue: Swift.String {
841
+ get
842
+ }
843
+ }
844
+ public enum Severity : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
845
+ case unspecified
846
+ case notPresent
847
+ case mild
848
+ case moderate
849
+ case severe
850
+ public init?(rawValue: Swift.String)
851
+ public typealias AllCases = [TerraSDK.HealthObservation.Severity]
852
+ public typealias RawValue = Swift.String
853
+ nonisolated public static var allCases: [TerraSDK.HealthObservation.Severity] {
854
+ get
855
+ }
856
+ public var rawValue: Swift.String {
857
+ get
858
+ }
859
+ }
860
+ public enum Value : Swift.Sendable, Swift.Equatable {
861
+ case quantity(Swift.Double, unit: Swift.String)
862
+ public static func == (a: TerraSDK.HealthObservation.Value, b: TerraSDK.HealthObservation.Value) -> Swift.Bool
863
+ }
864
+ public let id: Foundation.UUID
865
+ public let storeIdentifier: Swift.String
866
+ public let category: TerraSDK.HealthObservation.Category
867
+ public let interval: Foundation.DateInterval
868
+ public let severity: TerraSDK.HealthObservation.Severity?
869
+ public let value: TerraSDK.HealthObservation.Value?
870
+ public let source: TerraSDK.SampleSource
871
+ public let userEntered: Swift.Bool
872
+ public let timeZone: Foundation.TimeZone?
873
+ public init(id: Foundation.UUID, storeIdentifier: Swift.String, category: TerraSDK.HealthObservation.Category, interval: Foundation.DateInterval, severity: TerraSDK.HealthObservation.Severity? = nil, value: TerraSDK.HealthObservation.Value? = nil, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil)
874
+ public static func == (a: TerraSDK.HealthObservation, b: TerraSDK.HealthObservation) -> Swift.Bool
875
+ public typealias ID = Foundation.UUID
876
+ }
877
+ public struct HealthChanges : Swift.Sendable {
878
+ public var heartRate: [TerraSDK.HeartRateSample]
879
+ public var steps: [TerraSDK.StepCount]
880
+ public var restingHeartRate: [TerraSDK.RestingHeartRateSample]
881
+ public var sleep: [TerraSDK.SleepSegment]
882
+ public var workouts: [TerraSDK.Workout]
883
+ public var workoutIntensity: [TerraSDK.WorkoutIntensitySample]
884
+ public var workoutRoutes: [TerraSDK.WorkoutRoute]
885
+ public var intensityArrivals: [TerraSDK.WorkoutIntensityArrival]
886
+ public var routeArrivals: [TerraSDK.WorkoutRouteArrival]
887
+ public var body: [TerraSDK.BodyReading]
888
+ public var nutrients: [TerraSDK.DietaryQuantity]
889
+ public var hydration: [TerraSDK.HydrationSample]
890
+ public var menstruation: [TerraSDK.MenstruationFlowDay]
891
+ public var menstrualEvents: [TerraSDK.MenstrualEvent]
892
+ public var healthObservations: [TerraSDK.HealthObservation]
893
+ public var athlete: TerraSDK.AthleteProfile?
894
+ public var dayTotals: [TerraSDK.DayTotal]
895
+ public var intraday: [TerraSDK.IntradaySample]
896
+ public var readAt: Foundation.Date?
897
+ public var bodySeriesArrivals: [TerraSDK.BodySeriesArrival]
898
+ public var totalRelevantInstants: [Foundation.Date]
899
+ public var anchor: Foundation.Data?
900
+ public var more: Swift.Bool
901
+ public var isEmpty: Swift.Bool {
902
+ get
903
+ }
904
+ public init(heartRate: [TerraSDK.HeartRateSample] = [], steps: [TerraSDK.StepCount] = [], restingHeartRate: [TerraSDK.RestingHeartRateSample] = [], sleep: [TerraSDK.SleepSegment] = [], workouts: [TerraSDK.Workout] = [], anchor: Foundation.Data? = nil, more: Swift.Bool = false)
905
+ }
906
+ public struct BodySeriesArrival : Swift.Sendable, Swift.Equatable, Swift.Hashable {
907
+ public let id: Foundation.UUID
908
+ public let instant: Foundation.Date
909
+ public init(id: Foundation.UUID, instant: Foundation.Date)
910
+ public static func == (a: TerraSDK.BodySeriesArrival, b: TerraSDK.BodySeriesArrival) -> Swift.Bool
911
+ public func hash(into hasher: inout Swift.Hasher)
912
+ public var hashValue: Swift.Int {
913
+ get
914
+ }
915
+ }
916
+ public struct WorkoutIntensityArrival : Swift.Sendable, Swift.Equatable, Swift.Hashable {
917
+ public let id: Foundation.UUID
918
+ public let instant: Foundation.Date
919
+ public init(id: Foundation.UUID, instant: Foundation.Date)
920
+ public static func == (a: TerraSDK.WorkoutIntensityArrival, b: TerraSDK.WorkoutIntensityArrival) -> Swift.Bool
921
+ public func hash(into hasher: inout Swift.Hasher)
922
+ public var hashValue: Swift.Int {
923
+ get
924
+ }
925
+ }
926
+ public struct WorkoutRouteArrival : Swift.Sendable, Swift.Equatable, Swift.Hashable {
927
+ public let id: Foundation.UUID
928
+ public let instant: Foundation.Date
929
+ public init(id: Foundation.UUID, instant: Foundation.Date)
930
+ public static func == (a: TerraSDK.WorkoutRouteArrival, b: TerraSDK.WorkoutRouteArrival) -> Swift.Bool
931
+ public func hash(into hasher: inout Swift.Hasher)
932
+ public var hashValue: Swift.Int {
933
+ get
934
+ }
935
+ }
936
+ @_spi(TestRig) public protocol WorkoutAssociatedRecord : Swift.Sendable {
937
+ @_spi(TestRig) var id: Foundation.UUID { get }
938
+ @_spi(TestRig) var workoutId: Foundation.UUID { get }
939
+ }
940
+ @_spi(TestRig) extension TerraSDK.WorkoutIntensitySample : TerraSDK.WorkoutAssociatedRecord {
941
+ }
942
+ @_spi(TestRig) extension TerraSDK.WorkoutRoute : TerraSDK.WorkoutAssociatedRecord {
943
+ }
944
+ @_spi(TestRig) public enum WorkoutContentsDelivery {
945
+ @_spi(TestRig) public static func selected<Record>(_ read: [Record], pagedSessions: Swift.Set<Foundation.UUID>, arrivedRecords: Swift.Set<Foundation.UUID>) -> [Record] where Record : TerraSDK.WorkoutAssociatedRecord
946
+ }
947
+ public protocol HealthStore : Swift.Sendable {
948
+ var isAvailable: Swift.Bool { get }
949
+ var canPresentAuthorization: Swift.Bool { get }
950
+ func readStatus(for category: TerraSDK.DataCategory) async -> TerraSDK.PermissionStatus
951
+ func requestAccess(_ access: TerraSDK.HealthAccess) async throws
952
+ func servable(_ access: TerraSDK.HealthAccess) async throws -> TerraSDK.HealthAccess
953
+ func dayTotals(in interval: Foundation.DateInterval, zone: Foundation.TimeZone) async throws -> [TerraSDK.DayTotal]
954
+ func dayTotals(in interval: Foundation.DateInterval) async throws -> [TerraSDK.DayTotal]
955
+ func dayTotals(in interval: Foundation.DateInterval, zone: Foundation.TimeZone, policy: TerraSDK.DayTotalPolicy) async throws -> [TerraSDK.DayTotal]
956
+ var appliesDayTotalPolicy: Swift.Bool { get }
957
+ func changes(for dataType: TerraSDK.UploadDataType, since anchor: Foundation.Data?, limit: Swift.Int) async throws -> TerraSDK.HealthChanges
958
+ func changes(for dataType: TerraSDK.UploadDataType, since anchor: Foundation.Data?, limit: Swift.Int, attachingContents: Swift.Bool) async throws -> TerraSDK.HealthChanges
959
+ func observe(_ category: TerraSDK.DataCategory, source: TerraSDK.Source) -> _Concurrency.AsyncStream<TerraSDK.ObservedWake>
960
+ func enableBackgroundObservation(_ category: TerraSDK.DataCategory, source: TerraSDK.Source) async -> Swift.Bool
961
+ func replayObservation(_ category: TerraSDK.DataCategory, source: TerraSDK.Source) async -> TerraSDK.ObservedChange
962
+ func writeStatus(for category: TerraSDK.DataCategory) async -> TerraSDK.PermissionStatus
963
+ func save(_ entries: [TerraSDK.HeartRateEntry]) async throws -> [Foundation.UUID]
964
+ func save(_ entries: [TerraSDK.StepEntry]) async throws -> [Foundation.UUID]
965
+ func save(_ entries: [TerraSDK.SleepEntry]) async throws -> [Foundation.UUID]
966
+ func save(_ entries: [TerraSDK.BodyEntry]) async throws -> [Foundation.UUID]
967
+ func save(_ entries: [TerraSDK.NutritionEntry]) async throws -> [Foundation.UUID]
968
+ func save(_ entry: TerraSDK.WorkoutEntry) async throws -> Foundation.UUID
969
+ func writeAccess(for entries: [TerraSDK.WorkoutEntry]) async throws -> TerraSDK.HealthAccess
970
+ func requireWritable(_ entries: [TerraSDK.WorkoutEntry]) async throws
971
+ func delete(_ id: Foundation.UUID, in category: TerraSDK.DataCategory) async throws
972
+ func heartRate(in interval: Foundation.DateInterval) async throws -> [TerraSDK.HeartRateSample]
973
+ func restingHeartRate(in interval: Foundation.DateInterval) async throws -> [TerraSDK.RestingHeartRateSample]
974
+ func stepSamples(in interval: Foundation.DateInterval) async throws -> [TerraSDK.StepCount]
975
+ func intradaySamples(in interval: Foundation.DateInterval) async throws -> [TerraSDK.IntradaySample]
976
+ func sleep(in interval: Foundation.DateInterval) async throws -> [TerraSDK.SleepSegment]
977
+ func workouts(in interval: Foundation.DateInterval) async throws -> [TerraSDK.Workout]
978
+ func workoutIntensity(inside workouts: [TerraSDK.Workout]) async throws -> [TerraSDK.WorkoutIntensitySample]
979
+ func workoutRoutes(of workouts: [TerraSDK.Workout]) async throws -> [TerraSDK.WorkoutRoute]
980
+ func bodyReadings(in interval: Foundation.DateInterval) async throws -> [TerraSDK.BodyReading]
981
+ func dietaryQuantities(in interval: Foundation.DateInterval) async throws -> [TerraSDK.DietaryQuantity]
982
+ func hydration(in interval: Foundation.DateInterval) async throws -> [TerraSDK.HydrationSample]
983
+ func menstruationFlow(in interval: Foundation.DateInterval) async throws -> [TerraSDK.MenstruationFlowDay]
984
+ func menstrualEvents(in interval: Foundation.DateInterval) async throws -> [TerraSDK.MenstrualEvent]
985
+ func healthObservations(in interval: Foundation.DateInterval) async throws -> [TerraSDK.HealthObservation]
986
+ func athleteProfile() async throws -> TerraSDK.AthleteProfile?
987
+ }
988
+ extension TerraSDK.HealthStore {
989
+ public func dayTotals(in interval: Foundation.DateInterval, zone: Foundation.TimeZone) async throws -> [TerraSDK.DayTotal]
990
+ public func dayTotals(in interval: Foundation.DateInterval) async throws -> [TerraSDK.DayTotal]
991
+ public func dayTotals(in interval: Foundation.DateInterval, zone: Foundation.TimeZone, policy: TerraSDK.DayTotalPolicy) async throws -> [TerraSDK.DayTotal]
992
+ public var appliesDayTotalPolicy: Swift.Bool {
993
+ get
994
+ }
995
+ public func changes(for dataType: TerraSDK.UploadDataType, since anchor: Foundation.Data?, limit: Swift.Int, attachingContents: Swift.Bool) async throws -> TerraSDK.HealthChanges
996
+ public var canPresentAuthorization: Swift.Bool {
997
+ get
998
+ }
999
+ public func servable(_ access: TerraSDK.HealthAccess) async throws -> TerraSDK.HealthAccess
1000
+ public func save(_ entries: [TerraSDK.BodyEntry]) async throws -> [Foundation.UUID]
1001
+ public func save(_ entries: [TerraSDK.NutritionEntry]) async throws -> [Foundation.UUID]
1002
+ public func bodyReadings(in interval: Foundation.DateInterval) async throws -> [TerraSDK.BodyReading]
1003
+ public func dietaryQuantities(in interval: Foundation.DateInterval) async throws -> [TerraSDK.DietaryQuantity]
1004
+ public func hydration(in interval: Foundation.DateInterval) async throws -> [TerraSDK.HydrationSample]
1005
+ public func menstruationFlow(in interval: Foundation.DateInterval) async throws -> [TerraSDK.MenstruationFlowDay]
1006
+ public func athleteProfile() async throws -> TerraSDK.AthleteProfile?
1007
+ public func intradaySamples(in interval: Foundation.DateInterval) async throws -> [TerraSDK.IntradaySample]
1008
+ public func menstrualEvents(in interval: Foundation.DateInterval) async throws -> [TerraSDK.MenstrualEvent]
1009
+ public func healthObservations(in interval: Foundation.DateInterval) async throws -> [TerraSDK.HealthObservation]
1010
+ public func workoutIntensity(inside workouts: [TerraSDK.Workout]) async throws -> [TerraSDK.WorkoutIntensitySample]
1011
+ public func workoutRoutes(of workouts: [TerraSDK.Workout]) async throws -> [TerraSDK.WorkoutRoute]
1012
+ }
1013
+ public struct KeychainDeviceStore : TerraSDK.DeviceStore {
1014
+ public var storageDomain: Swift.String {
1015
+ get
1016
+ }
1017
+ @_spi(Testing) public static func keychainReads(for domain: Swift.String) -> Swift.Int
1018
+ public func linkDiagnostics(source: TerraSDK.Source) throws -> TerraSDK.LinkDiagnostics?
1019
+ public func saveLastDelivery(_ date: Foundation.Date, source: TerraSDK.Source, ifGeneration generation: Swift.Int) throws
1020
+ public func loadDiagnosticsSends() throws -> [TerraSDK.DiagnosticsSend]
1021
+ public func reserveDiagnosticsSend(_ send: TerraSDK.DiagnosticsSend, notWithin interval: Foundation.TimeInterval, automaticLimit limit: Swift.Int?) throws -> Swift.Bool
1022
+ public func releaseDiagnosticsSend(_ send: TerraSDK.DiagnosticsSend) throws
1023
+ public func loadObservationAnchor(key: Swift.String) throws -> Foundation.Data?
1024
+ public func saveObservationAnchor(_ anchor: Foundation.Data, key: Swift.String) throws
1025
+ public func linkGeneration(source: TerraSDK.Source) -> Swift.Int
1026
+ public func loadDeferredObservations(source: TerraSDK.Source) throws -> [TerraSDK.DataCategory : TerraSDK.DeferredWake]
1027
+ @discardableResult
1028
+ public func deferObservation(_ category: TerraSDK.DataCategory, source: TerraSDK.Source, generation: Swift.Int) throws -> TerraSDK.DeferredWake
1029
+ public func retireObservation(_ category: TerraSDK.DataCategory, source: TerraSDK.Source, ifStillAt wake: TerraSDK.DeferredWake) throws
1030
+ public func claimWakeSync(_ category: TerraSDK.DataCategory, source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int) -> Swift.Bool
1031
+ public func takeWakesOwed(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int) -> Swift.Set<TerraSDK.DataCategory>
1032
+ public func releaseWakeSync(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int) -> Swift.Set<TerraSDK.DataCategory>
1033
+ public func claimSync(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int) -> Swift.Bool
1034
+ public func releaseSync(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int)
1035
+ public func beginRetry(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int)
1036
+ public func endRetry(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int)
1037
+ public func lastWakeSync(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType) -> Foundation.Date?
1038
+ public func noteWakeSync(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, at time: Foundation.Date)
1039
+ public func pausedUntil(source: TerraSDK.Source) -> Foundation.Date?
1040
+ public func pause(source: TerraSDK.Source, until: Foundation.Date)
1041
+ public func claimLink(source: TerraSDK.Source) -> Swift.Bool
1042
+ public func releaseLink(source: TerraSDK.Source)
1043
+ public init(domain: Swift.String = "co.tryterra.sdk")
1044
+ public func loadConnection(source: TerraSDK.Source) throws -> TerraSDK.StoredConnection?
1045
+ public func completeLink(_ connection: TerraSDK.StoredConnection) throws
1046
+ @discardableResult
1047
+ public func updateConnection(_ connection: TerraSDK.StoredConnection, ifGeneration generation: Swift.Int) throws -> Swift.Bool
1048
+ @discardableResult
1049
+ public func endLink(source: TerraSDK.Source, ifGeneration generation: Swift.Int?, owing revocation: TerraSDK.PendingRevocation?) throws -> Swift.Int?
1050
+ public func loadProviderUserID() throws -> Swift.String?
1051
+ public func saveProviderUserID(_ id: Swift.String) throws
1052
+ public func activeDevID() throws -> Swift.String?
1053
+ @discardableResult
1054
+ public func claimDevID(_ devID: Swift.String) throws -> Swift.Bool
1055
+ public func loadRequestedAccess() throws -> TerraSDK.HealthAccess
1056
+ @discardableResult
1057
+ public func recordRequestedAccess(_ access: TerraSDK.HealthAccess) throws -> TerraSDK.HealthAccess
1058
+ public func loadSyncedThrough(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType) throws -> Foundation.Date?
1059
+ public func saveSyncedThrough(_ date: Foundation.Date, source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, ifGeneration generation: Swift.Int) throws
1060
+ public func loadSyncedFrom(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType) throws -> Foundation.Date?
1061
+ public func saveSyncedFrom(_ date: Foundation.Date, source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, ifGeneration generation: Swift.Int) throws
1062
+ public func loadServerBackfills(source: TerraSDK.Source) throws -> [TerraSDK.StoredBackfillRequest]
1063
+ @discardableResult
1064
+ public func upsertServerBackfill(_ request: TerraSDK.StoredBackfillRequest, source: TerraSDK.Source, ifGeneration generation: Swift.Int) throws -> Swift.Bool
1065
+ public func removeServerBackfill(reference: Swift.String, source: TerraSDK.Source, ifGeneration generation: Swift.Int) throws
1066
+ public func loadPendingRevocations(source: TerraSDK.Source) throws -> [TerraSDK.PendingRevocation]
1067
+ public func claimRevocations(source: TerraSDK.Source) -> Swift.Bool
1068
+ @discardableResult
1069
+ public func releaseRevocations(source: TerraSDK.Source) -> Swift.Bool
1070
+ public func savePendingRevocation(_ revocation: TerraSDK.PendingRevocation) throws
1071
+ public func removePendingRevocation(source: TerraSDK.Source, generation: Swift.Int) throws
1072
+ public func beginLink(source: TerraSDK.Source, owing revocation: TerraSDK.PendingRevocation?) throws -> TerraSDK.LinkTransition
1073
+ public func loadSyncAnchor(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType) throws -> Foundation.Data?
1074
+ public func saveSyncAnchor(_ anchor: Foundation.Data, source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, ifGeneration generation: Swift.Int) throws
1075
+ @_spi(Testing) public func forgetSyncState(source: TerraSDK.Source) throws
1076
+ }
1077
+ public struct MenstruationFlowDay : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1078
+ public enum Flow : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
1079
+ case unspecified
1080
+ case light
1081
+ case medium
1082
+ case heavy
1083
+ case noFlow
1084
+ public init?(rawValue: Swift.String)
1085
+ public typealias AllCases = [TerraSDK.MenstruationFlowDay.Flow]
1086
+ public typealias RawValue = Swift.String
1087
+ nonisolated public static var allCases: [TerraSDK.MenstruationFlowDay.Flow] {
1088
+ get
1089
+ }
1090
+ public var rawValue: Swift.String {
1091
+ get
1092
+ }
1093
+ }
1094
+ public let id: Foundation.UUID
1095
+ public let interval: Foundation.DateInterval
1096
+ public let flow: TerraSDK.MenstruationFlowDay.Flow
1097
+ public let cycleStart: Swift.Bool
1098
+ public let source: TerraSDK.SampleSource
1099
+ public let userEntered: Swift.Bool
1100
+ public let timeZone: Foundation.TimeZone?
1101
+ public init(id: Foundation.UUID, interval: Foundation.DateInterval, flow: TerraSDK.MenstruationFlowDay.Flow, cycleStart: Swift.Bool, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil)
1102
+ public static func == (a: TerraSDK.MenstruationFlowDay, b: TerraSDK.MenstruationFlowDay) -> Swift.Bool
1103
+ public typealias ID = Foundation.UUID
1104
+ }
1105
+ public struct MenstrualEvent : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1106
+ public enum Kind : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
1107
+ case intermenstrualBleeding
1108
+ case ovulationTest
1109
+ case cervicalMucus
1110
+ case sexualActivity
1111
+ case pregnancyTest
1112
+ case progesteroneTest
1113
+ case pregnancy
1114
+ case lactation
1115
+ case contraceptive
1116
+ case persistentIntermenstrualBleeding
1117
+ case infrequentCycles
1118
+ case irregularCycles
1119
+ case prolongedPeriods
1120
+ case bleedingDuringPregnancy
1121
+ case bleedingAfterPregnancy
1122
+ public var values: [Swift.String] {
1123
+ get
1124
+ }
1125
+ public init?(rawValue: Swift.String)
1126
+ public typealias AllCases = [TerraSDK.MenstrualEvent.Kind]
1127
+ public typealias RawValue = Swift.String
1128
+ nonisolated public static var allCases: [TerraSDK.MenstrualEvent.Kind] {
1129
+ get
1130
+ }
1131
+ public var rawValue: Swift.String {
1132
+ get
1133
+ }
1134
+ }
1135
+ public let id: Foundation.UUID
1136
+ public let kind: TerraSDK.MenstrualEvent.Kind
1137
+ public let instant: Foundation.Date
1138
+ public let value: Swift.String?
1139
+ public let source: TerraSDK.SampleSource
1140
+ public let userEntered: Swift.Bool
1141
+ public let timeZone: Foundation.TimeZone?
1142
+ public let storeIdentifier: Swift.String
1143
+ public init(id: Foundation.UUID, kind: TerraSDK.MenstrualEvent.Kind, storeIdentifier: Swift.String, instant: Foundation.Date, value: Swift.String? = nil, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil)
1144
+ public static func == (a: TerraSDK.MenstrualEvent, b: TerraSDK.MenstrualEvent) -> Swift.Bool
1145
+ public typealias ID = Foundation.UUID
1146
+ }
1147
+ public struct DietaryQuantity : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1148
+ public let id: Foundation.UUID
1149
+ public let nutrient: TerraSDK.Nutrient
1150
+ public let value: Swift.Double
1151
+ public let interval: Foundation.DateInterval
1152
+ public let mealType: TerraSDK.MealType
1153
+ public let name: Swift.String?
1154
+ public let foodCorrelationID: Foundation.UUID?
1155
+ public let source: TerraSDK.SampleSource
1156
+ public let userEntered: Swift.Bool
1157
+ public let timeZone: Foundation.TimeZone?
1158
+ public init(id: Foundation.UUID, nutrient: TerraSDK.Nutrient, value: Swift.Double, interval: Foundation.DateInterval, mealType: TerraSDK.MealType = .unknown, name: Swift.String? = nil, foodCorrelationID: Foundation.UUID? = nil, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil)
1159
+ public static func == (a: TerraSDK.DietaryQuantity, b: TerraSDK.DietaryQuantity) -> Swift.Bool
1160
+ public typealias ID = Foundation.UUID
1161
+ }
1162
+ public enum MealType : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
1163
+ case breakfast
1164
+ case lunch
1165
+ case dinner
1166
+ case snack
1167
+ case unknown
1168
+ public init?(rawValue: Swift.String)
1169
+ public typealias AllCases = [TerraSDK.MealType]
1170
+ public typealias RawValue = Swift.String
1171
+ nonisolated public static var allCases: [TerraSDK.MealType] {
1172
+ get
1173
+ }
1174
+ public var rawValue: Swift.String {
1175
+ get
1176
+ }
1177
+ }
1178
+ public enum Nutrient : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
1179
+ case energyConsumed
1180
+ case protein
1181
+ case carbohydrates
1182
+ case fatTotal
1183
+ case fatSaturated
1184
+ case fatMonounsaturated
1185
+ case fatPolyunsaturated
1186
+ case sugar
1187
+ case fiber
1188
+ case cholesterol
1189
+ case sodium
1190
+ case potassium
1191
+ case calcium
1192
+ case iron
1193
+ case magnesium
1194
+ case zinc
1195
+ case phosphorus
1196
+ case iodine
1197
+ case manganese
1198
+ case molybdenum
1199
+ case selenium
1200
+ case copper
1201
+ case chromium
1202
+ case chloride
1203
+ case caffeine
1204
+ case vitaminA
1205
+ case vitaminC
1206
+ case vitaminD
1207
+ case vitaminE
1208
+ case vitaminK
1209
+ case vitaminB6
1210
+ case vitaminB12
1211
+ case thiamin
1212
+ case riboflavin
1213
+ case niacin
1214
+ case folate
1215
+ case biotin
1216
+ case pantothenicAcid
1217
+ public var unit: Swift.String {
1218
+ get
1219
+ }
1220
+ public init?(rawValue: Swift.String)
1221
+ public typealias AllCases = [TerraSDK.Nutrient]
1222
+ public typealias RawValue = Swift.String
1223
+ nonisolated public static var allCases: [TerraSDK.Nutrient] {
1224
+ get
1225
+ }
1226
+ public var rawValue: Swift.String {
1227
+ get
1228
+ }
1229
+ }
1230
+ public struct HydrationSample : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1231
+ public let id: Foundation.UUID
1232
+ public let interval: Foundation.DateInterval
1233
+ public let millilitres: Swift.Double
1234
+ public let source: TerraSDK.SampleSource
1235
+ public let userEntered: Swift.Bool
1236
+ public let timeZone: Foundation.TimeZone?
1237
+ public init(id: Foundation.UUID, interval: Foundation.DateInterval, millilitres: Swift.Double, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil)
1238
+ public static func == (a: TerraSDK.HydrationSample, b: TerraSDK.HydrationSample) -> Swift.Bool
1239
+ public typealias ID = Foundation.UUID
1240
+ }
1241
+ public struct PlannedWorkout : Swift.Sendable, Swift.Equatable, Swift.Identifiable, Swift.Decodable {
1242
+ public let id: Swift.String
1243
+ public let plannedOn: Foundation.DateComponents
1244
+ public let activity: TerraSDK.WorkoutActivity
1245
+ public let title: Swift.String?
1246
+ public let completedAt: Foundation.Date?
1247
+ public init(id: Swift.String, plannedOn: Foundation.DateComponents, activity: TerraSDK.WorkoutActivity, title: Swift.String? = nil, completedAt: Foundation.Date? = nil)
1248
+ public init(from decoder: any Swift.Decoder) throws
1249
+ public static func == (a: TerraSDK.PlannedWorkout, b: TerraSDK.PlannedWorkout) -> Swift.Bool
1250
+ public typealias ID = Swift.String
1251
+ }
1252
+ public struct SampleSource : Swift.Sendable, Swift.Equatable, Swift.Hashable {
1253
+ public let name: Swift.String
1254
+ public let bundleID: Swift.String
1255
+ public let productType: Swift.String?
1256
+ public let deviceType: TerraSDK.DeviceType?
1257
+ public init(name: Swift.String, bundleID: Swift.String, productType: Swift.String? = nil, deviceType: TerraSDK.DeviceType? = nil)
1258
+ public static func == (a: TerraSDK.SampleSource, b: TerraSDK.SampleSource) -> Swift.Bool
1259
+ public func hash(into hasher: inout Swift.Hasher)
1260
+ public var hashValue: Swift.Int {
1261
+ get
1262
+ }
1263
+ }
1264
+ public enum DeviceType : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable {
1265
+ case phone
1266
+ case scale
1267
+ case sensor
1268
+ public init?(rawValue: Swift.String)
1269
+ public typealias AllCases = [TerraSDK.DeviceType]
1270
+ public typealias RawValue = Swift.String
1271
+ nonisolated public static var allCases: [TerraSDK.DeviceType] {
1272
+ get
1273
+ }
1274
+ public var rawValue: Swift.String {
1275
+ get
1276
+ }
1277
+ }
1278
+ public enum MotionContext : Swift.String, Swift.Sendable, Swift.Equatable {
1279
+ case unknown
1280
+ case sedentary
1281
+ case active
1282
+ public init?(rawValue: Swift.String)
1283
+ public typealias RawValue = Swift.String
1284
+ public var rawValue: Swift.String {
1285
+ get
1286
+ }
1287
+ }
1288
+ public struct HeartRateSample : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1289
+ public let id: Foundation.UUID
1290
+ public let time: Foundation.Date
1291
+ public let beatsPerMinute: Swift.Double
1292
+ public let source: TerraSDK.SampleSource
1293
+ public let motionContext: TerraSDK.MotionContext?
1294
+ public let userEntered: Swift.Bool
1295
+ public let timeZone: Foundation.TimeZone?
1296
+ public init(id: Foundation.UUID, time: Foundation.Date, beatsPerMinute: Swift.Double, source: TerraSDK.SampleSource, motionContext: TerraSDK.MotionContext? = nil, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil)
1297
+ public static func == (a: TerraSDK.HeartRateSample, b: TerraSDK.HeartRateSample) -> Swift.Bool
1298
+ public typealias ID = Foundation.UUID
1299
+ }
1300
+ public struct StepCount : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1301
+ public let interval: Foundation.DateInterval
1302
+ public let steps: Swift.Int
1303
+ public let source: TerraSDK.SampleSource
1304
+ public let userEntered: Swift.Bool
1305
+ public let uuid: Foundation.UUID?
1306
+ public let timeZone: Foundation.TimeZone?
1307
+ public var id: Swift.String {
1308
+ get
1309
+ }
1310
+ public init(interval: Foundation.DateInterval, steps: Swift.Int, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil, uuid: Foundation.UUID? = nil)
1311
+ public static func == (a: TerraSDK.StepCount, b: TerraSDK.StepCount) -> Swift.Bool
1312
+ public typealias ID = Swift.String
1313
+ }
1314
+ public struct RestingHeartRateSample : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1315
+ public let id: Foundation.UUID
1316
+ public let interval: Foundation.DateInterval
1317
+ public let beatsPerMinute: Swift.Double
1318
+ public let source: TerraSDK.SampleSource
1319
+ public let userEntered: Swift.Bool
1320
+ public let timeZone: Foundation.TimeZone?
1321
+ public init(id: Foundation.UUID, interval: Foundation.DateInterval, beatsPerMinute: Swift.Double, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil)
1322
+ public static func == (a: TerraSDK.RestingHeartRateSample, b: TerraSDK.RestingHeartRateSample) -> Swift.Bool
1323
+ public typealias ID = Foundation.UUID
1324
+ }
1325
+ public struct SleepSegment : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1326
+ public let id: Foundation.UUID
1327
+ public let interval: Foundation.DateInterval
1328
+ public let stage: TerraSDK.SleepStage
1329
+ public let source: TerraSDK.SampleSource
1330
+ public let userEntered: Swift.Bool
1331
+ public let timeZone: Foundation.TimeZone?
1332
+ public init(id: Foundation.UUID, interval: Foundation.DateInterval, stage: TerraSDK.SleepStage, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil)
1333
+ public static func == (a: TerraSDK.SleepSegment, b: TerraSDK.SleepSegment) -> Swift.Bool
1334
+ public typealias ID = Foundation.UUID
1335
+ }
1336
+ public enum SleepStage : Swift.Sendable, Swift.Equatable {
1337
+ case inBed
1338
+ case awake
1339
+ case asleep
1340
+ case light
1341
+ case deep
1342
+ case rem
1343
+ case unknown(Swift.String)
1344
+ public static func == (a: TerraSDK.SleepStage, b: TerraSDK.SleepStage) -> Swift.Bool
1345
+ }
1346
+ public struct Workout : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1347
+ public let id: Foundation.UUID
1348
+ public let interval: Foundation.DateInterval
1349
+ public let activity: TerraSDK.WorkoutActivity
1350
+ public let activityTypeCode: Swift.Int
1351
+ public let indoor: Swift.Bool
1352
+ public let activeEnergyKilocalories: Swift.Double?
1353
+ public let distanceMeters: Swift.Double?
1354
+ public let source: TerraSDK.SampleSource
1355
+ public let userEntered: Swift.Bool
1356
+ public let timeZone: Foundation.TimeZone?
1357
+ public let stats: TerraSDK.WorkoutStats?
1358
+ public let events: [TerraSDK.WorkoutEvent]
1359
+ public init(id: Foundation.UUID, interval: Foundation.DateInterval, activity: TerraSDK.WorkoutActivity, activityTypeCode: Swift.Int, indoor: Swift.Bool = false, activeEnergyKilocalories: Swift.Double? = nil, distanceMeters: Swift.Double? = nil, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil, stats: TerraSDK.WorkoutStats? = nil, events: [TerraSDK.WorkoutEvent] = [])
1360
+ public static func == (a: TerraSDK.Workout, b: TerraSDK.Workout) -> Swift.Bool
1361
+ public typealias ID = Foundation.UUID
1362
+ }
1363
+ public struct WorkoutStats : Swift.Sendable, Swift.Equatable {
1364
+ public let steps: Swift.Int?
1365
+ public let basalEnergyKilocalories: Swift.Double?
1366
+ public let swimmingStrokes: Swift.Int?
1367
+ public let swimmingLaps: Swift.Int?
1368
+ public let elevationGainMeters: Swift.Double?
1369
+ public var isEmpty: Swift.Bool {
1370
+ get
1371
+ }
1372
+ public init(steps: Swift.Int? = nil, basalEnergyKilocalories: Swift.Double? = nil, swimmingStrokes: Swift.Int? = nil, swimmingLaps: Swift.Int? = nil, elevationGainMeters: Swift.Double? = nil)
1373
+ public static func == (a: TerraSDK.WorkoutStats, b: TerraSDK.WorkoutStats) -> Swift.Bool
1374
+ }
1375
+ public struct WorkoutEvent : Swift.Sendable, Swift.Equatable {
1376
+ public enum Kind : Swift.String, Swift.Sendable, Swift.CaseIterable {
1377
+ case lap
1378
+ case segment
1379
+ case pause
1380
+ case resume
1381
+ case marker
1382
+ public init?(rawValue: Swift.String)
1383
+ public typealias AllCases = [TerraSDK.WorkoutEvent.Kind]
1384
+ public typealias RawValue = Swift.String
1385
+ nonisolated public static var allCases: [TerraSDK.WorkoutEvent.Kind] {
1386
+ get
1387
+ }
1388
+ public var rawValue: Swift.String {
1389
+ get
1390
+ }
1391
+ }
1392
+ public let kind: TerraSDK.WorkoutEvent.Kind
1393
+ public let interval: Foundation.DateInterval
1394
+ public init(kind: TerraSDK.WorkoutEvent.Kind, interval: Foundation.DateInterval)
1395
+ public static func == (a: TerraSDK.WorkoutEvent, b: TerraSDK.WorkoutEvent) -> Swift.Bool
1396
+ }
1397
+ public struct WorkoutIntensitySample : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1398
+ public enum Kind : Swift.String, Swift.Sendable, Swift.CaseIterable {
1399
+ case speed
1400
+ case power
1401
+ case cadence
1402
+ public var unit: Swift.String {
1403
+ get
1404
+ }
1405
+ public init?(rawValue: Swift.String)
1406
+ public typealias AllCases = [TerraSDK.WorkoutIntensitySample.Kind]
1407
+ public typealias RawValue = Swift.String
1408
+ nonisolated public static var allCases: [TerraSDK.WorkoutIntensitySample.Kind] {
1409
+ get
1410
+ }
1411
+ public var rawValue: Swift.String {
1412
+ get
1413
+ }
1414
+ }
1415
+ public let id: Foundation.UUID
1416
+ public let kind: TerraSDK.WorkoutIntensitySample.Kind
1417
+ public let workoutId: Foundation.UUID
1418
+ public let interval: Foundation.DateInterval
1419
+ public let value: Swift.Double
1420
+ public let source: TerraSDK.SampleSource
1421
+ public let userEntered: Swift.Bool
1422
+ public let timeZone: Foundation.TimeZone?
1423
+ public init(id: Foundation.UUID, kind: TerraSDK.WorkoutIntensitySample.Kind, workoutId: Foundation.UUID, interval: Foundation.DateInterval, value: Swift.Double, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil)
1424
+ public static func == (a: TerraSDK.WorkoutIntensitySample, b: TerraSDK.WorkoutIntensitySample) -> Swift.Bool
1425
+ public typealias ID = Foundation.UUID
1426
+ }
1427
+ public enum WorkoutActivity : Swift.Sendable, Swift.Hashable {
1428
+ case running
1429
+ case walking
1430
+ case cycling
1431
+ case swimming
1432
+ case strengthTraining
1433
+ case other(Swift.String)
1434
+ public static func == (a: TerraSDK.WorkoutActivity, b: TerraSDK.WorkoutActivity) -> Swift.Bool
1435
+ public func hash(into hasher: inout Swift.Hasher)
1436
+ public var hashValue: Swift.Int {
1437
+ get
1438
+ }
1439
+ }
1440
+ public struct DayTotal : Swift.Sendable, Swift.Equatable {
1441
+ public enum Metric : Swift.String, Swift.Sendable, Swift.CaseIterable {
1442
+ case steps
1443
+ case distanceWalkingRunning
1444
+ case distanceCycling
1445
+ case distanceSwimming
1446
+ case distanceWheelchair
1447
+ case activeEnergyBurned
1448
+ case basalEnergyBurned
1449
+ case flightsClimbed
1450
+ case swimmingStrokeCount
1451
+ case appleExerciseTime
1452
+ case appleMoveTime
1453
+ case appleStandTime
1454
+ case appleStandHours
1455
+ public var intradayKind: TerraSDK.IntradaySample.Kind? {
1456
+ get
1457
+ }
1458
+ public var unit: Swift.String {
1459
+ get
1460
+ }
1461
+ public init?(rawValue: Swift.String)
1462
+ public typealias AllCases = [TerraSDK.DayTotal.Metric]
1463
+ public typealias RawValue = Swift.String
1464
+ nonisolated public static var allCases: [TerraSDK.DayTotal.Metric] {
1465
+ get
1466
+ }
1467
+ public var rawValue: Swift.String {
1468
+ get
1469
+ }
1470
+ }
1471
+ public let metric: TerraSDK.DayTotal.Metric
1472
+ public let interval: Foundation.DateInterval
1473
+ public let value: Swift.Double
1474
+ public let unit: Swift.String
1475
+ public let timeZone: Foundation.TimeZone?
1476
+ public init(metric: TerraSDK.DayTotal.Metric, interval: Foundation.DateInterval, value: Swift.Double, unit: Swift.String, timeZone: Foundation.TimeZone? = nil)
1477
+ public static func == (a: TerraSDK.DayTotal, b: TerraSDK.DayTotal) -> Swift.Bool
1478
+ }
1479
+ public struct DayTotalPolicy : Swift.Sendable, Swift.Equatable {
1480
+ public var excludeUserEntered: Swift.Bool
1481
+ public init(excludeUserEntered: Swift.Bool = false)
1482
+ public static let `default`: TerraSDK.DayTotalPolicy
1483
+ public static func == (a: TerraSDK.DayTotalPolicy, b: TerraSDK.DayTotalPolicy) -> Swift.Bool
1484
+ }
1485
+ public struct IntradaySample : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1486
+ public enum Kind : Swift.String, Swift.Sendable, Swift.CaseIterable {
1487
+ case activeEnergy
1488
+ case basalEnergy
1489
+ case distance
1490
+ case floorsClimbed
1491
+ public var unit: Swift.String {
1492
+ get
1493
+ }
1494
+ public init?(rawValue: Swift.String)
1495
+ public typealias AllCases = [TerraSDK.IntradaySample.Kind]
1496
+ public typealias RawValue = Swift.String
1497
+ nonisolated public static var allCases: [TerraSDK.IntradaySample.Kind] {
1498
+ get
1499
+ }
1500
+ public var rawValue: Swift.String {
1501
+ get
1502
+ }
1503
+ }
1504
+ public let id: Foundation.UUID
1505
+ public let kind: TerraSDK.IntradaySample.Kind
1506
+ public let interval: Foundation.DateInterval
1507
+ public let value: Swift.Double
1508
+ public let source: TerraSDK.SampleSource
1509
+ public let userEntered: Swift.Bool
1510
+ public let timeZone: Foundation.TimeZone?
1511
+ public init(id: Foundation.UUID, kind: TerraSDK.IntradaySample.Kind, interval: Foundation.DateInterval, value: Swift.Double, source: TerraSDK.SampleSource, userEntered: Swift.Bool = false, timeZone: Foundation.TimeZone? = nil)
1512
+ public static func == (a: TerraSDK.IntradaySample, b: TerraSDK.IntradaySample) -> Swift.Bool
1513
+ public typealias ID = Foundation.UUID
1514
+ }
1515
+ public struct WorkoutRoute : Swift.Sendable, Swift.Equatable, Swift.Identifiable {
1516
+ public let id: Foundation.UUID
1517
+ public let workoutId: Foundation.UUID
1518
+ public let interval: Foundation.DateInterval
1519
+ public let points: [TerraSDK.RoutePoint]
1520
+ public let source: TerraSDK.SampleSource
1521
+ public let timeZone: Foundation.TimeZone?
1522
+ public init(id: Foundation.UUID, workoutId: Foundation.UUID, interval: Foundation.DateInterval, points: [TerraSDK.RoutePoint], source: TerraSDK.SampleSource, timeZone: Foundation.TimeZone? = nil)
1523
+ public static let minimumSecondsBetweenPoints: Swift.Double
1524
+ public static let maximumPoints: Swift.Int
1525
+ public static func withinCaps(_ points: [TerraSDK.RoutePoint]) -> [TerraSDK.RoutePoint]
1526
+ public static func == (a: TerraSDK.WorkoutRoute, b: TerraSDK.WorkoutRoute) -> Swift.Bool
1527
+ public typealias ID = Foundation.UUID
1528
+ }
1529
+ public struct RoutePoint : Swift.Sendable, Swift.Equatable, Swift.Hashable {
1530
+ public let time: Foundation.Date
1531
+ public let latitude: Swift.Double
1532
+ public let longitude: Swift.Double
1533
+ public init(time: Foundation.Date, latitude: Swift.Double, longitude: Swift.Double)
1534
+ public static func == (a: TerraSDK.RoutePoint, b: TerraSDK.RoutePoint) -> Swift.Bool
1535
+ public func hash(into hasher: inout Swift.Hasher)
1536
+ public var hashValue: Swift.Int {
1537
+ get
1538
+ }
1539
+ }
1540
+ public struct LinkTransition : Swift.Sendable, Swift.Hashable {
1541
+ public let opened: Swift.Int
1542
+ public let ended: Swift.Int?
1543
+ public init(opened: Swift.Int, ended: Swift.Int?)
1544
+ public static func == (a: TerraSDK.LinkTransition, b: TerraSDK.LinkTransition) -> Swift.Bool
1545
+ public func hash(into hasher: inout Swift.Hasher)
1546
+ public var hashValue: Swift.Int {
1547
+ get
1548
+ }
1549
+ }
1550
+ public struct StoredConnection : Swift.Sendable, Swift.Equatable, Swift.Codable {
1551
+ public let source: TerraSDK.Source
1552
+ public let userID: Swift.String
1553
+ public var providerUserID: Swift.String
1554
+ public var generation: Swift.Int
1555
+ public var devID: Swift.String
1556
+ public var revokedAt: Foundation.Date?
1557
+ public var dayZones: [TerraSDK.DayZoneStretch]
1558
+ public var endUser: Swift.String?
1559
+ public init(source: TerraSDK.Source, userID: Swift.String, providerUserID: Swift.String = "", generation: Swift.Int = 0, devID: Swift.String = "", revokedAt: Foundation.Date? = nil, dayZones: [TerraSDK.DayZoneStretch] = [], endUser: Swift.String? = nil)
1560
+ public init(from decoder: any Swift.Decoder) throws
1561
+ public static func == (a: TerraSDK.StoredConnection, b: TerraSDK.StoredConnection) -> Swift.Bool
1562
+ public func encode(to encoder: any Swift.Encoder) throws
1563
+ }
1564
+ public struct DayZoneStretch : Swift.Sendable, Swift.Equatable, Swift.Codable {
1565
+ public let start: Foundation.Date
1566
+ public let end: Foundation.Date
1567
+ public let zone: Swift.String
1568
+ public init(start: Foundation.Date, end: Foundation.Date, zone: Swift.String)
1569
+ public static let limit: Swift.Int
1570
+ public static func == (a: TerraSDK.DayZoneStretch, b: TerraSDK.DayZoneStretch) -> Swift.Bool
1571
+ public func encode(to encoder: any Swift.Encoder) throws
1572
+ public init(from decoder: any Swift.Decoder) throws
1573
+ }
1574
+ public struct StoredBackfillRequest : Swift.Sendable, Swift.Equatable, Swift.Codable {
1575
+ public let reference: Swift.String
1576
+ public let dataType: TerraSDK.UploadDataType
1577
+ public let start: Foundation.Date
1578
+ public let end: Foundation.Date
1579
+ public var servedThrough: Foundation.Date
1580
+ public var failedRuns: Swift.Int
1581
+ public let receivedAt: Foundation.Date
1582
+ public static let queueLimit: Swift.Int
1583
+ public init(reference: Swift.String, dataType: TerraSDK.UploadDataType, start: Foundation.Date, end: Foundation.Date, servedThrough: Foundation.Date? = nil, failedRuns: Swift.Int = 0, receivedAt: Foundation.Date)
1584
+ public static func == (a: TerraSDK.StoredBackfillRequest, b: TerraSDK.StoredBackfillRequest) -> Swift.Bool
1585
+ public func encode(to encoder: any Swift.Encoder) throws
1586
+ public init(from decoder: any Swift.Decoder) throws
1587
+ }
1588
+ public struct PendingRevocation : Swift.Sendable, Swift.Equatable, Swift.Codable {
1589
+ public let source: TerraSDK.Source
1590
+ public let providerUserID: Swift.String
1591
+ public let generation: Swift.Int
1592
+ public var attempts: Swift.Int
1593
+ public let deferredAt: Foundation.Date
1594
+ public var isDeliverable: Swift.Bool {
1595
+ get
1596
+ }
1597
+ public init(source: TerraSDK.Source, providerUserID: Swift.String, generation: Swift.Int, attempts: Swift.Int = 0, deferredAt: Foundation.Date)
1598
+ public static func == (a: TerraSDK.PendingRevocation, b: TerraSDK.PendingRevocation) -> Swift.Bool
1599
+ public func encode(to encoder: any Swift.Encoder) throws
1600
+ public init(from decoder: any Swift.Decoder) throws
1601
+ }
1602
+ public struct LinkDiagnostics : Swift.Sendable, Swift.Equatable {
1603
+ public let generation: Swift.Int
1604
+ public let lastDelivery: Foundation.Date?
1605
+ public let isRetrying: Swift.Bool
1606
+ public let isRevoked: Swift.Bool
1607
+ public init(generation: Swift.Int, lastDelivery: Foundation.Date?, isRetrying: Swift.Bool, isRevoked: Swift.Bool)
1608
+ public static func == (a: TerraSDK.LinkDiagnostics, b: TerraSDK.LinkDiagnostics) -> Swift.Bool
1609
+ }
1610
+ public protocol DeviceStore : Swift.Sendable {
1611
+ func loadConnection(source: TerraSDK.Source) throws -> TerraSDK.StoredConnection?
1612
+ var storageDomain: Swift.String { get }
1613
+ func activeDevID() throws -> Swift.String?
1614
+ @discardableResult
1615
+ func claimDevID(_ devID: Swift.String) throws -> Swift.Bool
1616
+ func loadRequestedAccess() throws -> TerraSDK.HealthAccess
1617
+ @discardableResult
1618
+ func recordRequestedAccess(_ access: TerraSDK.HealthAccess) throws -> TerraSDK.HealthAccess
1619
+ func loadProviderUserID() throws -> Swift.String?
1620
+ func saveProviderUserID(_ id: Swift.String) throws
1621
+ func loadSyncedThrough(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType) throws -> Foundation.Date?
1622
+ func saveSyncedThrough(_ date: Foundation.Date, source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, ifGeneration generation: Swift.Int) throws
1623
+ func loadSyncedFrom(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType) throws -> Foundation.Date?
1624
+ func saveSyncedFrom(_ date: Foundation.Date, source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, ifGeneration generation: Swift.Int) throws
1625
+ func loadServerBackfills(source: TerraSDK.Source) throws -> [TerraSDK.StoredBackfillRequest]
1626
+ @discardableResult
1627
+ func upsertServerBackfill(_ request: TerraSDK.StoredBackfillRequest, source: TerraSDK.Source, ifGeneration generation: Swift.Int) throws -> Swift.Bool
1628
+ func removeServerBackfill(reference: Swift.String, source: TerraSDK.Source, ifGeneration generation: Swift.Int) throws
1629
+ func beginLink(source: TerraSDK.Source, owing revocation: TerraSDK.PendingRevocation?) throws -> TerraSDK.LinkTransition
1630
+ func completeLink(_ connection: TerraSDK.StoredConnection) throws
1631
+ @discardableResult
1632
+ func updateConnection(_ connection: TerraSDK.StoredConnection, ifGeneration generation: Swift.Int) throws -> Swift.Bool
1633
+ @discardableResult
1634
+ func endLink(source: TerraSDK.Source, ifGeneration generation: Swift.Int?, owing revocation: TerraSDK.PendingRevocation?) throws -> Swift.Int?
1635
+ func claimSync(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int) -> Swift.Bool
1636
+ func releaseSync(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int)
1637
+ func beginRetry(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int)
1638
+ func endRetry(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int)
1639
+ func lastWakeSync(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType) -> Foundation.Date?
1640
+ func noteWakeSync(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, at time: Foundation.Date)
1641
+ func pausedUntil(source: TerraSDK.Source) -> Foundation.Date?
1642
+ func pause(source: TerraSDK.Source, until: Foundation.Date)
1643
+ func linkDiagnostics(source: TerraSDK.Source) throws -> TerraSDK.LinkDiagnostics?
1644
+ func saveLastDelivery(_ date: Foundation.Date, source: TerraSDK.Source, ifGeneration generation: Swift.Int) throws
1645
+ func loadDiagnosticsSends() throws -> [TerraSDK.DiagnosticsSend]
1646
+ func reserveDiagnosticsSend(_ send: TerraSDK.DiagnosticsSend, notWithin interval: Foundation.TimeInterval, automaticLimit limit: Swift.Int?) throws -> Swift.Bool
1647
+ func releaseDiagnosticsSend(_ send: TerraSDK.DiagnosticsSend) throws
1648
+ func loadObservationAnchor(key: Swift.String) throws -> Foundation.Data?
1649
+ func saveObservationAnchor(_ anchor: Foundation.Data, key: Swift.String) throws
1650
+ func linkGeneration(source: TerraSDK.Source) -> Swift.Int
1651
+ func claimWakeSync(_ category: TerraSDK.DataCategory, source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int) -> Swift.Bool
1652
+ func takeWakesOwed(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int) -> Swift.Set<TerraSDK.DataCategory>
1653
+ func releaseWakeSync(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, generation: Swift.Int) -> Swift.Set<TerraSDK.DataCategory>
1654
+ func loadDeferredObservations(source: TerraSDK.Source) throws -> [TerraSDK.DataCategory : TerraSDK.DeferredWake]
1655
+ @discardableResult
1656
+ func deferObservation(_ category: TerraSDK.DataCategory, source: TerraSDK.Source, generation: Swift.Int) throws -> TerraSDK.DeferredWake
1657
+ func retireObservation(_ category: TerraSDK.DataCategory, source: TerraSDK.Source, ifStillAt wake: TerraSDK.DeferredWake) throws
1658
+ func loadPendingRevocations(source: TerraSDK.Source) throws -> [TerraSDK.PendingRevocation]
1659
+ func savePendingRevocation(_ revocation: TerraSDK.PendingRevocation) throws
1660
+ func removePendingRevocation(source: TerraSDK.Source, generation: Swift.Int) throws
1661
+ func claimRevocations(source: TerraSDK.Source) -> Swift.Bool
1662
+ @discardableResult
1663
+ func releaseRevocations(source: TerraSDK.Source) -> Swift.Bool
1664
+ func claimLink(source: TerraSDK.Source) -> Swift.Bool
1665
+ func releaseLink(source: TerraSDK.Source)
1666
+ func loadSyncAnchor(source: TerraSDK.Source, dataType: TerraSDK.UploadDataType) throws -> Foundation.Data?
1667
+ func saveSyncAnchor(_ anchor: Foundation.Data, source: TerraSDK.Source, dataType: TerraSDK.UploadDataType, ifGeneration generation: Swift.Int) throws
1668
+ }
1669
+ @_hasMissingDesignatedInitializers final public class Terra : Swift.Sendable {
1670
+ @_spi(Testing) convenience public init(devID: Swift.String, health: any TerraSDK.HealthStore, backend: any TerraSDK.TerraBackend, store: any TerraSDK.DeviceStore, keys: any TerraSDK.DeviceKeyStore, tokenProvider: (@Sendable () async throws -> Swift.String)? = nil, backgroundRestricted: @escaping @Sendable () async -> Swift.Bool = { false }, backgroundRefreshScheduled: @escaping @Sendable (Swift.String) async -> Swift.Bool? = { _ in nil }, inBackground: @escaping @Sendable () async -> Swift.Bool = { false }, unlocks: @escaping @Sendable () -> _Concurrency.AsyncStream<Swift.Void> = { AsyncStream { _ in } }, vendorIdentity: @escaping @Sendable () async -> Swift.String? = { nil }, appIdentifier: Swift.String? = nil, deviceZone: @escaping @Sendable () -> Foundation.TimeZone = { .current }, syncsAutomatically: Swift.Bool = false, foregrounds: @escaping @Sendable () -> _Concurrency.AsyncStream<Swift.Void> = { AsyncStream { _ in } }, dayTotals: TerraSDK.DayTotalPolicy = .default, workoutSchedule: any TerraSDK.WorkoutSchedule = UnavailableWorkoutSchedule())
1671
+ @_spi(Testing) public static func appIdentifier(bundle: Swift.String?, storageDomain: Swift.String) -> Swift.String
1672
+ @available(iOSApplicationExtension, unavailable)
1673
+ convenience public init(devID: Swift.String, tokenProvider: (@Sendable () async throws -> Swift.String)? = nil, dayTotals: TerraSDK.DayTotalPolicy = .default)
1674
+ convenience public init(devID: Swift.String, tokenProvider: (@Sendable () async throws -> Swift.String)? = nil, backgroundRestricted: @escaping @Sendable () async -> Swift.Bool, inBackground: @escaping @Sendable () async -> Swift.Bool = { false }, unlocks: (@Sendable () -> _Concurrency.AsyncStream<Swift.Void>)? = nil, dayTotals: TerraSDK.DayTotalPolicy = .default)
1675
+ @_spi(Testing) @available(iOSApplicationExtension, unavailable)
1676
+ @Sendable public static func systemForegrounds() -> _Concurrency.AsyncStream<Swift.Void>
1677
+ @_spi(Testing) @Sendable public static func systemVendorIdentity() async -> Swift.String?
1678
+ @discardableResult
1679
+ final public func connect(_ source: TerraSDK.Source, for endUser: TerraSDK.EndUser) async throws -> TerraSDK.Connection
1680
+ @discardableResult
1681
+ final public func connect(_ source: TerraSDK.Source, for endUser: TerraSDK.EndUser, using token: Swift.String) async throws -> TerraSDK.Connection
1682
+ final public var connections: [TerraSDK.Connection] {
1683
+ get async throws
1684
+ }
1685
+ @_spi(Bridge) final public func needsTokenForRevokedLink(_ source: TerraSDK.Source, for endUser: TerraSDK.EndUser) async -> Swift.Bool
1686
+ final public var permissions: TerraSDK.Permissions {
1687
+ get
1688
+ }
1689
+ final public var diagnostics: TerraSDK.Diagnostics {
1690
+ get
1691
+ }
1692
+ final public var body: TerraSDK.BodyMetrics {
1693
+ get
1694
+ }
1695
+ final public var nutrition: TerraSDK.NutritionMetrics {
1696
+ get
1697
+ }
1698
+ final public var daily: TerraSDK.DailyMetrics {
1699
+ get
1700
+ }
1701
+ final public var sleep: TerraSDK.SleepMetrics {
1702
+ get
1703
+ }
1704
+ final public var activity: TerraSDK.ActivityMetrics {
1705
+ get
1706
+ }
1707
+ @objc deinit
1708
+ }
1709
+ public struct Diagnostics : Swift.Sendable {
1710
+ public func events() -> _Concurrency.AsyncStream<TerraSDK.TerraEvent>
1711
+ public func lastDelivery(for source: TerraSDK.Source = .health) async -> Foundation.Date?
1712
+ public func state(for source: TerraSDK.Source = .health) async -> TerraSDK.DiagnosticsState
1713
+ public func report(for source: TerraSDK.Source = .health) async -> TerraSDK.SupportReport
1714
+ public func send(for source: TerraSDK.Source = .health) async throws
1715
+ }
1716
+ public struct PlannedWorkouts : Swift.Sendable {
1717
+ public func planned() async throws -> [TerraSDK.PlannedWorkout]
1718
+ public func markComplete(id: Swift.String, at time: Foundation.Date = Date()) async throws
1719
+ public func delete(id: Swift.String) async throws
1720
+ public func schedulingStatus() async -> TerraSDK.WorkoutSchedulingStatus
1721
+ @discardableResult
1722
+ public func requestScheduling() async -> TerraSDK.WorkoutSchedulingStatus
1723
+ }
1724
+ public struct Permissions : Swift.Sendable {
1725
+ public func request(read: [TerraSDK.DataCategory] = [], write: [TerraSDK.DataCategory] = [], workouts: [TerraSDK.WorkoutScope] = []) async throws
1726
+ public func writeStatus(for category: TerraSDK.DataCategory) async -> TerraSDK.PermissionStatus
1727
+ public func status(for category: TerraSDK.DataCategory) async -> TerraSDK.PermissionStatus
1728
+ public var requested: TerraSDK.HealthAccess {
1729
+ get async
1730
+ }
1731
+ }
1732
+ public struct NutritionMetrics : Swift.Sendable {
1733
+ @discardableResult
1734
+ public func log(_ entries: [TerraSDK.NutritionEntry]) async throws -> [Foundation.UUID]
1735
+ public func delete(id: Foundation.UUID) async throws
1736
+ }
1737
+ public struct BodyMetrics : Swift.Sendable {
1738
+ @discardableResult
1739
+ public func log(_ entries: [TerraSDK.HeartRateEntry]) async throws -> [Foundation.UUID]
1740
+ @discardableResult
1741
+ public func log(_ entries: [TerraSDK.BodyEntry]) async throws -> [Foundation.UUID]
1742
+ @available(*, deprecated, message: "use terra.nutrition.log(_:) - meals moved to their own namespace")
1743
+ @discardableResult
1744
+ public func log(_ entries: [TerraSDK.NutritionEntry]) async throws -> [Foundation.UUID]
1745
+ public func delete(id: Foundation.UUID) async throws
1746
+ public func changes() async -> _Concurrency.AsyncStream<TerraSDK.HealthChange>
1747
+ public func heartRate(in range: TerraSDK.TimeRange) async throws -> [TerraSDK.HeartRateSample]
1748
+ }
1749
+ public struct DailyMetrics : Swift.Sendable {
1750
+ @discardableResult
1751
+ public func log(_ entries: [TerraSDK.StepEntry]) async throws -> [Foundation.UUID]
1752
+ public func delete(id: Foundation.UUID) async throws
1753
+ public func changes() async -> _Concurrency.AsyncStream<TerraSDK.HealthChange>
1754
+ public func steps(in range: TerraSDK.TimeRange) async throws -> [TerraSDK.StepCount]
1755
+ }
1756
+ public struct SleepMetrics : Swift.Sendable {
1757
+ @discardableResult
1758
+ public func log(_ entries: [TerraSDK.SleepEntry]) async throws -> [Foundation.UUID]
1759
+ public func delete(id: Foundation.UUID) async throws
1760
+ public func changes() async -> _Concurrency.AsyncStream<TerraSDK.HealthChange>
1761
+ public func segments(in range: TerraSDK.TimeRange) async throws -> [TerraSDK.SleepSegment]
1762
+ }
1763
+ public struct ActivityMetrics : Swift.Sendable {
1764
+ @discardableResult
1765
+ public func log(_ entries: [TerraSDK.WorkoutEntry]) async throws -> [Foundation.UUID]
1766
+ public func delete(id: Foundation.UUID) async throws
1767
+ public func changes() async -> _Concurrency.AsyncStream<TerraSDK.HealthChange>
1768
+ public func workouts(in range: TerraSDK.TimeRange) async throws -> [TerraSDK.Workout]
1769
+ }
1770
+ public enum Source : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable, Swift.Codable {
1771
+ case health
1772
+ public init?(rawValue: Swift.String)
1773
+ public typealias AllCases = [TerraSDK.Source]
1774
+ public typealias RawValue = Swift.String
1775
+ nonisolated public static var allCases: [TerraSDK.Source] {
1776
+ get
1777
+ }
1778
+ public var rawValue: Swift.String {
1779
+ get
1780
+ }
1781
+ }
1782
+ public enum DataCategory : Swift.String, Swift.Sendable, Swift.Hashable, Swift.CaseIterable, Swift.Codable {
1783
+ case activity
1784
+ case body
1785
+ case daily
1786
+ case sleep
1787
+ case nutrition
1788
+ case menstruation
1789
+ case athlete
1790
+ case healthObservation
1791
+ public init?(rawValue: Swift.String)
1792
+ public typealias AllCases = [TerraSDK.DataCategory]
1793
+ public typealias RawValue = Swift.String
1794
+ nonisolated public static var allCases: [TerraSDK.DataCategory] {
1795
+ get
1796
+ }
1797
+ public var rawValue: Swift.String {
1798
+ get
1799
+ }
1800
+ }
1801
+ public enum PermissionStatus : Swift.Sendable, Swift.Equatable {
1802
+ case granted
1803
+ case denied
1804
+ case notDetermined
1805
+ case notDisclosed
1806
+ case unavailable
1807
+ case unsupported
1808
+ public static func == (a: TerraSDK.PermissionStatus, b: TerraSDK.PermissionStatus) -> Swift.Bool
1809
+ public func hash(into hasher: inout Swift.Hasher)
1810
+ public var hashValue: Swift.Int {
1811
+ get
1812
+ }
1813
+ }
1814
+ public enum TimeRange : Swift.Sendable, Swift.Equatable {
1815
+ case lastHours(Swift.Int)
1816
+ case lastDays(Swift.Int)
1817
+ case today
1818
+ case between(Foundation.Date, Foundation.Date)
1819
+ public func resolve(now: Foundation.Date = Date(), calendar: Foundation.Calendar = .current) -> Foundation.DateInterval
1820
+ public static func == (a: TerraSDK.TimeRange, b: TerraSDK.TimeRange) -> Swift.Bool
1821
+ }
1822
+ public enum UploadDataType : Swift.String, Swift.Sendable, Swift.CaseIterable, Swift.Codable {
1823
+ case daily
1824
+ case sleep
1825
+ case activity
1826
+ case body
1827
+ case nutrition
1828
+ case menstruation
1829
+ case athlete
1830
+ case healthObservation
1831
+ public static var routable: [TerraSDK.UploadDataType] {
1832
+ get
1833
+ }
1834
+ public init?(rawValue: Swift.String)
1835
+ public typealias AllCases = [TerraSDK.UploadDataType]
1836
+ public typealias RawValue = Swift.String
1837
+ nonisolated public static var allCases: [TerraSDK.UploadDataType] {
1838
+ get
1839
+ }
1840
+ public var rawValue: Swift.String {
1841
+ get
1842
+ }
1843
+ }
1844
+ public let sdkVersion: Swift.String
1845
+ @available(iOS 17.0, macOS 15.0, *)
1846
+ public struct WorkoutKitSchedule : TerraSDK.WorkoutSchedule {
1847
+ public init()
1848
+ public func status() async -> TerraSDK.WorkoutSchedulingStatus
1849
+ public func requestAuthorization() async -> TerraSDK.WorkoutSchedulingStatus
1850
+ public var capacity: Swift.Int {
1851
+ get
1852
+ }
1853
+ public func scheduled() async -> [TerraSDK.ScheduledWorkout]
1854
+ public func schedule(_ workout: TerraSDK.WorkoutComposition, id: Foundation.UUID, at date: Foundation.DateComponents) async throws
1855
+ public func move(_ id: Foundation.UUID, to date: Foundation.DateComponents) async throws -> Swift.Bool
1856
+ public func remove(_ id: Foundation.UUID) async
1857
+ }
1858
+ public enum WorkoutSchedulingStatus : Swift.String, Swift.Sendable, Swift.Equatable, Swift.CaseIterable {
1859
+ case unsupported
1860
+ case notDetermined
1861
+ case denied
1862
+ case authorized
1863
+ public init?(rawValue: Swift.String)
1864
+ public typealias AllCases = [TerraSDK.WorkoutSchedulingStatus]
1865
+ public typealias RawValue = Swift.String
1866
+ nonisolated public static var allCases: [TerraSDK.WorkoutSchedulingStatus] {
1867
+ get
1868
+ }
1869
+ public var rawValue: Swift.String {
1870
+ get
1871
+ }
1872
+ }
1873
+ public struct ScheduledWorkout : Swift.Sendable, Swift.Equatable {
1874
+ public let id: Foundation.UUID
1875
+ public let date: Foundation.DateComponents
1876
+ public let isComplete: Swift.Bool
1877
+ public init(id: Foundation.UUID, date: Foundation.DateComponents, isComplete: Swift.Bool = false)
1878
+ public static func == (a: TerraSDK.ScheduledWorkout, b: TerraSDK.ScheduledWorkout) -> Swift.Bool
1879
+ }
1880
+ public enum WorkoutScheduleRefusal : Swift.String, Swift.Error, Swift.Sendable, Swift.Equatable {
1881
+ case activityUnsupported
1882
+ case goalUnsupported
1883
+ case malformed
1884
+ case noWorkout
1885
+ case past
1886
+ case completed
1887
+ public init?(rawValue: Swift.String)
1888
+ public typealias RawValue = Swift.String
1889
+ public var rawValue: Swift.String {
1890
+ get
1891
+ }
1892
+ }
1893
+ public struct WorkoutComposition : Swift.Sendable, Swift.Equatable, Swift.Codable {
1894
+ public var displayName: Swift.String?
1895
+ public var activity: Swift.String
1896
+ public var location: Swift.String
1897
+ public var warmup: TerraSDK.WorkoutComposition.Step?
1898
+ public var blocks: [TerraSDK.WorkoutComposition.Block]
1899
+ public var cooldown: TerraSDK.WorkoutComposition.Step?
1900
+ public init(displayName: Swift.String? = nil, activity: Swift.String, location: Swift.String = "outdoor", warmup: TerraSDK.WorkoutComposition.Step? = nil, blocks: [TerraSDK.WorkoutComposition.Block] = [], cooldown: TerraSDK.WorkoutComposition.Step? = nil)
1901
+ public init(from decoder: any Swift.Decoder) throws
1902
+ public struct Block : Swift.Sendable, Swift.Equatable, Swift.Codable {
1903
+ public var steps: [TerraSDK.WorkoutComposition.IntervalStep]
1904
+ public var iterations: Swift.Int
1905
+ public init(steps: [TerraSDK.WorkoutComposition.IntervalStep], iterations: Swift.Int = 1)
1906
+ public static func == (a: TerraSDK.WorkoutComposition.Block, b: TerraSDK.WorkoutComposition.Block) -> Swift.Bool
1907
+ public func encode(to encoder: any Swift.Encoder) throws
1908
+ public init(from decoder: any Swift.Decoder) throws
1909
+ }
1910
+ public struct IntervalStep : Swift.Sendable, Swift.Equatable, Swift.Codable {
1911
+ public var purpose: Swift.String
1912
+ public var step: TerraSDK.WorkoutComposition.Step
1913
+ public init(purpose: Swift.String, step: TerraSDK.WorkoutComposition.Step)
1914
+ public static func == (a: TerraSDK.WorkoutComposition.IntervalStep, b: TerraSDK.WorkoutComposition.IntervalStep) -> Swift.Bool
1915
+ public func encode(to encoder: any Swift.Encoder) throws
1916
+ public init(from decoder: any Swift.Decoder) throws
1917
+ }
1918
+ public struct Step : Swift.Sendable, Swift.Equatable, Swift.Codable {
1919
+ public var goal: TerraSDK.WorkoutComposition.Goal
1920
+ public var alert: TerraSDK.WorkoutComposition.Alert?
1921
+ public init(goal: TerraSDK.WorkoutComposition.Goal, alert: TerraSDK.WorkoutComposition.Alert? = nil)
1922
+ public static func == (a: TerraSDK.WorkoutComposition.Step, b: TerraSDK.WorkoutComposition.Step) -> Swift.Bool
1923
+ public func encode(to encoder: any Swift.Encoder) throws
1924
+ public init(from decoder: any Swift.Decoder) throws
1925
+ }
1926
+ public struct Goal : Swift.Sendable, Swift.Equatable, Swift.Codable {
1927
+ public var type: Swift.String
1928
+ public var value: Swift.Double?
1929
+ public var unit: Swift.String?
1930
+ public init(type: Swift.String, value: Swift.Double? = nil, unit: Swift.String? = nil)
1931
+ public static func == (a: TerraSDK.WorkoutComposition.Goal, b: TerraSDK.WorkoutComposition.Goal) -> Swift.Bool
1932
+ public func encode(to encoder: any Swift.Encoder) throws
1933
+ public init(from decoder: any Swift.Decoder) throws
1934
+ }
1935
+ public struct Alert : Swift.Sendable, Swift.Equatable, Swift.Codable {
1936
+ public var type: Swift.String
1937
+ public var zone: Swift.Int?
1938
+ public var target: TerraSDK.WorkoutComposition.Target?
1939
+ public var metric: Swift.String?
1940
+ public init(type: Swift.String, zone: Swift.Int? = nil, target: TerraSDK.WorkoutComposition.Target? = nil, metric: Swift.String? = nil)
1941
+ public static func == (a: TerraSDK.WorkoutComposition.Alert, b: TerraSDK.WorkoutComposition.Alert) -> Swift.Bool
1942
+ public func encode(to encoder: any Swift.Encoder) throws
1943
+ public init(from decoder: any Swift.Decoder) throws
1944
+ }
1945
+ public struct Target : Swift.Sendable, Swift.Equatable, Swift.Codable {
1946
+ public var lowerBound: Swift.Double?
1947
+ public var upperBound: Swift.Double?
1948
+ public var unit: Swift.String?
1949
+ public init(lowerBound: Swift.Double? = nil, upperBound: Swift.Double? = nil, unit: Swift.String? = nil)
1950
+ public static func == (a: TerraSDK.WorkoutComposition.Target, b: TerraSDK.WorkoutComposition.Target) -> Swift.Bool
1951
+ public func encode(to encoder: any Swift.Encoder) throws
1952
+ public init(from decoder: any Swift.Decoder) throws
1953
+ }
1954
+ public static func == (a: TerraSDK.WorkoutComposition, b: TerraSDK.WorkoutComposition) -> Swift.Bool
1955
+ public func encode(to encoder: any Swift.Encoder) throws
1956
+ }
1957
+ public protocol WorkoutSchedule : Swift.Sendable {
1958
+ func status() async -> TerraSDK.WorkoutSchedulingStatus
1959
+ func requestAuthorization() async -> TerraSDK.WorkoutSchedulingStatus
1960
+ var capacity: Swift.Int { get }
1961
+ func scheduled() async -> [TerraSDK.ScheduledWorkout]
1962
+ func schedule(_ workout: TerraSDK.WorkoutComposition, id: Foundation.UUID, at date: Foundation.DateComponents) async throws
1963
+ func move(_ id: Foundation.UUID, to date: Foundation.DateComponents) async throws -> Swift.Bool
1964
+ func remove(_ id: Foundation.UUID) async
1965
+ }
1966
+ public struct WorkoutScheduleUnconfirmed : Swift.Error, Swift.Sendable, Swift.Equatable {
1967
+ public init()
1968
+ public static func == (a: TerraSDK.WorkoutScheduleUnconfirmed, b: TerraSDK.WorkoutScheduleUnconfirmed) -> Swift.Bool
1969
+ }
1970
+ public struct UnavailableWorkoutSchedule : TerraSDK.WorkoutSchedule {
1971
+ public init()
1972
+ public func status() async -> TerraSDK.WorkoutSchedulingStatus
1973
+ public func requestAuthorization() async -> TerraSDK.WorkoutSchedulingStatus
1974
+ public var capacity: Swift.Int {
1975
+ get
1976
+ }
1977
+ public func scheduled() async -> [TerraSDK.ScheduledWorkout]
1978
+ public func schedule(_ workout: TerraSDK.WorkoutComposition, id: Foundation.UUID, at date: Foundation.DateComponents) async throws
1979
+ public func move(_ id: Foundation.UUID, to date: Foundation.DateComponents) async throws -> Swift.Bool
1980
+ public func remove(_ id: Foundation.UUID) async
1981
+ }
1982
+ public struct HeartRateEntry : Swift.Sendable, Swift.Equatable {
1983
+ public let time: Foundation.Date
1984
+ public let beatsPerMinute: Swift.Double
1985
+ public let recordID: Foundation.UUID
1986
+ public init(time: Foundation.Date, beatsPerMinute: Swift.Double, recordID: Foundation.UUID = UUID())
1987
+ public static func == (a: TerraSDK.HeartRateEntry, b: TerraSDK.HeartRateEntry) -> Swift.Bool
1988
+ }
1989
+ public struct StepEntry : Swift.Sendable, Swift.Equatable {
1990
+ public let interval: Foundation.DateInterval
1991
+ public let steps: Swift.Int
1992
+ public let recordID: Foundation.UUID
1993
+ public init(interval: Foundation.DateInterval, steps: Swift.Int, recordID: Foundation.UUID = UUID())
1994
+ public static func == (a: TerraSDK.StepEntry, b: TerraSDK.StepEntry) -> Swift.Bool
1995
+ }
1996
+ public struct SleepEntry : Swift.Sendable, Swift.Equatable {
1997
+ public let interval: Foundation.DateInterval
1998
+ public let stage: TerraSDK.SleepStage
1999
+ public let recordID: Foundation.UUID
2000
+ public init(interval: Foundation.DateInterval, stage: TerraSDK.SleepStage, recordID: Foundation.UUID = UUID())
2001
+ public static func == (a: TerraSDK.SleepEntry, b: TerraSDK.SleepEntry) -> Swift.Bool
2002
+ }
2003
+ public struct WorkoutEntry : Swift.Sendable, Swift.Equatable {
2004
+ public let interval: Foundation.DateInterval
2005
+ public let activity: TerraSDK.WorkoutActivity
2006
+ public let totalEnergyKilocalories: Swift.Double?
2007
+ public let totalDistanceMeters: Swift.Double?
2008
+ public let recordID: Foundation.UUID
2009
+ public init(interval: Foundation.DateInterval, activity: TerraSDK.WorkoutActivity, totalEnergyKilocalories: Swift.Double? = nil, totalDistanceMeters: Swift.Double? = nil, recordID: Foundation.UUID = UUID())
2010
+ public static func == (a: TerraSDK.WorkoutEntry, b: TerraSDK.WorkoutEntry) -> Swift.Bool
2011
+ }
2012
+ public struct WorkoutScope : Swift.Sendable, Swift.Hashable {
2013
+ public var activity: TerraSDK.WorkoutActivity
2014
+ public var energy: Swift.Bool
2015
+ public var distance: Swift.Bool
2016
+ public init(activity: TerraSDK.WorkoutActivity, energy: Swift.Bool = false, distance: Swift.Bool = false)
2017
+ public static func == (a: TerraSDK.WorkoutScope, b: TerraSDK.WorkoutScope) -> Swift.Bool
2018
+ public func hash(into hasher: inout Swift.Hasher)
2019
+ public var hashValue: Swift.Int {
2020
+ get
2021
+ }
2022
+ }
2023
+ public struct BodyEntry : Swift.Sendable, Swift.Equatable {
2024
+ public let time: Foundation.Date
2025
+ public var bodyMassKilograms: Swift.Double?
2026
+ public var bodyFatPercent: Swift.Double?
2027
+ public var bodyMassIndex: Swift.Double?
2028
+ public var heightMeters: Swift.Double?
2029
+ public var leanBodyMassKilograms: Swift.Double?
2030
+ public var bodyTemperatureCelsius: Swift.Double?
2031
+ public var oxygenSaturationPercent: Swift.Double?
2032
+ public var bloodGlucoseMilligramsPerDeciliter: Swift.Double?
2033
+ public var bloodPressureSystolicMillimetersOfMercury: Swift.Double?
2034
+ public var bloodPressureDiastolicMillimetersOfMercury: Swift.Double?
2035
+ public let recordID: Foundation.UUID
2036
+ public init(time: Foundation.Date, bodyMassKilograms: Swift.Double? = nil, bodyFatPercent: Swift.Double? = nil, bodyMassIndex: Swift.Double? = nil, heightMeters: Swift.Double? = nil, leanBodyMassKilograms: Swift.Double? = nil, bodyTemperatureCelsius: Swift.Double? = nil, oxygenSaturationPercent: Swift.Double? = nil, bloodGlucoseMilligramsPerDeciliter: Swift.Double? = nil, bloodPressureSystolicMillimetersOfMercury: Swift.Double? = nil, bloodPressureDiastolicMillimetersOfMercury: Swift.Double? = nil, recordID: Foundation.UUID = UUID())
2037
+ public var isEmpty: Swift.Bool {
2038
+ get
2039
+ }
2040
+ public static func == (a: TerraSDK.BodyEntry, b: TerraSDK.BodyEntry) -> Swift.Bool
2041
+ }
2042
+ public struct NutritionEntry : Swift.Sendable, Swift.Equatable {
2043
+ public let interval: Foundation.DateInterval
2044
+ public var name: Swift.String?
2045
+ public var nutrients: TerraSDK.NutritionEntry.Nutrients
2046
+ public let recordID: Foundation.UUID
2047
+ public init(interval: Foundation.DateInterval, name: Swift.String? = nil, nutrients: TerraSDK.NutritionEntry.Nutrients, recordID: Foundation.UUID = UUID())
2048
+ public var isEmpty: Swift.Bool {
2049
+ get
2050
+ }
2051
+ public struct Nutrients : Swift.Sendable, Swift.Equatable {
2052
+ public var energyKilocalories: Swift.Double?
2053
+ public var proteinGrams: Swift.Double?
2054
+ public var carbohydratesGrams: Swift.Double?
2055
+ public var fiberGrams: Swift.Double?
2056
+ public var sugarGrams: Swift.Double?
2057
+ public var fatTotalGrams: Swift.Double?
2058
+ public var fatSaturatedGrams: Swift.Double?
2059
+ public var fatMonounsaturatedGrams: Swift.Double?
2060
+ public var fatPolyunsaturatedGrams: Swift.Double?
2061
+ public var cholesterolMilligrams: Swift.Double?
2062
+ public var sodiumMilligrams: Swift.Double?
2063
+ public var potassiumMilligrams: Swift.Double?
2064
+ public var calciumMilligrams: Swift.Double?
2065
+ public var ironMilligrams: Swift.Double?
2066
+ public var magnesiumMilligrams: Swift.Double?
2067
+ public var zincMilligrams: Swift.Double?
2068
+ public var waterLiters: Swift.Double?
2069
+ public var caffeineMilligrams: Swift.Double?
2070
+ public var vitaminAMicrograms: Swift.Double?
2071
+ public var vitaminCMilligrams: Swift.Double?
2072
+ public var vitaminDMicrograms: Swift.Double?
2073
+ public var vitaminEMilligrams: Swift.Double?
2074
+ public var vitaminKMicrograms: Swift.Double?
2075
+ public var vitaminB6Milligrams: Swift.Double?
2076
+ public var vitaminB12Micrograms: Swift.Double?
2077
+ public var folateMicrograms: Swift.Double?
2078
+ public var thiaminMilligrams: Swift.Double?
2079
+ public var riboflavinMilligrams: Swift.Double?
2080
+ public var niacinMilligrams: Swift.Double?
2081
+ public var biotinMicrograms: Swift.Double?
2082
+ public var pantothenicAcidMilligrams: Swift.Double?
2083
+ public var phosphorusMilligrams: Swift.Double?
2084
+ public var iodineMicrograms: Swift.Double?
2085
+ public var chromiumMicrograms: Swift.Double?
2086
+ public var copperMilligrams: Swift.Double?
2087
+ public var manganeseMilligrams: Swift.Double?
2088
+ public var molybdenumMicrograms: Swift.Double?
2089
+ public var seleniumMicrograms: Swift.Double?
2090
+ public var chlorideMilligrams: Swift.Double?
2091
+ public init(energyKilocalories: Swift.Double? = nil, proteinGrams: Swift.Double? = nil, carbohydratesGrams: Swift.Double? = nil, fiberGrams: Swift.Double? = nil, sugarGrams: Swift.Double? = nil, fatTotalGrams: Swift.Double? = nil, fatSaturatedGrams: Swift.Double? = nil, fatMonounsaturatedGrams: Swift.Double? = nil, fatPolyunsaturatedGrams: Swift.Double? = nil, cholesterolMilligrams: Swift.Double? = nil, sodiumMilligrams: Swift.Double? = nil, potassiumMilligrams: Swift.Double? = nil, calciumMilligrams: Swift.Double? = nil, ironMilligrams: Swift.Double? = nil, magnesiumMilligrams: Swift.Double? = nil, zincMilligrams: Swift.Double? = nil, waterLiters: Swift.Double? = nil, caffeineMilligrams: Swift.Double? = nil, vitaminAMicrograms: Swift.Double? = nil, vitaminCMilligrams: Swift.Double? = nil, vitaminDMicrograms: Swift.Double? = nil, vitaminEMilligrams: Swift.Double? = nil, vitaminKMicrograms: Swift.Double? = nil, vitaminB6Milligrams: Swift.Double? = nil, vitaminB12Micrograms: Swift.Double? = nil, folateMicrograms: Swift.Double? = nil, thiaminMilligrams: Swift.Double? = nil, riboflavinMilligrams: Swift.Double? = nil, niacinMilligrams: Swift.Double? = nil, biotinMicrograms: Swift.Double? = nil, pantothenicAcidMilligrams: Swift.Double? = nil, phosphorusMilligrams: Swift.Double? = nil, iodineMicrograms: Swift.Double? = nil, chromiumMicrograms: Swift.Double? = nil, copperMilligrams: Swift.Double? = nil, manganeseMilligrams: Swift.Double? = nil, molybdenumMicrograms: Swift.Double? = nil, seleniumMicrograms: Swift.Double? = nil, chlorideMilligrams: Swift.Double? = nil)
2092
+ public static func == (a: TerraSDK.NutritionEntry.Nutrients, b: TerraSDK.NutritionEntry.Nutrients) -> Swift.Bool
2093
+ }
2094
+ public static func == (a: TerraSDK.NutritionEntry, b: TerraSDK.NutritionEntry) -> Swift.Bool
2095
+ }
2096
+ extension TerraSDK.AthleteProfile.BiologicalSex : Swift.RawRepresentable {}
2097
+ extension TerraSDK.AthleteProfile.ActivityMoveMode : Swift.RawRepresentable {}
2098
+ extension TerraSDK.UploadContentEncoding : Swift.Hashable {}
2099
+ extension TerraSDK.UploadContentEncoding : Swift.RawRepresentable {}
2100
+ extension TerraSDK.BodyMetric : Swift.RawRepresentable {}
2101
+ extension TerraSDK.BloodGlucoseUnit : Swift.RawRepresentable {}
2102
+ extension TerraSDK.GlucoseMealTime : Swift.RawRepresentable {}
2103
+ extension TerraSDK.GlucoseSpecimen : Swift.RawRepresentable {}
2104
+ extension TerraSDK.BodyTemperatureMetric : Swift.RawRepresentable {}
2105
+ extension TerraSDK.HeartRateVariabilityMetric : Swift.RawRepresentable {}
2106
+ extension TerraSDK.VO2MaxTestType : Swift.RawRepresentable {}
2107
+ extension TerraSDK.InsulinDeliveryReason : Swift.RawRepresentable {}
2108
+ extension TerraSDK.Electrocardiogram.Classification : Swift.Equatable {}
2109
+ extension TerraSDK.Electrocardiogram.Classification : Swift.Hashable {}
2110
+ extension TerraSDK.Electrocardiogram.Classification : Swift.RawRepresentable {}
2111
+ extension TerraSDK.Electrocardiogram.SymptomsStatus : Swift.Equatable {}
2112
+ extension TerraSDK.Electrocardiogram.SymptomsStatus : Swift.Hashable {}
2113
+ extension TerraSDK.Electrocardiogram.SymptomsStatus : Swift.RawRepresentable {}
2114
+ extension TerraSDK.DataCategory : Swift.RawRepresentable {}
2115
+ extension TerraSDK.TerraEvent.FailureCode : Swift.Hashable {}
2116
+ extension TerraSDK.TerraEvent.FailureCode : Swift.RawRepresentable {}
2117
+ extension TerraSDK.DeviceKeyRevokeOutcome : Swift.Hashable {}
2118
+ extension TerraSDK.DeviceKeyRevokeOutcome : Swift.RawRepresentable {}
2119
+ extension TerraSDK.DiagnosticsReason : Swift.Hashable {}
2120
+ extension TerraSDK.DiagnosticsReason : Swift.RawRepresentable {}
2121
+ extension TerraSDK.HealthObservation.Category : Swift.RawRepresentable {}
2122
+ extension TerraSDK.HealthObservation.Severity : Swift.RawRepresentable {}
2123
+ extension TerraSDK.MenstruationFlowDay.Flow : Swift.RawRepresentable {}
2124
+ extension TerraSDK.MenstrualEvent.Kind : Swift.RawRepresentable {}
2125
+ extension TerraSDK.MealType : Swift.RawRepresentable {}
2126
+ extension TerraSDK.Nutrient : Swift.RawRepresentable {}
2127
+ extension TerraSDK.DeviceType : Swift.RawRepresentable {}
2128
+ extension TerraSDK.MotionContext : Swift.Hashable {}
2129
+ extension TerraSDK.MotionContext : Swift.RawRepresentable {}
2130
+ extension TerraSDK.WorkoutEvent.Kind : Swift.Equatable {}
2131
+ extension TerraSDK.WorkoutEvent.Kind : Swift.Hashable {}
2132
+ extension TerraSDK.WorkoutEvent.Kind : Swift.RawRepresentable {}
2133
+ extension TerraSDK.WorkoutIntensitySample.Kind : Swift.Equatable {}
2134
+ extension TerraSDK.WorkoutIntensitySample.Kind : Swift.Hashable {}
2135
+ extension TerraSDK.WorkoutIntensitySample.Kind : Swift.RawRepresentable {}
2136
+ extension TerraSDK.DayTotal.Metric : Swift.Equatable {}
2137
+ extension TerraSDK.DayTotal.Metric : Swift.Hashable {}
2138
+ extension TerraSDK.DayTotal.Metric : Swift.RawRepresentable {}
2139
+ extension TerraSDK.IntradaySample.Kind : Swift.Equatable {}
2140
+ extension TerraSDK.IntradaySample.Kind : Swift.Hashable {}
2141
+ extension TerraSDK.IntradaySample.Kind : Swift.RawRepresentable {}
2142
+ extension TerraSDK.Source : Swift.RawRepresentable {}
2143
+ extension TerraSDK.PermissionStatus : Swift.Hashable {}
2144
+ extension TerraSDK.UploadDataType : Swift.Equatable {}
2145
+ extension TerraSDK.UploadDataType : Swift.Hashable {}
2146
+ extension TerraSDK.UploadDataType : Swift.RawRepresentable {}
2147
+ extension TerraSDK.WorkoutSchedulingStatus : Swift.Hashable {}
2148
+ extension TerraSDK.WorkoutSchedulingStatus : Swift.RawRepresentable {}
2149
+ extension TerraSDK.WorkoutScheduleRefusal : Swift.Hashable {}
2150
+ extension TerraSDK.WorkoutScheduleRefusal : Swift.RawRepresentable {}