import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _SCNAnimatable } from "./SCNAnimatable.js";
import type { _SCNMaterialProperty } from "./SCNMaterialProperty.js";
import type { _SCNShadable } from "./SCNShadable.js";
import type { _MDLMaterial } from "../ModelIO/MDLMaterial.js";
import type { SCNBlendMode } from "./SCNBlendMode.js";
import type { SCNColorMask } from "./SCNColorMask.js";
import type { SCNCullMode } from "./SCNCullMode.js";
import type { SCNFillMode } from "./SCNFillMode.js";
import type { SCNLightingModel } from "./SCNLightingModel.js";
import type { SCNTransparencyMode } from "./SCNTransparencyMode.js";
export declare class _SCNMaterial extends _NSObject {
    static alloc(): _SCNMaterial;
    static new(): _SCNMaterial;
    init(): _SCNMaterial;
    /** @method material @abstract Creates and initialize a material instance. */
    static material(): _SCNMaterial;
    static materialWithMDLMaterial$(mdlMaterial: _MDLMaterial): _SCNMaterial;
    /** @property name @abstract Determines the name of the receiver. */
    name(): _NSString | null;
    setName$(value: _NSString | null): void;
    /**
     * @property diffuse @abstract Specifies the receiver's diffuse property. @discussion The diffuse property specifies the amount of light diffusely reflected from the surface. The diffuse light is reflected equally in all directions and is therefore independent of the point of view.
     */
    diffuse(): _SCNMaterialProperty;
    /**
     * @property ambient @abstract Specifies the receiver's ambient property. @discussion The ambient property specifies the amount of ambient light to reflect. This property has no visual impact on scenes that have no ambient light. Setting the ambient has no effect if locksAmbientWithDiffuse is set to YES.
     */
    ambient(): _SCNMaterialProperty;
    /**
     * @property specular @abstract Specifies the receiver's specular property. @discussion The specular property specifies the amount of light to reflect in a mirror-like manner. The specular intensity increases when the point of view lines up with the direction of the reflected light.
     */
    specular(): _SCNMaterialProperty;
    /**
     * @property emission @abstract The emission property specifies the amount of light the material emits. This emission does not light up other surfaces in the scene.
     */
    emission(): _SCNMaterialProperty;
    /**
     * @property transparent @abstract The transparent property specifies the transparent areas of the material.
     */
    transparent(): _SCNMaterialProperty;
    /**
     * @property reflective @abstract The reflective property specifies the reflectivity of the surface. The surface will not actually reflect other objects in the scene. This property may be used as a sphere mapping to reflect a precomputed environment.
     */
    reflective(): _SCNMaterialProperty;
    /**
     * @property multiply @abstract The multiply property specifies a color or an image used to multiply the output fragments with. The computed fragments are multiplied with the multiply value to produce the final fragments. This property may be used for shadow maps, to fade out or tint 3d objects.
     */
    multiply(): _SCNMaterialProperty;
    /**
     * @property normal @abstract The normal property specifies the surface orientation. @discussion When an image is set on the normal property the material is automatically lit per pixel. Setting a color has no effect.
     */
    normal(): _SCNMaterialProperty;
    /**
     * @property displacement @abstract The displacement property specifies how vertex are translated in tangent space. @discussion Pass a grayscale image for a simple 'elevation' or rgb image for a vector displacement.
     */
    displacement(): _SCNMaterialProperty;
    /**
     * @property ambientOcclusion @abstract The ambientOcclusion property specifies the ambient occlusion of the surface. The ambient occlusion is multiplied with the ambient light, then the result is added to the lighting contribution. This property has no visual impact on scenes that have no ambient light. When an ambient occlusion map is set, the ambient property is ignored.
     */
    ambientOcclusion(): _SCNMaterialProperty;
    /**
     * @property selfIllumination @abstract The selfIllumination property specifies a texture or a color that is added to the lighting contribution of the surface. When a selfIllumination is set, the emission property is ignored.
     */
    selfIllumination(): _SCNMaterialProperty;
    /**
     * @property metalness @abstract The metalness property specifies how metallic the material's surface appears. Lower values (darker colors) cause the material to appear more like a dielectric surface. Higher values (brighter colors) cause the surface to appear more metallic. This property is only used when 'lightingModelName' is 'SCNLightingModelPhysicallyBased'.
     */
    metalness(): _SCNMaterialProperty;
    /**
     * @property roughness @abstract The roughness property specifies the apparent smoothness of the surface. Lower values (darker colors) cause the material to appear shiny, with well-defined specular highlights. Higher values (brighter colors) cause specular highlights to spread out and the diffuse property of the material to become more retroreflective. This property is only used when 'lightingModelName' is 'SCNLightingModelPhysicallyBased'.
     */
    roughness(): _SCNMaterialProperty;
    /**
     * @property clearCoat @abstract The clearCoat property specifies color and intensity of the coat layer.
     */
    clearCoat(): _SCNMaterialProperty;
    /**
     * @property clearCoatRoughness @abstract The clearCoat property specifies color and intensity of the coat roughness.
     */
    clearCoatRoughness(): _SCNMaterialProperty;
    /**
     * @property clearCoatNormal @abstract The clearCoatNormal property specifies color and intensity of the optional coat normal map.
     */
    clearCoatNormal(): _SCNMaterialProperty;
    /**
     * @property shininess @abstract Specifies the receiver's shininess value. Defaults to 1.0. Animatable.
     */
    shininess(): number;
    setShininess$(value: number): void;
    /**
     * @property transparency @abstract Specifies the receiver's transparency value. Defaults to 1.0. Animatable. @discussion The color of the transparent property is multiplied by this property. The result is then used to produce the final transparency according to the rule defined by the transparencyMode property.
     */
    transparency(): number;
    setTransparency$(value: number): void;
    /**
     * @property lightingModelName @abstract Determines the receiver's lighting model. See above for the list of lighting models. Defaults to SCNLightingModelBlinn.
     */
    lightingModelName(): SCNLightingModel;
    setLightingModelName$(value: SCNLightingModel): void;
    /**
     * @property litPerPixel @abstract Determines whether the receiver is lit per pixel. Defaults to YES. Animatable.
     */
    litPerPixel(): boolean;
    setLitPerPixel$(value: boolean): void;
    /**
     * @property doubleSided @abstract Determines whether the receiver is double sided. Defaults to NO. Animatable.
     */
    doubleSided(): boolean;
    setDoubleSided$(value: boolean): void;
    /**
     * @property fillMode @abstract Determines of to how to rasterize the receiver's primitives. Defaults to SCNFillModeFill.
     */
    fillMode(): SCNFillMode;
    setFillMode$(value: SCNFillMode): void;
    /**
     * @property cullMode @abstract Determines the culling mode of the receiver. Defaults to SCNCullModeBack. Animatable.
     */
    cullMode(): SCNCullMode;
    setCullMode$(value: SCNCullMode): void;
    /**
     * @property transparencyMode @abstract Determines the transparency mode of the receiver. See above for the transparency modes. Defaults to SCNTransparencyModeDefault.
     */
    transparencyMode(): SCNTransparencyMode;
    setTransparencyMode$(value: SCNTransparencyMode): void;
    /**
     * @property locksAmbientWithDiffuse @abstract Makes the ambient property automatically match the diffuse property. Defaults to NO on 10.9 and before, defaults to YES otherwise. Animatable.
     */
    locksAmbientWithDiffuse(): boolean;
    setLocksAmbientWithDiffuse$(value: boolean): void;
    /**
     * @property writeToDepthBuffer @abstract Determines whether the receiver writes to the depth buffer when rendered. Defaults to YES.
     */
    writesToDepthBuffer(): boolean;
    setWritesToDepthBuffer$(value: boolean): void;
    /**
     * @abstract Determines whether the receiver writes to the color buffer when rendered. Defaults to SCNColorMaskAll.
     */
    colorBufferWriteMask(): SCNColorMask;
    setColorBufferWriteMask$(value: SCNColorMask): void;
    /**
     * @property readsFromDepthBuffer @abstract Determines whether the receiver reads from the depth buffer when rendered. Defaults to YES.
     */
    readsFromDepthBuffer(): boolean;
    setReadsFromDepthBuffer$(value: boolean): void;
    /**
     * @property fresnelExponent @abstract Specifies the receiver's fresnel exponent value. Defaults to 0.0. Animatable. @discussion The effect of the reflectivity property is modulated by this property. The fresnelExponent changes the exponent of the reflectance. The bigger the exponent, the more concentrated the reflection is around the edges.
     */
    fresnelExponent(): number;
    setFresnelExponent$(value: number): void;
    /**
     * @property blendMode @abstract Specifies the receiver's blend mode. Defaults to SCNBlendModeAlpha.
     */
    blendMode(): SCNBlendMode;
    setBlendMode$(value: SCNBlendMode): void;
}
export interface _SCNMaterial extends _SCNAnimatable, _SCNShadable, _NSCopying, _NSSecureCoding {
}
