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

declare const IKPictureTakerShowAddressBookPicture: string;

declare const IKToolModeSelectEllipse: string;

declare const IKToolModeSelect: string;

declare const IKToolModeMove: string;

declare const IKToolModeNone: string;

declare const IK_MailBundleIdentifier: string;

declare const IK_ApertureBundleIdentifier: string;

declare const IK_iPhotoBundleIdentifier: string;

declare const IKSlideshowPDFDisplaysAsBook: string;

declare const IKSlideshowPDFDisplayMode: string;

declare const IKSlideshowAudioFile: string;

declare const IKSlideshowScreen: string;

declare const IKSlideshowStartPaused: string;

declare const IKSlideshowWrapAround: string;

declare const IKFilterBrowserExcludeCategories: string;

declare const IKFilterBrowserShowCategories: string;

declare const IKFilterBrowserWillPreviewFilterNotification: string;

declare const IKFilterBrowserFilterDoubleClickNotification: string;

declare const IKUIFlavorAllowFallback: string;

declare const IKUISizeMini: string;

declare const IKPictureTakerImageTransformsKey: string;

declare const IKPictureTakerShowEffectsKey: string;

declare const IKPictureTakerUpdateRecentPictureKey: string;

declare const IKPictureTakerShowRecentPictureKey: string;

declare const IKPictureTakerAllowsFileChoosingKey: string;

declare const IKImageBrowserCellForegroundLayer: string;

declare const IKImageBrowserCellBackgroundLayer: string;

declare const IKImageBrowserGroupFooterLayer: string;

declare const IKImageBrowserGroupStyleKey: string;

declare const IKImageBrowserGroupBackgroundColorKey: string;

declare const IKImageBrowserGroupRangeKey: string;

declare const IKImageBrowserCellsHighlightedTitleAttributesKey: string;

declare const IKImageBrowserSelectionColorKey: string;

declare const IKImageBrowserPDFPageRepresentationType: string;

declare const IKImageBrowserQuickLookPathRepresentationType: string;

declare const IKImageBrowserQCCompositionPathRepresentationType: string;

declare const IKImageBrowserQTMovieRepresentationType: string;

declare const IKImageBrowserNSBitmapImageRepresentationType: string;

declare const IKImageBrowserCGImageRepresentationType: string;

declare const IKImageBrowserNSImageRepresentationType: string;

declare const IKImageBrowserNSURLRepresentationType: string;

declare const IKImageBrowserPathRepresentationType: string;

declare const IKGroupBezelStyle: number;

declare const IKCellsStyleTitled: number;

declare const IKCellsStyleOutlined: number;

declare const kQuartzFilterManagerDidAddFilterNotification: string;

declare const globalUpdateOK: number;

declare const QCCompositionPickerViewDidSelectCompositionNotification: string;

declare const QCRendererMouseLocationKey: string;

declare const QCCompositionRepositoryDidUpdateNotification: string;

declare const QCCompositionProtocolScreenSaver: string;

declare const QCCompositionProtocolGraphicAnimation: string;

declare const QCCompositionOutputWebPageURLKey: string;

declare const QCCompositionOutputImageKey: string;

declare const QCCompositionInputPaceKey: string;

declare const QCCompositionInputTrackSignalKey: string;

declare const QCCompositionInputTrackInfoKey: string;

declare const QCCompositionInputTrackPositionKey: string;

declare const QCCompositionInputScreenImageKey: string;

declare const QCCompositionInputXKey: string;

declare const QCCompositionInputRSSFeedURLKey: string;

declare const QCCompositionInputSourceImageKey: string;

declare const QCCompositionInputImageKey: string;

declare const QCCompositionCategoryStylize: string;

declare const QCCompositionCategoryDistortion: string;

declare const QCCompositionAttributeCategoryKey: string;

declare const QCCompositionAttributeHasConsumersKey: string;

declare const QCCompositionAttributeBuiltInKey: string;

declare const QCCompositionAttributeCopyrightKey: string;

declare const QCCompositionAttributeDescriptionKey: string;

declare const QCPlugInExecutionArgumentEventKey: string;

declare const QCPlugInPixelFormatIf: string;

declare const QCPlugInPixelFormatBGRA8: string;

declare const QCPortTypeImage: string;

declare const QCPortTypeString: string;

declare const QCPortTypeNumber: string;

declare const QCPortTypeBoolean: string;

declare const QCPortAttributeMinimumValueKey: string;

declare const QCPortAttributeNameKey: string;

declare const QCPortAttributeTypeKey: string;

declare const QCPlugInAttributeCategoriesKey: string;

declare const QCPlugInAttributeCopyrightKey: string;

declare const QCPlugInAttributeDescriptionKey: string;

declare const IKOverlayTypeImage: string;

declare const QCCompositionInputDestinationImageKey: string;

declare const IKSlideshowModePDF: string;

declare const QCPortAttributeDefaultValueKey: string;

declare const QCCompositionInputRSSArticleDurationKey: string;

declare const IKFilterBrowserDefaultInputImage: string;

declare const IKUISizeFlavor: string;

