//·························································· // Copyright (c) 2023-2026. Jonathan Bédard ~ JóôòKiwi // // This project is free to use. // All the right is reserved to the author of this project. // My projects: // - https://github.com/joooKiwi/type // - https://github.com/joooKiwi/lazy // - https://github.com/joooKiwi/collection // - https://github.com/joooKiwi/enumeration //·························································· import type {Enumerable} from "../Enumerable" import type {EnumerableWithNullableGrandParent} from "../EnumerableWithNullableGrandParent" import type {EnumerableWithNullableGreatGrandParent} from "../EnumerableWithNullableGreatGrandParent" import type {EnumerableWithNullableParent} from "../EnumerableWithNullableParent" import type {EnumerableConstructor} from "../EnumerableConstructor" import type {CompanionEnum} from "../companion/CompanionEnum" import type {CompanionEnumerable} from "../companion/CompanionEnumerable" import type {CompanionEnumerableWithGrandParent} from "../companion/CompanionEnumerableWithGrandParent" import type {CompanionEnumerableWithGreatGrandParent} from "../companion/CompanionEnumerableWithGreatGrandParent" import type {CompanionEnumerableWithParent} from "../companion/CompanionEnumerableWithParent" import type {CompanionEnumWithParent} from "../companion/CompanionEnumWithParent" import type {CompanionEnumWithGrandParent} from "../companion/CompanionEnumWithGrandParent" import type {CompanionEnumWithGreatGrandParent} from "../companion/CompanionEnumWithGreatGrandParent" /** * A type for the {@link CompanionEnum} with recursive types * * The type is equivalent to using * {@link CompanionEnum}<`ENUM`, * {@link EnumerableConstructor}<`ENUM`, * {@link CompanionEnum}<…>>> * * @see CompanionEnumerableType * @see CompanionEnumWithParentType * @see CompanionEnumWithGrandParentType * @see CompanionEnumWithGreatGrandParentType */ export type CompanionEnumType = CompanionEnum>> /** * A type for the {@link CompanionEnumerable} with recursive types * * The type is equivalent to using * {@link CompanionEnumerable}<`ENUM`, * {@link EnumerableConstructor}<`ENUM`, * {@link CompanionEnumerable}<…>>> * * @see CompanionEnumType * @see CompanionEnumerableWithParentType * @see CompanionEnumerableWithGrandParentType * @see CompanionEnumerableWithGreatGrandParentType */ export type CompanionEnumerableType = CompanionEnumerable>> /** * A type for the {@link CompanionEnumWithParent} with recursive types * * The type is equivalent to using * {@link CompanionEnumWithParent}<`ENUM`, * {@link EnumerableConstructor}<`ENUM`, {@link CompanionEnumWithParent}<…>>, * `PARENT_ENUM`, * {@link CompanionEnumerableType}<`PARENT_ENUM`>> * * @see CompanionEnumType * @see CompanionEnumerableWithParentType * @see CompanionEnumWithGrandParentType * @see CompanionEnumWithGreatGrandParentType */ export type CompanionEnumWithParentType, PARENT_ENUM extends Enumerable, > = CompanionEnumWithParent>, PARENT_ENUM, EnumerableConstructor>> /** * A type for the {@link CompanionEnumerableWithParent} with recursive types * * The type is equivalent to using * {@link CompanionEnumWithParent}<`ENUM`, * {@link EnumerableConstructor}<`ENUM`, {@link CompanionEnumWithParent}<…>>, * `PARENT_ENUM`, * {@link CompanionEnumType}<`PARENT_ENUM`>> * * @see CompanionEnumerableType * @see CompanionEnumWithParentType * @see CompanionEnumerableWithGrandParentType * @see CompanionEnumerableWithGreatGrandParentType */ export type CompanionEnumerableWithParentType, PARENT_ENUM extends Enumerable, > = CompanionEnumerableWithParent>, PARENT_ENUM, EnumerableConstructor>> /** * A type for the {@link CompanionEnumWithGrandParent} with recursive types * * The type is equivalent to using * {@link CompanionEnumWithGrandParent}<`ENUM`, * {@link EnumerableConstructor}<`ENUM`, {@link CompanionEnumWithGrandParent}<…>>, * `PARENT_ENUM`, * {@link CompanionEnumerableWithParentType}<`PARENT_ENUM`>, * `GRAND_PARENT_ENUM`, * {@link CompanionEnumerableType}<`GRAND_PARENT_ENUM`>> * * @see CompanionEnumType * @see CompanionEnumWithParentType * @see CompanionEnumerableWithGrandParentType * @see CompanionEnumWithGreatGrandParentType */ export type CompanionEnumWithGrandParentType, PARENT_ENUM extends EnumerableWithNullableParent, GRAND_PARENT_ENUM extends Enumerable, > = CompanionEnumWithGrandParent>, PARENT_ENUM, EnumerableConstructor>, GRAND_PARENT_ENUM, EnumerableConstructor>> /** * A type for the {@link CompanionEnumerableWithGrandParent} with recursive types * * The type is equivalent to using * {@link CompanionEnumerableWithGrandParent}<`ENUM`, * {@link EnumerableConstructor}<`ENUM`, {@link CompanionEnumerableWithGrandParent}<…>>, * `PARENT_ENUM`, * {@link CompanionEnumerableWithParentType}<`PARENT_ENUM`>, * `GRAND_PARENT_ENUM`, * {@link CompanionEnumerableType}<`GRAND_PARENT_ENUM`>> * * @see CompanionEnumerablType * @see CompanionEnumerablWithParentType * @see CompanionEnumWithGrandParentType * @see CompanionEnumerablWithGreatGrandParentType */ export type CompanionEnumerableWithGrandParentType, PARENT_ENUM extends EnumerableWithNullableParent, GRAND_PARENT_ENUM extends Enumerable, > = CompanionEnumerableWithGrandParent>, PARENT_ENUM, EnumerableConstructor>, GRAND_PARENT_ENUM, EnumerableConstructor>> /** * A type for the {@link CompanionEnumWithGreatGrandParent} with recursive types * * The type is equivalent to using * {@link CompanionEnumWithGreatGrandParent}<`ENUM`, * {@link EnumerableConstructor}<`ENUM`, {@link CompanionEnumWithGreatGrandParent}<…>>, * `PARENT_ENUM`, * {@link CompanionEnumerableWithGrandParentType}<`PARENT_ENUM`>, * `GRAND_PARENT_ENUM`, * {@link CompanionEnumerableWithParentType}<`GRAND_PARENT_ENUM`>, * `GREAT_GRAND_PARENT_ENUM`, * {@link CompanionEnumerableType}<`GREAT_GRAND_PARENT_ENUM`>> * * @see CompanionEnumType * @see CompanionEnumWithParentType * @see CompanionEnumWithGrandParentType * @see CompanionEnumerableWithGreatGrandParentType */ export type CompanionEnumWithGreatGrandParentType, PARENT_ENUM extends EnumerableWithNullableGrandParent, GRAND_PARENT_ENUM extends EnumerableWithNullableParent, GREAT_GRAND_PARENT_ENUM extends Enumerable, > = CompanionEnumWithGreatGrandParent>, PARENT_ENUM, EnumerableConstructor>, GRAND_PARENT_ENUM, EnumerableConstructor>, GREAT_GRAND_PARENT_ENUM, EnumerableConstructor>> /** * A type for the {@link CompanionEnumerableWithGreatGrandParent} with recursive types * * The type is equivalent to using * {@link CompanionEnumerableWithGreatGrandParent}<`ENUM`, * {@link EnumerableConstructor}<`ENUM`, {@link CompanionEnumerableWithGreatGrandParent}<…>>, * `PARENT_ENUM`, * {@link CompanionEnumerableWithGrandParentType}<`PARENT_ENUM`>, * `GRAND_PARENT_ENUM`, * {@link CompanionEnumerableWithParentType}<`GRAND_PARENT_ENUM`>, * `GREAT_GRAND_PARENT_ENUM`, * {@link CompanionEnumerableType}<`GREAT_GRAND_PARENT_ENUM`>> * * @see CompanionEnumerableType * @see CompanionEnumerableWithParentType * @see CompanionEnumerableWithGrandParentType * @see CompanionEnumWithGreatGrandParentType */ export type CompanionEnumerableWithGreatGrandParentType, PARENT_ENUM extends EnumerableWithNullableGrandParent, GRAND_PARENT_ENUM extends EnumerableWithNullableParent, GREAT_GRAND_PARENT_ENUM extends Enumerable, > = CompanionEnumerableWithGreatGrandParent>, PARENT_ENUM, EnumerableConstructor>, GRAND_PARENT_ENUM, EnumerableConstructor>, GREAT_GRAND_PARENT_ENUM, EnumerableConstructor>>