import { z } from 'zod';
export declare const FlattenNodePathSegmentSchema: z.ZodUnion<readonly [z.ZodObject<{
    Field: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    TypeCondition: z.ZodArray<z.ZodString>;
}, z.core.$strip>, z.ZodLiteral<"@">]>;
export type FlattenNodePathSegment = z.infer<typeof FlattenNodePathSegmentSchema>;
export declare const FlattenNodePathSchema: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
    Field: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    TypeCondition: z.ZodArray<z.ZodString>;
}, z.core.$strip>, z.ZodLiteral<"@">]>>;
export type FlattenNodePath = z.infer<typeof FlattenNodePathSchema>;
export declare const FlattenNodePathsSchema: z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
    Field: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    TypeCondition: z.ZodArray<z.ZodString>;
}, z.core.$strip>, z.ZodLiteral<"@">]>>>;
export type FlattenNodePaths = z.infer<typeof FlattenNodePathsSchema>;
export declare const FetchNodePathSegmentSchema: z.ZodUnion<readonly [z.ZodObject<{
    Key: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    TypenameEquals: z.ZodArray<z.ZodString>;
}, z.core.$strip>]>;
export type FetchNodePathSegment = z.infer<typeof FetchNodePathSegmentSchema>;
export declare const ValueSetterSchema: z.ZodObject<{
    path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        Key: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        TypenameEquals: z.ZodArray<z.ZodString>;
    }, z.core.$strip>]>>;
    setValueTo: z.ZodString;
}, z.core.$strip>;
export declare const KeyRenamerSchema: z.ZodObject<{
    path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        Key: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        TypenameEquals: z.ZodArray<z.ZodString>;
    }, z.core.$strip>]>>;
    renameKeyTo: z.ZodString;
}, z.core.$strip>;
export declare const FetchRewriteSchema: z.ZodUnion<readonly [z.ZodObject<{
    path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        Key: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        TypenameEquals: z.ZodArray<z.ZodString>;
    }, z.core.$strip>]>>;
    setValueTo: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        Key: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        TypenameEquals: z.ZodArray<z.ZodString>;
    }, z.core.$strip>]>>;
    renameKeyTo: z.ZodString;
}, z.core.$strip>]>;
export type FetchRewrite = z.infer<typeof FetchRewriteSchema>;
export declare const SelectionFieldSchema: z.ZodObject<{
    kind: z.ZodLiteral<"Field">;
    name: z.ZodString;
}, z.core.$strip>;
export declare const SelectionInlineFragmentSchema: z.ZodObject<{
    kind: z.ZodLiteral<"InlineFragment">;
    typeCondition: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    selections: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
        kind: z.ZodLiteral<"Field">;
        name: z.ZodString;
    }, z.core.$strip>>>>;
}, z.core.$strip>;
export type SelectionInlineFragment = z.infer<typeof SelectionInlineFragmentSchema>;
export declare const SelectionFragmentSpreadSchema: z.ZodObject<{
    kind: z.ZodLiteral<"FragmentSpread">;
    name: z.ZodString;
}, z.core.$strip>;
export declare const SelectionItemSchema: z.ZodUnion<readonly [z.ZodObject<{
    kind: z.ZodLiteral<"InlineFragment">;
    typeCondition: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    selections: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
        kind: z.ZodLiteral<"Field">;
        name: z.ZodString;
    }, z.core.$strip>>>>;
}, z.core.$strip>, z.ZodObject<{
    kind: z.ZodLiteral<"FragmentSpread">;
    name: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    kind: z.ZodLiteral<"Field">;
    name: z.ZodString;
}, z.core.$strip>]>;
export type SelectionItem = z.infer<typeof SelectionItemSchema>;
export declare const SelectionSetSchema: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
    kind: z.ZodLiteral<"InlineFragment">;
    typeCondition: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    selections: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
        kind: z.ZodLiteral<"Field">;
        name: z.ZodString;
    }, z.core.$strip>>>>;
}, z.core.$strip>, z.ZodObject<{
    kind: z.ZodLiteral<"FragmentSpread">;
    name: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    kind: z.ZodLiteral<"Field">;
    name: z.ZodString;
}, z.core.$strip>]>>;
export type SelectionSet = z.infer<typeof SelectionSetSchema>;
export interface SequenceNodePlan {
    kind: 'Sequence';
    nodes: PlanNode[];
}
export interface ParallelNodePlan {
    kind: 'Parallel';
    nodes: PlanNode[];
}
export interface FlattenNodePlan {
    kind: 'Flatten';
    path: FlattenNodePath;
    node: PlanNode;
}
export interface ConditionNodePlan {
    kind: 'Condition';
    condition: string;
    ifClause?: PlanNode | null;
    elseClause?: PlanNode | null;
}
export interface SubscriptionNodePlan {
    kind: 'Subscription';
    primary: PlanNode;
}
export interface DeferNodePlan {
    kind: 'Defer';
    primary: DeferPrimary;
    deferred: DeferredNode[];
}
export interface DeferPrimary {
    subselection?: string | null;
    node?: PlanNode | null;
}
export interface DeferredNode {
    depends: DeferDependency[];
    label?: string | null;
    queryPath: string[];
    subselection?: string | null;
    node?: PlanNode | null;
}
export type FetchNodePlan = z.infer<typeof FetchNodePlanSchema>;
export type BatchFetchNodePlan = z.infer<typeof BatchFetchNodePlanSchema>;
export type PlanNode = FetchNodePlan | BatchFetchNodePlan | SequenceNodePlan | ParallelNodePlan | FlattenNodePlan | ConditionNodePlan | SubscriptionNodePlan | DeferNodePlan;
export declare const PlanNodeSchema: z.ZodType<PlanNode>;
export declare const FetchNodePlanSchema: z.ZodObject<{
    kind: z.ZodLiteral<"Fetch">;
    serviceName: z.ZodString;
    operationKind: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    operationName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    operation: z.ZodString;
    variableUsages: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
    requires: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        kind: z.ZodLiteral<"InlineFragment">;
        typeCondition: z.ZodOptional<z.ZodNullable<z.ZodString>>;
        selections: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
            kind: z.ZodLiteral<"Field">;
            name: z.ZodString;
        }, z.core.$strip>>>>;
    }, z.core.$strip>, z.ZodObject<{
        kind: z.ZodLiteral<"FragmentSpread">;
        name: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        kind: z.ZodLiteral<"Field">;
        name: z.ZodString;
    }, z.core.$strip>]>>>>;
    inputRewrites: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            Key: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            TypenameEquals: z.ZodArray<z.ZodString>;
        }, z.core.$strip>]>>;
        setValueTo: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            Key: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            TypenameEquals: z.ZodArray<z.ZodString>;
        }, z.core.$strip>]>>;
        renameKeyTo: z.ZodString;
    }, z.core.$strip>]>>>>;
    outputRewrites: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            Key: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            TypenameEquals: z.ZodArray<z.ZodString>;
        }, z.core.$strip>]>>;
        setValueTo: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            Key: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            TypenameEquals: z.ZodArray<z.ZodString>;
        }, z.core.$strip>]>>;
        renameKeyTo: z.ZodString;
    }, z.core.$strip>]>>>>;
}, z.core.$strip>;
export declare const EntityBatchAliasSchema: z.ZodObject<{
    alias: z.ZodString;
    representationsVariableName: z.ZodString;
    paths: z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        Field: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        TypeCondition: z.ZodArray<z.ZodString>;
    }, z.core.$strip>, z.ZodLiteral<"@">]>>>;
    requires: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        kind: z.ZodLiteral<"InlineFragment">;
        typeCondition: z.ZodOptional<z.ZodNullable<z.ZodString>>;
        selections: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
            kind: z.ZodLiteral<"Field">;
            name: z.ZodString;
        }, z.core.$strip>>>>;
    }, z.core.$strip>, z.ZodObject<{
        kind: z.ZodLiteral<"FragmentSpread">;
        name: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        kind: z.ZodLiteral<"Field">;
        name: z.ZodString;
    }, z.core.$strip>]>>;
    inputRewrites: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            Key: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            TypenameEquals: z.ZodArray<z.ZodString>;
        }, z.core.$strip>]>>;
        setValueTo: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            Key: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            TypenameEquals: z.ZodArray<z.ZodString>;
        }, z.core.$strip>]>>;
        renameKeyTo: z.ZodString;
    }, z.core.$strip>]>>>>;
    outputRewrites: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            Key: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            TypenameEquals: z.ZodArray<z.ZodString>;
        }, z.core.$strip>]>>;
        setValueTo: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            Key: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            TypenameEquals: z.ZodArray<z.ZodString>;
        }, z.core.$strip>]>>;
        renameKeyTo: z.ZodString;
    }, z.core.$strip>]>>>>;
}, z.core.$strip>;
export type EntityBatchAlias = z.infer<typeof EntityBatchAliasSchema>;
export declare const EntityBatchSchema: z.ZodObject<{
    aliases: z.ZodArray<z.ZodObject<{
        alias: z.ZodString;
        representationsVariableName: z.ZodString;
        paths: z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            Field: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            TypeCondition: z.ZodArray<z.ZodString>;
        }, z.core.$strip>, z.ZodLiteral<"@">]>>>;
        requires: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            kind: z.ZodLiteral<"InlineFragment">;
            typeCondition: z.ZodOptional<z.ZodNullable<z.ZodString>>;
            selections: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
                kind: z.ZodLiteral<"Field">;
                name: z.ZodString;
            }, z.core.$strip>>>>;
        }, z.core.$strip>, z.ZodObject<{
            kind: z.ZodLiteral<"FragmentSpread">;
            name: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            kind: z.ZodLiteral<"Field">;
            name: z.ZodString;
        }, z.core.$strip>]>>;
        inputRewrites: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                Key: z.ZodString;
            }, z.core.$strip>, z.ZodObject<{
                TypenameEquals: z.ZodArray<z.ZodString>;
            }, z.core.$strip>]>>;
            setValueTo: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                Key: z.ZodString;
            }, z.core.$strip>, z.ZodObject<{
                TypenameEquals: z.ZodArray<z.ZodString>;
            }, z.core.$strip>]>>;
            renameKeyTo: z.ZodString;
        }, z.core.$strip>]>>>>;
        outputRewrites: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                Key: z.ZodString;
            }, z.core.$strip>, z.ZodObject<{
                TypenameEquals: z.ZodArray<z.ZodString>;
            }, z.core.$strip>]>>;
            setValueTo: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                Key: z.ZodString;
            }, z.core.$strip>, z.ZodObject<{
                TypenameEquals: z.ZodArray<z.ZodString>;
            }, z.core.$strip>]>>;
            renameKeyTo: z.ZodString;
        }, z.core.$strip>]>>>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type EntityBatch = z.infer<typeof EntityBatchSchema>;
