import { type GraphQLFieldConfig, type GraphQLInputFieldConfig, type GraphQLNamedType, type GraphQLSchema } from 'graphql';
import { MapperKind } from '@graphql-tools/utils';
import type { SubgraphConfig, SubgraphTransform } from '../compose.cjs';
export declare const ignoreList: string[];
export type TypeRenamer = (opts: {
    typeName: string;
    type: GraphQLNamedType;
    subgraphConfig: SubgraphConfig;
}) => string;
export type FieldRenamer = (opts: {
    typeName: string;
    fieldName: string;
    type: GraphQLNamedType;
    field: GraphQLFieldConfig<any, any> | GraphQLInputFieldConfig;
    subgraphConfig: SubgraphConfig;
}) => string;
export type ArgumentRenamer = (opts: {
    typeName: string;
    fieldName: string;
    argName: string;
    subgraphConfig: SubgraphConfig;
}) => string;
export interface RenameTransformConfig {
    renames?: RenameTransformObject[];
    typeRenamer?: TypeRenamer;
    fieldRenamer?: FieldRenamer;
    argRenamer?: ArgumentRenamer;
}
export interface RenameTransformObject {
    from: RenameConfig;
    to: RenameConfig;
    /**
     * Use regular expression to match the type name
     * @default false
     */
    useRegExpForTypes?: boolean;
    /**
     * Use regular expression to match the field name
     * @default false
     */
    useRegExpForFields?: boolean;
    /**
     * Use regular expression to match the argument name
     * @default false
     */
    useRegExpForArguments?: boolean;
    /**
     * Flags to use in the Regular Expression
     */
    regExpFlags?: string;
    /**
     * Flag to indicate whether certain default types (built-ins, scalars and other types specified an exclusion list) should be renamed or not.
     *
     * @default false
     */
    includeDefaults?: boolean;
}
export interface RenameConfig {
    type?: string;
    field?: string;
    argument?: string;
}
export declare function createRenameTransform(opts: RenameTransformConfig): (schema: GraphQLSchema, subgraphConfig: SubgraphConfig) => GraphQLSchema;
type MapperTypeKind = MapperKind.ROOT_OBJECT | MapperKind.OBJECT_TYPE | MapperKind.INTERFACE_TYPE | MapperKind.UNION_TYPE | MapperKind.ENUM_TYPE | MapperKind.INPUT_OBJECT_TYPE | MapperKind.SCALAR_TYPE | MapperKind.TYPE;
export declare function createRenameTypeTransform(renameFn: TypeRenamer, kind?: MapperTypeKind): SubgraphTransform;
export type MapperFieldKind = MapperKind.FIELD | MapperKind.ROOT_FIELD | MapperKind.OBJECT_FIELD | MapperKind.INTERFACE_FIELD | MapperKind.INPUT_OBJECT_FIELD;
export declare function createRenameFieldTransform(renameFn: FieldRenamer, kind?: MapperFieldKind): SubgraphTransform;
export {};
