import type { Connection, ConnectionId, ConnectionKindType } from "../../Blueprint/Connection";
import type { Maybe } from "../../Common";
import type { BlueprintHelper } from "../BlueprintHelper";
import { Collection } from "../Collection";
import type { ConnectionHelperByType } from "../ConnectionHelper";
import { ConnectionHelper } from "../ConnectionHelper";
import type { It } from "../Iterable";
export declare abstract class ConnectionCollectionBase extends Collection<Connection, ConnectionHelper, ConnectionId> {
    protected readonly _blueprint: BlueprintHelper;
    private readonly _connections;
    constructor(cache: WeakMap<Connection, ConnectionHelper>, _blueprint: BlueprintHelper, _connections: () => Iterable<Connection>);
    [Symbol.iterator](): Generator<ConnectionHelper, void, unknown>;
    get({ from, to }: ConnectionId): Maybe<ConnectionHelper>;
    ofType<TType extends ConnectionKindType>(...type: [TType, ...TType[]]): It<ConnectionHelperByType<TType>>;
    assertType<TType extends ConnectionKindType>(...validTypes: [TType, ...TType[]]): It<ConnectionHelperByType<TType>>;
}
export declare function ofConnectionType<TType extends ConnectionKindType>(...type: [TType, ...TType[]]): (src: Iterable<ConnectionHelper>) => It<ConnectionHelperByType<TType>>;
export declare function assertConnectionType<TType extends ConnectionKindType>(...validTypes: TType[]): (src: Iterable<ConnectionHelper>) => It<ConnectionHelperByType<TType>>;
