import { TemplateRef, ViewContainerRef } from '@angular/core';
import { BsLetContext } from '../interfaces/let-context';
import * as i0 from "@angular/core";
export declare class BsLetDirective<T> {
    private viewContainer;
    private templateRef;
    private context;
    private hasView;
    constructor(viewContainer: ViewContainerRef, templateRef: TemplateRef<BsLetContext<T>>);
    set bsLet(value: T);
    /** @internal */
    static bsLetUseIfTypeGuard: void;
    /**
     * Assert the correct type of the expression bound to the `NgLet` input within the template.
     *
     * The presence of this static field is a signal to the Ivy template type check compiler that
     * when the `NgLet` structural directive renders its template, the type of the expression bound
     * to `NgLet` should be narrowed in some way. For `NgLet`, the binding expression itself is used to
     * narrow its type, which allows the strictNullChecks feature of TypeScript to work with `NgLet`.
     */
    static ngTemplateGuard_bsLet: 'binding';
    /**
     * Asserts the correct type of the context for the template that `NgLet` will render.
     *
     * The presence of this method is a signal to the Ivy template type-check compiler that the
     * `NgLet` structural directive renders its template with a specific context type.
     */
    static ngTemplateContextGuard<T>(dir: BsLetDirective<T>, ctx: any): ctx is BsLetContext<T>;
    static ɵfac: i0.ɵɵFactoryDeclaration<BsLetDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BsLetDirective<any>, "[bsLet]", never, { "bsLet": "bsLet"; }, {}, never, never, false, never>;
}
