import { OnDestroy, StructuralDirective } from '@ibyar/core';
import { TrackBy } from '@ibyar/platform';
export declare class ForContext<T> {
    $implicit: T;
    index: number;
    count: number;
    constructor($implicit: T, index: number, count: number);
    get first(): boolean;
    get last(): boolean;
    get even(): boolean;
    get odd(): boolean;
    update(forContext: ForContext<T>): void;
}
export declare class ForOfContext<T> extends ForContext<T> {
    ['of']: T[];
    constructor($implicit: T, forOf: T[], index: number, count: number);
}
export declare class ForInContext<T> extends ForContext<T> {
    ['in']: T[];
    constructor($implicit: T, forIn: T[], index: number, count: number);
}
export declare abstract class AbstractForDirective<T> extends StructuralDirective implements OnDestroy {
    protected _forOf: T[] | null | undefined;
    protected _forTrackBy: TrackBy<T, any>;
    private _$implicitTrackBy;
    protected _updateUI(): void;
    private _getView;
    onDestroy(): void;
}
export declare class ForDirective<T> extends AbstractForDirective<T> {
    of: import("@ibyar/core").InputWithTransform<T[] | null | undefined, T[] | null | undefined>;
    trackBy: import("@ibyar/core").InputWithTransform<TrackBy<T, any> | null | undefined, TrackBy<T, any>>;
}
export declare class ForOfDirective<T> extends AbstractForDirective<T> {
    of: import("@ibyar/core").InputWithTransform<T[] | null | undefined, T[] | null | undefined>;
    trackBy: import("@ibyar/core").InputWithTransform<TrackBy<T, any> | null | undefined, TrackBy<T, any>>;
}
export declare class ForAwaitDirective<T> extends StructuralDirective implements OnDestroy {
    private _forAwait;
    of: import("@ibyar/core").InputWithTransform<AsyncIterable<T> | null | undefined, AsyncIterable<T> | null | undefined>;
    private _updateUI;
    onDestroy(): void;
}
export declare class ForInDirective<T = {
    [key: PropertyKey]: any;
}> extends StructuralDirective implements OnDestroy {
    private _forIn;
    in: import("@ibyar/core").InputWithTransform<T | null | undefined, T | null | undefined>;
    private _updateUI;
    onDestroy(): void;
}
export type ɵɵ0ForDirective0ɵɵ = {
    selector: "*for";
    successors: [
        "*empty"
    ];
    inputs: [
        {
            name: "of";
            aliasName: "of";
        },
        {
            name: "trackBy";
            aliasName: "trackBy";
        }
    ];
};
export type ɵɵ0ForOfDirective0ɵɵ = {
    selector: "*forOf";
    successors: [
        "*empty"
    ];
    inputs: [
        {
            name: "of";
            aliasName: "of";
        },
        {
            name: "trackBy";
            aliasName: "trackBy";
        }
    ];
};
export type ɵɵ0ForAwaitDirective0ɵɵ = {
    selector: "*forAwait";
    successors: [
        "*empty"
    ];
    inputs: [
        {
            name: "of";
            aliasName: "of";
        }
    ];
};
export type ɵɵ0ForInDirective0ɵɵ = {
    selector: "*forIn";
    successors: [
        "*empty"
    ];
    inputs: [
        {
            name: "in";
            aliasName: "in";
        }
    ];
};
//# sourceMappingURL=for.d.ts.map