import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { ComponentResolver } from 'unplugin-vue-components';
import { DefineComponent } from 'vue';
import { I18nLocale } from './composables/useI18n';
import { I18nMessages } from './composables/useI18n';
import { PublicProps } from 'vue';
import { UseMediaTextTrack } from '@vueuse/core';

export declare const DanPlayer: DefineComponent<    {
src?: string | Blob;
comments?: ICommentCCL[];
autoplayOnCommentLoad?: boolean;
additionalFunctions?: ("loop" | "picture-in-picture")[];
locale?: I18nLocale | I18nMessages;
}, {
playing: globalThis.Ref<boolean, boolean>;
currentTime: globalThis.Ref<number, number>;
duration: globalThis.Ref<number, number>;
waiting: globalThis.Ref<boolean, boolean>;
volume: globalThis.Ref<number, number>;
muted: globalThis.Ref<boolean, boolean>;
isPictureInPicture: globalThis.Ref<boolean, boolean>;
supportsPictureInPicture: boolean | undefined;
togglePictureInPicture: () => Promise<unknown>;
tracks: globalThis.Ref<{
id: number;
label: string;
language: string;
mode: TextTrackMode;
kind: TextTrackKind;
inBandMetadataTrackDispatchType: string;
cues: {
[x: number]: {
endTime: number;
id: string;
onenter: ((this: TextTrackCue, ev: Event) => any) | null;
onexit: ((this: TextTrackCue, ev: Event) => any) | null;
pauseOnExit: boolean;
startTime: number;
readonly track: {
readonly activeCues: any | null;
readonly cues: any | null;
readonly id: string;
readonly inBandMetadataTrackDispatchType: string;
readonly kind: TextTrackKind;
readonly label: string;
readonly language: string;
mode: TextTrackMode;
oncuechange: ((this: TextTrack, ev: Event) => any) | null;
addCue: (cue: TextTrackCue) => void;
removeCue: (cue: TextTrackCue) => void;
addEventListener: {
<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
};
removeEventListener: {
<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
};
dispatchEvent: {
(event: Event): boolean;
(event: Event): boolean;
};
} | null;
addEventListener: {
<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
};
removeEventListener: {
<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
};
dispatchEvent: {
(event: Event): boolean;
(event: Event): boolean;
};
};
readonly length: number;
getCueById: (id: string) => TextTrackCue | null;
[Symbol.iterator]: () => ArrayIterator<TextTrackCue>;
} | null;
activeCues: {
[x: number]: {
endTime: number;
id: string;
onenter: ((this: TextTrackCue, ev: Event) => any) | null;
onexit: ((this: TextTrackCue, ev: Event) => any) | null;
pauseOnExit: boolean;
startTime: number;
readonly track: {
readonly activeCues: any | null;
readonly cues: any | null;
readonly id: string;
readonly inBandMetadataTrackDispatchType: string;
readonly kind: TextTrackKind;
readonly label: string;
readonly language: string;
mode: TextTrackMode;
oncuechange: ((this: TextTrack, ev: Event) => any) | null;
addCue: (cue: TextTrackCue) => void;
removeCue: (cue: TextTrackCue) => void;
addEventListener: {
<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
};
removeEventListener: {
<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
};
dispatchEvent: {
(event: Event): boolean;
(event: Event): boolean;
};
} | null;
addEventListener: {
<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
};
removeEventListener: {
<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
};
dispatchEvent: {
(event: Event): boolean;
(event: Event): boolean;
};
};
readonly length: number;
getCueById: (id: string) => TextTrackCue | null;
[Symbol.iterator]: () => ArrayIterator<TextTrackCue>;
} | null;
}[], UseMediaTextTrack[] | {
id: number;
label: string;
language: string;
mode: TextTrackMode;
kind: TextTrackKind;
inBandMetadataTrackDispatchType: string;
cues: {
[x: number]: {
endTime: number;
id: string;
onenter: ((this: TextTrackCue, ev: Event) => any) | null;
onexit: ((this: TextTrackCue, ev: Event) => any) | null;
pauseOnExit: boolean;
startTime: number;
readonly track: {
readonly activeCues: any | null;
readonly cues: any | null;
readonly id: string;
readonly inBandMetadataTrackDispatchType: string;
readonly kind: TextTrackKind;
readonly label: string;
readonly language: string;
mode: TextTrackMode;
oncuechange: ((this: TextTrack, ev: Event) => any) | null;
addCue: (cue: TextTrackCue) => void;
removeCue: (cue: TextTrackCue) => void;
addEventListener: {
<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
};
removeEventListener: {
<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
};
dispatchEvent: {
(event: Event): boolean;
(event: Event): boolean;
};
} | null;
addEventListener: {
<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
};
removeEventListener: {
<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
};
dispatchEvent: {
(event: Event): boolean;
(event: Event): boolean;
};
};
readonly length: number;
getCueById: (id: string) => TextTrackCue | null;
[Symbol.iterator]: () => ArrayIterator<TextTrackCue>;
} | null;
activeCues: {
[x: number]: {
endTime: number;
id: string;
onenter: ((this: TextTrackCue, ev: Event) => any) | null;
onexit: ((this: TextTrackCue, ev: Event) => any) | null;
pauseOnExit: boolean;
startTime: number;
readonly track: {
readonly activeCues: any | null;
readonly cues: any | null;
readonly id: string;
readonly inBandMetadataTrackDispatchType: string;
readonly kind: TextTrackKind;
readonly label: string;
readonly language: string;
mode: TextTrackMode;
oncuechange: ((this: TextTrack, ev: Event) => any) | null;
addCue: (cue: TextTrackCue) => void;
removeCue: (cue: TextTrackCue) => void;
addEventListener: {
<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
};
removeEventListener: {
<K extends keyof TextTrackEventMap>(type: K, listener: (this: TextTrack, ev: TextTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
};
dispatchEvent: {
(event: Event): boolean;
(event: Event): boolean;
};
} | null;
addEventListener: {
<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
};
removeEventListener: {
<K extends keyof TextTrackCueEventMap>(type: K, listener: (this: TextTrackCue, ev: TextTrackCueEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
};
dispatchEvent: {
(event: Event): boolean;
(event: Event): boolean;
};
};
readonly length: number;
getCueById: (id: string) => TextTrackCue | null;
[Symbol.iterator]: () => ArrayIterator<TextTrackCue>;
} | null;
}[]>;
selectedTrack: globalThis.Ref<number, number>;
rate: globalThis.Ref<number, number>;
buffered: globalThis.Ref<[number, number][], [number, number][]>;
enableTrack: (track: number | UseMediaTextTrack, disableTracks?: boolean) => void;
disableTrack: (track?: number | UseMediaTextTrack) => void;
loop: globalThis.Ref<boolean, boolean>;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
onCommentLoad: () => any;
}, string, PublicProps, Readonly<{
src?: string | Blob;
comments?: ICommentCCL[];
autoplayOnCommentLoad?: boolean;
additionalFunctions?: ("loop" | "picture-in-picture")[];
locale?: I18nLocale | I18nMessages;
}> & Readonly<{
onOnCommentLoad?: (() => any) | undefined;
}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;

export declare function DanPlayerResolver(option?: DanPlayerResolverOptions): ComponentResolver;

export declare interface DanPlayerResolverOptions {
    /**
     * The name of the component. It should always CapitalCase
     *
     * @default 'DanPlayer'
     */
    name?: string;
}

export { I18nLocale }

export { I18nMessages }

export declare interface ICommentCCL {
    text: string;
    stime: number;
    color: number;
    mode: number;
    size: number;
}

export declare interface Preference {
    commentShadow: 'border' | 'shadow' | 'none';
    commentWeight: 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
    commentHeight: 25 | 50 | 75 | 100;
    commentOpacity: number;
    commentSize: number;
    commentSpeed: number;
    commentOffset: number;
    commentLimit: number;
    showComment: boolean;
}

export { }