declare const IKPictureTakerRemainOpenAfterValidateKey: string;

declare const IKImageBrowserGroupHeaderLayer: string;

declare const IKCellsStyleShadowed: number;

declare const QCCompositionProtocolGraphicTransition: string;

declare const QCPlugInAttributeNameKey: string;

declare const QCPortAttributeMenuItemsKey: string;

declare const IKUImaxSize: string;

declare const QCCompositionInputAudioPeakKey: string;

declare const QCRendererEventKey: string;

declare const QCPortTypeColor: string;

declare const QCCompositionInputPreviewModeKey: string;

declare const IKImageBrowserCellsTitleAttributesKey: string;

declare const QCCompositionAttributeNameKey: string;

declare const QCViewDidStartRenderingNotification: string;

declare const kQuartzFilterManagerDidModifyFilterNotification: string;

declare const IKImageBrowserIconRefPathRepresentationType: string;

declare const IKSlideshowModeOther: string;

declare const QCCompositionInputAudioSpectrumKey: string;

declare const IKImageBrowserCellsSubtitleAttributesKey: string;

declare const QCPortTypeIndex: string;

declare const kQuartzFilterApplicationDomain: string;

declare const IKImageBrowserCGImageSourceRepresentationType: string;

declare const IK_PhotosBundleIdentifier: string;

declare const IKImageBrowserCellPlaceHolderLayer: string;

declare const QCPlugInPixelFormatRGBAf: string;

declare const IKUISizeRegular: string;

declare const IKCellsStyleSubtitled: number;

declare const kQuartzFilterManagerDidRemoveFilterNotification: string;

declare const QCCompositionProtocolImageFilter: string;

declare const IKPictureTakerAllowsVideoCaptureKey: string;

declare const QCPlugInExecutionArgumentMouseLocationKey: string;

declare const IKGroupDisclosureStyle: number;

declare const IKPictureTakerAllowsEditingKey: string;

declare const IKUISizeSmall: string;

declare const QCCompositionProtocolRSSVisualizer: string;

declare const QCPlugInPixelFormatI8: string;

declare const IKPictureTakerShowEmptyPictureKey: string;

declare const IKImageBrowserNSDataRepresentationType: string;

declare const IKToolModeAnnotate: string;

declare const QCPortAttributeMaximumValueKey: string;

declare const IKOverlayTypeBackground: string;

declare const QCCompositionPickerPanelDidSelectCompositionNotification: string;

declare const IKCellsStyleNone: number;

declare const QCPlugInAttributeExamplesKey: string;

declare const QCViewDidStopRenderingNotification: string;

declare const IKPictureTakerInformationalTextKey: string;

declare const IKImageBrowserCellSelectionLayer: string;

declare const IKSlideshowStartIndex: string;

declare const IKFilterBrowserShowPreview: string;

declare const IKSlideshowPDFDisplayBox: string;

declare const IKPictureTakerOutputImageMaxSizeKey: string;

declare const IKImageBrowserGroupTitleKey: string;

declare const QCCompositionInputPrimaryColorKey: string;

declare const IKImageBrowserQCCompositionRepresentationType: string;

declare const IKFilterBrowserFilterSelectedNotification: string;

declare const QCPortTypeStructure: string;

declare const IKToolModeSelectLasso: string;

declare const IKToolModeRotate: string;

declare const IKImageBrowserQTMoviePathRepresentationType: string;

declare const kQuartzFilterPDFWorkflowDomain: string;

declare const IKImageBrowserCellsOutlineColorKey: string;

declare const IKPictureTakerShowAddressBookPictureKey: string;

declare const IKFilterBrowserExcludeFilters: string;

declare const IKImageBrowserBackgroundColorKey: string;

declare const IKImageBrowserIconRefRepresentationType: string;

declare const kQuartzFilterPrintingDomain: string;

declare const QCCompositionInputYKey: string;

declare const QCPlugInPixelFormatARGB8: string;

declare const IKSlideshowModeImages: string;

declare const IKPictureTakerShowEmptyPicture: string;

declare const QCCompositionProtocolMusicVisualizer: string;

declare const QCCompositionCategoryUtility: string;

declare const QCCompositionInputSecondaryColorKey: string;

declare const kQuartzFilterManagerDidSelectFilterNotification: string;

declare const IKToolModeCrop: string;

declare const IKPictureTakerCropAreaSizeKey: string;

declare const IKToolModeSelectRect: string;

declare const QCCompositionAttributeIsTimeDependentKey: string;

declare const IKCameraDeviceViewTransferMode: {
  File: 0,
  Memory: 1,
};

declare const IKScannerDeviceViewTransferMode: {
  File: 0,
  Memory: 1,
};

declare const IKScannerDeviceViewDisplayMode: {
  None: -1,
  Simple: 0,
  Advanced: 1,
};

declare const IKDeviceBrowserViewDisplayMode: {
  Table: 0,
  Outline: 1,
  Icon: 2,
};

declare const IKImageBrowserCellState: {
  NoImage: 0,
  Invalid: 1,
  Ready: 2,
};

