import type { CoreShaderManager, EffectMap, ShaderMap } from '../core/CoreShaderManager.js';
import type { ExtractProps } from '../core/CoreTextureManager.js';
import type { EffectDesc } from '../core/renderers/webgl/shaders/effects/ShaderEffect.js';
import type { BaseShaderController } from './ShaderController.js';
type OptionalName<T> = T extends string ? T : never;
type MapEffectProps<Effects extends [...{
    name?: string;
    type: keyof EffectMap;
}[]]> = {
    [K in Effects[number] as OptionalName<K['name']>]: ExtractProps<EffectMap[K['type']]>;
};
export type DynamicEffects<T extends [...{
    name?: string;
    type: keyof EffectMap;
}[]]> = {
    [K in keyof T]: EffectDesc<T[K]>;
};
export declare class DynamicShaderController<Effects extends [...{
    name?: string;
    type: keyof EffectMap;
}[]]> implements BaseShaderController {
    readonly shader: InstanceType<ShaderMap['DynamicShader']>;
    private resolvedProps;
    props: MapEffectProps<Effects>;
    type: 'DynamicShader';
    constructor(shader: InstanceType<ShaderMap['DynamicShader']>, props: ExtractProps<ShaderMap['DynamicShader']>, shManager: CoreShaderManager);
    getResolvedProps(): import("../core/renderers/webgl/shaders/DynamicShader.js").DynamicShaderProps;
}
export {};
