import type { CoreRenderer } from "./CoreRenderer.js";
type ExtractProps<Type> = Type extends {
    props: infer Props;
} ? Props : never;
interface Shader {
    props?: Record<string, any>;
}
export interface WebGlShader extends Shader {
    props?: Record<string, any>;
    vertex?: string;
    update?: () => void;
    fragment: string;
}
export declare abstract class CoreShaderManager<Renderer extends CoreRenderer, shType extends Shader> {
    renderer: Renderer;
    constructor(renderer: Renderer);
    loadShader<Type extends shType>(type: Type | (new () => Type), props?: ExtractProps<Type>): void;
}
export {};
