import type { EventBus } from '../../event-bus/Types';
import type { AdType, BaseAdBreakState, BaseAdState } from '../base/Types';
import type { AdvertisingEventMap } from './AdvertisingEvents';
export type AdTagConfig = {
    type: AdType;
    url: string;
};
export type PreloadConfig = {
    adManifestPreloadOffset?: number;
    adSourcePreloadOffset?: number;
};
export type AdBreakConfig = {
    id?: string;
    tag: AdTagConfig;
    position?: number | string;
    preloadConfig?: PreloadConfig;
};
export type Ad = {
    readonly id: string;
    readonly skippable: boolean;
    readonly skipDelay: number;
    readonly state: BaseAdState;
    readonly position: number;
};
export type AdBreak = {
    readonly id: string;
    readonly position: number;
    readonly ads: Ad[];
    readonly state: BaseAdBreakState;
};
export type ContentSourceAdvertisingApi = {
    readonly isAd: false;
    readonly isLinearAdActive: boolean;
    schedule(adBreak: AdBreakConfig): AdBreak;
    discardAdBreak(adBreak: AdBreak): void;
    list(): AdBreak[];
    getActiveAdBreak(): AdBreak | undefined;
    getActiveAd(): Ad | undefined;
};
export type AdSourceAdvertisingApi = {
    readonly isAd: true;
    readonly isSkippable: boolean;
    readonly skipDelay: number;
    skip(): void;
};
export type AdvertisingApi = {
    ads: ContentSourceAdvertisingApi | AdSourceAdvertisingApi;
    events: EventBus<AdvertisingEventMap>;
};
