import { AnyRouter, Constrain, OptionalStructuralSharing, ValidateJSON } from '@tanstack/router-core'; export type DefaultStructuralSharingEnabled = boolean extends TRouter['options']['defaultStructuralSharing'] ? false : NonNullable; export interface RequiredStructuralSharing { readonly structuralSharing: Constrain; } export type StructuralSharingOption = unknown extends TSelected ? OptionalStructuralSharing : unknown extends TRouter['routeTree'] ? OptionalStructuralSharing : TSelected extends ValidateJSON ? OptionalStructuralSharing : DefaultStructuralSharingEnabled extends true ? RequiredStructuralSharing : OptionalStructuralSharing; export type StructuralSharingEnabled = boolean extends TStructuralSharing ? DefaultStructuralSharingEnabled : TStructuralSharing; export type ValidateSelected = StructuralSharingEnabled extends true ? ValidateJSON : TSelected;