import * as i0 from '@angular/core';
import { InjectionToken, NgZone } from '@angular/core';
import * as rxjs from 'rxjs';
import { Observable, OperatorFunction } from 'rxjs';
import * as _angular_common_http from '@angular/common/http';
import { HttpContextToken, HttpRequest, HttpHandlerFn } from '@angular/common/http';

interface LoadingBarConfig {
    latencyThreshold?: number;
}
declare const LOADING_BAR_CONFIG: InjectionToken<LoadingBarConfig>;

interface LoadingBarStateInterface {
    action?: 'start' | 'complete' | 'set' | 'stop' | 'increment';
    value: number;
    initialValue: number;
}
declare class LoadingBarState {
    #private;
    private config;
    private state;
    private _value$;
    constructor(config?: LoadingBarConfig);
    get value$(): Observable<number>;
    start(initialValue?: number): void;
    stop(): void;
    complete(): void;
    disable(): void;
    set(value: number): void;
    increment(value?: number): void;
    private next;
    private timer$;
    private _increment;
}

declare class LoadingBarService {
    private platformId;
    private config;
    private zone?;
    private readonly refs;
    private readonly streams$;
    readonly value$: Observable<number>;
    constructor(platformId: Object, config?: LoadingBarConfig, zone?: NgZone | undefined);
    /** @deprecated use `useRef` instead. */
    start(initialValue?: number): void;
    /** @deprecated use `useRef` instead. */
    set(value: number): void;
    /** @deprecated use `useRef` instead. */
    increment(value?: number): void;
    /** @deprecated use `useRef` instead. */
    complete(): void;
    /** @deprecated use `useRef` instead. */
    stop(): void;
    useRef(id?: string): LoadingBarState;
    static ɵfac: i0.ɵɵFactoryDeclaration<LoadingBarService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<LoadingBarService>;
}
declare function runInZone<T>(zone?: NgZone): OperatorFunction<T, T>;

declare const NGX_LOADING_BAR_IGNORED: HttpContextToken<boolean>;
declare const loadingBarInterceptor: (req: HttpRequest<unknown>, next: HttpHandlerFn) => rxjs.Observable<_angular_common_http.HttpEvent<unknown>>;

export { LOADING_BAR_CONFIG, LoadingBarService, LoadingBarState, NGX_LOADING_BAR_IGNORED, loadingBarInterceptor, runInZone };
export type { LoadingBarConfig, LoadingBarStateInterface };
