/// <reference types="@nativescript/objc-node-api" />
/// <reference path="./Runtime.d.ts" />
/// <reference path="./Foundation.d.ts" />

declare const CNLabelContactRelationDaughterInLaw: string;

declare const CNLabelContactRelationCoMotherInLaw: string;

declare const CNLabelContactRelationGrandmotherMothersMother: string;

declare const CNLabelContactRelationFather: string;

declare const CNContactPhoneticOrganizationNameKey: string;

declare const CNLabelContactRelationCoSiblingInLaw: string;

declare const CNLabelContactRelationManager: string;

declare const CNContactImageDataKey: string;

declare const CNLabelContactRelationYoungerCousinMothersSistersDaughter: string;

declare const CNLabelContactRelationChildInLaw: string;

declare const CNLabelContactRelationAuntParentsElderSister: string;

declare const CNErrorUserInfoAffectedRecordIdentifiersKey: string;

declare const CNErrorUserInfoAffectedRecordsKey: string;

declare const CNPostalAddressLocalizedPropertyNameAttribute: string;

declare const CNContainerTypeKey: string;

declare const CNContainerNameKey: string;

declare const CNContainerIdentifierKey: string;

declare const CNGroupIdentifierKey: string;

declare const CNContactStoreDidChangeNotification: string;

declare const CNContactDatesKey: string;

declare const CNContactPostalAddressesKey: string;

declare const CNContactEmailAddressesKey: string;

declare const CNContactPhoneNumbersKey: string;

declare const CNContactTypeKey: string;

declare const CNContactImageDataAvailableKey: string;

declare const CNContactNonGregorianBirthdayKey: string;

declare const CNContactPhoneticFamilyNameKey: string;

declare const CNContactPhoneticMiddleNameKey: string;

declare const CNContactMiddleNameKey: string;

declare const CNContactGivenNameKey: string;

declare const CNContactNamePrefixKey: string;

declare const CNContactIdentifierKey: string;

declare const CNInstantMessageServiceQQ: string;

declare const CNInstantMessageServiceJabber: string;

declare const CNInstantMessageServiceICQ: string;

declare const CNInstantMessageServiceGoogleTalk: string;

declare const CNInstantMessageServiceAIM: string;

declare const CNInstantMessageAddressServiceKey: string;

declare const CNSocialProfileServiceGameCenter: string;

declare const CNSocialProfileServiceYelp: string;

declare const CNSocialProfileServiceTwitter: string;

declare const CNSocialProfileServiceLinkedIn: string;

declare const CNSocialProfileServiceFacebook: string;

declare const CNSocialProfileServiceKey: string;

declare const CNSocialProfileUsernameKey: string;

declare const CNSocialProfileURLStringKey: string;

declare const CNLabelContactRelationGrandsonOrNephew: string;

declare const CNLabelContactRelationNephewOrCousin: string;

declare const CNLabelContactRelationCousinOrSiblingsChild: string;

declare const CNLabelContactRelationSonInLawOrStepson: string;

declare const CNLabelContactRelationStepbrother: string;

declare const CNLabelContactRelationStepfather: string;

declare const CNLabelContactRelationStepmother: string;

declare const CNLabelContactRelationStepparent: string;

declare const CNLabelContactRelationGrandnephewBrothersGrandson: string;

declare const CNLabelContactRelationGrandnephewSistersGrandson: string;

declare const CNLabelContactRelationGrandniece: string;

declare const CNLabelContactRelationNephewSistersSonOrWifesSiblingsSon: string;

declare const CNLabelContactRelationNephewBrothersSon: string;

declare const CNLabelContactRelationNephewSistersSon: string;

declare const CNLabelContactRelationNieceBrothersDaughterOrHusbandsSiblingsDaughter: string;

declare const CNLabelContactRelationNieceSistersDaughter: string;

declare const CNLabelContactRelationSiblingsChild: string;

declare const CNLabelContactRelationUncleFathersYoungerSistersHusband: string;

declare const CNLabelContactRelationUncleMothersYoungerBrother: string;

declare const CNLabelContactRelationUncleParentsYoungerBrother: string;

declare const CNLabelContactRelationGrandaunt: string;

declare const CNLabelContactRelationAuntMothersBrothersWife: string;

declare const CNLabelContactRelationAuntMothersYoungerSister: string;

declare const CNLabelContactRelationAuntFathersElderBrothersWife: string;

declare const CNLabelContactRelationAuntFathersYoungerBrothersWife: string;

declare const CNLabelContactRelationAuntFathersElderSister: string;

declare const CNLabelContactRelationAuntFathersSister: string;

declare const CNLabelContactRelationAuntParentsSister: string;

declare const CNLabelContactRelationParentsSiblingFathersElderSibling: string;

declare const CNLabelContactRelationParentsSiblingFathersSibling: string;

declare const CNLabelContactRelationParentsYoungerSibling: string;

declare const CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter: string;

declare const CNLabelContactRelationCousinGrandparentsSiblingsDaughter: string;

declare const CNLabelContactRelationYoungerCousinFathersBrothersSon: string;

declare const CNLabelContactRelationYoungerCousinFathersBrothersDaughter: string;

declare const CNLabelContactRelationCousinFathersSistersSon: string;

declare const CNLabelContactRelationElderCousinFathersSistersDaughter: string;

declare const CNLabelContactRelationYoungerCousinMothersBrothersSon: string;

declare const CNLabelContactRelationElderCousinMothersBrothersDaughter: string;

declare const CNLabelContactRelationYoungerCousinMothersBrothersDaughter: string;

