import type { NobjcObject } from "objc-js";
import type { _NSData } from "../Foundation/NSData.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _NSURL } from "../Foundation/NSURL.js";
import type { _SCNAnimatable } from "./SCNAnimatable.js";
import type { _MTLDevice } from "../Metal/MTLDevice.js";
import type { CATransform3D } from "../structs/CATransform3D.js";
import type { SCNColorMask } from "./SCNColorMask.js";
import type { SCNFilterMode } from "./SCNFilterMode.js";
import type { SCNWrapMode } from "./SCNWrapMode.js";
export declare class _SCNMaterialProperty extends _NSObject {
    static alloc(): _SCNMaterialProperty;
    static new(): _SCNMaterialProperty;
    init(): _SCNMaterialProperty;
    /**
     * @method materialPropertyWithContents: @abstract Creates and initialize a property instance with the specified contents.
     */
    static materialPropertyWithContents$(contents: NobjcObject): _SCNMaterialProperty;
    /**
     * @method precomputedLightingEnvironmentContentsWithURL:error: @abstract Returns an object suitable for a scene's `lightingEnvironment.contents` and initialized with data that was previously created by `+precomputedLightingEnvironmentDataForContents:device:error:`.
     */
    static precomputedLightingEnvironmentContentsWithURL$error$(url: _NSURL, error: NobjcObject | null): NobjcObject | null;
    /**
     * @method precomputedLightingEnvironmentContentsWithData:error: @abstract Returns an object suitable for a scene's `lightingEnvironment.contents` and initialized with data that was previously created by `+precomputedLightingEnvironmentDataForContents:device:error:`.
     */
    static precomputedLightingEnvironmentContentsWithData$error$(data: _NSData, error: NobjcObject | null): NobjcObject | null;
    /**
     * @method precomputedLightingEnvironmentDataForContents:device:error: @abstract Returns an `NSData` instance containing the result of CPU and GPU-intensive operations that is suitable for caching. @discussion This method can be leveraged in a custom offline asset pipeline, or at run time at a convenient time before the scene is presented to the user.
     */
    static precomputedLightingEnvironmentDataForContents$device$error$(contents: NobjcObject, device: _MTLDevice | null, error: NobjcObject | null): _NSData | null;
    /**
     * @property contents @abstract Specifies the receiver's contents. This can be a color (NSColor, UIColor, CGColorRef), an image (NSImage, UIImage, CGImageRef), a layer (CALayer), a path (NSString or NSURL), a SpriteKit scene (SKScene), a texture (SKTexture, id<MTLTexture> or GLKTextureInfo), or a floating value between 0 and 1 (NSNumber) for metalness and roughness properties. AVCaptureDevice is supported on iOS 11 and AVPlayer is supported on macOS 10.13, iOS 11 and tvOS 11. Animatable when set to a color. @discussion Setting the contents to an instance of SKTexture will automatically update the wrapS, wrapT, contentsTransform, minification, magnification and mip filters according to the SKTexture settings. When a cube map is expected (e.g. SCNMaterial.reflective, SCNScene.background, SCNScene.lightingEnvironment) you can use 1. A horizontal strip image where `6 * image.height == image.width` 2. A vertical strip image where ` image.height == 6 * image.width` 3. A spherical projection image (latitude/longitude) where `2 * image.height == image.width` 4. A NSArray of 6 images. This array must contain images of the exact same dimensions, in the following order, in a left-handed coordinate system: +X, -X, +Y, -Y, +Z, -Z (or Right, Left, Top, Bottom, Front, Back).
     */
    contents(): NobjcObject | null;
    setContents$(value: NobjcObject | null): void;
    /**
     * @property intensity @abstract Determines the receiver's intensity. This intensity is used to modulate the properties in several ways. It dims the diffuse, specular and emission properties, it varies the bumpiness of the normal property and the filter property is blended with white. Default value is 1.0. Animatable.
     */
    intensity(): number;
    setIntensity$(value: number): void;
    /**
     * @property minificationFilter @abstract Specifies the filter type to use when rendering the contents (specified in the `contents' property). @discussion The minification filter is used when to reduce the size of image data. See above the list of available modes. Defaults to SCNFilterModeLinear.
     */
    minificationFilter(): SCNFilterMode;
    setMinificationFilter$(value: SCNFilterMode): void;
    /**
     * @property magnificationFilter @abstract Specifies the filter type to use when rendering the the contents (specified in the `contents' property). @discussion The magnification filter is used when to increase the size of image data. See above the list of available modes. Defaults to SCNFilterModeLinear.
     */
    magnificationFilter(): SCNFilterMode;
    setMagnificationFilter$(value: SCNFilterMode): void;
    /**
     * @property mipFilter @abstract Specifies the mipmap filter to use during minification. @discussion Defaults to SCNFilterModeNearest starting macOS 10.12, iOS 10, tvOS 10 and watchOS 3. Defaults to SCNFilterModeNone in previous versions.
     */
    mipFilter(): SCNFilterMode;
    setMipFilter$(value: SCNFilterMode): void;
    /**
     * @property contentsTransform @abstract Determines the receiver's contents transform. Animatable.
     */
    contentsTransform(): CATransform3D;
    setContentsTransform$(value: CATransform3D): void;
    /**
     * @property wrapS @abstract Determines the receiver's wrap mode for the s texture coordinate. Defaults to SCNWrapModeClamp.
     */
    wrapS(): SCNWrapMode;
    setWrapS$(value: SCNWrapMode): void;
    /**
     * @property wrapT @abstract Determines the receiver's wrap mode for the t texture coordinate. Defaults to SCNWrapModeClamp.
     */
    wrapT(): SCNWrapMode;
    setWrapT$(value: SCNWrapMode): void;
    /**
     * @property mappingChannel @abstract Determines the receiver's mapping channel. Defaults to 0. @discussion Geometries potentially have multiple sources of texture coordinates. Every source has a unique mapping channel index. The mapping channel allows to select which source of texture coordinates is used to map the content of the receiver.
     */
    mappingChannel(): number;
    setMappingChannel$(value: number): void;
    /**
     * @property textureComponents @abstract Specifies the texture components to sample in the shader. Defaults to SCNColorMaskRed for displacement property, and to SCNColorMaskAll for other properties. @discussion Use this property to when using a texture that combine multiple informations in the different texture components. For example if you pack the roughness in red and metalness in blue etc... You can specify what component to use from the texture for this given material property. This property is only supported by Metal renderers.
     */
    textureComponents(): SCNColorMask;
    setTextureComponents$(value: SCNColorMask): void;
    /**
     * @property maxAnisotropy @abstract Specifies the receiver's max anisotropy. Defaults to MAXFLOAT. @discussion Anisotropic filtering reduces blur and preserves detail at extreme viewing angles.
     */
    maxAnisotropy(): number;
    setMaxAnisotropy$(value: number): void;
    /**
     * @property borderColor @abstract Determines the receiver's border color (CGColorRef or NSColor). Animatable. @discussion The border color is ignored on iOS and is always considered as clear color (0,0,0,0) when the texture has an alpha channel and opaque back (0,0,0,1) otherwise.
     * @deprecated Deprecated
     */
    borderColor(): NobjcObject | null;
    setBorderColor$(value: NobjcObject | null): void;
}
export interface _SCNMaterialProperty extends _SCNAnimatable, _NSSecureCoding {
}
