import type { EasingType } from '@visactor/vrender-core';
import { AStageAnimate } from '../../custom-animate';
export declare abstract class DisappearAnimateBase<T = any> extends AStageAnimate<T> {
    protected webglCanvas: HTMLCanvasElement | null;
    protected gl: WebGLRenderingContext | null;
    protected program: WebGLProgram | null;
    protected currentAnimationRatio: number;
    protected animationTime: number;
    constructor(from: null, to: null, duration: number, easing: EasingType, params: any);
    onUpdate(end: boolean, ratio: number, out: any): void;
    protected getAnimationTime(): number;
    protected getDurationFromParent(): number;
    protected initWebGL(canvas: HTMLCanvasElement): boolean;
    protected createShaderProgram(vertexSource: string, fragmentSource: string): WebGLProgram | null;
    protected createShader(type: number, source: string): WebGLShader | null;
    protected setupWebGLState(canvas: HTMLCanvasElement): void;
    protected createFullScreenQuad(): WebGLBuffer | null;
    protected createTextureFromCanvas(canvas: HTMLCanvasElement): WebGLTexture | null;
    protected setupVertexAttributes(): void;
    protected createOutputCanvas(canvas: HTMLCanvasElement): {
        canvas: HTMLCanvasElement;
        ctx: CanvasRenderingContext2D;
    } | null;
    protected getShaderSources(): {
        vertex: string;
        fragment: string;
    } | null;
    protected applyWebGLEffect(canvas: HTMLCanvasElement): HTMLCanvasElement | null;
    protected applyCanvas2DEffect(canvas: HTMLCanvasElement): HTMLCanvasElement | null;
    protected supportsWebGL(): boolean;
    protected supportsCanvas2D(): boolean;
    release(): void;
    protected afterStageRender(stage: any, canvas: HTMLCanvasElement): HTMLCanvasElement | void | null | false;
}