declare const QCPlugInExecutionMode: {
  Provider: 1,
  Processor: 2,
  Consumer: 3,
};

declare const QCPlugInTimeMode: {
  None: 0,
  Idle: 1,
  TimeBase: 2,
};

declare const IKImageBrowserDropOperation: {
  On: 0,
  Before: 1,
};

declare const IKCameraDeviceViewDisplayMode: {
  None: -1,
  Table: 0,
  Icon: 1,
};

declare interface QCPlugInContext {
  compositionURL(): NSURL;

  logMessage(format: string): void;

  userInfo(): NSMutableDictionary;

  colorSpace(): interop.Object;

  bounds(): CGRect;

  CGLContextObj(): interop.Pointer;

  outputImageProviderFromBufferWithPixelFormatPixelsWidePixelsHighBaseAddressBytesPerRowReleaseCallbackReleaseContextColorSpaceShouldColorMatch(format: string, width: number, height: number, baseAddress: interop.PointerConvertible, rowBytes: number, callback: (p1: interop.PointerConvertible, p2: interop.PointerConvertible) => void, context: interop.PointerConvertible, colorSpace: interop.Object, colorMatch: boolean): interop.Object;

  outputImageProviderFromTextureWithPixelFormatPixelsWidePixelsHighNameFlippedReleaseCallbackReleaseContextColorSpaceShouldColorMatch(format: string, width: number, height: number, name: number, flipped: boolean, callback: (p1: interop.PointerConvertible, p2: number, p3: interop.PointerConvertible) => void, context: interop.PointerConvertible, colorSpace: interop.Object, colorMatch: boolean): interop.Object;
}

declare class QCPlugInContext extends NativeObject implements QCPlugInContext {
}

declare interface IKImageEditPanelDataSource {
  readonly image: interop.Object;

  setImageImageProperties(image: interop.Object, metaData: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): void;

  thumbnailWithMaximumSize?(size: CGSize): interop.Object;

  readonly imageProperties?: NSDictionary;

  readonly hasAdjustMode?: boolean;

  readonly hasEffectsMode?: boolean;

  readonly hasDetailsMode?: boolean;
}

declare class IKImageEditPanelDataSource extends NativeObject implements IKImageEditPanelDataSource {
}

declare interface IKScannerDeviceViewDelegate {
  scannerDeviceViewDidScanToURLFileDataError?(scannerDeviceView: IKScannerDeviceView, url: NSURL, data: NSData, error: NSError): void;

  scannerDeviceViewDidScanToURLError?(scannerDeviceView: IKScannerDeviceView, url: NSURL, error: NSError): void;

  scannerDeviceViewDidScanToBandDataScanInfoError?(scannerDeviceView: IKScannerDeviceView, data: ICScannerBandData, scanInfo: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>, error: NSError): void;

  scannerDeviceViewDidEncounterError?(scannerDeviceView: IKScannerDeviceView, error: NSError): void;
}

declare class IKScannerDeviceViewDelegate extends NativeObject implements IKScannerDeviceViewDelegate {
}

declare interface IKCameraDeviceViewDelegate {
  cameraDeviceViewSelectionDidChange?(cameraDeviceView: IKCameraDeviceView): void;

  cameraDeviceViewDidDownloadFileLocationFileDataError?(cameraDeviceView: IKCameraDeviceView, file: ICCameraFile, url: NSURL, data: NSData, error: NSError): void;

  cameraDeviceViewDidEncounterError?(cameraDeviceView: IKCameraDeviceView, error: NSError): void;
}

declare class IKCameraDeviceViewDelegate extends NativeObject implements IKCameraDeviceViewDelegate {
}

declare interface IKDeviceBrowserViewDelegate {
  deviceBrowserViewSelectionDidChange(deviceBrowserView: IKDeviceBrowserView, device: ICDevice): void;

  deviceBrowserViewDidEncounterError?(deviceBrowserView: IKDeviceBrowserView, error: NSError): void;
}

declare class IKDeviceBrowserViewDelegate extends NativeObject implements IKDeviceBrowserViewDelegate {
}

declare interface IKSlideshowDataSource {
  numberOfSlideshowItems(): number;

  slideshowItemAtIndex(index: number): interop.Object;

  nameOfSlideshowItemAtIndex?(index: number): string;

  canExportSlideshowItemAtIndexToApplication?(index: number, applicationBundleIdentifier: string): boolean;

  slideshowWillStart?(): void;

  slideshowDidStop?(): void;

  slideshowDidChangeCurrentIndex?(newIndex: number): void;
}

declare class IKSlideshowDataSource extends NativeObject implements IKSlideshowDataSource {
}

declare interface IKFilterCustomUIProvider {
  provideViewForUIConfigurationExcludedKeys(inUIConfiguration: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>, inKeys: NSArray<interop.Object> | Array<interop.Object>): IKFilterUIView;
}

declare class IKFilterCustomUIProvider extends NativeObject implements IKFilterCustomUIProvider {
}

declare interface QCPlugInOutputImageProvider {
  imageBounds(): CGRect;

  imageColorSpace(): interop.Object;

  shouldColorMatch?(): boolean;

