import { ShaderRegisterCache } from '@awayjs/stage';
import { ShaderBase, AnimationRegisterData } from '@awayjs/renderer';
import { ParticleProperties } from '../data/ParticleProperties';
import { ParticleTimeState } from '../states/ParticleTimeState';
import { ParticleAnimationSet } from '../ParticleAnimationSet';
import { AnimatorBase } from '../AnimatorBase';
import { ParticleNodeBase } from './ParticleNodeBase';
/**
* A particle animation node used as the base node for timekeeping inside a particle. Automatically added to a particle animation set on instatiation.
*/
export declare class ParticleTimeNode extends ParticleNodeBase {
/** @private */
_iUsesDuration: boolean;
/** @private */
_iUsesDelay: boolean;
/** @private */
_iUsesLooping: boolean;
/**
* Creates a new ParticleTimeNode
*
* @param [optional] usesDuration Defines whether the node uses the duration data in the static properties to determine how long a particle is visible for. Defaults to false.
* @param [optional] usesDelay Defines whether the node uses the delay data in the static properties to determine how long a particle is hidden for. Defaults to false. Requires usesDuration to be true.
* @param [optional] usesLooping Defines whether the node creates a looping timeframe for each particle determined by the startTime, duration and delay data in the static properties function. Defaults to false. Requires usesLooping to be true.
*/
constructor(usesDuration?: boolean, usesLooping?: boolean, usesDelay?: boolean);
/**
* @inheritDoc
*/
getAGALVertexCode(shader: ShaderBase, animationSet: ParticleAnimationSet, registerCache: ShaderRegisterCache, animationRegisterData: AnimationRegisterData): string;
/**
* @inheritDoc
*/
getAnimationState(animator: AnimatorBase): ParticleTimeState;
/**
* @inheritDoc
*/
_iGeneratePropertyOfOneParticle(param: ParticleProperties): void;
}
//# sourceMappingURL=ParticleTimeNode.d.ts.map