import { Device } from "../adapter/device.js";
import { Shader, type ShaderProps } from "../adapter/resources/shader.js";
/** Manages a cached pool of Shaders for reuse. */
export declare class ShaderFactory {
    static readonly defaultProps: Required<ShaderProps>;
    /** Returns the default ShaderFactory for the given {@link Device}, creating one if necessary. */
    static getDefaultShaderFactory(device: Device): ShaderFactory;
    readonly device: Device;
    private readonly _cache;
    get [Symbol.toStringTag](): string;
    toString(): string;
    /** @internal */
    constructor(device: Device);
    /** Requests a {@link Shader} from the cache, creating a new Shader only if necessary. */
    createShader(props: ShaderProps): Shader;
    /** Releases a previously-requested {@link Shader}, destroying it if no users remain. */
    release(shader: Shader): void;
    protected _hashShader(value: Shader | ShaderProps): string;
}
//# sourceMappingURL=shader-factory.d.ts.map