  supportedBufferPixelFormats?(): NSArray;

  renderToBufferWithBytesPerRowPixelFormatForBounds?(baseAddress: interop.PointerConvertible, rowBytes: number, format: string, bounds: CGRect): boolean;

  supportedRenderedTexturePixelFormats?(): NSArray;

  copyRenderedTextureForCGLContextPixelFormatBoundsIsFlipped?(cgl_ctx: interop.PointerConvertible, format: string, bounds: CGRect, flipped: interop.PointerConvertible): number;

  releaseRenderedTextureForCGLContext?(name: number, cgl_ctx: interop.PointerConvertible): void;

  canRenderWithCGLContext?(cgl_ctx: interop.PointerConvertible): boolean;

  renderWithCGLContextForBounds?(cgl_ctx: interop.PointerConvertible, bounds: CGRect): boolean;
}

declare class QCPlugInOutputImageProvider extends NativeObject implements QCPlugInOutputImageProvider {
}

declare interface QCPlugInInputImageSource {
  imageBounds(): CGRect;

  imageColorSpace(): interop.Object;

  shouldColorMatch(): boolean;

  lockBufferRepresentationWithPixelFormatColorSpaceForBounds(format: string, colorSpace: interop.Object, bounds: CGRect): boolean;

  bufferPixelsWide(): number;

  bufferPixelsHigh(): number;

  bufferPixelFormat(): string;

  bufferColorSpace(): interop.Object;

  bufferBaseAddress(): interop.Pointer;

  bufferBytesPerRow(): number;

  unlockBufferRepresentation(): void;

  lockTextureRepresentationWithColorSpaceForBounds(colorSpace: interop.Object, bounds: CGRect): boolean;

  texturePixelsWide(): number;

  texturePixelsHigh(): number;

  textureTarget(): number;

  textureName(): number;

  textureColorSpace(): interop.Object;

  textureFlipped(): boolean;

  textureMatrix(): interop.Pointer;

  bindTextureRepresentationToCGLContextTextureUnitNormalizeCoordinates(cgl_ctx: interop.PointerConvertible, unit: number, flag: boolean): void;

  unbindTextureRepresentationFromCGLContextTextureUnit(cgl_ctx: interop.PointerConvertible, unit: number): void;

  unlockTextureRepresentation(): void;
}

declare class QCPlugInInputImageSource extends NativeObject implements QCPlugInInputImageSource {
}

declare interface QCCompositionRenderer {
  attributes(): NSDictionary;

  inputKeys(): NSArray;

  outputKeys(): NSArray;

  setValueForInputKey(value: interop.Object, key: string): boolean;

  valueForInputKey(key: string): interop.Object;

  valueForOutputKey(key: string): interop.Object;

  valueForOutputKeyOfType(key: string, type: string): interop.Object;

  propertyListFromInputValues(): interop.Object;

  setInputValuesWithPropertyList(plist: interop.Object): void;

  userInfo(): NSMutableDictionary;
}

declare class QCCompositionRenderer extends NativeObject implements QCCompositionRenderer {
}

declare class IKSaveOptions extends NSObject {
  delegate: interop.Object;

  readonly imageProperties: NSDictionary;

  readonly imageUTType: string;

  readonly userSelection: NSDictionary;

  initWithImagePropertiesImageUTType(imageProperties: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>, imageUTType: string): this;

  addSaveOptionsAccessoryViewToSavePanel(savePanel: NSSavePanel): void;

  addSaveOptionsToView(view: NSView): void;

  rememberLastSetting: boolean;
}

declare class IKFilterBrowserView extends NSView {
  setPreviewState(inState: boolean): void;

  filterName(): string;
}

declare class IKFilterUIView extends NSView {
  static viewWithFrameFilter(frameRect: CGRect, inFilter: CIFilter): interop.Object;

  initWithFrameFilter(frameRect: CGRect, inFilter: CIFilter): this;

  filter(): CIFilter;

  objectController(): NSObjectController;
}

declare class IKImageBrowserCell extends NSObject {
  imageBrowserView(): IKImageBrowserView;

  representedItem(): interop.Object;

  indexOfRepresentedItem(): number;

  frame(): CGRect;

  imageContainerFrame(): CGRect;

  imageFrame(): CGRect;

  selectionFrame(): CGRect;

  titleFrame(): CGRect;

  subtitleFrame(): CGRect;

  imageAlignment(): interop.Enum<typeof NSImageAlignment>;

  isSelected(): boolean;

  cellState(): interop.Enum<typeof IKImageBrowserCellState>;

  opacity(): number;

  layerForType(type: string): CALayer;
}

declare class QuartzFilterManager extends NSObject {
  static filterManager(): QuartzFilterManager;

  static filtersInDomains(domains: NSArray<interop.Object> | Array<interop.Object>): NSArray;

  filterPanel(): NSPanel;

  filterView(): QuartzFilterView;

  selectedFilter(): QuartzFilter;

  selectFilter(filter: QuartzFilter): boolean;

  setDelegate(aDelegate: interop.Object): void;

  delegate(): interop.Object;

