export interface ITestContext { readonly applicationCredentials: { readonly id: string; readonly secret: string; }; readonly uri: { readonly pcast: string; readonly ingest: string; readonly channel: string; }; readonly streamKind: string; readonly cleanup: (() => Promise)[]; addCleanupTask(task: () => Promise): void; executeCleanup(): Promise; } export interface IChannelTestContext extends ITestContext { channel: any; // Mutable for test setup readonly pcastApi: any; // Replace 'any' with proper PCastApi type } export interface IPublisherTestContext extends IChannelTestContext { readonly publishSource: any; // Replace 'any' with proper RtmpPush type } export interface ISubscriberTestContext extends IChannelTestContext { publishDestination: { // Mutable for test setup token: string; readonly capabilities: string[]; }; }