]> git.saurik.com Git - apple/security.git/blob - keychain/ot/OTCuttlefishAccountStateHolder.h
Security-59306.101.1.tar.gz
[apple/security.git] / keychain / ot / OTCuttlefishAccountStateHolder.h
1
2 #import <Foundation/Foundation.h>
3 #import <dispatch/dispatch.h>
4
5 #import "keychain/ot/proto/generated_source/OTAccountMetadataClassC.h"
6 #import "keychain/ot/categories/OTAccountMetadataClassC+KeychainSupport.h"
7
8 extern NSString* _Nonnull OTCuttlefishContextErrorDomain;
9 typedef NS_ENUM(uint32_t, OTCuttlefishContextErrors) {
10 OTCCNoExistingPeerID = 0,
11 };
12
13 NS_ASSUME_NONNULL_BEGIN
14
15 @protocol OTCuttlefishAccountStateHolderNotifier
16 - (void)accountStateUpdated:(OTAccountMetadataClassC*)newState from:(OTAccountMetadataClassC*)oldState;
17 @end
18
19 @interface OTCuttlefishAccountStateHolder : NSObject
20
21 // If you already know you're on this queue, call the _onqueue versions below.
22 - (instancetype)initWithQueue:(dispatch_queue_t)queue
23 container:(NSString*)containerName
24 context:(NSString*)contextID;
25
26 - (OTAccountMetadataClassC* _Nullable)loadOrCreateAccountMetadata:(NSError**)error;
27 - (OTAccountMetadataClassC* _Nullable)_onqueueLoadOrCreateAccountMetadata:(NSError**)error;
28
29 - (void)registerNotification:(id<OTCuttlefishAccountStateHolderNotifier>)notifier;
30
31 - (BOOL)persistNewEgoPeerID:(NSString*)peerID error:(NSError**)error;
32 - (NSString * _Nullable)getEgoPeerID:(NSError **)error;
33
34 - (BOOL)persistNewTrustState:(OTAccountMetadataClassC_TrustState)newState
35 error:(NSError**)error;
36
37 - (BOOL)persistNewEpoch:(uint64_t)epoch error:(NSError**)error;
38
39 - (BOOL)persistAccountChanges:(OTAccountMetadataClassC* _Nullable (^)(OTAccountMetadataClassC* metadata))makeChanges
40 error:(NSError**)error;
41
42 - (BOOL)_onqueuePersistAccountChanges:(OTAccountMetadataClassC* _Nullable (^)(OTAccountMetadataClassC* metadata))makeChanges
43 error:(NSError**)error;
44
45 - (NSDate *)lastHealthCheckupDate:(NSError * _Nullable *)error;
46 - (BOOL)persistLastHealthCheck:(NSDate*)lastCheck error:(NSError**)error;
47
48 - (OTAccountMetadataClassC_AttemptedAJoinState)fetchPersistedJoinAttempt:(NSError * _Nullable *)error;
49 - (BOOL)persistOctagonJoinAttempt:(OTAccountMetadataClassC_AttemptedAJoinState)attempt error:(NSError**)error;
50
51 @end
52
53 NS_ASSUME_NONNULL_END