  importFilter(filterProperties: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): QuartzFilter;
}

declare class QuartzFilter extends NSObject {
  static quartzFilterWithURL(aURL: NSURL): QuartzFilter;

  static quartzFilterWithProperties(properties: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): QuartzFilter;

  static quartzFilterWithOutputIntents(outputIntents: NSArray<interop.Object> | Array<interop.Object>): QuartzFilter;

  properties(): NSDictionary;

  url(): NSURL;

  localizedName(): string;

  applyToContext(aContext: interop.Object): boolean;

  removeFromContext(aContext: interop.Object): void;
}

declare class QCPlugInViewController extends NSViewController {
  initWithPlugInViewNibName(plugIn: QCPlugIn, name: string): this;

  plugIn(): QCPlugIn;
}

declare class QCRenderer extends NSObject implements QCCompositionRenderer {
  initWithCompositionColorSpace(composition: QCComposition, colorSpace: interop.Object): this;

  initWithCGLContextPixelFormatColorSpaceComposition(context: interop.PointerConvertible, format: interop.PointerConvertible, colorSpace: interop.Object, composition: QCComposition): this;

  initOffScreenWithSizeColorSpaceComposition(size: CGSize, colorSpace: interop.Object, composition: QCComposition): this;

  initWithOpenGLContextPixelFormatFile(context: NSOpenGLContext, format: NSOpenGLPixelFormat, path: string): this;

  renderAtTimeArguments(time: number, arguments$: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): boolean;

  renderingTimeForTimeArguments(time: number, arguments$: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): number;

  composition(): QCComposition;

  snapshotImage(): NSImage;

  createSnapshotImageOfType(type: string): interop.Object;

  attributes(): NSDictionary;

  inputKeys(): NSArray;

  outputKeys(): NSArray;

  setValueForInputKey(value: interop.Object, key: string): boolean;

  valueForInputKey(key: string): interop.Object;

  valueForOutputKey(key: string): interop.Object;

  valueForOutputKeyOfType(key: string, type: string): interop.Object;

  propertyListFromInputValues(): interop.Object;

  setInputValuesWithPropertyList(plist: interop.Object): void;

  userInfo(): NSMutableDictionary;
}

declare class QCComposition extends NSObject implements NSCopying {
  static compositionWithFile(path: string): QCComposition;

  static compositionWithData(data: NSData): QCComposition;

  protocols(): NSArray;

  attributes(): NSDictionary;

  inputKeys(): NSArray;

  outputKeys(): NSArray;

  identifier(): string;

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

declare class QCPlugIn extends NSObject {
  static attributes(): NSDictionary;

  static attributesForPropertyPortWithKey(key: string): NSDictionary;

  static sortedPropertyPortKeys(): NSArray;

  static executionMode(): interop.Enum<typeof QCPlugInExecutionMode>;

  static timeMode(): interop.Enum<typeof QCPlugInTimeMode>;

  static plugInKeys(): NSArray;

  startExecution(context: QCPlugInContext): boolean;

  enableExecution(context: QCPlugInContext): void;

  executionTimeForContextAtTimeWithArguments(context: QCPlugInContext, time: number, arguments$: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): number;

  executeAtTimeWithArguments(context: QCPlugInContext, time: number, arguments$: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): boolean;

  disableExecution(context: QCPlugInContext): void;

  stopExecution(context: QCPlugInContext): void;

  serializedValueForKey(key: string): interop.Object;

  setSerializedValueForKey(serializedValue: interop.Object, key: string): void;

  didValueForInputKeyChange(key: string): boolean;

  valueForInputKey(key: string): interop.Object;

  setValueForOutputKey(value: interop.Object, key: string): boolean;

  addInputPortWithTypeForKeyWithAttributes(type: string, key: string, attributes: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): void;

  removeInputPortForKey(key: string): void;

  addOutputPortWithTypeForKeyWithAttributes(type: string, key: string, attributes: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): void;

  removeOutputPortForKey(key: string): void;

  static loadPlugInAtPath(path: string): boolean;

  static registerPlugInClass(aClass: interop.PointerConvertible): void;

  createViewController(): QCPlugInViewController;
}

declare class QuartzFilterView extends NSView {
  sizeToFit(): void;
}

declare class IKSlideshow extends NSObject {
  autoPlayDelay: number;

  static sharedSlideshow(): IKSlideshow;

  runSlideshowWithDataSourceInModeOptions(dataSource: IKSlideshowDataSource, slideshowMode: string, slideshowOptions: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): void;

  stopSlideshow(sender: interop.Object): void;

  reloadData(): void;

  reloadSlideshowItemAtIndex(index: number): void;

  indexOfCurrentSlideshowItem(): number;

  static canExportToApplication(applicationBundleIdentifier: string): boolean;

  static exportSlideshowItemToApplication(item: interop.Object, applicationBundleIdentifier: string): void;
}

declare class QCPatchController extends NSController {
}

declare class IKPictureTaker extends NSPanel {
  static pictureTaker(): IKPictureTaker;

  runModal(): number;