declare const CNLabelContactRelationCousinMothersBrothersDaughter: string;

declare const CNLabelContactRelationYoungerCousinParentsSiblingsDaughter: string;

declare const CNLabelContactRelationCousinParentsSiblingsDaughter: string;

declare const CNLabelContactRelationYoungerCousinParentsSiblingsSon: string;

declare const CNLabelContactRelationFemaleCousin: string;

declare const CNLabelContactRelationMaleCousin: string;

declare const CNLabelContactRelationCoBrotherInLaw: string;

declare const CNLabelContactRelationBrotherInLawWifesSistersHusband: string;

declare const CNLabelContactRelationSisterInLawHusbandsBrothersWife: string;

declare const CNLabelContactRelationBrotherInLawSpousesBrother: string;

declare const CNLabelContactRelationYoungerBrotherInLaw: string;

declare const CNLabelContactRelationBrotherInLaw: string;

declare const CNLabelContactRelationSisterInLawElderBrothersWife: string;

declare const CNLabelContactRelationSisterInLawYoungerBrothersWife: string;

declare const CNLabelContactRelationSisterInLawBrothersWife: string;

declare const CNLabelContactRelationSisterInLawWifesSister: string;

declare const CNLabelContactRelationElderSisterInLaw: string;

declare const CNLabelContactRelationYoungerSiblingInLaw: string;

declare const CNLabelContactRelationCoFatherInLaw: string;

declare const CNLabelContactRelationFatherInLaw: string;

declare const CNLabelContactRelationMotherInLawHusbandsMother: string;

declare const CNLabelContactRelationMotherInLawWifesMother: string;

declare const CNLabelContactRelationGrandsonDaughtersSon: string;

declare const CNLabelContactRelationGrandson: string;

declare const CNLabelContactRelationGranddaughterDaughtersDaughter: string;

declare const CNLabelContactRelationGranddaughter: string;

declare const CNLabelContactRelationGreatGrandparent: string;

declare const CNLabelContactRelationGrandfatherMothersFather: string;

declare const CNLabelContactRelationGrandfather: string;

declare const CNLabelContactRelationGrandmotherFathersMother: string;

declare const CNLabelContactRelationGrandparent: string;

declare const CNLabelContactRelationDaughter: string;

declare const CNLabelContactRelationParent: string;

declare const CNLabelContactRelationGirlfriend: string;

declare const CNLabelContactRelationMalePartner: string;

declare const CNLabelContactRelationWife: string;

declare const CNLabelContactRelationElderBrother: string;

declare const CNLabelContactRelationYoungerBrother: string;

declare const CNLabelContactRelationEldestSister: string;

declare const CNLabelContactRelationElderSister: string;

declare const CNLabelContactRelationYoungestSister: string;

declare const CNLabelContactRelationYoungerSibling: string;

declare const CNLabelContactRelationTeacher: string;

declare const CNLabelContactRelationAssistant: string;

declare const CNPostalAddressISOCountryCodeKey: string;

declare const CNPostalAddressCountryKey: string;

declare const CNPostalAddressSubAdministrativeAreaKey: string;

declare const CNPostalAddressCityKey: string;

declare const CNPostalAddressStreetKey: string;

declare const CNLabelPhoneNumberMain: string;

declare const CNLabelPhoneNumberiPhone: string;

declare const CNLabelDateAnniversary: string;

declare const CNLabelURLAddressHomePage: string;

declare const CNLabelEmailiCloud: string;

declare const CNLabelOther: string;

declare const CNLabelSchool: string;

declare const CNLabelWork: string;

declare const CNLabelHome: string;

declare const CNLabelContactRelationYoungerCousinMothersSiblingsSonOrFathersSistersSon: string;

declare const CNLabelContactRelationGreatGrandmother: string;

declare const CNLabelContactRelationGranduncle: string;

declare const CNLabelContactRelationCousinFathersSistersDaughter: string;

declare const CNLabelContactRelationElderCousinMothersSistersDaughter: string;

declare const CNLabelContactRelationUncleMothersElderBrother: string;

declare const CNLabelContactRelationElderCousinMothersSiblingsSonOrFathersSistersSon: string;

declare const CNLabelContactRelationColleague: string;

declare const CNSocialProfileUserIdentifierKey: string;

declare const CNLabelContactRelationCousinGrandparentsSiblingsSon: string;

declare const CNLabelContactRelationUncle: string;

declare const CNLabelContactRelationNieceBrothersDaughter: string;

declare const CNSocialProfileServiceFlickr: string;

declare const CNLabelContactRelationGrandmother: string;

declare const CNLabelContactRelationSonInLaw: string;

declare const CNLabelContactRelationSpouse: string;

declare const CNContactPreviousFamilyNameKey: string;

declare const CNLabelContactRelationParentsSibling: string;

declare const CNLabelContactRelationElderCousinFathersSistersSon: string;

declare const CNLabelContactRelationNieceSistersDaughterOrWifesSiblingsDaughter: string;

declare const CNLabelContactRelationNephewBrothersSonOrHusbandsSiblingsSon: string;

declare const CNLabelContactRelationBrotherInLawHusbandsSistersHusband: string;

declare const CNLabelContactRelationElderSiblingInLaw: string;

declare const CNLabelContactRelationGreatGrandfather: string;

declare const CNInstantMessageServiceYahoo: string;

declare const CNLabelContactRelationHusband: string;

declare const CNLabelContactRelationBrotherInLawElderSistersHusband: string;

declare const CNLabelContactRelationStepson: string;

declare const CNLabelContactRelationFatherInLawHusbandsFather: string;

