import { Collection, Vertex } from "../vertex.js"; import { AvailableLocation, Coalesced, EdgeBase, EdgeMultiplicity, EdgeWrapper, GroupWithExclude, Plain, ThreadMessage, Wrapped } from "../edges.js"; import { DeepPartial, MakeMixed } from "../util.js"; import { Decrement, EXPAND_KEY, InvalidEdgeMessage, MaxDepth, MinDepth, PickEdges, RemoveNeverValues, SELECT_KEY, SupportedDepths } from "../common.js"; import { AllKeysOf } from "../keys-of.js"; import { FLATTEN_KEY, _Flatten } from "./util.js"; //#region src/core/interfaces/vertices/util/vertex-query/index.d.ts declare namespace HandleEdge { type Plain, D extends SupportedDepths> = E extends Plain.Edge ? _VertexQuery : never; type Wrapped, D extends SupportedDepths> = E extends Wrapped.Edge, object> ? ({ [FLATTEN_KEY]: true; } & { [k in K]: V extends any ? _VertexQuery : never }) : never; type Coalesced, D extends SupportedDepths> = (E extends Coalesced.Edge ? V : null) extends (infer V extends Vertex) ? { [FLATTEN_KEY]: true; [Coalesced.Util.Keys.TO]: MakeMixed< // must mix here to support all different vertex types V extends any ? _VertexQuery : never>; } : never; type GroupWithExclude, D extends SupportedDepths> = E extends GroupWithExclude.Edge, infer P extends Vertex, object> ? { [FLATTEN_KEY]: true; [GroupWithExclude.Util.Keys.TO]: G extends any ? _VertexQuery : never; [GroupWithExclude.Util.Keys.EXCLUDE]: P extends any ? _VertexQuery : never; } : never; type AvailableLocation, D extends SupportedDepths> = E extends AvailableLocation.Edge, object> ? { [FLATTEN_KEY]: true; [AvailableLocation.Util.Keys.LOCATIONS]: L extends any ? _VertexQuery : never; } : never; type ThreadMessage, D extends SupportedDepths> = E extends ThreadMessage.Edge, infer T extends Vertex, object> ? { [FLATTEN_KEY]: true; [ThreadMessage.Util.Keys.USER]: U extends any ? _VertexQuery : never; [ThreadMessage.Util.Keys.TAGGED_PERSONS]: T extends any ? _VertexQuery : never; } : never; } /** * */ type _VertexQuery, D extends SupportedDepths> = D extends MinDepth ? { [SELECT_KEY]: Array>; } : { [EXPAND_KEY]: { [K in keyof PickEdges as V[K] extends never ? K : never]: InvalidEdgeMessage } & _Flatten as V[K] extends never ? never : K]-?: NonNullable extends EdgeWrapper | null | undefined> ? (HandleEdge.Plain, Decrement> | HandleEdge.Wrapped, Decrement> | HandleEdge.Coalesced, Decrement> | HandleEdge.GroupWithExclude, Decrement> | HandleEdge.AvailableLocation, Decrement> | HandleEdge.ThreadMessage, Decrement>) : never }>>; } & { [SELECT_KEY]: Array>; }; /** * */ type VertexQuery> = DeepPartial<_VertexQuery>; //#endregion export { VertexQuery }; //# sourceMappingURL=index.d.ts.map