import { Injector } from '@angular/core';
import { Observable, Subject } from 'rxjs';
import { ImportResolveFn } from './resolve';
import { ImportLifecycle, ImportObservableComponentIO, ImportsInterceptorHooks } from './interface';
import { ConsoleLike } from './features';
import * as i0 from "@angular/core";
export interface ImportServiceOptions {
    lifecycle?: Partial<ImportLifecycle>;
    io?: ImportObservableComponentIO;
    injector: Injector;
    timeout: number;
}
interface InterceptorHooksSubjects extends ImportsInterceptorHooks {
    queued: Subject<ImportsOrchestratorQueueItem>;
    finish: Subject<ImportsOrchestratorQueueItem>;
    start: Subject<ImportsOrchestratorQueueItem>;
    error: Subject<[ImportsOrchestratorQueueItem, unknown]>;
}
export interface ImportsOrchestratorQueueItem extends ImportServiceOptions {
    identifier: string;
    resolveFn: ImportResolveFn;
    priority: number;
    logger: ConsoleLike;
    destroy$: Observable<void>;
    hooks: InterceptorHooksSubjects;
    callback?: (result: unknown, err: unknown) => void;
    toString: () => string;
}
export declare class ImportService {
    private readonly queueProcessor;
    private readonly timeout;
    private readonly logger;
    private readonly queue;
    private readonly orchestration;
    private readonly interceptor;
    private readonly injector;
    createQueueItem(identifier: string, destroy$: Observable<void>, options?: Partial<ImportServiceOptions>): Readonly<ImportsOrchestratorQueueItem>;
    addItemToQueue(item: ImportsOrchestratorQueueItem): Promise<unknown>;
    bypassQueue(item: ImportsOrchestratorQueueItem): Promise<unknown>;
    removeItemFromQueue(item: Readonly<ImportsOrchestratorQueueItem>): boolean;
    private importsFromDI;
    private resolveFnFromImports;
    static ɵfac: i0.ɵɵFactoryDeclaration<ImportService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ImportService>;
}
export {};