declare const CNLabelContactRelationSonInLawOrBrotherInLaw: string;

declare const CNLabelContactRelationUncleParentsBrother: string;

declare const CNLabelContactRelationGrandnieceBrothersGranddaughter: string;

declare const CNContactUrlAddressesKey: string;

declare const CNLabelContactRelationGrandfatherFathersFather: string;

declare const CNLabelContactRelationNieceOrCousin: string;

declare const CNSocialProfileServiceTencentWeibo: string;

declare const CNLabelContactRelationUncleFathersElderSistersHusband: string;

declare const CNContactPropertyAttribute: string;

declare const CNLabelContactRelationSister: string;

declare const CNLabelContactRelationNephew: string;

declare const CNContactInstantMessageAddressesKey: string;

declare const CNLabelContactRelationDaughterInLawOrSisterInLaw: string;

declare const CNPostalAddressStateKey: string;

declare const CNLabelContactRelationParentsSiblingMothersSibling: string;

declare const CNLabelContactRelationYoungerCousinFathersSistersSon: string;

declare const CNLabelContactRelationCousin: string;

declare const CNLabelContactRelationGrandchild: string;

declare const CNLabelContactRelationElderSibling: string;

declare const CNLabelContactRelationAunt: string;

declare const CNLabelContactRelationGreatGrandchild: string;

declare const CNLabelContactRelationCousinMothersSistersSon: string;

declare const CNLabelContactRelationUncleFathersElderBrother: string;

declare const CNLabelContactRelationAuntMothersElderSister: string;

declare const CNLabelContactRelationUncleMothersBrother: string;

declare const CNErrorUserInfoKeyPathsKey: string;

declare const CNLabelContactRelationGrandsonSonsSon: string;

declare const CNLabelContactRelationPartner: string;

declare const CNLabelContactRelationSiblingInLaw: string;

declare const CNContactRelationsKey: string;

declare const CNContactOrganizationNameKey: string;

declare const CNLabelContactRelationBrotherInLawWifesBrother: string;

declare const CNLabelContactRelationFemaleFriend: string;

declare const CNLabelContactRelationStepdaughter: string;

declare const CNLabelContactRelationMother: string;

declare const CNLabelContactRelationCousinMothersBrothersSon: string;

declare const CNLabelContactRelationGrandnieceSistersGranddaughter: string;

declare const CNSocialProfileServiceSinaWeibo: string;

declare const CNLabelContactRelationAuntFathersYoungerSister: string;

declare const CNLabelContactRelationSisterInLawWifesBrothersWife: string;

declare const CNLabelContactRelationUncleMothersSistersHusband: string;

declare const CNLabelContactRelationCoParentInLaw: string;

declare const CNLabelContactRelationFriend: string;

declare const CNLabelPhoneNumberOtherFax: string;

declare const CNLabelContactRelationCousinFathersBrothersSon: string;

declare const CNLabelContactRelationParentsSiblingMothersElderSibling: string;

declare const CNPostalAddressPropertyAttribute: string;

declare const CNLabelContactRelationYoungerSisterInLaw: string;

declare const CNErrorUserInfoValidationErrorsKey: string;

declare const CNLabelContactRelationSisterInLawHusbandsSister: string;

declare const CNLabelContactRelationElderCousinParentsSiblingsSon: string;

declare const CNContactFamilyNameKey: string;

declare const CNContactThumbnailImageDataKey: string;

declare const CNLabelContactRelationParentsElderSibling: string;

declare const CNContactPropertyNotFetchedExceptionName: string;

declare const CNLabelContactRelationGrandchildOrSiblingsChild: string;

declare const CNLabelContactRelationElderCousinMothersSistersSon: string;

declare const CNLabelContactRelationAuntFathersBrothersWife: string;

declare const CNLabelContactRelationChild: string;

declare const CNLabelContactRelationParentInLaw: string;

declare const CNLabelContactRelationStepsister: string;

declare const CNLabelContactRelationMaleFriend: string;

declare const CNLabelContactRelationBrotherInLawHusbandsBrother: string;

declare const CNInstantMessageAddressUsernameKey: string;

declare const CNLabelContactRelationYoungestBrother: string;

declare const CNInstantMessageServiceGaduGadu: string;

declare const CNLabelContactRelationYoungerCousinFathersSistersDaughter: string;

declare const CNLabelContactRelationGranddaughterOrNiece: string;

declare const CNLabelContactRelationGreatGrandchildOrSiblingsGrandchild: string;

declare const CNLabelContactRelationGrandnephew: string;

declare const CNContactDepartmentNameKey: string;

declare const CNLabelContactRelationNiece: string;

declare const CNLabelContactRelationElderCousinFathersBrothersDaughter: string;

declare const CNLabelContactRelationAuntMothersSister: string;

declare const CNGroupNameKey: string;

declare const CNContactBirthdayKey: string;

declare const CNLabelContactRelationElderCousinFathersBrothersSon: string;

declare const CNLabelContactRelationCousinParentsSiblingsSon: string;

declare const CNLabelContactRelationCousinFathersBrothersDaughter: string;

declare const CNContactSocialProfilesKey: string;

declare const CNLabelContactRelationFatherInLawOrStepfather: string;

declare const CNLabelContactRelationParentsSiblingFathersYoungerSibling: string;

declare const CNLabelContactRelationCousinGrandparentsSiblingsChild: string;

declare const CNLabelContactRelationYoungerSister: string;

declare const CNLabelContactRelationUncleFathersBrother: string;

declare const CNInstantMessageServiceSkype: string;

declare const CNInstantMessageServiceMSN: string;

declare const CNPostalAddressPostalCodeKey: string;