  beginPictureTakerWithDelegateDidEndSelectorContextInfo(delegate: interop.Object, didEndSelector: string, contextInfo: interop.PointerConvertible): void;

  beginPictureTakerSheetForWindowWithDelegateDidEndSelectorContextInfo(aWindow: NSWindow, delegate: interop.Object, didEndSelector: string, contextInfo: interop.PointerConvertible): void;

  popUpRecentsMenuForViewWithDelegateDidEndSelectorContextInfo(aView: NSView, delegate: interop.Object, didEndSelector: string, contextInfo: interop.PointerConvertible): void;

  setInputImage(image: NSImage): void;

  inputImage(): NSImage;

  outputImage(): NSImage;

  setMirroring(b: boolean): void;

  mirroring(): boolean;
}

declare class IKScannerDeviceView extends NSView {
  delegate: IKScannerDeviceViewDelegate;

  scannerDevice: ICScannerDevice;

  mode: interop.Enum<typeof IKScannerDeviceViewDisplayMode>;

  hasDisplayModeSimple: boolean;

  hasDisplayModeAdvanced: boolean;

  transferMode: interop.Enum<typeof IKScannerDeviceViewTransferMode>;

  scanControlLabel: string;

  overviewControlLabel: string;

  displaysDownloadsDirectoryControl: boolean;

  downloadsDirectory: NSURL;

  documentName: string;

  displaysPostProcessApplicationControl: boolean;

  postProcessApplication: NSURL;
}

declare class QCCompositionParameterView extends NSView {
  setCompositionRenderer(renderer: QCCompositionRenderer): void;

  compositionRenderer(): QCCompositionRenderer;

  hasParameters(): boolean;

  setBackgroundColor(color: NSColor): void;

  backgroundColor(): NSColor;

  setDrawsBackground(flag: boolean): void;

  drawsBackground(): boolean;

  setDelegate(delegate: interop.Object): void;

  delegate(): interop.Object;
}

declare class QCCompositionRepository extends NSObject {
  static sharedCompositionRepository(): QCCompositionRepository;

  compositionWithIdentifier(identifier: string): QCComposition;

  compositionsWithProtocolsAndAttributes(protocols: NSArray<interop.Object> | Array<interop.Object>, attributes: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): NSArray;

  allCompositions(): NSArray;
}

declare class IKCameraDeviceView extends NSView {
  delegate: IKCameraDeviceViewDelegate;

  cameraDevice: ICCameraDevice;

  mode: interop.Enum<typeof IKCameraDeviceViewDisplayMode>;

  hasDisplayModeTable: boolean;

  hasDisplayModeIcon: boolean;

  downloadAllControlLabel: string;

  downloadSelectedControlLabel: string;

  iconSize: number;

  transferMode: interop.Enum<typeof IKCameraDeviceViewTransferMode>;

  displaysDownloadsDirectoryControl: boolean;

  downloadsDirectory: NSURL;

  displaysPostProcessApplicationControl: boolean;

  postProcessApplication: NSURL;

  readonly canRotateSelectedItemsLeft: boolean;

  readonly canRotateSelectedItemsRight: boolean;

  readonly canDeleteSelectedItems: boolean;

  readonly canDownloadSelectedItems: boolean;

  selectedIndexes(): NSIndexSet;

  selectIndexesByExtendingSelection(indexes: NSIndexSet, extend: boolean): void;

  rotateLeft(sender: interop.Object): void;

  rotateRight(sender: interop.Object): void;

  deleteSelectedItems(sender: interop.Object): void;

  downloadSelectedItems(sender: interop.Object): void;

  downloadAllItems(sender: interop.Object): void;

  setCustomIconSizeSlider(slider: NSSlider): void;

  setCustomModeControl(control: NSSegmentedControl): void;

  setCustomActionControl(control: NSSegmentedControl): void;

  setCustomRotateControl(control: NSSegmentedControl): void;

  setCustomDeleteControl(control: NSSegmentedControl): void;

  setShowStatusInfoAsWindowSubtitle(value: boolean): void;
}

declare class IKImageEditPanel extends NSPanel {
  dataSource: IKImageEditPanelDataSource;

  readonly filterArray: NSArray;

  static sharedImageEditPanel(): IKImageEditPanel;

  reloadData(): void;
}

declare class IKFilterBrowserPanel extends NSPanel {
  static filterBrowserPanelWithStyleMask(styleMask: number): interop.Object;

  filterName(): string;

  beginWithOptionsModelessDelegateDidEndSelectorContextInfo(inOptions: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>, modelessDelegate: interop.Object, didEndSelector: string, contextInfo: interop.PointerConvertible): void;

  beginSheetWithOptionsModalForWindowModalDelegateDidEndSelectorContextInfo(inOptions: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>, docWindow: NSWindow, modalDelegate: interop.Object, didEndSelector: string, contextInfo: interop.PointerConvertible): void;

  runModalWithOptions(inOptions: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): number;

  filterBrowserViewWithOptions(inOptions: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): IKFilterBrowserView;

  finish(sender: interop.Object): void;
}

declare class QCCompositionPickerView extends NSView {
  setCompositionsFromRepositoryWithProtocolAndAttributes(protocol: string, attributes: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): void;

