import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSData } from "../Foundation/NSData.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _CIImage } from "./CIImage.js";
import type { CGRect } from "../structs/CGRect.js";
export declare class _CIKernel extends _NSObject {
    static alloc(): _CIKernel;
    static new(): _CIKernel;
    init(): _CIKernel;
    /**
     * The string argument should contain a program in the Core Image Kernel Language. All the kernel functions in the program are converted to instances of a CIKernel objects and returned in an array. On OSX 10.10 and before, the array will contain instances of CIKernel class. On OSX after 10.10, the array will contain instances of CIKernel, CIColorKernel or CIWarpKernel classes. On iOS, the array will contain instances of CIKernel, CIColorKernel or CIWarpKernel classes.
     */
    static kernelsWithString$(string_: _NSString): _NSArray | null;
    /**
     * The string argument should contain a program in the Metal Language. CIKernel objects will be returned for each valid Metal function. To be valid, the Metal function must be stitchable (i.e. attributed using [[stitchable]]) and conform to the expected calling conventions for a CIKernel, CIColorKernel, CIBlendKernel, or CIWarpKernel. The array will contain instances of CIKernel, CIColorKernel or CIWarpKernel classes. The kernels will only be usable on Metal-backed CIContext on a device that 'supportsDynamicLibraries'
     */
    static kernelsWithMetalString$error$(source: _NSString, error: NobjcObject | null): _NSArray | null;
    /**
     * The string argument should contain a program with one kernel. On OSX 10.10 and before, this returns a CIKernel object. On OSX after 10.10, this returns a CIKernel, CIColorKernel, or CIWarpKernel object. On iOS this returns a CIKernel, CIColorKernel, or CIWarpKernel object.
     */
    static kernelWithString$(string_: _NSString): _CIKernel | null;
    /**
     * The data argument should represent a metallib file compiled with the Core Image Standard Library and contain the given function written in the Metal Shading Language. An optional output pixel format can be specified, and would be used if the output of the kernel needs to be written to an intermediate texture.
     */
    static kernelWithFunctionName$fromMetalLibraryData$error$(name: _NSString, data: _NSData, error: NobjcObject | null): _CIKernel | null;
    static kernelWithFunctionName$fromMetalLibraryData$outputPixelFormat$error$(name: _NSString, data: _NSData, format: number, error: NobjcObject | null): _CIKernel | null;
    /**
     * This method will return an array of strings corresponding to names of all of the kernels contained within the underlying Metal library in the associated NSData.
     */
    static kernelNamesFromMetalLibraryData$(data: _NSData): _NSArray;
    /**
     * Sets the selector used by Core Image to ask what rectangles of a kernel's input images are needed to produce a desired rectangle of the kernel's output image. Using setROISelector: is suppoted but not recommended. The selector is only used if one the [CIFilter apply:...] methods is used. Instead, use one of the [CIKernel applyWithExtent:roiCallback:...] methods. The method should have one of the following signatures: - (CGRect)regionOf:(int)samplerIndex destRect:(CGRect)r userInfo:obj; - (CGRect)regionOf:(int)samplerIndex destRect:(CGRect)r; 'samplerIndex' is the 0-based index specifying which of the kernel's input images is being queried. 'destRect' is the extent rectangle of kernel's output image being queried. 'userInfo' is the object associated with the kCIApplyOptionUserInfo when the kernel was applied. The method should return the rectangle of the index'th input image that is needed to produce destRect. Returning CGRectNull indicates that the index'th input image is not needed to produce destRect.
     */
    setROISelector$(method: string): void;
    /**
     * Apply the receiver CIKernel to produce a new CIImage object. The 'extent' is the bounding box of all non-clear pixels produced by the kernel. The 'callback' is a block that should return the rectangle of each input image that is needed to produce a given rectangle in the coordinate space of the new image. The 'args' is an array of parameters needed to describe the new image. The object types of the items in the array correspond to the argument types of the kernel function. For example, if the first argument in the kernel is a sampler, then the first object in the array must be a CIImage.
     */
    applyWithExtent$roiCallback$arguments$(extent: CGRect, callback: (arg0: number, arg1: CGRect) => CGRect, args: _NSArray | null): _CIImage | null;
    /** The name of the kernel. */
    name(): _NSString;
}
