import { ApplicationRef, ComponentFactoryResolver, ComponentRef, EmbeddedViewRef, Injector, TemplateRef, Type, ViewRef } from '@angular/core';
import { EvoPortalOutlet } from './evo-portal-outlet.class';
import * as i0 from "@angular/core";
export declare type EvoPortalHostType = EvoPortalOutlet | HTMLElement | string;
export declare abstract class EvoAbstractPortal {
    abstract hasAttachedPortal(): boolean;
    abstract attach(host: EvoPortalHostType): void;
    abstract detach(): void;
}
export declare class EvoPortalService {
    protected appRef: ApplicationRef;
    protected injector: Injector;
    protected cfr: ComponentFactoryResolver;
    constructor(appRef: ApplicationRef, injector: Injector, cfr: ComponentFactoryResolver);
    attachComponent<T = any>(portal: Type<T>, host: EvoPortalHostType, injector?: Injector): ComponentRef<T>;
    attachToDomElement<T = any>(portal: Type<T>, elementOrSelector: HTMLElement | string, injector?: Injector): ComponentRef<T>;
    attachToHost<T = any>(portal: Type<T>, portalHost: EvoPortalOutlet, injector?: Injector): ComponentRef<T>;
    attachTemplate<T = any>(template: TemplateRef<T>, host: EvoPortalHostType, context?: T): EmbeddedViewRef<T>;
    detach<T = any>(portal: ComponentRef<T> | EmbeddedViewRef<T> | ViewRef): void;
    protected attachTemplateToElement<T>(template: TemplateRef<T>, element: HTMLElement, context?: T): EmbeddedViewRef<T>;
    protected getRootNode(ref: ComponentRef<any> | EmbeddedViewRef<any>): HTMLElement;
    protected isElementSelector(selector: any): boolean;
    protected isHTMLElement(element: any): boolean;
    protected errNotFoundBySelector(selector: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<EvoPortalService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<EvoPortalService>;
}
