import * as i0 from '@angular/core';
import { OnInit, OnChanges, SimpleChanges, EventEmitter } from '@angular/core';
import { PlayerComponent, ScrubBarComponent } from '@ngx-telly/player';
import { TellyMediaService, TellyEventsService } from '@ngx-telly/player/services';
import * as rxjs from 'rxjs';
import { Observable } from 'rxjs';
import { TellyMedia } from '@ngx-telly/player/core';

declare class TellyTimecodeDirective implements OnInit, OnChanges {
    fps: number;
    player: PlayerComponent;
    mediaService: TellyMediaService;
    interval: number;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    step: (sec: number) => void;
    getTimeCode: () => string;
    private registerFactory;
    static ɵfac: i0.ɵɵFactoryDeclaration<TellyTimecodeDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TellyTimecodeDirective, "[tellyTimecode]", never, { "fps": { "alias": "tellyTimecode"; "required": false; }; }, {}, never, never, true, never>;
}

declare class TimecodeComponent implements OnInit {
    timeClicked: EventEmitter<string>;
    player: PlayerComponent;
    directive: TellyTimecodeDirective;
    events: TellyEventsService;
    time$: Observable<string>;
    ngOnInit(): void;
    onTimeClick(): void;
    round(sec: number): number;
    static ɵfac: i0.ɵɵFactoryDeclaration<TimecodeComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TimecodeComponent, "telly-timecode", never, {}, { "timeClicked": "timeClicked"; }, never, never, true, never>;
}

declare class StepBackComponent {
    icon: string;
    size: string;
    directive: TellyTimecodeDirective;
    title: string;
    onClick(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<StepBackComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StepBackComponent, "telly-step-back", never, { "icon": { "alias": "icon"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
}

declare class StepForwardComponent {
    icon: string;
    size: string;
    directive: TellyTimecodeDirective;
    title: string;
    onClick(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<StepForwardComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<StepForwardComponent, "telly-step-forward", never, { "icon": { "alias": "icon"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
}

declare class ScrubBarTimecodeComponent {
    scrubBar: ScrubBarComponent;
    directive: TellyTimecodeDirective;
    player: PlayerComponent;
    time$: rxjs.Observable<string>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ScrubBarTimecodeComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ScrubBarTimecodeComponent, "telly-scrub-bar-timecode", never, {}, {}, never, ["*"], true, never>;
}

declare const secondsToTimecode: (seconds: number, framerate: number) => string;

interface TellyMediaWithTimecode extends TellyMedia {
    timecode: () => string;
    step: (interval: number) => void;
    fps: number;
    stepInterval: number;
}

export { ScrubBarTimecodeComponent, StepBackComponent, StepForwardComponent, TellyTimecodeDirective, TimecodeComponent, secondsToTimecode };
export type { TellyMediaWithTimecode };
