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

declare const MLMediaLoadAppleLoops: string;

declare const MLMediaLoadFoldersKey: string;

declare const MLMediaLoadSourceTypesKey: string;

declare const MLMediaSourceMoviesFolderIdentifier: string;

declare const MLMediaSourceCustomFoldersIdentifier: string;

declare const MLMediaSourcePhotoBoothIdentifier: string;

declare const MLMediaSourceGarageBandIdentifier: string;

declare const MLMediaSourceiMovieIdentifier: string;

declare const MLMediaSourceiPhotoIdentifier: string;

declare const MLMediaSourcePhotosIdentifier: string;

declare const MLMediaObjectProtectedKey: string;

declare const MLMediaObjectKeywordsKey: string;

declare const MLMediaObjectResolutionStringKey: string;

declare const MLMediaObjectSampleRateKey: string;

declare const MLMediaObjectGenreKey: string;

declare const MLMediaObjectDurationKey: string;

declare const MLFinalCutEventCalendarGroupTypeIdentifier: string;

declare const MLFinalCutEventLibraryGroupTypeIdentifier: string;

declare const MLFinalCutProjectGroupTypeIdentifier: string;

declare const MLFinalCutRootGroupTypeIdentifier: string;

declare const MLiMovieFolderGroupTypeIdentifier: string;

declare const MLiMovieEventCalendarGroupTypeIdentifier: string;

declare const MLiMovieEventLibraryGroupTypeIdentifier: string;

declare const MLLogicProjectTypeIdentifier: string;

declare const MLLogicRootGroupTypeIdentifier: string;

declare const MLGarageBandRootGroupTypeIdentifier: string;

declare const MLAperturePhotoStreamAlbumTypeIdentifier: string;

declare const MLApertureLastNMonthsAlbumTypeIdentifier: string;

declare const MLAperturePlacesCityAlbumTypeIdentifier: string;

declare const MLApertureFacesAlbumTypeIdentifier: string;

declare const MLApertureFlaggedTypeIdentifier: string;

declare const MLApertureAllPhotosTypeIdentifier: string;

declare const MLApertureSlideShowTypeIdentifier: string;

declare const MLApertureSmugMugGroupTypeIdentifier: string;

declare const MLApertureFacebookAlbumTypeIdentifier: string;

declare const MLApertureFacebookGroupTypeIdentifier: string;

declare const MLApertureFlickrAlbumTypeIdentifier: string;

declare const MLApertureProjectAlbumTypeIdentifier: string;

declare const MLiPhotoSlideShowAlbumTypeIdentifier: string;

declare const MLiPhotoFlickrGroupTypeIdentifier: string;

declare const MLiPhotoPlacesCityAlbumTypeIdentifier: string;

declare const MLiPhotoPlacesAlbumTypeIdentifier: string;

declare const MLiPhotoSubscribedAlbumTypeIdentifier: string;

declare const MLiPhotoFlaggedAlbumTypeIdentifier: string;

declare const MLiPhotoLastNMonthsAlbumTypeIdentifier: string;

declare const MLiPhotoLastImportAlbumTypeIdentifier: string;

declare const MLiPhotoEventAlbumTypeIdentifier: string;

declare const MLiPhotoSmartAlbumTypeIdentifier: string;

declare const MLPhotosAllPhotosAlbumTypeIdentifier: string;

declare const MLPhotosScreenshotGroupTypeIdentifier: string;

declare const MLPhotosVideosGroupTypeIdentifier: string;

declare const MLPhotosAnimatedGroupTypeIdentifier: string;

declare const MLPhotosFavoritesGroupTypeIdentifier: string;

declare const MLPhotosSharedPhotoStreamTypeIdentifier: string;

declare const MLPhotosLastImportGroupTypeIdentifier: string;

declare const MLPhotosYearGroupTypeIdentifier: string;

declare const MLPhotosAllYearsGroupTypeIdentifier: string;

declare const MLPhotosCollectionGroupTypeIdentifier: string;

declare const MLPhotosAllCollectionsGroupTypeIdentifier: string;

declare const MLPhotosMomentGroupTypeIdentifier: string;

