import './global-types';
import { BasePlugin, type PothosInputFieldConfig, type PothosOutputFieldConfig, type PothosTypeConfig, type SchemaTypes } from '@pothos/core';
import { type GraphQLFieldConfigMap, type GraphQLInputFieldConfigMap, GraphQLInputObjectType, GraphQLInterfaceType, type GraphQLNamedType, GraphQLObjectType, GraphQLSchema } from 'graphql';
declare const pluginName = "subGraph";
export default pluginName;
export declare class PothosSubGraphPlugin<Types extends SchemaTypes> extends BasePlugin<Types> {
    static createSubGraph<Types extends SchemaTypes>(schema: GraphQLSchema, subGraph: string[] | string, builder: PothosSchemaTypes.SchemaBuilder<Types>): GraphQLSchema;
    static filterTypes(types: readonly GraphQLNamedType[], subGraphs: string[]): Map<string, GraphQLNamedType>;
    static filterFields(type: GraphQLInterfaceType | GraphQLObjectType, newTypes: Map<string, GraphQLNamedType>, subGraphs: string[]): () => GraphQLFieldConfigMap<unknown, unknown>;
    static mapInputFields(type: GraphQLInputObjectType, newTypes: Map<string, GraphQLNamedType>, subGraphs: string[]): () => GraphQLInputFieldConfigMap;
    afterBuild(schema: GraphQLSchema): GraphQLSchema;
    onTypeConfig(typeConfig: PothosTypeConfig): {
        extensions: {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        };
        kind: "Enum";
        graphqlKind: "Enum";
        pothosOptions: PothosSchemaTypes.EnumTypeOptions;
        name: string;
        description?: import("graphql/jsutils/Maybe").Maybe<string>;
        values: import("graphql").ThunkObjMap<import("graphql").GraphQLEnumValueConfig>;
        astNode?: import("graphql/jsutils/Maybe").Maybe<import("graphql").EnumTypeDefinitionNode>;
        extensionASTNodes?: import("graphql/jsutils/Maybe").Maybe<ReadonlyArray<import("graphql").EnumTypeExtensionNode>>;
    } | {
        extensions: {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        };
        kind: "InputObject";
        graphqlKind: "InputObject";
        pothosOptions: PothosSchemaTypes.InputObjectTypeOptions;
        name: string;
        description?: import("graphql/jsutils/Maybe").Maybe<string>;
        astNode?: import("graphql/jsutils/Maybe").Maybe<import("graphql").InputObjectTypeDefinitionNode>;
        extensionASTNodes?: import("graphql/jsutils/Maybe").Maybe<readonly import("graphql").InputObjectTypeExtensionNode[]>;
        isOneOf?: boolean | undefined;
    } | {
        extensions: {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        };
        kind: "Interface";
        graphqlKind: "Interface";
        interfaces: import("@pothos/core").InterfaceParam<SchemaTypes>[];
        pothosOptions: PothosSchemaTypes.InterfaceTypeOptions;
        name: string;
        description?: import("graphql/jsutils/Maybe").Maybe<string>;
        astNode?: import("graphql/jsutils/Maybe").Maybe<import("graphql").InterfaceTypeDefinitionNode>;
        extensionASTNodes?: import("graphql/jsutils/Maybe").Maybe<readonly import("graphql").InterfaceTypeExtensionNode[]>;
        resolveType?: import("graphql/jsutils/Maybe").Maybe<import("graphql").GraphQLTypeResolver<unknown, object>>;
    } | {
        extensions: {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        };
        kind: "Mutation";
        graphqlKind: "Object";
        pothosOptions: PothosSchemaTypes.MutationTypeOptions;
        name: string;
        description?: import("graphql/jsutils/Maybe").Maybe<string>;
        astNode?: import("graphql/jsutils/Maybe").Maybe<import("graphql").ObjectTypeDefinitionNode>;
        extensionASTNodes?: import("graphql/jsutils/Maybe").Maybe<readonly import("graphql").ObjectTypeExtensionNode[]>;
        isTypeOf?: import("graphql/jsutils/Maybe").Maybe<import("graphql").GraphQLIsTypeOfFn<unknown, object>>;
    } | {
        extensions: {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        };
        kind: "Object";
        graphqlKind: "Object";
        interfaces: import("@pothos/core").InterfaceParam<SchemaTypes>[];
        pothosOptions: PothosSchemaTypes.ObjectTypeOptions;
        name: string;
        description?: import("graphql/jsutils/Maybe").Maybe<string>;
        astNode?: import("graphql/jsutils/Maybe").Maybe<import("graphql").ObjectTypeDefinitionNode>;
        extensionASTNodes?: import("graphql/jsutils/Maybe").Maybe<readonly import("graphql").ObjectTypeExtensionNode[]>;
        isTypeOf?: import("graphql/jsutils/Maybe").Maybe<import("graphql").GraphQLIsTypeOfFn<unknown, object>>;
    } | {
        extensions: {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        };
        kind: "Query";
        graphqlKind: "Object";
        pothosOptions: PothosSchemaTypes.QueryTypeOptions;
        name: string;
        description?: import("graphql/jsutils/Maybe").Maybe<string>;
        astNode?: import("graphql/jsutils/Maybe").Maybe<import("graphql").ObjectTypeDefinitionNode>;
        extensionASTNodes?: import("graphql/jsutils/Maybe").Maybe<readonly import("graphql").ObjectTypeExtensionNode[]>;
        isTypeOf?: import("graphql/jsutils/Maybe").Maybe<import("graphql").GraphQLIsTypeOfFn<unknown, object>>;
    } | {
        extensions: {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        };
        kind: "Scalar";
        graphqlKind: "Scalar";
        pothosOptions: PothosSchemaTypes.ScalarTypeOptions;
        name: string;
        description?: import("graphql/jsutils/Maybe").Maybe<string>;
        specifiedByURL?: import("graphql/jsutils/Maybe").Maybe<string>;
        serialize?: import("graphql").GraphQLScalarSerializer<unknown> | undefined;
        parseValue?: import("graphql").GraphQLScalarValueParser<unknown> | undefined;
        parseLiteral?: import("graphql").GraphQLScalarLiteralParser<unknown> | undefined;
        astNode?: import("graphql/jsutils/Maybe").Maybe<import("graphql").ScalarTypeDefinitionNode>;
        extensionASTNodes?: import("graphql/jsutils/Maybe").Maybe<ReadonlyArray<import("graphql").ScalarTypeExtensionNode>>;
    } | {
        extensions: {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        };
        kind: "Subscription";
        graphqlKind: "Object";
        pothosOptions: PothosSchemaTypes.SubscriptionTypeOptions;
        name: string;
        description?: import("graphql/jsutils/Maybe").Maybe<string>;
        astNode?: import("graphql/jsutils/Maybe").Maybe<import("graphql").ObjectTypeDefinitionNode>;
        extensionASTNodes?: import("graphql/jsutils/Maybe").Maybe<readonly import("graphql").ObjectTypeExtensionNode[]>;
        isTypeOf?: import("graphql/jsutils/Maybe").Maybe<import("graphql").GraphQLIsTypeOfFn<unknown, object>>;
    } | {
        extensions: {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        } | {
            subGraphs: string[];
        };
        kind: "Union";
        graphqlKind: "Union";
        types: import("@pothos/core").ObjectParam<SchemaTypes>[];
        pothosOptions: PothosSchemaTypes.UnionTypeOptions;
        name: string;
        description?: import("graphql/jsutils/Maybe").Maybe<string>;
        astNode?: import("graphql/jsutils/Maybe").Maybe<import("graphql").UnionTypeDefinitionNode>;
        extensionASTNodes?: import("graphql/jsutils/Maybe").Maybe<readonly import("graphql").UnionTypeExtensionNode[]>;
        resolveType?: import("graphql/jsutils/Maybe").Maybe<import("graphql").GraphQLTypeResolver<unknown, object>>;
    };
    onInputFieldConfig(fieldConfig: PothosInputFieldConfig<Types>): PothosInputFieldConfig<Types>;
    onOutputFieldConfig(fieldConfig: PothosOutputFieldConfig<Types>): PothosOutputFieldConfig<Types>;
}
//# sourceMappingURL=index.d.ts.map