declare const CNContactPhoneticGivenNameKey: string;

declare const CNLabelContactRelationElderCousinParentsSiblingsDaughter: string;

declare const CNLabelContactRelationFemalePartner: string;

declare const CNContactJobTitleKey: string;

declare const CNLabelContactRelationElderCousinMothersBrothersSon: string;

declare const CNLabelContactRelationBoyfriend: string;

declare const CNErrorDomain: string;

declare const CNLabelContactRelationYoungerCousinMothersSistersSon: string;

declare const CNLabelContactRelationSisterInLaw: string;

declare const CNLabelPhoneNumberHomeFax: string;

declare const CNLabelContactRelationBrother: string;

declare const CNLabelContactRelationElderBrotherInLaw: string;

declare const CNLabelContactRelationSibling: string;

declare const CNSocialProfileServiceMySpace: string;

declare const CNContactNicknameKey: string;

declare const CNInstantMessageServiceFacebook: string;

declare const CNLabelContactRelationEldestBrother: string;

declare const CNLabelContactRelationCousinParentsSiblingsChild: string;

declare const CNLabelContactRelationGreatGranddaughter: string;

declare const CNLabelContactRelationGranddaughterSonsDaughter: string;

declare const CNLabelContactRelationGirlfriendOrBoyfriend: string;

declare const CNLabelContactRelationCousinMothersSistersDaughter: string;

declare const CNLabelContactRelationYoungerCousin: string;

declare const CNLabelContactRelationStepchild: string;

declare const CNLabelContactRelationSisterInLawSpousesSister: string;

declare const CNLabelContactRelationMotherInLaw: string;

declare const CNContactNameSuffixKey: string;

declare const CNLabelContactRelationUncleParentsElderBrother: string;

declare const CNLabelContactRelationCoSisterInLaw: string;

declare const CNLabelContactRelationParentsSiblingMothersYoungerSibling: string;

declare const CNLabelContactRelationElderCousinMothersSiblingsDaughterOrFathersSistersDaughter: string;

declare const CNPostalAddressSubLocalityKey: string;

declare const CNLabelPhoneNumberPager: string;

declare const CNLabelContactRelationAuntParentsYoungerSister: string;

declare const CNContactNoteKey: string;

declare const CNLabelContactRelationFatherInLawWifesFather: string;

declare const CNLabelContactRelationBrotherInLawSistersHusband: string;

declare const CNLabelContactRelationDaughterInLawOrStepdaughter: string;

declare const CNLabelContactRelationElderCousin: string;

declare const CNLabelContactRelationUncleFathersYoungerBrother: string;

declare const CNLabelContactRelationSon: string;

declare const CNLabelContactRelationUncleFathersSistersHusband: string;

declare const CNLabelPhoneNumberWorkFax: string;

declare const CNLabelContactRelationMotherInLawOrStepmother: string;

declare const CNLabelContactRelationBrotherInLawYoungerSistersHusband: string;

declare const CNLabelPhoneNumberMobile: string;

declare const CNLabelContactRelationGreatGrandson: string;

declare const CNEntityType: {
  CNEntityTypeContacts: 0,
};

declare const CNContactSortOrder: {
  None: 0,
  UserDefault: 1,
  GivenName: 2,
  FamilyName: 3,
};

declare const CNContactDisplayNameOrder: {
  UserDefault: 0,
  GivenNameFirst: 1,
  FamilyNameFirst: 2,
};

declare const CNAuthorizationStatus: {
  NotDetermined: 0,
  Restricted: 1,
  Denied: 2,
  Authorized: 3,
};

declare const CNContainerType: {
  Unassigned: 0,
  Local: 1,
  Exchange: 2,
  CardDAV: 3,
};

declare const CNErrorCode: {
  CommunicationError: 1,
  DataAccessError: 2,
  AuthorizationDenied: 100,
  NoAccessableWritableContainers: 101,
  UnauthorizedKeys: 102,
  FeatureDisabledByUser: 103,
  RecordDoesNotExist: 200,
  InsertedRecordAlreadyExists: 201,
  ContainmentCycle: 202,
  ContainmentScope: 203,
  ParentRecordDoesNotExist: 204,
  RecordIdentifierInvalid: 205,
  RecordNotWritable: 206,
  ParentContainerNotWritable: 207,
  ValidationMultipleErrors: 300,
  ValidationTypeMismatch: 301,
  ValidationConfigurationError: 302,
  PredicateInvalid: 400,
  PolicyViolation: 500,
  ClientIdentifierInvalid: 600,
  ClientIdentifierDoesNotExist: 601,
  ClientIdentifierCollision: 602,
  ChangeHistoryExpired: 603,
  ChangeHistoryInvalidAnchor: 604,
  ChangeHistoryInvalidFetchRequest: 605,
  VCardMalformed: 700,
  VCardSummarizationError: 701,
};

declare const CNContactFormatterStyle: {
  CNContactFormatterStyleFullName: 0,
  Phonetic: 1,
};

declare const CNPostalAddressFormatterStyle: {
  CNPostalAddressFormatterStyleMailingAddress: 0,
};

declare const CNContactType: {
  Person: 0,
  Organization: 1,
};

declare interface CNKeyDescriptor extends NSObjectProtocol, NSSecureCoding, NSCopying {
}

declare class CNKeyDescriptor extends NativeObject implements CNKeyDescriptor {
}

declare interface CNChangeHistoryEventVisitor extends NSObjectProtocol {
  visitDropEverythingEvent(event: CNChangeHistoryDropEverythingEvent): void;

