import IDisposable from '../../lang/IDisposable';
import ReadOnlySubject from '../../rx/ReadOnlySubject';
export type ProtectionConfiguration = {
    streamId: string;
};
interface IProtectionStrategy<ProtectionSessionConfiguration extends ProtectionConfiguration = ProtectionConfiguration> extends IDisposable {
    readonly protectionSystemName: string;
    readonly keySession: ReadOnlySubject<MediaKeySession | null>;
    initializeMediaKeys(): Promise<MediaKeys>;
    createSession(mediaKeys: MediaKeys, configuration: ProtectionSessionConfiguration): void;
    handleMediaElementEncryptedEvent(event: MediaEncryptedEvent): Promise<void>;
}
export default IProtectionStrategy;
