import * as i0 from '@angular/core';
import { ElementRef, InjectionToken, Type } from '@angular/core';

declare class DialogContent {
    dialogElement: i0.Signal<ElementRef<HTMLDialogElement> | undefined>;
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<DialogContent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DialogContent, "kl-dialog-content", never, {}, {}, never, ["[header]", "[content]", "[actions]"], true, never>;
}

type DialogAfterCloseTrigger = string | Record<string, any>;
type DialogAfterCloseTriggerFn = (trigger: DialogAfterCloseTrigger) => void;
declare const DIALOG_CONFIG: InjectionToken<unknown>;
declare const DIALOG_DATA: InjectionToken<unknown>;
declare const DIALOG_APP_REF: InjectionToken<unknown>;
declare const DIALOG_AFTER_CLOSE_TRIGGER: InjectionToken<DialogAfterCloseTriggerFn>;
interface DialogConfig {
    data?: any;
    afterClosed?: {
        trigger: DialogAfterCloseTrigger;
        callback: (trigger: any) => void;
    };
}
declare class Dialog {
    private readonly appRef;
    private readonly injector;
    private generateElementId;
    open(component: Type<any>, config?: DialogConfig): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<Dialog, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<Dialog>;
}

declare const DIALOG_REF_TOKEN: InjectionToken<unknown>;
declare class DialogRef {
    private readonly appRef;
    private readonly componentRef;
    private readonly afterCloseTrigger;
    dismiss(afterCloseTrigger?: DialogAfterCloseTrigger): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DialogRef, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DialogRef>;
}

export { DIALOG_AFTER_CLOSE_TRIGGER, DIALOG_APP_REF, DIALOG_CONFIG, DIALOG_DATA, DIALOG_REF_TOKEN, Dialog, DialogContent, DialogRef };
export type { DialogAfterCloseTrigger, DialogAfterCloseTriggerFn, DialogConfig };
