import { ChannelEvent, channelEventCallback, ChannelMode, ChannelOptions, ChannelParams, ChannelState, ChannelStateChange, ErrorInfo, InboundMessage, Message, messageCallback, MessageFilter, PaginatedResult, RealtimeChannel, RealtimeHistoryParams, RealtimePresence, } from 'ably'; // TODO: replace with/use according RPC classes from UTS Pub/Sub when different UTS packages are made composable export class RpcRealtimeChannel implements RealtimeChannel { private readonly _instanceId: string; constructor(instanceId: string) { this._instanceId = instanceId; } get name(): string { throw new Error('Getter not implemented.'); } get errorReason(): ErrorInfo { throw new Error('Getter not implemented.'); } get state(): ChannelState { throw new Error('Getter not implemented.'); } get params(): ChannelParams { throw new Error('Getter not implemented.'); } get modes(): ChannelMode[] { throw new Error('Getter not implemented.'); } get presence(): RealtimePresence { throw new Error('Getter not implemented.'); } unsubscribe(event: string, listener: messageCallback): void; unsubscribe(events: Array, listener: messageCallback): void; unsubscribe(event: string): void; unsubscribe(events: Array): void; unsubscribe(filter: MessageFilter, listener?: messageCallback): void; unsubscribe(listener: messageCallback): void; unsubscribe(): void; unsubscribe(filter?: unknown, listener?: unknown): void { throw new Error('Method not implemented.'); } attach(): Promise { throw new Error('Method not implemented.'); } detach(): Promise { throw new Error('Method not implemented.'); } history(params?: RealtimeHistoryParams): Promise> { throw new Error('Method not implemented.'); } setOptions(options: ChannelOptions): Promise { throw new Error('Method not implemented.'); } subscribe(event: string, listener?: messageCallback): Promise; subscribe(events: Array, listener?: messageCallback): Promise; subscribe(filter: MessageFilter, listener?: messageCallback): Promise; subscribe(callback: messageCallback): Promise; subscribe(filter: unknown, listener?: unknown): Promise { throw new Error('Method not implemented.'); } publish(name: string, data: any): Promise; publish(messages: Message[]): Promise; publish(message: Message): Promise; publish(name: unknown, data?: unknown): Promise { throw new Error('Method not implemented.'); } whenState(targetState: ChannelState): Promise { throw new Error('Method not implemented.'); } on(event: ChannelEvent, callback: channelEventCallback): void; on(events: ChannelEvent[], callback: channelEventCallback): void; on(callback: channelEventCallback): void; on(events: unknown, callback?: unknown): void { throw new Error('Method not implemented.'); } once(event: ChannelEvent, callback: channelEventCallback): void; once(callback: channelEventCallback): void; once(event: ChannelEvent): Promise; once(): Promise; once(event?: unknown, callback?: unknown): void | Promise { throw new Error('Method not implemented.'); } off(event: ChannelEvent, callback: channelEventCallback): void; off(callback: channelEventCallback): void; off(): void; off(event?: unknown, callback?: unknown): void { throw new Error('Method not implemented.'); } listeners(eventName?: ChannelEvent | undefined): channelEventCallback[] | null { throw new Error('Method not implemented.'); } }