import { BoundInjectionToken, ClassType, FactoryInjectionToken, InjectionToken } from "../token/injection-token.mjs"; //#region src/utils/types.d.mts type Join = TElements extends Readonly<[infer First, ...infer Rest]> ? Rest extends ReadonlyArray ? First extends string ? `${First}${Rest extends [] ? '' : TSeparator}${Join}` : never : never : ''; type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; type UnionToOvlds = UnionToIntersection void : never>; type PopUnion = UnionToOvlds extends ((a: infer A) => void) ? A : never; type IsUnion = [T] extends [UnionToIntersection] ? false : true; type UnionToArray = IsUnion extends true ? UnionToArray>, [PopUnion, ...A]> : [T, ...A]; type InjectRequest = { token: InjectionToken | BoundInjectionToken | FactoryInjectionToken | ClassType; promise: Promise; readonly result: any; readonly error: Error | null; }; interface InjectState { currentIndex: number; isFrozen: boolean; requests: InjectRequest[]; } //#endregion export { InjectRequest, InjectState, IsUnion, Join, PopUnion, UnionToArray, UnionToIntersection, UnionToOvlds }; //# sourceMappingURL=types.d.mts.map