import type { HttpResponseType } from '../enums/PlayerExports';
import type { HttpHeaders } from './PlayerConfig';
export interface DRMConfig {
    widevine?: WidevineModularDRMConfig;
    playready?: PlayReadyDRMConfig;
    primetime?: AdobePrimeTimeDRMConfig;
    fairplay?: AppleFairplayDRMConfig;
    clearkey?: ClearKeyDRMConfig | ClearKeyDRMServerConfig;
    immediateLicenseRequest?: boolean;
    preferredKeySystems?: string[];
}
export interface WidevineModularDRMConfig {
    LA_URL?: string;
    withCredentials?: boolean;
    maxLicenseRequestRetries?: number;
    licenseRequestRetryDelay?: number;
    headers?: HttpHeaders;
    prepareLicense?: (licenseObject: any) => any;
    prepareMessage?: (keyMessage: any) => any;
    mediaKeySystemConfig?: MediaKeySystemConfiguration;
    videoRobustness?: string;
    audioRobustness?: string;
    serverCertificate?: ArrayBuffer;
}
export interface PlayReadyDRMConfig {
    LA_URL?: string;
    withCredentials?: boolean;
    maxLicenseRequestRetries?: number;
    licenseRequestRetryDelay?: number;
    headers?: HttpHeaders;
    mediaKeySystemConfig?: MediaKeySystemConfiguration;
    customData?: string;
    proactiveLicense?: boolean;
    forceSSL?: boolean;
    utf8message?: boolean;
    plaintextChallenge?: boolean;
}
export interface AdobePrimeTimeDRMConfig {
    LA_URL?: string;
    indivURL: string;
    withCredentials?: boolean;
    maxLicenseRequestRetries?: number;
    licenseRequestRetryDelay?: number;
    headers?: HttpHeaders;
    mediaKeySystemConfig?: object;
}
export interface AppleFairplayDRMConfig {
    LA_URL?: string;
    certificateURL: string;
    headers?: HttpHeaders;
    certificateHeaders?: HttpHeaders;
    prepareMessage?: (event: any, session: any) => any;
    prepareContentId?: (url: string) => string;
    withCredentials?: boolean;
    prepareCertificate?: (data: any) => ArrayBuffer;
    prepareLicense?: (data: any) => string;
    prepareLicenseAsync?: (data: any) => Promise<Uint8Array>;
    useUint16InitData?: boolean;
    licenseResponseType?: HttpResponseType;
    getLicenseServerUrl?: (skdUrl: string) => string;
    maxLicenseRequestRetries?: number;
    maxCertificateRequestRetries?: number;
    serverCertificate?: ArrayBuffer;
}
export interface ClearKeyDRMConfigEntry {
    kid?: string;
    key: string;
}
export interface ClearKeyDRMServerConfig {
    LA_URL: string;
    withCredentials?: boolean;
    maxLicenseRequestRetries?: number;
    licenseRequestRetryDelay?: number;
    headers?: HttpHeaders;
}
export type ClearKeyDRMConfig = Array<ClearKeyDRMConfigEntry>;
export declare namespace MediaKeySystemConfig {
    enum PersistentState {
        Required = "required",
        Optional = "optional"
    }
    enum DistinctiveIdentifier {
        Optional = "optional",
        NotAllowed = "not-allowed"
    }
    enum SessionType {
        Temporary = "temporary",
        PersistentLicense = "persistent-license"
    }
}
