import type { AssetKeysOf } from '../types/config'; export type EffectType = 'dust' | 'rain' | 'snow' | 'sakura' | 'sparkle' | 'fog' | 'leaves' | 'fireflies'; /** * 파티클 이펙트를 추가하거나 제거한다 */ export type EffectCmd = { /** 수행할 동작입니다. ('add': 효과 추가) */ action: 'add'; /** 추가할 이펙트의 종류입니다. */ effect: EffectType; /** 이펙트에 사용할 에셋(이미지 등)의 키입니다. */ src: AssetKeysOf; /** 파티클 생성 속도(빈도)입니다. */ rate?: number; } | { /** 수행할 동작입니다. ('remove': 효과 제거) */ action: 'remove'; /** 제거할 이펙트의 종류입니다. */ effect: EffectType; /** 사라지는 애니메이션의 지속 시간(ms)입니다. */ duration?: number; }; export interface EffectSchema { /** @internal effect → { rate, srcKey } 맵 */ _activeEffects: Record; } /** * 이펙트 모듈. `novel.config`의 `modules: { 'effect': effectModule }` 형태로 등록합니다. */ declare const effectModule: import("..").NovelModule, EffectSchema, import("..").DefaultHook>; export default effectModule; /** @internal */ export declare function addEffect(ctx: any, type?: EffectType, rate?: number, _overrides?: any, srcKey?: string): void;