#ifndef _sec_SOSViews_
#define _sec_SOSViews_
#include <CoreFoundation/CFRuntime.h>
#include <CoreFoundation/CoreFoundation.h>
#include <Security/SecureObjectSync/SOSPeerInfo.h>
__BEGIN_DECLS
extern const CFStringRef kSOSViewKeychainV0;
extern const CFStringRef kSOSViewKeychainV0_tomb;
extern const CFStringRef kSOSViewBackupBagV0_tomb;
extern const CFStringRef kSOSViewWiFi_tomb;
extern const CFStringRef kSOSViewAutofillPasswords_tomb;
extern const CFStringRef kSOSViewSafariCreditCards_tomb;
extern const CFStringRef kSOSViewiCloudIdentity_tomb;
extern const CFStringRef kSOSViewOtherSyncable_tomb;
typedef struct __OpaqueSOSView {
CFRuntimeBase _base;
CFStringRef label;
CFMutableDictionaryRef ringnames;
} *SOSViewRef;
typedef enum {
kViewSetAll,
kViewSetDefault,
kViewSetInitial,
kViewSetAlwaysOn,
kViewSetV0,
kViewSetRequiredForBackup
} ViewSetKind;
CFMutableSetRef SOSViewCopyViewSet(ViewSetKind setKind);
CFSetRef SOSViewsGetV0ViewSet(void);
CFSetRef SOSViewsGetV0SubviewSet(void);
CFSetRef SOSViewsGetV0BackupViewSet(void);
CFSetRef SOSViewsGetV0BackupBagViewSet(void);
bool SOSViewsIsV0Subview(CFStringRef viewName);
SOSViewResultCode SOSViewsEnable(SOSPeerInfoRef pi, CFStringRef viewname, CFErrorRef *error);
bool SOSViewSetEnable(SOSPeerInfoRef pi, CFSetRef viewSet);
SOSViewResultCode SOSViewsDisable(SOSPeerInfoRef pi, CFStringRef viewname, CFErrorRef *error);
bool SOSViewSetDisable(SOSPeerInfoRef pi, CFSetRef viewSet);
SOSViewResultCode SOSViewsQuery(SOSPeerInfoRef pi, CFStringRef viewname, CFErrorRef *error);
CFSetRef SOSViewsGetAllCurrent(void);
void SOSViewsForEachDefaultEnabledViewName(void (^operation)(CFStringRef viewName));
void SOSViewsSetTestViewsSet(CFSetRef testViewNames);
static inline bool SOSPeerInfoIsViewPermitted(SOSPeerInfoRef peerInfo, CFStringRef viewName) {
SOSViewResultCode viewResult = SOSViewsQuery(peerInfo, viewName, NULL);
return kSOSCCViewMember == viewResult || kSOSCCViewPending == viewResult || kSOSCCViewNotMember == viewResult;
}
const char *SOSViewsXlateAction(SOSViewActionCode action);
__END_DECLS
#endif