  visitAddContactEvent(event: CNChangeHistoryAddContactEvent): void;

  visitUpdateContactEvent(event: CNChangeHistoryUpdateContactEvent): void;

  visitDeleteContactEvent(event: CNChangeHistoryDeleteContactEvent): void;

  visitAddGroupEvent?(event: CNChangeHistoryAddGroupEvent): void;

  visitUpdateGroupEvent?(event: CNChangeHistoryUpdateGroupEvent): void;

  visitDeleteGroupEvent?(event: CNChangeHistoryDeleteGroupEvent): void;

  visitAddMemberToGroupEvent?(event: CNChangeHistoryAddMemberToGroupEvent): void;

  visitRemoveMemberFromGroupEvent?(event: CNChangeHistoryRemoveMemberFromGroupEvent): void;

  visitAddSubgroupToGroupEvent?(event: CNChangeHistoryAddSubgroupToGroupEvent): void;

  visitRemoveSubgroupFromGroupEvent?(event: CNChangeHistoryRemoveSubgroupFromGroupEvent): void;
}

declare class CNChangeHistoryEventVisitor extends NativeObject implements CNChangeHistoryEventVisitor {
}

declare class CNChangeHistoryEvent extends NSObject implements NSCopying, NSSecureCoding {
  acceptEventVisitor(visitor: CNChangeHistoryEventVisitor): void;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

declare class CNChangeHistoryAddMemberToGroupEvent extends CNChangeHistoryEvent {
  readonly member: CNContact;

  readonly group: CNGroup;
}

declare class CNContactProperty extends NSObject implements NSCopying, NSSecureCoding {
  readonly contact: CNContact;

  readonly key: string;

  readonly value: interop.Object;

  readonly identifier: string;

  readonly label: string;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

declare class CNFetchRequest extends NSObject {
}

declare class CNContactVCardSerialization extends NSObject {
  static descriptorForRequiredKeys(): CNKeyDescriptor;

  static dataWithContactsError(contacts: NSArray<interop.Object> | Array<interop.Object>, error: interop.PointerConvertible): NSData;

  static contactsWithDataError(data: NSData, error: interop.PointerConvertible): NSArray;
}

declare class CNPostalAddressFormatter extends NSFormatter {
  static stringFromPostalAddressStyle(postalAddress: CNPostalAddress, style: interop.Enum<typeof CNPostalAddressFormatterStyle>): string;

  static attributedStringFromPostalAddressStyleWithDefaultAttributes(postalAddress: CNPostalAddress, style: interop.Enum<typeof CNPostalAddressFormatterStyle>, attributes: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): NSAttributedString;

  style: interop.Enum<typeof CNPostalAddressFormatterStyle>;

  stringFromPostalAddress(postalAddress: CNPostalAddress): string;

  attributedStringFromPostalAddressWithDefaultAttributes(postalAddress: CNPostalAddress, attributes: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): NSAttributedString;
}

declare class CNContactFormatter extends NSFormatter implements NSSecureCoding {
  static descriptorForRequiredKeysForStyle(style: interop.Enum<typeof CNContactFormatterStyle>): CNKeyDescriptor;

  static readonly descriptorForRequiredKeysForNameOrder: CNKeyDescriptor;

  static readonly descriptorForRequiredKeysForDelimiter: CNKeyDescriptor;

  static stringFromContactStyle(contact: CNContact, style: interop.Enum<typeof CNContactFormatterStyle>): string;

  static attributedStringFromContactStyleDefaultAttributes(contact: CNContact, style: interop.Enum<typeof CNContactFormatterStyle>, attributes: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object> | null): NSAttributedString;

  static nameOrderForContact(contact: CNContact): interop.Enum<typeof CNContactDisplayNameOrder>;

  static delimiterForContact(contact: CNContact): string;

  style: interop.Enum<typeof CNContactFormatterStyle>;

  stringFromContact(contact: CNContact): string;

  attributedStringFromContactDefaultAttributes(contact: CNContact, attributes: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object> | null): NSAttributedString;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

declare class CNPhoneNumber extends NSObject implements NSCopying, NSSecureCoding {
  static phoneNumberWithStringValue<This extends abstract new (...args: any) => any>(this: This, stringValue: string): InstanceType<This>;

  initWithStringValue(string: string): this;

  init(): this;

  static new<This extends abstract new (...args: any) => any>(this: This): InstanceType<This>;

  readonly stringValue: string;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

declare class CNGroup extends NSObject implements NSCopying, NSMutableCopying, NSSecureCoding {
  readonly identifier: string;

  readonly name: string;

  static predicateForGroupsWithIdentifiers(identifiers: NSArray<interop.Object> | Array<interop.Object>): NSPredicate;

  static predicateForSubgroupsInGroupWithIdentifier(parentGroupIdentifier: string): NSPredicate;

  static predicateForGroupsInContainerWithIdentifier(containerIdentifier: string): NSPredicate;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

// @ts-ignore ClassDecl.tsIgnore
declare class CNMutableContact extends CNContact {
  // @ts-ignore MemberDecl.tsIgnore
  contactType: interop.Enum<typeof CNContactType>;

  // @ts-ignore MemberDecl.tsIgnore
  namePrefix: string;

  // @ts-ignore MemberDecl.tsIgnore
  givenName: string;

  // @ts-ignore MemberDecl.tsIgnore
  middleName: string;

  // @ts-ignore MemberDecl.tsIgnore
  familyName: string;

  // @ts-ignore MemberDecl.tsIgnore
  previousFamilyName: string;

  // @ts-ignore MemberDecl.tsIgnore
  nameSuffix: string;