  compositions(): NSArray;

  setDelegate(delegate: interop.Object): void;

  delegate(): interop.Object;

  setShowsCompositionNames(flag: boolean): void;

  showsCompositionNames(): boolean;

  setAllowsEmptySelection(flag: boolean): void;

  allowsEmptySelection(): boolean;

  setCompositionAspectRatio(ratio: CGSize): void;

  compositionAspectRatio(): CGSize;

  setDefaultValueForInputKey(value: interop.Object, key: string): void;

  resetDefaultInputValues(): void;

  setSelectedComposition(composition: QCComposition): void;

  selectedComposition(): QCComposition;

  startAnimation(sender: interop.Object): void;

  stopAnimation(sender: interop.Object): void;

  isAnimating(): boolean;

  setMaxAnimationFrameRate(maxFPS: number): void;

  maxAnimationFrameRate(): number;

  setBackgroundColor(color: NSColor): void;

  backgroundColor(): NSColor;

  setDrawsBackground(flag: boolean): void;

  drawsBackground(): boolean;

  numberOfColumns(): number;

  setNumberOfColumns(columns: number): void;

  numberOfRows(): number;

  setNumberOfRows(rows: number): void;
}

declare class QCCompositionLayer extends CAOpenGLLayer implements QCCompositionRenderer {
  static compositionLayerWithFile(path: string): QCCompositionLayer;

  static compositionLayerWithComposition(composition: QCComposition): QCCompositionLayer;

  initWithFile(path: string): this;

  initWithComposition(composition: QCComposition): this;

  composition(): QCComposition;

  attributes(): NSDictionary;

  inputKeys(): NSArray;

  outputKeys(): NSArray;

  setValueForInputKey(value: interop.Object, key: string): boolean;

  valueForInputKey(key: string): interop.Object;

  valueForOutputKey(key: string): interop.Object;

  valueForOutputKeyOfType(key: string, type: string): interop.Object;

  propertyListFromInputValues(): interop.Object;

  setInputValuesWithPropertyList(plist: interop.Object): void;

  userInfo(): NSMutableDictionary;
}

declare class QCView extends NSView implements QCCompositionRenderer {
  loadCompositionFromFile(path: string): boolean;

  loadComposition(composition: QCComposition): boolean;

  loadedComposition(): QCComposition;

  unloadComposition(): void;

  setAutostartsRendering(flag: boolean): void;

  autostartsRendering(): boolean;

  setEraseColor(color: NSColor): void;

  eraseColor(): NSColor;

  setEventForwardingMask(mask: number): void;

  eventForwardingMask(): number;

  setMaxRenderingFrameRate(maxFPS: number): void;

  maxRenderingFrameRate(): number;

  erase(): void;

  startRendering(): boolean;

  renderAtTimeArguments(time: number, arguments$: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): boolean;

  pauseRendering(): void;

  isPausedRendering(): boolean;

  resumeRendering(): void;

  stopRendering(): void;

  isRendering(): boolean;

  snapshotImage(): NSImage;

  createSnapshotImageOfType(type: string): interop.Object;

  openGLContext(): NSOpenGLContext;

  openGLPixelFormat(): NSOpenGLPixelFormat;

  start(sender: interop.Object): void;

  stop(sender: interop.Object): void;

  play(sender: interop.Object): void;

  attributes(): NSDictionary;

  inputKeys(): NSArray;

  outputKeys(): NSArray;

  setValueForInputKey(value: interop.Object, key: string): boolean;

  valueForInputKey(key: string): interop.Object;

  valueForOutputKey(key: string): interop.Object;

  valueForOutputKeyOfType(key: string, type: string): interop.Object;

  propertyListFromInputValues(): interop.Object;

  setInputValuesWithPropertyList(plist: interop.Object): void;

  userInfo(): NSMutableDictionary;
}

declare class IKImageBrowserView extends NSView implements NSDraggingSource {
  initWithFrame(frameRect: CGRect): this;
  initWithFrame(frame: CGRect): this;

  dataSource: interop.Object;

  reloadData(): void;

  delegate: interop.Object;

  setCellsStyleMask(mask: number): void;

  cellsStyleMask(): number;

  setConstrainsToOriginalSize(flag: boolean): void;

  constrainsToOriginalSize(): boolean;

  setBackgroundLayer(aLayer: CALayer): void;

  backgroundLayer(): CALayer;

  setForegroundLayer(aLayer: CALayer): void;

  foregroundLayer(): CALayer;

  newCellForRepresentedItem(anItem: interop.Object): IKImageBrowserCell;

  cellForItemAtIndex(index: number): IKImageBrowserCell;

  setZoomValue(aValue: number): void;

  zoomValue(): number;

  setContentResizingMask(mask: number): void;

  contentResizingMask(): number;

  scrollIndexToVisible(index: number): void;

  setCellSize(size: CGSize): void;

  cellSize(): CGSize;

  intercellSpacing(): CGSize;

  setIntercellSpacing(aSize: CGSize): void;

