import { AbstractAdapter, Viewer, TextureData, PanoData, AdapterConstructor, PanoramaPosition, Position } from '@photo-sphere-viewer/core'; import { Mesh, BufferGeometry, Material, VideoTexture, SphereGeometry, MeshBasicMaterial } from 'three'; type AbstractVideoPanorama = { source: string | MediaStream | HTMLVideoElement; }; type AbstractVideoAdapterConfig = { /** * automatically start the video * @default false */ autoplay?: boolean; /** * initially mute the video * @default false */ muted?: boolean; }; type AbstractVideoMesh = Mesh; type AbstractVideoTextureData = TextureData; /** * Base video adapters class */ declare abstract class AbstractVideoAdapter extends AbstractAdapter { static readonly supportsDownload = false; protected abstract readonly config: AbstractVideoAdapterConfig; private video; constructor(viewer: Viewer); init(): void; destroy(): void; supportsPreload(): boolean; supportsTransition(): boolean; loadTexture(panorama: AbstractVideoPanorama): Promise; protected switchVideo(texture: VideoTexture): void; setTextureOpacity(mesh: TMesh, opacity: number): void; disposeTexture({ texture }: AbstractVideoTextureData): void; disposeMesh(mesh: AbstractVideoMesh): void; private __removeVideo; private __videoLoadPromise; } /** * Configuration of an equirectangular video */ type EquirectangularVideoPanorama = AbstractVideoPanorama & { data?: PanoData | ((image: HTMLVideoElement) => PanoData); }; type EquirectangularVideoAdapterConfig = AbstractVideoAdapterConfig & { /** * number of faces of the sphere geometry, higher values may decrease performances * @default 64 */ resolution?: number; }; type EquirectangularVideoMesh = Mesh; type EquirectangularVideoTextureData = TextureData; /** * Adapter for equirectangular videos */ declare class EquirectangularVideoAdapter extends AbstractVideoAdapter { static readonly id = "equirectangular-video"; static readonly VERSION: string; protected readonly config: EquirectangularVideoAdapterConfig; private adapter; static withConfig(config: EquirectangularVideoAdapterConfig): [AdapterConstructor, any]; constructor(viewer: Viewer, config: EquirectangularVideoAdapterConfig); destroy(): void; textureCoordsToSphericalCoords(point: PanoramaPosition, data: PanoData): Position; sphericalCoordsToTextureCoords(position: Position, data: PanoData): PanoramaPosition; loadTexture(panorama: EquirectangularVideoPanorama, _?: boolean, newPanoData?: any): Promise; createMesh(panoData: PanoData): EquirectangularVideoMesh; setTexture(mesh: EquirectangularVideoMesh, { texture }: EquirectangularVideoTextureData): void; } export { EquirectangularVideoAdapter, type EquirectangularVideoAdapterConfig, type EquirectangularVideoPanorama };