  // @ts-ignore MemberDecl.tsIgnore
  nickname: string;

  // @ts-ignore MemberDecl.tsIgnore
  organizationName: string;

  // @ts-ignore MemberDecl.tsIgnore
  departmentName: string;

  // @ts-ignore MemberDecl.tsIgnore
  jobTitle: string;

  // @ts-ignore MemberDecl.tsIgnore
  phoneticGivenName: string;

  // @ts-ignore MemberDecl.tsIgnore
  phoneticMiddleName: string;

  // @ts-ignore MemberDecl.tsIgnore
  phoneticFamilyName: string;

  // @ts-ignore MemberDecl.tsIgnore
  phoneticOrganizationName: string;

  // @ts-ignore MemberDecl.tsIgnore
  note: string;

  // @ts-ignore MemberDecl.tsIgnore
  imageData: NSData;

  // @ts-ignore MemberDecl.tsIgnore
  get phoneNumbers(): NSArray;
  // @ts-ignore MemberDecl.tsIgnore
  set phoneNumbers(value: NSArray<interop.Object> | Array<interop.Object>);

  // @ts-ignore MemberDecl.tsIgnore
  get emailAddresses(): NSArray;
  // @ts-ignore MemberDecl.tsIgnore
  set emailAddresses(value: NSArray<interop.Object> | Array<interop.Object>);

  // @ts-ignore MemberDecl.tsIgnore
  get postalAddresses(): NSArray;
  // @ts-ignore MemberDecl.tsIgnore
  set postalAddresses(value: NSArray<interop.Object> | Array<interop.Object>);

  // @ts-ignore MemberDecl.tsIgnore
  get urlAddresses(): NSArray;
  // @ts-ignore MemberDecl.tsIgnore
  set urlAddresses(value: NSArray<interop.Object> | Array<interop.Object>);

  // @ts-ignore MemberDecl.tsIgnore
  get contactRelations(): NSArray;
  // @ts-ignore MemberDecl.tsIgnore
  set contactRelations(value: NSArray<interop.Object> | Array<interop.Object>);

  // @ts-ignore MemberDecl.tsIgnore
  get socialProfiles(): NSArray;
  // @ts-ignore MemberDecl.tsIgnore
  set socialProfiles(value: NSArray<interop.Object> | Array<interop.Object>);

  // @ts-ignore MemberDecl.tsIgnore
  get instantMessageAddresses(): NSArray;
  // @ts-ignore MemberDecl.tsIgnore
  set instantMessageAddresses(value: NSArray<interop.Object> | Array<interop.Object>);

  // @ts-ignore MemberDecl.tsIgnore
  birthday: NSDateComponents;

  // @ts-ignore MemberDecl.tsIgnore
  nonGregorianBirthday: NSDateComponents;

  // @ts-ignore MemberDecl.tsIgnore
  get dates(): NSArray;
  // @ts-ignore MemberDecl.tsIgnore
  set dates(value: NSArray<interop.Object> | Array<interop.Object>);
}

declare class CNChangeHistoryRemoveSubgroupFromGroupEvent extends CNChangeHistoryEvent {
  readonly subgroup: CNGroup;

  readonly group: CNGroup;
}

declare class CNChangeHistoryAddSubgroupToGroupEvent extends CNChangeHistoryEvent {
  readonly subgroup: CNGroup;

  readonly group: CNGroup;
}

declare class CNChangeHistoryRemoveMemberFromGroupEvent extends CNChangeHistoryEvent {
  readonly member: CNContact;

  readonly group: CNGroup;
}

declare class CNChangeHistoryUpdateGroupEvent extends CNChangeHistoryEvent {
  readonly group: CNGroup;
}

declare class CNChangeHistoryAddGroupEvent extends CNChangeHistoryEvent {
  readonly group: CNGroup;

  readonly containerIdentifier: string;
}

declare class CNChangeHistoryUpdateContactEvent extends CNChangeHistoryEvent {
  readonly contact: CNContact;
}

declare class CNChangeHistoryDropEverythingEvent extends CNChangeHistoryEvent {
}

declare class CNContactRelation extends NSObject implements NSCopying, NSSecureCoding {
  static contactRelationWithName<This extends abstract new (...args: any) => any>(this: This, name: string): InstanceType<This>;

  initWithName(name: string): this;

  readonly name: string;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

declare class CNLabeledValue<ValueType = interop.Object> extends NSObject implements NSCopying, NSSecureCoding {
  readonly identifier: string;

  readonly label: string;

  readonly value: ValueType;

  static labeledValueWithLabelValue<ValueType, This extends abstract new (...args: any) => any>(this: This, label: string | null, value: ValueType): InstanceType<This>;

  initWithLabelValue(label: string | null, value: ValueType): this;

  labeledValueBySettingLabel(label: string | null): this;

  labeledValueBySettingValue(value: ValueType): this;

  labeledValueBySettingLabelValue(label: string | null, value: ValueType): this;

  static localizedStringForLabel<ValueType>(label: string): string;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

declare class CNChangeHistoryAddContactEvent extends CNChangeHistoryEvent {
  readonly contact: CNContact;

  readonly containerIdentifier: string;
}

declare class CNChangeHistoryDeleteContactEvent extends CNChangeHistoryEvent {
  readonly contactIdentifier: string;
}

declare class CNContactFetchRequest extends CNFetchRequest implements NSSecureCoding {
  initWithKeysToFetch(keysToFetch: NSArray<interop.Object> | Array<interop.Object>): this;

  predicate: NSPredicate;

  get keysToFetch(): NSArray;
  set keysToFetch(value: NSArray<interop.Object> | Array<interop.Object>);

