import type { FieldNode, GraphQLFieldMap, GraphQLInterfaceType, GraphQLList, GraphQLObjectType, GraphQLOutputType, GraphQLUnionType, SelectionNode } from "graphql"; import type { SelectionSetDigest } from "../graphqlCollectFields.ts"; import type { LocationDetails, Maybe } from "../interfaces.ts"; import type { Step } from "../step.ts"; import type { LayerPlan, LayerPlanReasonListItemStream } from "./LayerPlan.ts"; import type { OutputPlan } from "./OutputPlan.ts"; export type StreamDetails = { if: Step; initialCount: Step; label: Step>; }; export interface CommonPlanningDetails { /** The output plan that this selection set is being added to */ outputPlan: OutputPlan; /** The path within the outputPlan that we're adding stuff (only for root/object OutputPlans) */ path: readonly string[]; planningPath: string; polymorphicPaths: ReadonlySet | null; /** The step that represents the selection set root */ parentStep: Step; positionType: TType; layerPlan: LayerPlan; } export interface PlanIntoOutputPlanDetails extends CommonPlanningDetails { resolverEmulation: boolean; selections: readonly SelectionNode[] | undefined; parentObjectType: GraphQLObjectType | null; responseKey: string | null; locationDetails: LocationDetails; listDepth: number; streamDetails: StreamDetails | null; } export interface PlanFieldReturnTypeDetails extends Omit { parentObjectType: GraphQLObjectType; } export interface ProcessGroupedFieldSetDetails extends CommonPlanningDetails { objectTypeFields: GraphQLFieldMap; isMutation: boolean; groupedFieldSet: SelectionSetDigest; } export interface PlanSelectionSetDetails extends CommonPlanningDetails { resolverEmulation: boolean; /** The GraphQL selections (fields, fragment spreads, inline fragments) to evaluate */ selections: readonly SelectionNode[]; /** If true this selection set should be executed serially rather than in parallel (each field gets its own LayerPlan) */ isMutation?: boolean; } export interface PlanListItemDetails extends CommonPlanningDetails> { resolverEmulation: boolean; selections: readonly SelectionNode[] | undefined; listDepth: number; stream: LayerPlanReasonListItemStream | undefined; locationDetails: LocationDetails; } export interface PolymorphicResolveTypeDetails extends CommonPlanningDetails { resolverEmulation: boolean; selections: readonly SelectionNode[]; allPossibleObjectTypes: readonly GraphQLObjectType[]; locationDetails: LocationDetails; parentObjectType: GraphQLObjectType | null; responseKey: string | null; isNonNull: boolean; stepForType?: ReadonlyMap; } export interface PolymorphicPlanObjectTypeDetails extends CommonPlanningDetails { resolverEmulation: boolean; fieldNodes: readonly FieldNode[]; locationDetails: LocationDetails; isNonNull: boolean; } //# sourceMappingURL=OperationPlanTypes.d.ts.map