import { type Signal } from '@angular/core';
import { FormGroup } from '@angular/forms';
import type { AnyArray, AnyObject } from '@ngify/core';
import type { AbstractControlContainerSchema } from '../../../schemas';
import { SchemaUtil } from '../../../utils';
import type { FluentOutletDirective } from '../outlet.directive';
import * as i0 from "@angular/core";
export declare abstract class FluentControlContainer<T extends AnyObject | AnyArray> {
    abstract readonly schema: Signal<AbstractControlContainerSchema>;
    abstract readonly patchedSchema: Signal<AbstractControlContainerSchema>;
    abstract readonly form: Signal<FormGroup>;
    abstract readonly model: Signal<T>;
    /** The directive of the current container. */
    abstract get directive(): FluentControlContainerDirective<T>;
}
export declare abstract class FluentControlContainerDirective<T extends AnyObject | AnyArray> extends FluentControlContainer<T> {
    protected readonly schemaUtil: SchemaUtil;
    protected readonly outlets: FluentOutletDirective<T>[];
    /** @internal */
    get directive(): FluentControlContainerDirective<T>;
    addOutlet(outlet: FluentOutletDirective<T>): void;
    updateOutlet(outlet: FluentOutletDirective<T>): void;
    removeOutlet(outlet: FluentOutletDirective<T>): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FluentControlContainerDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<FluentControlContainerDirective<any>, never, never, {}, {}, never, never, true, never>;
}
