import { ConstDirectiveNode, GraphQLArgument, GraphQLEnumType, GraphQLEnumValue, GraphQLField, GraphQLInputField, GraphQLInputObjectType, GraphQLInterfaceType, GraphQLObjectType, GraphQLScalarType, GraphQLSchema, GraphQLUnionType, Kind } from 'graphql';
import { Change, DirectiveUsageArgumentDefinitionChange, DirectiveUsageArgumentDefinitionRemovedChange, DirectiveUsageEnumAddedChange, DirectiveUsageEnumRemovedChange, DirectiveUsageEnumValueAddedChange, DirectiveUsageEnumValueRemovedChange, DirectiveUsageFieldDefinitionAddedChange, DirectiveUsageFieldDefinitionRemovedChange, DirectiveUsageInputObjectAddedChange, DirectiveUsageInputObjectdRemovedChange, DirectiveUsageInterfaceAddedChange, DirectiveUsageInterfaceRemovedChange, DirectiveUsageObjectAddedChange, DirectiveUsageObjectRemovedChange, DirectiveUsageScalarAddedChange, DirectiveUsageScalarRemovedChange, DirectiveUsageSchemaAddedChange, DirectiveUsageSchemaRemovedChange, DirectiveUsageUnionMemberAddedChange, DirectiveUsageUnionMemberRemovedChange } from './change.js';
type KindToPayload = {
    [Kind.ENUM_TYPE_DEFINITION]: {
        input: GraphQLEnumType;
        change: DirectiveUsageEnumAddedChange | DirectiveUsageEnumRemovedChange;
    };
    [Kind.FIELD_DEFINITION]: {
        input: {
            field: GraphQLField<any, any, any>;
            parentType: GraphQLInterfaceType | GraphQLObjectType<any, any>;
        };
        change: DirectiveUsageFieldDefinitionAddedChange | DirectiveUsageFieldDefinitionRemovedChange;
    };
    [Kind.UNION_TYPE_DEFINITION]: {
        input: GraphQLUnionType;
        change: DirectiveUsageUnionMemberAddedChange | DirectiveUsageUnionMemberRemovedChange;
    };
    [Kind.ENUM_VALUE_DEFINITION]: {
        input: {
            type: GraphQLEnumType;
            value: GraphQLEnumValue;
        };
        change: DirectiveUsageEnumValueAddedChange | DirectiveUsageEnumValueRemovedChange;
    };
    [Kind.SCHEMA_DEFINITION]: {
        input: GraphQLSchema;
        change: DirectiveUsageSchemaAddedChange | DirectiveUsageSchemaRemovedChange;
    };
    [Kind.SCALAR_TYPE_DEFINITION]: {
        input: GraphQLScalarType;
        change: DirectiveUsageScalarAddedChange | DirectiveUsageScalarRemovedChange;
    };
    [Kind.OBJECT]: {
        input: GraphQLObjectType;
        change: DirectiveUsageObjectAddedChange | DirectiveUsageObjectRemovedChange;
    };
    [Kind.INTERFACE_TYPE_DEFINITION]: {
        input: GraphQLInterfaceType;
        change: DirectiveUsageInterfaceAddedChange | DirectiveUsageInterfaceRemovedChange;
    };
    [Kind.INPUT_OBJECT_TYPE_DEFINITION]: {
        input: GraphQLInputObjectType;
        change: DirectiveUsageInputObjectAddedChange | DirectiveUsageInputObjectdRemovedChange;
    };
    [Kind.INPUT_VALUE_DEFINITION]: {
        input: {
            field: GraphQLInputField;
            type: GraphQLInputObjectType;
        };
        change: DirectiveUsageArgumentDefinitionChange | DirectiveUsageArgumentDefinitionRemovedChange;
    };
    [Kind.ARGUMENT]: {
        input: {
            field: GraphQLField<any, any, any>;
            type: GraphQLObjectType | GraphQLInterfaceType;
            argument: GraphQLArgument;
        };
        change: DirectiveUsageArgumentDefinitionChange | DirectiveUsageArgumentDefinitionRemovedChange;
    };
};
export declare function directiveUsageAdded<K extends keyof KindToPayload>(kind: K, directive: ConstDirectiveNode, payload: KindToPayload[K]['input']): Change;
export declare function directiveUsageRemoved<K extends keyof KindToPayload>(kind: K, directive: ConstDirectiveNode, payload: KindToPayload[K]['input']): Change;
export {};
