import { Material, type RenderState } from "./Material";
import { Sampler } from "./Sampler";
import { Texture } from "./Texture";
import { TextureBinding } from "./TextureBinding";
export type TexturedPBRTextureSlot = "baseColor" | "normal" | "metallicRoughness" | "occlusion" | "emissive" | "clearcoat" | "clearcoatRoughness" | "clearcoatNormal" | "transmission" | "diffuseTransmission" | "diffuseTransmissionColor" | "volumeThickness" | "specular" | "specularColor" | "sheenColor" | "sheenRoughness" | "anisotropy" | "iridescence" | "iridescenceThickness";
export interface TexturedPBRMaterialOptions {
    readonly name?: string;
    readonly baseColor?: readonly [number, number, number, number];
    readonly renderState?: Partial<RenderState>;
    readonly metallic?: number;
    readonly roughness?: number;
    readonly environmentColor?: readonly [number, number, number];
    readonly environmentIntensity?: number;
    readonly proceduralEnvironmentMap?: TexturedPBRProceduralEnvironmentMapOptions;
    readonly environmentMapTexture?: TextureBinding;
    readonly environmentMapIntensity?: number;
    readonly environmentMapSpecularIntensity?: number;
    readonly materialEnvironmentSpecularScale?: number;
    readonly environmentMapRotation?: number;
    readonly environmentMapMipCount?: number;
    readonly environmentBrdfLutTexture?: TextureBinding;
    readonly emissiveColor?: readonly [number, number, number];
    readonly emissiveStrength?: number;
    readonly textureTexCoords?: Readonly<Partial<Record<TexturedPBRTextureSlot, number>>>;
    readonly baseColorTexture?: Texture;
    readonly baseColorSampler?: Sampler;
    readonly baseColorTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly normalTexture?: Texture;
    readonly normalSampler?: Sampler;
    readonly normalTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly normalScale?: number;
    readonly metallicRoughnessTexture?: Texture;
    readonly metallicRoughnessSampler?: Sampler;
    readonly metallicRoughnessTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly occlusionTexture?: Texture;
    readonly occlusionSampler?: Sampler;
    readonly occlusionTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly occlusionStrength?: number;
    readonly emissiveTexture?: Texture;
    readonly emissiveSampler?: Sampler;
    readonly emissiveTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly clearcoatFactor?: number;
    readonly clearcoatTexture?: Texture;
    readonly clearcoatSampler?: Sampler;
    readonly clearcoatTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly clearcoatRoughnessFactor?: number;
    readonly clearcoatRoughnessTexture?: Texture;
    readonly clearcoatRoughnessSampler?: Sampler;
    readonly clearcoatRoughnessTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly clearcoatNormalTexture?: Texture;
    readonly clearcoatNormalSampler?: Sampler;
    readonly clearcoatNormalTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly clearcoatNormalScale?: number;
    readonly transmissionFactor?: number;
    readonly transmissionTexture?: Texture;
    readonly transmissionSampler?: Sampler;
    readonly transmissionTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly transmissionFallbackEnergy?: number;
    readonly diffuseTransmissionFactor?: number;
    readonly diffuseTransmissionTexture?: Texture;
    readonly diffuseTransmissionSampler?: Sampler;
    readonly diffuseTransmissionTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly diffuseTransmissionColorFactor?: readonly [number, number, number];
    readonly diffuseTransmissionColorTexture?: Texture;
    readonly diffuseTransmissionColorSampler?: Sampler;
    readonly diffuseTransmissionColorTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly volumeThicknessFactor?: number;
    readonly volumeThicknessTexture?: Texture;
    readonly volumeThicknessSampler?: Sampler;
    readonly volumeThicknessTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly volumeAttenuationDistance?: number;
    readonly volumeAttenuationColor?: readonly [number, number, number];
    readonly transmissionParallaxStrength?: number;
    readonly transmissionParallaxBoxMin?: readonly [number, number, number];
    readonly transmissionParallaxBoxMax?: readonly [number, number, number];
    readonly transmissionBounceCount?: number;
    readonly transmissionCausticStrength?: number;
    readonly transmissionBackdropTexture?: TextureBinding;
    readonly transmissionBackdropStrength?: number;
    readonly transmissionBackdropResolution?: readonly [number, number];
    readonly transmissionBackdropMipCount?: number;
    readonly transmissionBackdropRefractionScale?: number;
    readonly ior?: number;
    readonly specularFactor?: number;
    readonly specularTexture?: Texture;
    readonly specularSampler?: Sampler;
    readonly specularTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly specularColorFactor?: readonly [number, number, number];
    readonly specularColorTexture?: Texture;
    readonly specularColorSampler?: Sampler;
    readonly specularColorTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly sheenColorFactor?: readonly [number, number, number];
    readonly sheenColorTexture?: Texture;
    readonly sheenColorSampler?: Sampler;
    readonly sheenColorTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly sheenRoughnessFactor?: number;
    readonly sheenRoughnessTexture?: Texture;
    readonly sheenRoughnessSampler?: Sampler;
    readonly sheenRoughnessTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly anisotropyStrength?: number;
    readonly anisotropyRotation?: number;
    readonly anisotropyTexture?: Texture;
    readonly anisotropySampler?: Sampler;
    readonly anisotropyTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly iridescenceFactor?: number;
    readonly iridescenceTexture?: Texture;
    readonly iridescenceSampler?: Sampler;
    readonly iridescenceTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly iridescenceIor?: number;
    readonly iridescenceThicknessMinimum?: number;
    readonly iridescenceThicknessMaximum?: number;
    readonly iridescenceThicknessTexture?: Texture;
    readonly iridescenceThicknessSampler?: Sampler;
    readonly iridescenceThicknessTextureTransform?: {
        readonly offset?: readonly [number, number];
        readonly scale?: readonly [number, number];
        readonly rotation?: number;
    };
    readonly dispersion?: number;
}
export interface TexturedPBRProceduralEnvironmentMapOptions {
    readonly skyColor: readonly [number, number, number];
    readonly horizonColor: readonly [number, number, number];
    readonly groundColor: readonly [number, number, number];
    readonly specularColor: readonly [number, number, number];
    readonly intensity: number;
    readonly specularIntensity: number;
}
export declare function texturedPbrShaderActiveTextureSlots(shaderVariant?: string): readonly TexturedPBRTextureSlot[];
export declare function isTexturedPbrTextureSlotShaderActive(slot: TexturedPBRTextureSlot, shaderVariant?: string): boolean;
export declare class TexturedPBRMaterial extends Material {
    constructor(options?: TexturedPBRMaterialOptions);
}
//# sourceMappingURL=TexturedPBRMaterial.d.ts.map