import type { Nullable, NullOr } from "@joookiwi/type"; import type { EnumerableWithNullableGrandParent } from "./EnumerableWithNullableGrandParent"; import type { EnumerableWithNullableParent } from "./EnumerableWithNullableParent"; import type { Enumerable } from "./Enumerable"; import type { NameOf, PossibleNameOf } from "./type/nameOf"; import type { PossibleOrdinalOf } from "./type/ordinalOf"; import type { PossibleEnumerableValueOrNameByValueOrCallback } from "./type/possibleInstance"; import { EnumWithNullableParent } from "./EnumWithNullableParent"; /** * An {@link Enum} class in conjuncture with the {@link EnumerableWithNullableGrandParent}. * * Compared to its sibling {@link EnumWithGrandParent}, it can receive `null`. * * But it can still throw a {@link NullReferenceException} in different scenarios: * - An exception is thrown when attempting to retrieve its {@link CompanionEnumWithGrandParent} * - An exception is thrown when attempting to retrieve the value by {@link CompanionEnumWithGrandParentDeclaration.getValue getValue()} * * Also, it can throw a {@link ImpossibleIntegrityException} when receiving a `null` * on a value that was not expected to be null on the {@link EnumWithNullableGrandParent.parent parent} method. * * @see EnumWithGrandParent */ export declare class EnumWithNullableGrandParent, const GRAND_PARENT extends Enumerable, const ORDINAL extends PossibleOrdinalOf = PossibleOrdinalOf, const NAME extends PossibleNameOf = PossibleNameOf> extends EnumWithNullableParent implements EnumerableWithNullableGrandParent { #private; /** * Create the instance with both {@link EnumerableWithNullableGrandParent.parent parent} * & {@link EnumerableWithNullableGrandParent.grandParent grandparent} references * with the same {@link Enum.name name} as the current instance */ protected constructor(); protected constructor(parent: Nullable); protected constructor(parent: Nullable, grandParent: Nullable); protected constructor(parent: Nullable, grandParentName: Nullable>); protected constructor(parent: Nullable, lateGrandParent: Nullable<() => Nullable>); protected constructor(parent: Nullable, lateGrandParentName: Nullable<() => Nullable>>); protected constructor(parentName: Nullable>); protected constructor(parentName: Nullable>, grandParent: Nullable); protected constructor(parentName: Nullable>, grandParentName: Nullable>); protected constructor(parentName: Nullable>, lateGrandParent: Nullable<() => Nullable>); protected constructor(parentName: Nullable>, lateGrandParentName: Nullable<() => Nullable>>); protected constructor(lateParent: Nullable<() => Nullable>); protected constructor(lateParent: Nullable<() => Nullable>, grandParent: Nullable); protected constructor(lateParent: Nullable<() => Nullable>, grandParentName: Nullable>); protected constructor(lateParent: Nullable<() => Nullable>, lateGrandParent: Nullable<() => Nullable>); protected constructor(lateParent: Nullable<() => Nullable>, lateGrandParentName: Nullable<() => Nullable>>); protected constructor(lateParentName: Nullable<() => Nullable>>); protected constructor(lateParentName: Nullable<() => Nullable>>, grandParent: Nullable); protected constructor(lateParentName: Nullable<() => Nullable>>, grandParentName: Nullable>); protected constructor(lateParentName: Nullable<() => Nullable>>, lateGrandParent: Nullable<() => Nullable>); protected constructor(lateParentName: Nullable<() => Nullable>>, lateGrandParentName: Nullable<() => Nullable>>); /** * Create the instance with a parent & a grandparent from any possible values (in Javascript) * * @param parent The parent value (from any possibilities in Javascript) * @param grandParent The grandparent value (from any possibilities in Javascript) * * @typescriptDefinition */ protected constructor(parent?: PossibleEnumerableValueOrNameByValueOrCallback, grandParent?: PossibleEnumerableValueOrNameByValueOrCallback); /** * The {@link NullOr nullable} parent of the current instance * * @lazy * @throws ImpossibleIntegrityException The value was `null` when the {@link grandParent} was not `null` * @throws NullReferenceException An error happened while attempting to retrieve the parent value */ get parent(): NullOr; /** * The {@link NullOr nullable} grandparent of the current instance * * @lazy * @throws NullReferenceException An error happened while attempting to retrieve the grandparent value */ get grandParent(): NullOr; } //# sourceMappingURL=EnumWithNullableGrandParent.d.ts.map