using CPF.Mac.ObjCRuntime;
using System;

namespace CPF.Mac.Foundation
{
	public class NSUbiquitousKeyValueStoreChangeEventArgs : NSNotificationEventArgs
	{
		private static IntPtr k0;

		private static IntPtr k1;

		public string[] ChangedKeys
		{
			get
			{
				if (k0 == IntPtr.Zero)
				{
					k0 = Dlfcn.GetIntPtr(Libraries.Foundation.Handle, "NSUbiquitousKeyValueStoreChangedKeysKey");
				}
				IntPtr intPtr = base.Notification.UserInfo.LowlevelObjectForKey(k0);
				if (intPtr == IntPtr.Zero)
				{
					return new string[0];
				}
				return NSArray.StringArrayFromHandle(intPtr);
			}
		}

		public NSUbiquitousKeyValueStoreChangeReason ChangeReason
		{
			get
			{
				if (k1 == IntPtr.Zero)
				{
					k1 = Dlfcn.GetIntPtr(Libraries.Foundation.Handle, "NSUbiquitousKeyValueStoreChangeReasonKey");
				}
				IntPtr intPtr = base.Notification.UserInfo.LowlevelObjectForKey(k1);
				if (intPtr == IntPtr.Zero)
				{
					return NSUbiquitousKeyValueStoreChangeReason.ServerChange;
				}
				using (NSNumber nSNumber = new NSNumber(intPtr))
				{
					return (NSUbiquitousKeyValueStoreChangeReason)nSNumber.Int32Value;
				}
			}
		}

		public NSUbiquitousKeyValueStoreChangeEventArgs(NSNotification notification)
			: base(notification)
		{
		}
	}
}
