import { BoundingBox, Vector2 } from "@galacean/engine-math";
import { RenderContext } from "../RenderPipeline/RenderContext";
import { Renderer } from "../Renderer";
import { ParticleCurve } from "../particle/modules/ParticleCurve";
import { ParticleGradient } from "../particle/modules/ParticleGradient";
import { TrailTextureMode } from "./enums/TrailTextureMode";
/**
 * Trail Renderer Component.
 * Renders a trail behind a moving object.
 */
export declare class TrailRenderer extends Renderer {
    private static readonly VERTEX_STRIDE;
    private static readonly VERTEX_FLOAT_STRIDE;
    private static readonly DISTANCE_OFFSET;
    private static readonly POINT_FLOAT_STRIDE;
    private static readonly POINT_BYTE_STRIDE;
    private static readonly POINT_INCREASE_COUNT;
    private static _trailParamsProp;
    private static _distanceParamsProp;
    private static _widthCurveProp;
    private static _colorKeysProp;
    private static _alphaKeysProp;
    private static _curveMaxTimeProp;
    private static _tempVector3;
    /** Whether the trail is being created as the object moves. */
    emitting: boolean;
    /** The minimum distance the object must move before a new trail segment is added, in world units. */
    minVertexDistance: number;
    /** The curve describing the trail width from start to end. */
    widthCurve: ParticleCurve;
    /** The gradient describing the trail color from start to end. */
    colorGradient: ParticleGradient;
    private _trailParams;
    private _textureScale;
    private _distanceParams;
    private _curveMaxTime;
    private _time;
    private _primitive;
    private _mainSubPrimitive;
    private _wrapSubPrimitive;
    private _vertexBuffer;
    private _vertices;
    private _firstActiveElement;
    private _firstNewElement;
    private _firstFreeElement;
    private _firstRetiredElement;
    private _currentPointCapacity;
    private _bufferResized;
    private _lastPosition;
    private _hasLastPosition;
    private _cumulativeDistance;
    private _playTime;
    private _lastPlayTimeUpdateFrameCount;
    /**
     * How long the trail takes to fade out, in seconds.
     */
    get time(): number;
    set time(value: number);
    /**
     * The texture mapping mode for the trail.
     */
    get textureMode(): TrailTextureMode;
    set textureMode(value: TrailTextureMode);
    /**
     * Scale of the UV coordinates.
     * x scales the coordinate along the trail, y scales the coordinate across the trail.
     */
    get textureScale(): Vector2;
    set textureScale(value: Vector2);
    /**
     * Clear all trail points.
     */
    clear(): void;
    protected _update(context: RenderContext): void;
    protected _render(context: RenderContext): void;
    protected _updateBounds(worldBounds: BoundingBox): void;
    private _mergePointPosition;
    protected _onDestroy(): void;
    private _updateAndGetPlayTime;
    private _initGeometry;
    private _resizeBuffer;
    private _retireActivePoints;
    private _freeRetiredPoints;
    private _emitNewPoint;
    private _addPoint;
    private _getActivePointCount;
    private _addActivePointsToVertexBuffer;
    private _addRenderElement;
    private _onTextureScaleChanged;
}