  mutableObjects: boolean;

  unifyResults: boolean;

  sortOrder: interop.Enum<typeof CNContactSortOrder>;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

// @ts-ignore ClassDecl.tsIgnore
declare class CNMutableGroup extends CNGroup {
  // @ts-ignore MemberDecl.tsIgnore
  name: string;
}

declare class CNContactsUserDefaults extends NSObject {
  static sharedDefaults<This extends abstract new (...args: any) => any>(this: This): InstanceType<This>;

  readonly sortOrder: interop.Enum<typeof CNContactSortOrder>;

  readonly countryCode: string;
}

declare class CNContainer extends NSObject implements NSCopying, NSSecureCoding {
  readonly identifier: string;

  readonly name: string;

  readonly type: interop.Enum<typeof CNContainerType>;

  static predicateForContainersWithIdentifiers(identifiers: NSArray<interop.Object> | Array<interop.Object>): NSPredicate;

  static predicateForContainerOfContactWithIdentifier(contactIdentifier: string): NSPredicate;

  static predicateForContainerOfGroupWithIdentifier(groupIdentifier: string): NSPredicate;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

declare class CNSaveRequest extends NSObject {
  addContactToContainerWithIdentifier(contact: CNMutableContact, identifier: string | null): void;

  updateContact(contact: CNMutableContact): void;

  deleteContact(contact: CNMutableContact): void;

  addGroupToContainerWithIdentifier(group: CNMutableGroup, identifier: string | null): void;

  updateGroup(group: CNMutableGroup): void;

  deleteGroup(group: CNMutableGroup): void;

  addSubgroupToGroup(subgroup: CNGroup, group: CNGroup): void;

  removeSubgroupFromGroup(subgroup: CNGroup, group: CNGroup): void;

  addMemberToGroup(contact: CNContact, group: CNGroup): void;

  removeMemberFromGroup(contact: CNContact, group: CNGroup): void;
}

declare class CNFetchResult<ValueType = interop.Object> extends NSObject {
  readonly value: ValueType;

  readonly currentHistoryToken: NSData;
}

declare class CNChangeHistoryFetchRequest extends CNFetchRequest implements NSSecureCoding {
  startingToken: NSData;

  get additionalContactKeyDescriptors(): NSArray;
  set additionalContactKeyDescriptors(value: NSArray<interop.Object> | Array<interop.Object>);

  shouldUnifyResults: boolean;

  mutableObjects: boolean;

  includeGroupChanges: boolean;

  get excludedTransactionAuthors(): NSArray;
  set excludedTransactionAuthors(value: NSArray<interop.Object> | Array<interop.Object>);

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

declare class CNPostalAddress extends NSObject implements NSCopying, NSMutableCopying, NSSecureCoding {
  readonly street: string;

  readonly subLocality: string;

  readonly city: string;

  readonly subAdministrativeArea: string;

  readonly state: string;

  readonly postalCode: string;

  readonly country: string;

  readonly ISOCountryCode: string;

  static localizedStringForKey(key: string): string;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

declare class CNContact extends NSObject implements NSCopying, NSMutableCopying, NSSecureCoding, NSItemProviderReading, NSItemProviderWriting {
  readonly identifier: string;

  readonly contactType: interop.Enum<typeof CNContactType>;

  readonly namePrefix: string;

  readonly givenName: string;

  readonly middleName: string;

  readonly familyName: string;

  readonly previousFamilyName: string;

  readonly nameSuffix: string;

  readonly nickname: string;

  readonly organizationName: string;

  readonly departmentName: string;

  readonly jobTitle: string;

  readonly phoneticGivenName: string;

  readonly phoneticMiddleName: string;

  readonly phoneticFamilyName: string;

  readonly phoneticOrganizationName: string;

  readonly note: string;

  readonly imageData: NSData;

  readonly thumbnailImageData: NSData;

  readonly imageDataAvailable: boolean;

  readonly phoneNumbers: NSArray;

  readonly emailAddresses: NSArray;

  readonly postalAddresses: NSArray;

  readonly urlAddresses: NSArray;

  readonly contactRelations: NSArray;

  readonly socialProfiles: NSArray;

  readonly instantMessageAddresses: NSArray;

  readonly birthday: NSDateComponents;

  readonly nonGregorianBirthday: NSDateComponents;

  readonly dates: NSArray;

  isKeyAvailable(key: string): boolean;

  areKeysAvailable(keyDescriptors: NSArray<interop.Object> | Array<interop.Object>): boolean;

  static localizedStringForKey(key: string): string;

  static comparatorForNameSortOrder(sortOrder: interop.Enum<typeof CNContactSortOrder>): (p1: interop.Object, p2: interop.Object) => interop.Enum<typeof NSComparisonResult>;

  static descriptorForAllComparatorKeys(): CNKeyDescriptor;

  isUnifiedWithContactWithIdentifier(contactIdentifier: string): boolean;

  static predicateForContactsMatchingName(name: string): NSPredicate;

  static predicateForContactsMatchingEmailAddress(emailAddress: string): NSPredicate;

  static predicateForContactsMatchingPhoneNumber(phoneNumber: CNPhoneNumber): NSPredicate;

  static predicateForContactsWithIdentifiers(identifiers: NSArray<interop.Object> | Array<interop.Object>): NSPredicate;

  static predicateForContactsInGroupWithIdentifier(groupIdentifier: string): NSPredicate;

  static predicateForContactsInContainerWithIdentifier(containerIdentifier: string): NSPredicate;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  mutableCopyWithZone(zone: interop.PointerConvertible): interop.Object;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;

