/// <reference types="jwplayer" />
export interface ReactJWPlayerProps {
    /** A unique Id for the player instance. Used to distinguish the container divs. */
    playerId: string;
    /** Link to a valid JW Player script. */
    playerScript: string;
    /** Link to a valid JW Player playlist or playlist array. */
    playlist: string | MediaObject[];
    /** An optional aspect ratio to give the video player. Can be 'inherit', 1:1 or 16:9 currently. */
    aspectRatio: 'inherit' | '1:1' | '16:9';
    /** An optional class name to give the container div. */
    className?: string;
    /** Link to a valid JW Player video file. */
    file?: string;
    /** URL to a poster image to display before playback starts. */
    image?: string;
    /** Determines whether the player starts automatically or not. */
    isAutoPlay?: boolean;
    /** Determines whether the player starts muted or not. */
    isMuted?: boolean;
    /** License Key as supplied in the jwplayer dashboard, under: Players > Tools > Downloads > JW Player */
    licenseKey?: string;
    /** Custom JWPlayer properties */
    customProps?: unknown;
}
export interface ReactJWPlayerProps {
    /** Fired whenever an ad is requested by the player. */
    onAdRequest?: jwplayer.EventCallback<jwplayer.EventParams['adRequest']>;
    /** Fired when the user taps skip button during ad. */
    onAdSkipped?: jwplayer.EventCallback<jwplayer.EventParams['adSkipped']>;
    /** Fired when ad is done playing. */
    onAdComplete?: jwplayer.EventCallback<jwplayer.EventParams['adComplete']>;
    /** Fired when ad shows up on the screen. */
    onAdImpression?: jwplayer.EventCallback<jwplayer.EventParams['adImpression']>;
    /** VPAID-only. Will trigger when a VPAID ad creative signals to our player that it is starting.
     * This differs from adImpression since the advertisement may not yet be visible.
     * Fires after the first onAdPlay event.
     */
    onAdStarted?: jwplayer.EventCallback<jwplayer.EventParams['adStarted']>;
    /** Fired when new metadata has been broadcasted by the player during an Ad. */
    /** Fired when ad start to play or is resumed after pause. */
    onAdPlay?: jwplayer.EventCallback<jwplayer.EventParams['adPlay']>;
    /** Fired when ad is paused. */
    onAdPause?: jwplayer.EventCallback<jwplayer.EventParams['adPause']>;
    /** Fired whenever an ad contains companions. */
    onAdCompanions?: jwplayer.EventCallback<jwplayer.EventParams['adCompanions']>;
    /** Fired when ad can’t be played for any reason (onError event is fired at the same time). */
    onAdError?: jwplayer.EventCallback<jwplayer.EventParams['adError']>;
    /** Continuous ad playback time update. */
    onAdTime?: jwplayer.EventCallback<jwplayer.EventParams['adTime']>;
    /** Fired when the user taps the ad (omitted if openSafariOnAdClick is set to true) */
    onAdClick?: jwplayer.EventCallback<jwplayer.EventParams['adClick']>;
}
export interface ReactJWPlayerProps {
    /** Triggered the instant a user attempts to play a file. */
    /** Triggered by a video's first frame event (Or the instant an audio file begins playback). */
    onFirstFrame?: jwplayer.EventCallback<jwplayer.EventParams['firstFrame']>;
    /** The player stopped playing. */
    onIdle?: jwplayer.EventCallback<jwplayer.EventParams['idle']>;
    /** The player has done playing current media. */
    /** The player is buffering media. */
    onBuffer?: jwplayer.EventCallback<jwplayer.EventParams['buffer']>;
    /** Fired when the currently playing item loads additional data into its buffer. */
    onBufferChange?: jwplayer.EventCallback<jwplayer.EventParams['bufferChange']>;
    /** The player started to play media. */
    onPlay?: jwplayer.EventCallback<jwplayer.EventParams['play']>;
    /** The player is paused. */
    onPause?: jwplayer.EventCallback<jwplayer.EventParams['pause']>;
    /** The player is created and ready to be used. */
    onReady?: jwplayer.EventCallback<jwplayer.EventParams['ready']>;
    /** Triggered when the player has gone in or out of a mute state. */
    onMute?: jwplayer.EventCallback<jwplayer.EventParams['mute']>;
    /** Triggered when the player's volume is changed. */
    onVolume?: jwplayer.EventCallback<jwplayer.EventParams['volume']>;
    /** While the player is playing, this event is fired as the playback position gets updated.
     * This may occur as frequently as 10 times per second.
     */
    onTime?: jwplayer.EventCallback<jwplayer.EventParams['time']>;
    onFullscreen?: jwplayer.EventCallback<jwplayer.EventParams['fullscreen']>;
    onSeek?: jwplayer.EventCallback<jwplayer.EventParams['seek']>;
}
export interface ReactJWPlayerProps {
    /**  Fired when an error occurs after setup. */
    onError?: jwplayer.EventCallback<jwplayer.EventParams['error']>;
    /** Fired when an error occurs before setup is complete, or in other words before the onReady Event. */
    onSetupError?: jwplayer.EventCallback<jwplayer.EventParams['setupError']>;
}
export interface ReactJWPlayerProps {
    /** Fired when the list of available audio tracks is updated. Happens shortly after a playlist item starts playing. */
    onAudioTracks?: jwplayer.EventCallback<jwplayer.EventParams['audioTracks']>;
    /** Fired when the active audio track is changed.
     * Happens in response to e.g. a user clicking the audio tracks menu or a script calling setCurrentAudioTrack().
     */
    onAudioTrackChanged?: jwplayer.EventCallback<jwplayer.EventParams['audioTrackChanged']>;
}
/** Misc JWPlayer events */
/** Triggers when the recommendations interface is closed. */
/** Fired when the player is configured to autostart but the browser's settings are preventing it. */
export interface ReactJWPlayerState {
    foo: string;
}
export declare type PlayerConfigs = {
    [playerId: string]: unknown;
};
export declare type ExtendedWindow = Window & typeof globalThis & {
    jwplayer: jwplayer.JWPlayerStatic;
    __JW_PLAYER_CONFIGS__: PlayerConfigs;
};
/**
 * Media object used in playlists\
 * Reference: https://developer.jwplayer.com/jwplayer/docs/jw8-player-configuration-reference#playlists
 * @interface
 */
