import { RpgClientEngine } from '../RpgClientEngine'; import { RpgClientMap } from './Map'; export type ClientVisualPosition = { x: number; y: number; z?: number; }; export type ClientVisualPayload = Record & { source?: string; sourceId?: string; target?: string; targetId?: string; object?: string; objectId?: string; position?: ClientVisualPosition; }; export type ClientVisualPacket = { name: string; data?: ClientVisualPayload; }; export type ClientVisualObjectTarget = string | Record | undefined | null; export type ClientVisualComponentTarget = ClientVisualObjectTarget | ClientVisualPosition; export type ClientVisualContext = { name: string; data: ClientVisualPayload; engine: RpgClientEngine; scene: RpgClientMap; source?: any; target?: any; object?: any; position?: ClientVisualPosition; }; export type ClientVisualHelpers = { getObject(id?: string | null): any; flash(target?: ClientVisualObjectTarget, options?: Record): void; showHit(target: ClientVisualObjectTarget, text: string): void; component(id: string, target?: ClientVisualComponentTarget, params?: Record): void; sound(id: string, options?: { volume?: number; loop?: boolean; }): Promise; animation(target: ClientVisualObjectTarget, animationName: string, options?: { graphic?: string | string[]; repeat?: number; }): void; shake(options?: { intensity?: number; duration?: number; frequency?: number; direction?: string; }): void; }; export type ClientVisualHandler = (context: ClientVisualContext, helpers: ClientVisualHelpers) => void | Promise; export type ClientVisualMap = Record; export declare class ClientVisualRegistry { private readonly handlers; register(name: string, handler: ClientVisualHandler): ClientVisualHandler; registerMany(visuals: ClientVisualMap): void; get(name: string): ClientVisualHandler | undefined; play(packet: ClientVisualPacket, engine: RpgClientEngine): Promise; }