  static readonly readableTypeIdentifiersForItemProvider: NSArray;

  static objectWithItemProviderDataTypeIdentifierError<This extends abstract new (...args: any) => any>(this: This, data: NSData, typeIdentifier: string, outError: interop.PointerConvertible): InstanceType<This>;

  isEqual(object: interop.Object): boolean;

  readonly hash: number;

  readonly superclass: interop.Pointer;

  class(): interop.Pointer;

  self(): this;

  performSelector(aSelector: string): interop.Object;

  performSelectorWithObject(aSelector: string, object: interop.Object): interop.Object;

  performSelectorWithObjectWithObject(aSelector: string, object1: interop.Object, object2: interop.Object): interop.Object;

  readonly isProxy: boolean;

  isKindOfClass(aClass: interop.PointerConvertible): boolean;

  isMemberOfClass(aClass: interop.PointerConvertible): boolean;

  conformsToProtocol(aProtocol: interop.PointerConvertible): boolean;

  respondsToSelector(aSelector: string): boolean;

  retain(): this;

  release(): void;

  autorelease(): this;

  retainCount(): number;

  readonly zone: interop.Pointer;

  readonly description: string;

  readonly debugDescription: string;

  static readonly writableTypeIdentifiersForItemProvider: NSArray;

  readonly writableTypeIdentifiersForItemProvider: NSArray;

  static itemProviderVisibilityForRepresentationWithTypeIdentifier(typeIdentifier: string): interop.Enum<typeof NSItemProviderRepresentationVisibility>;

  itemProviderVisibilityForRepresentationWithTypeIdentifier(typeIdentifier: string): interop.Enum<typeof NSItemProviderRepresentationVisibility>;

  loadDataWithTypeIdentifierForItemProviderCompletionHandler(typeIdentifier: string, completionHandler: (p1: NSData, p2: NSError) => void | null): NSProgress;
}

declare class CNSocialProfile extends NSObject implements NSCopying, NSSecureCoding {
  readonly urlString: string;

  readonly username: string;

  readonly userIdentifier: string;

  readonly service: string;

  initWithUrlStringUsernameUserIdentifierService(urlString: string | null, username: string | null, userIdentifier: string | null, service: string | null): this;

  static localizedStringForKey(key: string): string;

  static localizedStringForService(service: string): string;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

declare class CNChangeHistoryDeleteGroupEvent extends CNChangeHistoryEvent {
  readonly groupIdentifier: string;
}

declare class CNContactStore extends NSObject {
  static authorizationStatusForEntityType(entityType: interop.Enum<typeof CNEntityType>): interop.Enum<typeof CNAuthorizationStatus>;

  requestAccessForEntityTypeCompletionHandler(entityType: interop.Enum<typeof CNEntityType>, completionHandler: (p1: boolean, p2: NSError) => void | null): void;

  unifiedContactsMatchingPredicateKeysToFetchError(predicate: NSPredicate, keys: NSArray<interop.Object> | Array<interop.Object>, error: interop.PointerConvertible): NSArray;

  unifiedContactWithIdentifierKeysToFetchError(identifier: string, keys: NSArray<interop.Object> | Array<interop.Object>, error: interop.PointerConvertible): CNContact;

  unifiedMeContactWithKeysToFetchError(keys: NSArray<interop.Object> | Array<interop.Object>, error: interop.PointerConvertible): CNContact;

  enumeratorForContactFetchRequestError(request: CNContactFetchRequest, error: interop.PointerConvertible): CNFetchResult;

  enumeratorForChangeHistoryFetchRequestError(request: CNChangeHistoryFetchRequest, error: interop.PointerConvertible): CNFetchResult;

  enumerateContactsWithFetchRequestErrorUsingBlock(fetchRequest: CNContactFetchRequest, error: interop.PointerConvertible, block: (p1: CNContact, p2: interop.PointerConvertible) => void): boolean;

  groupsMatchingPredicateError(predicate: NSPredicate | null, error: interop.PointerConvertible): NSArray;

  containersMatchingPredicateError(predicate: NSPredicate | null, error: interop.PointerConvertible): NSArray;

  executeSaveRequestError(saveRequest: CNSaveRequest, error: interop.PointerConvertible): boolean;

  readonly currentHistoryToken: NSData;

  defaultContainerIdentifier(): string;
}

// @ts-ignore ClassDecl.tsIgnore
declare class CNMutablePostalAddress extends CNPostalAddress {
  // @ts-ignore MemberDecl.tsIgnore
  street: string;

  // @ts-ignore MemberDecl.tsIgnore
  subLocality: string;

  // @ts-ignore MemberDecl.tsIgnore
  city: string;

  // @ts-ignore MemberDecl.tsIgnore
  subAdministrativeArea: string;

  // @ts-ignore MemberDecl.tsIgnore
  state: string;

  // @ts-ignore MemberDecl.tsIgnore
  postalCode: string;

  // @ts-ignore MemberDecl.tsIgnore
  country: string;

  // @ts-ignore MemberDecl.tsIgnore
  ISOCountryCode: string;
}

declare class CNInstantMessageAddress extends NSObject implements NSCopying, NSSecureCoding {
  readonly username: string;

  readonly service: string;

  initWithUsernameService(username: string, service: string): this;

  static localizedStringForKey(key: string): string;

  static localizedStringForService(service: string): string;

  copyWithZone(zone: interop.PointerConvertible): interop.Object;

  static readonly supportsSecureCoding: boolean;

  encodeWithCoder(coder: NSCoder): void;

  initWithCoder(coder: NSCoder): this;
}

