import { TrackInfo, FfiHandle, OwnedTrack, TrackKind, StreamState } from '@livekit/rtc-ffi-bindings'; import { AudioSource } from './audio_source.js'; import './ffi_client.js'; import { VideoSource } from './video_source.js'; import './audio_frame.js'; import '@livekit/typed-emitter'; import './video_frame.js'; declare abstract class Track { /** @internal */ info?: TrackInfo; /** @internal */ ffi_handle: FfiHandle; constructor(owned: OwnedTrack); get sid(): string | undefined; get name(): string | undefined; get kind(): TrackKind | undefined; get stream_state(): StreamState | undefined; get muted(): boolean | undefined; close(): Promise; } declare class LocalAudioTrack extends Track { private source?; constructor(owned: OwnedTrack, source?: AudioSource); static createAudioTrack(name: string, source: AudioSource): LocalAudioTrack; close(closeSource?: boolean): Promise; } declare class LocalVideoTrack extends Track { private source?; constructor(owned: OwnedTrack, source?: VideoSource); static createVideoTrack(name: string, source: VideoSource): LocalVideoTrack; close(closeSource?: boolean): Promise; } declare class RemoteVideoTrack extends Track { constructor(owned: OwnedTrack); } declare class RemoteAudioTrack extends Track { constructor(owned: OwnedTrack); } type LocalTrack = LocalVideoTrack | LocalAudioTrack; type RemoteTrack = RemoteVideoTrack | RemoteAudioTrack; type AudioTrack = LocalAudioTrack | RemoteAudioTrack; type VideoTrack = LocalVideoTrack | RemoteVideoTrack; export { type AudioTrack, LocalAudioTrack, type LocalTrack, LocalVideoTrack, RemoteAudioTrack, type RemoteTrack, RemoteVideoTrack, Track, type VideoTrack };