import type { SceneContext } from '../core/SceneContext'; import type { EasingType } from 'leviar'; import { type MotionEffectPreset } from '../core/motion'; export type ZoomPreset = 'close-up' | 'medium' | 'wide' | 'reset' | 'inherit'; export type CameraEffectPreset = MotionEffectPreset; /** 카메라를 줌한다 */ export interface CameraZoomCmd { /** 줌 배율 프리셋입니다. ('inherit'일 경우 이전 상태 유지) */ preset: ZoomPreset; /** 애니메이션의 지속 시간(ms)입니다. */ duration?: number; /** 애니메이션의 이징 함수 이름입니다. */ ease?: EasingType; } /** 카메라를 패닝한다 */ export interface CameraPanCmd { /** 애니메이션의 지속 시간(ms)입니다. */ duration?: number; /** X 좌표 (0~1) 또는 '1/5' 등의 비율 표현식입니다. */ x?: number | string; /** Y 좌표 (0~1) 또는 '1/5' 등의 비율 표현식입니다. */ y?: number | string; /** 애니메이션의 이징 함수 이름입니다. */ ease?: EasingType; } /** * 카메라 흔들림 등 연출 효과를 재생한다 * * @example * { type: 'camera-effect', preset: 'shake', duration: 500, intensity: 5, repeat: 3 } */ export interface CameraEffectCmd { /** 연출 효과의 프리셋 이름입니다. */ preset: CameraEffectPreset; /** 효과의 전체 지속 시간(ms)입니다. */ duration?: number; /** 효과의 강도입니다. 프리셋의 기본값을 덮어씁니다. */ intensity?: number; /** 효과를 반복할 횟수입니다. (기본값: 1) */ repeat?: number; } export { MOTION_EFFECT_PRESETS as CAMERA_EFFECT_PRESETS } from '../core/motion'; export declare function zoomCamera(ctx: SceneContext, preset: ZoomPreset, duration?: number, ease?: EasingType): void; export declare function panCamera(ctx: SceneContext, duration?: number, customX?: number | string, customY?: number | string, ease?: EasingType): void; export interface CameraZoomSchema { _lastPreset: string; } declare const cameraZoomModule: import("..").NovelModule; export { cameraZoomModule }; export interface CameraPanSchema { _lastX: number; _lastY: number; } declare const cameraPanModule: import("..").NovelModule; export { cameraPanModule }; export interface CameraEffectSchema { _lastPreset: string; _activeEffect: { preset: CameraEffectPreset; duration?: number; intensity?: number; remaining: number; } | null; } declare const cameraEffectModule: import("..").NovelModule; export { cameraEffectModule };