export interface AdConfig {
    replaceContentDuration?: number;
}
export interface CompanionAd {
    width: number;
    height: number;
}
export interface VastAdExtensionAttributes {
    [key: string]: string;
}
export interface VastAdExtension {
    attributes: VastAdExtensionAttributes;
    children: VastAdExtension[];
    name: string;
    value: string;
}
export interface AdData {
    mimeType?: string;
    bitrate?: number;
    minBitrate?: number;
    maxBitrate?: number;
}
export interface Ad {
    isLinear: boolean;
    width: number;
    height: number;
    id?: string;
    mediaFileUrl?: string;
    companionAds?: CompanionAd[];
    verifications?: any[];
    extensions?: VastAdExtension[];
    clickThroughUrl?: string;
    clickThroughUrlOpened?: () => void;
    data?: AdData;
}
export interface AdBreak extends AdConfig {
    id: string;
    scheduleTime: number;
    ads?: Ad[];
}
export interface RestrictStrategy {
    shouldPlayAdBreak: (toPlay: AdBreak) => boolean;
    shouldPlaySkippedAdBreaks: (skipped: AdBreak[], from: number, to: number) => AdBreak[];
}
export interface AdTagPlaceholders {
    playbackTime?: string[];
    height?: string[];
    width?: string[];
    domain?: string[];
    page?: string[];
    referrer?: string[];
    assetUrl?: string[];
    random?: string[];
    timestamp?: string[];
}
export interface OmSdkAccessModeRules {
    limited?: RegExp[];
    domain?: RegExp[];
    creative?: RegExp[];
    full?: RegExp[];
}
export interface VerificationResource {
    validationScriptUrl: string;
    vendorKey?: string;
    params?: string;
}
export interface OmSdkTracker {
    contentUrl?: string;
    onAccessMode?: (ad: Ad) => OmSdkAccessModeRules;
    partnerName: string;
    partnerVersion: string;
    verificationResources?: VerificationResource[];
}
export interface Trackers {
    omSdk?: OmSdkTracker;
}
export interface AdvertisingConfig {
    adBreaks?: AdConfig[];
    videoLoadTimeout?: number;
    strategy?: RestrictStrategy;
    withCredentials?: boolean;
    adContainer?: () => HTMLElement;
    companionAdContainers?: () => HTMLElement[];
    placeholders?: AdTagPlaceholders;
    trackers?: Trackers;
    disableStorageApi?: boolean;
}
