import * as i0 from '@angular/core';
import { ElementRef, NgZone, Renderer2, OnInit, ViewContainerRef, Type } from '@angular/core';
import { AppEmbeddingExtensions } from '@esfaenza/extensions';
import { LocationStrategy } from '@angular/common';
import { RouterLinkWithHref, Router, ActivatedRoute, UrlTree } from '@angular/router';
import { ModalDirective } from 'ngx-bootstrap/modal';
import { Subscription } from 'rxjs';

declare class Draggable {
    private _elementRef;
    private zone;
    private emb;
    handlerSelector: string;
    constructor(_elementRef: ElementRef, zone: NgZone, emb: AppEmbeddingExtensions);
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<Draggable, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<Draggable, "[emaDraggable]", never, { "handlerSelector": { "alias": "emaDraggable"; "required": false; }; }, {}, never, never, true, never>;
}

declare class SlimScroll {
    private _elementRef;
    private zone;
    slimScrollOptions: Object;
    constructor(_elementRef: ElementRef, zone: NgZone);
    ngOnChanges(changes: any): void;
    private _scroll;
    private _init;
    private _destroy;
    static ɵfac: i0.ɵɵFactoryDeclaration<SlimScroll, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SlimScroll, "[slim-scroll]", never, { "slimScrollOptions": { "alias": "slimScrollOptions"; "required": false; }; }, {}, never, never, true, never>;
}

declare class esRouterLinkWithHref extends RouterLinkWithHref {
    private emb;
    private EmbeddingSource;
    constructor(emb: AppEmbeddingExtensions, router: Router, route: ActivatedRoute, tabIndexAttribute: string | null | undefined, renderer: Renderer2, el: ElementRef, locationStrategy?: LocationStrategy);
    set esRouterLink(commandsOrUrlTree: readonly any[] | string | UrlTree | null | undefined);
    onClick(button: number, ctrlKey: boolean, shiftKey: boolean, altKey: boolean, metaKey: boolean): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<esRouterLinkWithHref, [null, null, null, { attribute: "tabindex"; }, null, null, null]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<esRouterLinkWithHref, "a[esRouterLink],area[esRouterLink]", never, { "esRouterLink": { "alias": "esRouterLink"; "required": false; }; }, {}, never, never, true, never>;
}

declare class Widget implements OnInit {
    $el: any;
    constructor(el: ElementRef);
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<Widget, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<Widget, "[widget]", never, {}, {}, never, never, true, never>;
}

declare class ComponentHostDirective {
    viewContainerRef: ViewContainerRef;
    componentHost: Type<any>;
    Inputs: Record<string, any>;
    CreatedComponent: any;
    constructor(viewContainerRef: ViewContainerRef);
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ComponentHostDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ComponentHostDirective, "[componentHost]", never, { "componentHost": { "alias": "componentHost"; "required": false; }; "Inputs": { "alias": "Inputs"; "required": false; }; }, {}, never, never, true, never>;
}

declare class EsModalDirective extends ModalDirective {
    elementRef: ElementRef;
    rendererRef: Renderer2;
    HideSubscription: Subscription;
    private emb;
    ngOnInit(): void;
    show(): void;
    hide(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<EsModalDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<EsModalDirective, "[esModal]", ["es-modal"], {}, {}, never, never, true, never>;
}

declare class DirectivesModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DirectivesModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DirectivesModule, never, [typeof Draggable, typeof SlimScroll, typeof Widget, typeof esRouterLinkWithHref, typeof ComponentHostDirective, typeof EsModalDirective], [typeof Draggable, typeof SlimScroll, typeof Widget, typeof esRouterLinkWithHref, typeof ComponentHostDirective, typeof EsModalDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DirectivesModule>;
}

export { ComponentHostDirective, DirectivesModule, Draggable, EsModalDirective, SlimScroll, Widget, esRouterLinkWithHref };