declare const MLPhotosAllMomentsGroupTypeIdentifier: string;

declare const MLPhotosPublishedAlbumTypeIdentifier: string;

declare const MLPhotosAlbumsGroupTypeIdentifier: string;

declare const MLPhotosSharedGroupTypeIdentifier: string;

declare const MLiTunesiTunesUPlaylistTypeIdentifier: string;

declare const MLiTunesSavedGeniusPlaylistTypeIdentifier: string;

declare const MLiTunesAudioBooksPlaylistTypeIdentifier: string;

declare const MLiTunesTVShowsPlaylistTypeIdentifier: string;

declare const MLiTunesFolderPlaylistTypeIdentifier: string;

declare const MLiTunesVideoPlaylistTypeIdentifier: string;

declare const MLiTunesPodcastPlaylistTypeIdentifier: string;

declare const MLiTunesPurchasedPlaylistTypeIdentifier: string;

declare const MLFolderGroupTypeIdentifier: string;

declare const MLAperturePlacesPointOfInterestAlbumTypeIdentifier: string;

declare const MLPhotosTimelapseGroupTypeIdentifier: string;

declare const MLiMovieEventGroupTypeIdentifier: string;

declare const MLPhotosPanoramasGroupTypeIdentifier: string;

declare const MLApertureFolderAlbumTypeIdentifier: string;

declare const MLApertureUserSmartAlbumTypeIdentifier: string;

declare const MLMediaObjectBitRateKey: string;

declare const MLApertureAllProjectsTypeIdentifier: string;

declare const MLMediaLoadIncludeSourcesKey: string;

declare const MLiPhotoLibraryAlbumTypeIdentifier: string;

declare const MLApertureUserAlbumTypeIdentifier: string;

declare const MLMediaLoadExcludeSourcesKey: string;

declare const MLiPhotoPhotoStreamAlbumTypeIdentifier: string;

declare const MLPhotosBurstGroupTypeIdentifier: string;

declare const MLFolderRootGroupTypeIdentifier: string;

declare const MLiTunesSmartPlaylistTypeIdentifier: string;

declare const MLMediaSourceFinalCutIdentifier: string;

declare const MLiPhotoFacebookAlbumTypeIdentifier: string;

declare const MLiPhotoAlbumTypeIdentifier: string;

declare const MLiTunesMoviesPlaylistTypeIdentifier: string;

declare const MLMediaObjectKindKey: string;

declare const MLMediaObjectAlbumKey: string;

declare const MLMediaSourceAppDefinedFoldersIdentifier: string;

declare const MLLogicBouncesGroupTypeIdentifier: string;

declare const MLiPhotoFacebookGroupTypeIdentifier: string;

declare const MLMediaSourceApertureIdentifier: string;

declare const MLMediaLoadMoviesFolder: string;

declare const MLiPhotoFolderAlbumTypeIdentifier: string;

declare const MLApertureLightTableTypeIdentifier: string;

declare const MLiMovieProjectGroupTypeIdentifier: string;

declare const MLPhotosMyPhotoStreamTypeIdentifier: string;

declare const MLiPhotoPlacesProvinceAlbumTypeIdentifier: string;

declare const MLGarageBandFolderGroupTypeIdentifier: string;

declare const MLLogicProjectsGroupTypeIdentifier: string;

declare const MLAperturePlacesCountryAlbumTypeIdentifier: string;

declare const MLiTunesGeniusPlaylistTypeIdentifier: string;

declare const MLMediaObjectChannelCountKey: string;

declare const MLMediaObjectCommentsKey: string;

declare const MLFinalCutFolderGroupTypeIdentifier: string;

declare const MLApertureRootGroupTypeIdentifier: string;

declare const MLPhotosFacesAlbumTypeIdentifier: string;

declare const MLiTunesRootGroupTypeIdentifier: string;

declare const MLiMovieRootGroupTypeIdentifier: string;

declare const MLMediaObjectArtistKey: string;

declare const MLMediaObjectTrackNumberKey: string;

declare const MLPhotosLivePhotosGroupTypeIdentifier: string;

declare const MLiPhotoFacesAlbumTypeIdentifier: string;

declare const MLApertureFlickrGroupTypeIdentifier: string;