  indexOfItemAtPoint(point: CGPoint): number;

  itemFrameAtIndex(index: number): CGRect;

  visibleItemIndexes(): NSIndexSet;

  rowIndexesInRect(rect: CGRect): NSIndexSet;

  columnIndexesInRect(rect: CGRect): NSIndexSet;

  rectOfColumn(columnIndex: number): CGRect;

  rectOfRow(rowIndex: number): CGRect;

  numberOfRows(): number;

  numberOfColumns(): number;

  setCanControlQuickLookPanel(flag: boolean): void;

  canControlQuickLookPanel(): boolean;

  selectionIndexes(): NSIndexSet;

  setSelectionIndexesByExtendingSelection(indexes: NSIndexSet, extendSelection: boolean): void;

  setAllowsMultipleSelection(flag: boolean): void;

  allowsMultipleSelection(): boolean;

  setAllowsEmptySelection(flag: boolean): void;

  allowsEmptySelection(): boolean;

  setAllowsReordering(flag: boolean): void;

  allowsReordering(): boolean;

  setAnimates(flag: boolean): void;

  animates(): boolean;

  expandGroupAtIndex(index: number): void;

  collapseGroupAtIndex(index: number): void;

  isGroupExpandedAtIndex(index: number): boolean;

  setDraggingDestinationDelegate(delegate: interop.Object): void;

  draggingDestinationDelegate(): interop.Object;

  indexAtLocationOfDroppedItem(): number;

  dropOperation(): interop.Enum<typeof IKImageBrowserDropOperation>;

  setAllowsDroppingOnItems(flag: boolean): void;

  allowsDroppingOnItems(): boolean;

  setDropIndexDropOperation(index: number, operation: interop.Enum<typeof IKImageBrowserDropOperation>): void;

  draggingSessionSourceOperationMaskForDraggingContext(session: NSDraggingSession, context: interop.Enum<typeof NSDraggingContext>): interop.Enum<typeof NSDragOperation>;

  draggingSessionWillBeginAtPoint(session: NSDraggingSession, screenPoint: CGPoint): void;

  draggingSessionMovedToPoint(session: NSDraggingSession, screenPoint: CGPoint): void;

  draggingSessionEndedAtPointOperation(session: NSDraggingSession, screenPoint: CGPoint, operation: interop.Enum<typeof NSDragOperation>): void;

  ignoreModifierKeysForDraggingSession(session: NSDraggingSession): boolean;

  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;
}

declare class IKImageView extends NSView {
  delegate: interop.Object;

  zoomFactor: number;

  rotationAngle: number;

  currentToolMode: string;

  autoresizes: boolean;

  hasHorizontalScroller: boolean;

  hasVerticalScroller: boolean;

  autohidesScrollers: boolean;

  supportsDragAndDrop: boolean;

  editable: boolean;

  doubleClickOpensImageEditPanel: boolean;

  imageCorrection: CIFilter;

  backgroundColor: NSColor;

  setImageImageProperties(image: interop.Object, metaData: NSDictionary<interop.Object, interop.Object> | Record<interop.Object, interop.Object>): void;

  setImageWithURL(url: NSURL): void;

  image(): interop.Object;

  imageSize(): CGSize;

  imageProperties(): NSDictionary;

  setRotationAngleCenterPoint(rotationAngle: number, centerPoint: CGPoint): void;

  rotateImageLeft(sender: interop.Object): void;

  rotateImageRight(sender: interop.Object): void;

  setImageZoomFactorCenterPoint(zoomFactor: number, centerPoint: CGPoint): void;

  zoomImageToRect(rect: CGRect): void;

  zoomImageToFit(sender: interop.Object): void;

  zoomImageToActualSize(sender: interop.Object): void;

  zoomIn(sender: interop.Object): void;

  zoomOut(sender: interop.Object): void;

  flipImageHorizontal(sender: interop.Object): void;

  flipImageVertical(sender: interop.Object): void;

  crop(sender: interop.Object): void;

  setOverlayForType(layer: CALayer, layerType: string): void;

  overlayForType(layerType: string): CALayer;

  scrollToPoint(point: CGPoint): void;

  scrollToRect(rect: CGRect): void;

  convertViewPointToImagePoint(viewPoint: CGPoint): CGPoint;

  convertViewRectToImageRect(viewRect: CGRect): CGRect;

  convertImagePointToViewPoint(imagePoint: CGPoint): CGPoint;

  convertImageRectToViewRect(imageRect: CGRect): CGRect;
}

declare class QCCompositionPickerPanel extends NSPanel {
  static sharedCompositionPickerPanel(): QCCompositionPickerPanel;

  compositionPickerView(): QCCompositionPickerView;
}

declare class IKDeviceBrowserView extends NSView {
  delegate: IKDeviceBrowserViewDelegate;

  displaysLocalCameras: boolean;

  displaysNetworkCameras: boolean;

  displaysLocalScanners: boolean;

  displaysNetworkScanners: boolean;

  mode: interop.Enum<typeof IKDeviceBrowserViewDisplayMode>;

  readonly selectedDevice: ICDevice;
}

