import type { GlRenderer } from '../../core';
import type { EffectProperties, Node, Viewport } from '../main';
import { Effect } from '../main/Effect';
export interface KawaseBlurEffectProperties extends EffectProperties {
    strength: number;
    quality: number;
    pixelSize: [number, number];
    clamp: boolean;
}
export declare const frag = "varying vec2 vUv;\nuniform sampler2D sampler;\nuniform vec2 uOffset;\n\nvoid main(void) {\n    vec4 color = vec4(0.0);\n    color += texture2D(sampler, vec2(vUv.x - uOffset.x, vUv.y + uOffset.y));\n    color += texture2D(sampler, vec2(vUv.x + uOffset.x, vUv.y + uOffset.y));\n    color += texture2D(sampler, vec2(vUv.x + uOffset.x, vUv.y - uOffset.y));\n    color += texture2D(sampler, vec2(vUv.x - uOffset.x, vUv.y - uOffset.y));\n    color *= 0.25;\n    gl_FragColor = color;\n}";
export declare const clampFrag = "precision highp float;\nvarying vec2 vUv;\nuniform sampler2D sampler;\nuniform vec2 uOffset;\nuniform vec4 uInputClamp;\nvoid main(void) {\n    vec4 color = vec4(0.0);\n    color += texture2D(sampler, clamp(vec2(vUv.x - uOffset.x, vUv.y + uOffset.y), uInputClamp.xy, uInputClamp.zw));\n    color += texture2D(sampler, clamp(vec2(vUv.x + uOffset.x, vUv.y + uOffset.y), uInputClamp.xy, uInputClamp.zw));\n    color += texture2D(sampler, clamp(vec2(vUv.x + uOffset.x, vUv.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));\n    color += texture2D(sampler, clamp(vec2(vUv.x - uOffset.x, vUv.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));\n    color *= 0.25;\n    gl_FragColor = color;\n}";
export declare class KawaseBlurEffect extends Effect {
    strength: number;
    quality: number;
    pixelSize: [number, number];
    protected _kernels: number[];
    constructor(properties?: Partial<KawaseBlurEffectProperties>, children?: Node[]);
    protected _updateProperty(key: string, value: any, oldValue: any): void;
    /** Auto generate kernels by blur & quality */
    protected _generateKernels(): void;
    apply(renderer: GlRenderer, viewport: Viewport): void;
}
