import type { ShaderMap } from '../core/CoreShaderManager.js';
import type { ExtractProps } from '../core/CoreTextureManager.js';
import type { Stage } from '../core/Stage.js';
import type { CoreShader } from '../core/renderers/CoreShader.js';
/**
 * Shader Controller Base Interface
 *
 * @remarks
 * Used directly this interface is like an `any` type for Shader Controllers.
 * But it is also used as a base for more specific Shader Controller interfaces.
 */
export interface BaseShaderController {
    type: keyof ShaderMap;
    shader: CoreShader;
    props: Record<string, any>;
    getResolvedProps: () => Record<string, any>;
}
/**
 * Shader Controller Class
 *
 * @remarks
 * This class is used to control shader props.
 */
export declare class ShaderController<S extends keyof ShaderMap> implements BaseShaderController {
    readonly type: S;
    readonly shader: InstanceType<ShaderMap[S]>;
    private resolvedProps;
    props: ExtractProps<ShaderMap[S]>;
    constructor(type: S, shader: InstanceType<ShaderMap[S]>, props: ExtractProps<ShaderMap[S]>, stage: Stage);
    getResolvedProps(): ExtractProps<ShaderMap[S]>;
}