declare const MLiPhotoLastViewedEventAlbumTypeIdentifier: string;

declare const MLMediaLoadAppFoldersKey: string;

declare const MLPhotosSmartAlbumTypeIdentifier: string;

declare const MLPhotosAlbumTypeIdentifier: string;

declare const MLApertureLastViewedEventAlbumTypeIdentifier: string;

declare const MLMediaSourceLogicIdentifier: string;

declare const MLApertureProjectFolderAlbumTypeIdentifier: string;

declare const MLiPhotoRootGroupTypeIdentifier: string;

declare const MLiPhotoPlacesPointOfInterestAlbumTypeIdentifier: string;

declare const MLiTunesMusicPlaylistTypeIdentifier: string;

declare const MLAperturePlacesAlbumTypeIdentifier: string;

declare const MLPhotosDepthEffectGroupTypeIdentifier: string;

declare const MLiTunesPlaylistTypeIdentifier: string;

declare const MLPhotosFrontCameraGroupTypeIdentifier: string;

declare const MLPhotosSloMoGroupTypeIdentifier: string;

declare const MLApertureLastImportAlbumTypeIdentifier: string;

declare const MLPhotosFolderTypeIdentifier: string;

declare const MLPhotosLongExposureGroupTypeIdentifier: string;

declare const MLAperturePlacesProvinceAlbumTypeIdentifier: string;

declare const MLApertureSmugMugAlbumTypeIdentifier: string;

declare const MLiPhotoPlacesCountryAlbumTypeIdentifier: string;

declare const MLiTunesMusicVideosPlaylistTypeIdentifier: string;

declare const MLFinalCutEventGroupTypeIdentifier: string;

declare const MLMediaSourceiTunesIdentifier: string;

declare const MLiPhotoFlickrAlbumTypeIdentifier: string;

declare const MLPhotosRootGroupTypeIdentifier: string;

declare const MLiPhotoEventsFolderTypeIdentifier: string;

declare const MLMediaType: {
  Audio: 1,
  Image: 2,
  Movie: 4,
};

declare const MLMediaSourceType: {
  Audio: 1,
  Image: 2,
  Movie: 4,
};

declare class MLMediaObject extends NSObject {
  readonly mediaLibrary: MLMediaLibrary;

  readonly identifier: string;

  readonly mediaSourceIdentifier: string;

  readonly attributes: NSDictionary;

  readonly mediaType: interop.Enum<typeof MLMediaType>;

  readonly contentType: string;

  readonly name: string;

  readonly URL: NSURL;

  readonly originalURL: NSURL;

  readonly fileSize: number;

  readonly modificationDate: NSDate;

  readonly thumbnailURL: NSURL;

  readonly artworkImage: NSImage;
}

declare class MLMediaGroup extends NSObject {
  readonly mediaLibrary: MLMediaLibrary;

  readonly parent: MLMediaGroup;

  readonly mediaSourceIdentifier: string;

  readonly name: string;

  readonly identifier: string;

  readonly typeIdentifier: string;

  readonly attributes: NSDictionary;

  readonly childGroups: NSArray;

  readonly URL: NSURL;

  readonly modificationDate: NSDate;

  readonly iconImage: NSImage;

  readonly mediaObjects: NSArray;
}

declare class MLMediaLibrary extends NSObject {
  initWithOptions(options: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): this;

  readonly mediaSources: NSDictionary;
}

declare class MLMediaSource extends NSObject {
  readonly mediaLibrary: MLMediaLibrary;

  readonly mediaSourceIdentifier: string;

  readonly attributes: NSDictionary;

  readonly rootMediaGroup: MLMediaGroup;

  mediaGroupForIdentifier(mediaGroupIdentifier: string): MLMediaGroup;

  mediaGroupsForIdentifiers(mediaGroupIdentifiers: NSArray<interop.Object> | Array<interop.Object>): NSDictionary;

  mediaObjectForIdentifier(mediaObjectIdentifier: string): MLMediaObject;

  mediaObjectsForIdentifiers(mediaObjectIdentifiers: NSArray<interop.Object> | Array<interop.Object>): NSDictionary;
}

