import { TemplateRef, ViewContainerRef } from '@angular/core';
import * as i0 from "@angular/core";
export declare class EvoLetContext<T> {
    private readonly dir;
    constructor(dir: EvoLetDirective<T>);
    get evoLet(): T;
}
/**
 * Works like ngIf, but condition not affects on rendering.
 * Used for aliases.
 */
export declare class EvoLetDirective<T> {
    evoLet: T;
    constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef<EvoLetContext<T>>);
    /**
     * Assert the correct type of the expression bound to the `evoLet` input within the template.
     *
     * The presence of this static field is a signal to the Ivy template type check compiler that
     * when the `EvoLetDirective` structural directive renders its template, the type of the expression bound
     * to `evoLet` should be narrowed in some way. For `EvoLetDirective`, the binding expression itself is used to
     * narrow its type, which allows the strictNullChecks feature of TypeScript to work with `EvoLetDirective`.
     */
    static ngTemplateGuard_evoLet: 'binding';
    /**
     * Asserts the correct type of the context for the template that `EvoLetDirective` will render.
     *
     * The presence of this method is a signal to the Ivy template type-check compiler that the
     * `EvoLetDirective` structural directive renders its template with a specific context type.
     */
    static ngTemplateContextGuard<T>(dir: EvoLetDirective<T>, ctx: any): ctx is EvoLetContext<T>;
    static ɵfac: i0.ɵɵFactoryDeclaration<EvoLetDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<EvoLetDirective<any>, "[evoLet]", never, { "evoLet": "evoLet"; }, {}, never>;
}