export declare const BatchFetchNodePlanSchema: z.ZodObject<{
    kind: z.ZodLiteral<"BatchFetch">;
    serviceName: z.ZodString;
    operationKind: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    operationName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    operation: z.ZodString;
    variableUsages: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
    entityBatch: z.ZodObject<{
        aliases: z.ZodArray<z.ZodObject<{
            alias: z.ZodString;
            representationsVariableName: z.ZodString;
            paths: z.ZodArray<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                Field: z.ZodString;
            }, z.core.$strip>, z.ZodObject<{
                TypeCondition: z.ZodArray<z.ZodString>;
            }, z.core.$strip>, z.ZodLiteral<"@">]>>>;
            requires: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                kind: z.ZodLiteral<"InlineFragment">;
                typeCondition: z.ZodOptional<z.ZodNullable<z.ZodString>>;
                selections: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
                    kind: z.ZodLiteral<"Field">;
                    name: z.ZodString;
                }, z.core.$strip>>>>;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"FragmentSpread">;
                name: z.ZodString;
            }, z.core.$strip>, z.ZodObject<{
                kind: z.ZodLiteral<"Field">;
                name: z.ZodString;
            }, z.core.$strip>]>>;
            inputRewrites: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                    Key: z.ZodString;
                }, z.core.$strip>, z.ZodObject<{
                    TypenameEquals: z.ZodArray<z.ZodString>;
                }, z.core.$strip>]>>;
                setValueTo: z.ZodString;
            }, z.core.$strip>, z.ZodObject<{
                path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                    Key: z.ZodString;
                }, z.core.$strip>, z.ZodObject<{
                    TypenameEquals: z.ZodArray<z.ZodString>;
                }, z.core.$strip>]>>;
                renameKeyTo: z.ZodString;
            }, z.core.$strip>]>>>>;
            outputRewrites: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                    Key: z.ZodString;
                }, z.core.$strip>, z.ZodObject<{
                    TypenameEquals: z.ZodArray<z.ZodString>;
                }, z.core.$strip>]>>;
                setValueTo: z.ZodString;
            }, z.core.$strip>, z.ZodObject<{
                path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                    Key: z.ZodString;
                }, z.core.$strip>, z.ZodObject<{
                    TypenameEquals: z.ZodArray<z.ZodString>;
                }, z.core.$strip>]>>;
                renameKeyTo: z.ZodString;
            }, z.core.$strip>]>>>>;
        }, z.core.$strip>>;
    }, z.core.$strip>;
}, z.core.$strip>;
export declare const SequenceNodePlanSchema: z.ZodObject<{
    kind: z.ZodLiteral<"Sequence">;
    nodes: z.ZodArray<z.ZodType<PlanNode, unknown, z.core.$ZodTypeInternals<PlanNode, unknown>>>;
}, z.core.$strip>;
export declare const ParallelNodePlanSchema: z.ZodObject<{
    kind: z.ZodLiteral<"Parallel">;
    nodes: z.ZodArray<z.ZodType<PlanNode, unknown, z.core.$ZodTypeInternals<PlanNode, unknown>>>;
}, z.core.$strip>;
export declare const FlattenNodePlanSchema: z.ZodObject<{
    kind: z.ZodLiteral<"Flatten">;
    path: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        Field: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        TypeCondition: z.ZodArray<z.ZodString>;
    }, z.core.$strip>, z.ZodLiteral<"@">]>>;
    node: z.ZodType<PlanNode, unknown, z.core.$ZodTypeInternals<PlanNode, unknown>>;
}, z.core.$strip>;
export declare const ConditionNodePlanSchema: z.ZodObject<{
    kind: z.ZodLiteral<"Condition">;
    condition: z.ZodString;
    ifClause: z.ZodOptional<z.ZodNullable<z.ZodType<PlanNode, unknown, z.core.$ZodTypeInternals<PlanNode, unknown>>>>;
    elseClause: z.ZodOptional<z.ZodNullable<z.ZodType<PlanNode, unknown, z.core.$ZodTypeInternals<PlanNode, unknown>>>>;
}, z.core.$strip>;
export declare const SubscriptionNodePlanSchema: z.ZodObject<{
    kind: z.ZodLiteral<"Subscription">;
    primary: z.ZodType<PlanNode, unknown, z.core.$ZodTypeInternals<PlanNode, unknown>>;
}, z.core.$strip>;
export declare const DeferDependencySchema: z.ZodObject<{
    id: z.ZodString;
    deferLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
}, z.core.$strip>;
export type DeferDependency = z.infer<typeof DeferDependencySchema>;
export declare const DeferPrimarySchema: z.ZodObject<{
    subselection: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    node: z.ZodOptional<z.ZodNullable<z.ZodType<PlanNode, unknown, z.core.$ZodTypeInternals<PlanNode, unknown>>>>;
}, z.core.$strip>;
export declare const DeferredNodeSchema: z.ZodObject<{
    depends: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        deferLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    }, z.core.$strip>>;
    label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    queryPath: z.ZodArray<z.ZodString>;
    subselection: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    node: z.ZodOptional<z.ZodNullable<z.ZodType<PlanNode, unknown, z.core.$ZodTypeInternals<PlanNode, unknown>>>>;
}, z.core.$strip>;
export declare const DeferNodePlanSchema: z.ZodObject<{
    kind: z.ZodLiteral<"Defer">;
    primary: z.ZodObject<{
        subselection: z.ZodOptional<z.ZodNullable<z.ZodString>>;
        node: z.ZodOptional<z.ZodNullable<z.ZodType<PlanNode, unknown, z.core.$ZodTypeInternals<PlanNode, unknown>>>>;
    }, z.core.$strip>;
    deferred: z.ZodArray<z.ZodObject<{
        depends: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            deferLabel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
        }, z.core.$strip>>;
        label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
        queryPath: z.ZodArray<z.ZodString>;
        subselection: z.ZodOptional<z.ZodNullable<z.ZodString>>;
        node: z.ZodOptional<z.ZodNullable<z.ZodType<PlanNode, unknown, z.core.$ZodTypeInternals<PlanNode, unknown>>>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export declare const QueryPlanSchema: z.ZodObject<{
    kind: z.ZodLiteral<"QueryPlan">;
    node: z.ZodOptional<z.ZodNullable<z.ZodType<PlanNode, unknown, z.core.$ZodTypeInternals<PlanNode, unknown>>>>;
}, z.core.$strip>;
export type QueryPlan = z.infer<typeof QueryPlanSchema>;
