import type * as spec from '@galacean/effects-specification'; import type { GraphContext, InstantiationContext } from './graph-context'; import type { PoseResult } from './pose-result'; export declare const InvalidIndex = -1; export declare class GraphNode { private initializationCount; private lastUpdateID; constructor(); getNodeData(): T; isValid(): boolean; isInitialized(): boolean; initialize(context: GraphContext): void; /** * Shutdown this node */ shutdown(context: GraphContext): void; isNodeActive(updateID: number): boolean; isUpdated(context: GraphContext): boolean; /** * Mark this node as active for the current update */ markNodeActive(context: GraphContext): void; /** * Internal initialization logic */ protected initializeInternal(context: GraphContext): void; /** * Internal shutdown logic */ protected shutdownInternal(context: GraphContext): void; } export declare abstract class GraphNodeData { index: number; abstract instantiate(context: InstantiationContext): void; load(data: spec.GraphNodeData): void; protected createNode(nodeType: new () => T, context: InstantiationContext): T; } export interface PoseNodeDebugInfo { duration: number; currentTime: number; previousTime: number; } export declare abstract class PoseNode extends GraphNode { protected duration: number; protected previousTime: number; protected currentTime: number; /** * Get current clamped percentage over the duration */ getCurrentTime(): number; /** * Get previous clamped percentage over the duration */ getPreviousTime(): number; /** * Get node duration */ getDuration(): number; getDebugInfo(): PoseNodeDebugInfo; abstract evaluate(context: GraphContext, result: PoseResult): PoseResult; protected initializeInternal(context: GraphContext): void; } export declare abstract class ValueNode extends GraphNode { setValue(value: T): void; abstract getValue(context: GraphContext): T; } export declare abstract class FloatValueNode extends ValueNode { } export declare abstract class BoolValueNode extends ValueNode { }