import type { mat4, vec3 } from '@predy-js/math'; import type { ValueGetter } from '../../math/ValueGetter'; import type { Texture, Renderer, ShaderMarcos } from '@predy-js/render-interface'; import { Mesh, Geometry } from '@predy-js/render-interface'; import type { MeshRendererOptions } from './ParticleSystem'; import type { GradientColorValue, ParticleTrail, SplitParameter } from '@predy-js/specification'; export type TrailMeshConstructor = { maxTrailCount: number; pointCountPerTrail: number; colorOverLifetime: GradientColorValue; texture: Texture; minimumVertexDistance: number; blending: number; widthOverTrail: ValueGetter; colorOverTrail: GradientColorValue; order: number; _matrix?: mat4; opacityOverLifetime: ValueGetter; occlusion: boolean; transparentOcclusion: boolean; lifetime: ValueGetter; mask: number; shaderCachePrefix: string; maskMode: number; textureSplits?: SplitParameter[]; name: string; }; type TrailPointOptions = { lifetime: number; color: number[]; size: number; time: number; }; export declare function getTrailMeshShader(trails: ParticleTrail, renderer: Renderer, particleMaxCount: number, name: string, env: string): { vertex: string; fragment: string; marcos: ShaderMarcos; downgrade: boolean; shared: boolean; name: string; cacheId: string; mtlSource: any; mtlVertex: string; mtlFragment: string; }; export declare class TrailMesh { mesh: Mesh; maxTrailCount: any; constructor(props: TrailMeshConstructor, options: MeshRendererOptions); _pointStart: vec3[]; geometry: Geometry; _trailCursors: Uint16Array; lifetime: ValueGetter; pointCountPerTrail: number; minimumVertexDistance: number; useAttributeTrailStart: boolean; checkVertexDistance: boolean; get time(): any; set time(t: any); setTimeAndOpacity(time: number, opacity: number): void; addPoint(trailIndex: number, point: vec3, opt: TrailPointOptions): void; set modelMatrix(m4: mat4); getPoint(trail: any, index: any, out: any): any; clearAllTrails(): void; reverseTime(time: any): void; clearTrail(index: any): void; getPointStartPos(index: any): vec3; setPointStartPos(index: any, pos: any): void; } export {};