import { type Injector } from '@angular/core'; import { type Observable } from 'rxjs'; import { type TuiDialogContext, type TuiDialogOptions } from './dialog.interfaces'; type SingleUnionOrNever = [T] extends [never] ? never : T extends U ? [U] extends [T] ? T : never : never; type ReplaceAny = 0 extends T & 1 ? void : T; type ContextKeys = { [K in keyof T]: ReplaceAny extends TuiDialogContext | null ? K : never; }[keyof T]; type AssertNotMultipleContexts = [K] extends [never] ? new (...args: any[]) => T : [SingleUnionOrNever] extends [never] ? 'Component has multiple context. Cannot determine the type...' : new (...args: any[]) => T; type ExtractDialogData> = [K] extends [never] ? void : [SingleUnionOrNever] extends [never] ? never : T[K] extends TuiDialogContext | null ? D : void; type ExtractDialogResult> = [K] extends [never] ? void : [SingleUnionOrNever] extends [never] ? never : T[K] extends TuiDialogContext | null ? R : void; type Options = Omit, 'data'> & { injector: Injector; }; export declare function tuiDialog, D extends ExtractDialogData, R extends ExtractDialogResult>(component: AssertNotMultipleContexts, { injector, ...options }?: Partial>): (data: D) => Observable; export {};