export interface MediaObject {
    /** URL or path to media resouce  */
    file: string;
    /** Schedule advertising for a specific media file */
    adschedule?: unknown;
    /** Short description of the item. It is displayed below the title.
     * This can be hidden with the displaydescription option.
     */
    description?: string;
    /** Poster image URL. Displayed before and after playback. */
    image?: string;
    /** Unique identifier of this item. Used by advertising, analytics and discovery services */
    mediaid?: string;
    /** HLS-only In seconds, the minimum amount of content in an M3U8 required to trigger DVR mode.
     * Set to 0 to always display DVR mode. (Defaults to 120)
     */
    minDvrWindow?: number;
    /** URL to a feed that contains related items for a particular playlist item */
    recommendations?: string;
    /** Used for quality toggling and alternate sources */
    sources?: [];
    /** Time in seconds to start a media item.
     * NOTE: When used with an MP4 video file, both seek and seeked events are triggered.
     * Neither event is triggered when used with a DASH or HLS stream.
     */
    starttime?: number;
    /** Title of the item.
     * This is displayed inside of the player prior to playback, as well as in the visual playlist.
     * This can be hidden with the displaytitle option
     */
    title?: string;
    /** Include captions, chapters, and thumbnails for media */
    tracks?: [];
    /** If true, "withCredentials" will be used to request a media file rather than CORS */
    withCredentials?: boolean;
}
/** Map component callback names to jwplayer events */
export declare const callbackToEventMap: {
    [key in keyof Partial<ReactJWPlayerProps>]: keyof jwplayer.EventParams;
};
export declare type AudioTrack = {
    /** If no explicit preference is chosen, can be chosen based on system language */
    autoselect: boolean;
    /** Returns true if the track should be chosen by default */
    defaulttrack: boolean;
    /** The two-letter language code for the chosen audio track */
    language: string;
    /** The given name for the chosen audio track */
    name: string;
};
export interface ReactJWPlayerInstance {
    /**  Returns an array of each audio track object */
    getAudioTracks(): AudioTrack[];
    /**  Returns The index of the currently active audio track.
     * @returns index or -1 if there are no alternative audio tracks
     */
    getCurrentAudioTrack(): number;
    /** Sets the play state of the JW Player. Calling play() while media is playing does nothing. */
    play(): jwplayer.JWPlayer;
    /** Pauses playback, changing the state of JW Player from playing to paused.
     * Calling pause() while media is already paused does nothing.
     */
    pause(): jwplayer.JWPlayer;
    /** Stops the player, returning it to the idle state. */
    stop(): jwplayer.JWPlayer;
    /** Change the audio track to the provided index. */
    setCurrentAudioTrack(index: number): void;
    /** Set the mute state of the player. If the state is undefined, mute is toggled. */
    setMute(state?: boolean): jwplayer.JWPlayer;
    /** Set the volume of the player between 1-100 */
    setVolume(volume: number): jwplayer.JWPlayer;
}
