import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSFastEnumeration } from "../Foundation/NSFastEnumeration.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _MDLAssetResolver } from "./MDLAssetResolver.js";
import type { _MDLMaterialProperty } from "./MDLMaterialProperty.js";
import type { _MDLScatteringFunction } from "./MDLScatteringFunction.js";
import type { MDLMaterialFace } from "./MDLMaterialFace.js";
import type { MDLMaterialSemantic } from "./MDLMaterialSemantic.js";
export declare class _MDLMaterial extends _NSObject {
    static alloc(): _MDLMaterial;
    static new(): _MDLMaterial;
    init(): _MDLMaterial;
    initWithName$scatteringFunction$(name: _NSString, scatteringFunction: _MDLScatteringFunction): _MDLMaterial;
    setProperty$(property: _MDLMaterialProperty): void;
    removeProperty$(property: _MDLMaterialProperty): void;
    propertyNamed$(name: _NSString): _MDLMaterialProperty | null;
    /**
     * Returns the first occurence of the property that matches the semantic. Not recommended to use when there are multiple properties with same semantic.
     */
    propertyWithSemantic$(semantic: MDLMaterialSemantic): _MDLMaterialProperty | null;
    /**
     * Returns the complete list of properties that match the semantic (e.g. Kd & Kd_map)
     */
    propertiesWithSemantic$(semantic: MDLMaterialSemantic): _NSArray;
    removeAllProperties(): void;
    /**
     * Iterates all material properties. If they are string values, they are resolved into valid paths as NSURL values. @param resolver The resolver can be invoked to convert stringValues to NSURLs for loading.
     */
    resolveTexturesWithResolver$(resolver: _MDLAssetResolver): void;
    /**
     * Iterates all material properties. If they are string values or NSURL values, and can be resolved as textures, then the string and NSURL values will be replaced by MDLTextureSampler values. The transforms on the samplers will be identity, the wrap modes will be clamp, and the filter modes will be linear. @param resolver The resolver can be invoked to convert stringValues or NSURLs to an MDLTextureSampler.
     */
    loadTexturesUsingResolver$(resolver: _MDLAssetResolver): void;
    objectAtIndexedSubscript$(idx: number): _MDLMaterialProperty | null;
    objectForKeyedSubscript$(name: _NSString): _MDLMaterialProperty | null;
    scatteringFunction(): _MDLScatteringFunction;
    /** @see MDLNamed */
    name(): _NSString;
    setName$(value: _NSString): void;
    /**
     * If a property is not found by propertyForKey and baseMaterial is not nil, propertyForKey will invoke propertyForKey on baseMaterial. All other selectors disregard baseMaterial.
     */
    baseMaterial(): _MDLMaterial | null;
    setBaseMaterial$(value: _MDLMaterial | null): void;
    count(): number;
    /** Default is MDLMaterialFaceFront */
    materialFace(): MDLMaterialFace;
    setMaterialFace$(value: MDLMaterialFace): void;
}
export interface _MDLMaterial extends _NSFastEnumeration {
}
