import { type ShaderPreprocessOptions } from "./ShaderPreprocessor";
export interface ShaderSourcePair {
    readonly name: string;
    readonly marker: string;
    readonly vertex: string;
    readonly fragment: string;
    readonly variants?: readonly ShaderVariantDescriptor[];
}
export interface ShaderVariantDescriptor {
    readonly name: string;
    readonly defines?: Readonly<Record<string, string | number | boolean>>;
}
export interface CompiledShaderSource {
    readonly label: string;
    readonly marker: string;
    readonly vertex: string;
    readonly fragment: string;
}
export declare class ShaderLibrary {
    private readonly shaders;
    private readonly chunks;
    private readonly preprocessor;
    private readonly variantCache;
    register(shader: ShaderSourcePair): void;
    registerChunk(name: string, source: string): void;
    get(name: string): ShaderSourcePair;
    compileSource(name: string, options?: ShaderPreprocessOptions): CompiledShaderSource;
    compileVariant(name: string, variantName: string, options?: ShaderPreprocessOptions): CompiledShaderSource;
    names(): readonly string[];
    private assertMarker;
    private assertVariants;
}
export declare const DEFAULT_UNLIT_SHADER_NAME = "aura3d/unlit";
export declare const DEFAULT_UNLIT_SHADER_MARKER = "@aura3d-shader:unlit";
export declare const DEFAULT_INSTANCED_UNLIT_SHADER_NAME = "aura3d/instanced-unlit";
export declare const DEFAULT_INSTANCED_UNLIT_SHADER_MARKER = "@aura3d-shader:instanced-unlit";
export declare const DEFAULT_INSTANCED_PBR_SHADER_NAME = "aura3d/instanced-pbr";
export declare const DEFAULT_INSTANCED_PBR_SHADER_MARKER = "@aura3d-shader:instanced-pbr";
export declare const DEFAULT_TEXTURED_UNLIT_SHADER_NAME = "aura3d/textured-unlit";
export declare const DEFAULT_TEXTURED_UNLIT_SHADER_MARKER = "@aura3d-shader:textured-unlit";
export declare const DEFAULT_SKINNED_UNLIT_SHADER_NAME = "aura3d/skinned-unlit";
export declare const DEFAULT_SKINNED_UNLIT_SHADER_MARKER = "@aura3d-shader:skinned-unlit";
export declare const DEFAULT_SKINNED_LIT_SHADER_NAME = "aura3d/skinned-lit";
export declare const DEFAULT_SKINNED_LIT_SHADER_MARKER = "@aura3d-shader:skinned-lit";
export declare const DEFAULT_MORPH_UNLIT_SHADER_NAME = "aura3d/morph-unlit";
export declare const DEFAULT_MORPH_UNLIT_SHADER_MARKER = "@aura3d-shader:morph-unlit";
export declare const DEFAULT_NORMAL_MAPPED_PBR_SHADER_NAME = "aura3d/pbr-normal-map";
export declare const DEFAULT_NORMAL_MAPPED_PBR_SHADER_MARKER = "@aura3d-shader:pbr-normal-map";
export declare const DEFAULT_TEXTURED_PBR_SHADER_NAME = "aura3d/pbr-textured";
export declare const DEFAULT_TEXTURED_PBR_SHADER_MARKER = "@aura3d-shader:pbr-textured";
export declare const DEFAULT_TEXTURED_PBR_CLEARCOAT_TEXTURES_VARIANT = "clearcoat-textures";
export declare const DEFAULT_TEXTURED_PBR_TRANSMISSION_VOLUME_TEXTURES_VARIANT = "transmission-volume-textures";
export declare const DEFAULT_TEXTURED_PBR_SPECULAR_SHEEN_ANISOTROPY_TEXTURES_VARIANT = "specular-sheen-anisotropy-textures";
export declare const DEFAULT_TEXTURED_PBR_IRIDESCENCE_TEXTURES_VARIANT = "iridescence-textures";
export declare const DEFAULT_TEXTURED_PBR_CLEARCOAT_TRANSMISSION_VOLUME_TEXTURES_VARIANT = "clearcoat-transmission-volume-textures";
export declare const DEFAULT_TEXTURED_PBR_CLEARCOAT_SPECULAR_TEXTURES_VARIANT = "clearcoat-specular-textures";
export declare const DEFAULT_TEXTURED_PBR_SPECULAR_SHEEN_ANISOTROPY_IRIDESCENCE_TEXTURES_VARIANT = "specular-sheen-anisotropy-iridescence-textures";
export declare const DEFAULT_DEPTH_SHADER_NAME = "aura3d/depth";
export declare const DEFAULT_DEPTH_SHADER_MARKER = "@aura3d-shader:depth";
export declare const DEFAULT_ENVIRONMENT_BACKGROUND_SHADER_NAME = "aura3d/environment-background";
export declare const DEFAULT_ENVIRONMENT_BACKGROUND_SHADER_MARKER = "@aura3d-shader:environment-background";
export declare function createDefaultShaderLibrary(): ShaderLibrary;
//# sourceMappingURL=ShaderLibrary.d.ts.map