import type { Style } from "../../core/types.js"; import type { TVideoFrame, TVideoFrameEvent, TVideoFrameFormat } from "../video/types.js"; import type { ExtractPublicPropTypes, PropType } from "vue"; /** Motion state supplied to every {@link T3DRenderer.render} call. */ export type T3DViewportMotion = Readonly<{ yaw: number; pitch: number; yawVelocity: number; pitchVelocity: number; pointerX: number; pointerY: number; pointerSpeed: number; hovering: boolean; zoom: number; zoomVelocity: number; hoveredObjectId: number | null; selectedObjectId: number | null; }>; /** Object metadata returned by an optional {@link T3DRenderer.hitTest}. */ export type T3DHitResult = Readonly<{ objectId: number; label?: string; href?: string; }>; /** Synchronous pointer context supplied to an optional {@link T3DRenderer.hitTest}. */ export type T3DHitTestContext = Readonly<{ pointerX: number; pointerY: number; pixelWidth: number; pixelHeight: number; cellWidth: number; cellHeight: number; motion: T3DViewportMotion; }>; /** Pull-render context for a single terminal 3D frame. */ export type T3DRenderContext = Readonly<{ timeMs: number; deltaMs: number; frame: number; pixelWidth: number; pixelHeight: number; format: TVideoFrameFormat; signal: AbortSignal; motion: T3DViewportMotion; }>; /** Renderer contract used by {@link T3DViewport}. */ export type T3DRenderer = Readonly<{ render: (context: T3DRenderContext) => TVideoFrame | Promise; /** Optional synchronous object picking for hover and click selection. */ hitTest?: (context: T3DHitTestContext) => T3DHitResult | null; dispose?: () => void; }>; /** Public methods exposed by {@link T3DViewport}. */ export type T3DViewportHandle = Readonly<{ resetMotion: () => void; }>; export declare const t3DViewportProps: { /** Horizontal position in terminal cells. */ readonly x: { readonly type: NumberConstructor; readonly required: true; }; /** Vertical position in terminal cells. */ readonly y: { readonly type: NumberConstructor; readonly required: true; }; /** Width in terminal cells. */ readonly w: { readonly type: NumberConstructor; readonly required: true; }; /** Height in terminal cells. */ readonly h: { readonly type: NumberConstructor; readonly required: true; }; /** Paint and pointer hit-test stacking order. */ readonly zIndex: { readonly type: NumberConstructor; readonly default: 0; }; /** Pull renderer captured at mount; remount the component to replace it. */ readonly renderer: { readonly type: PropType; readonly required: true; }; /** Stops frame pulling while true. */ readonly paused: { readonly type: BooleanConstructor; readonly default: false; }; /** Maximum requested frames per second. */ readonly maxFps: { readonly type: NumberConstructor; readonly default: 24; }; /** Requested source width in pixels; TVideo may adapt it for ASCII output. */ readonly pixelWidth: { readonly type: NumberConstructor; readonly default: undefined; }; /** Requested source height in pixels; TVideo may adapt it for ASCII output. */ readonly pixelHeight: { readonly type: NumberConstructor; readonly default: undefined; }; /** Text displayed before a frame is available or after rendering fails. */ readonly fallback: { readonly type: StringConstructor; readonly default: "[3D viewport]"; }; /** Terminal style applied to fallback and ASCII output. */ readonly style: { readonly type: PropType