import { DirectiveLocationEnum, GraphQLArgument, GraphQLDirective } from 'graphql';
import { Change, ChangeType, CriticalityLevel, DirectiveAddedChange, DirectiveArgumentAddedChange, DirectiveArgumentDefaultValueChangedChange, DirectiveArgumentDescriptionChangedChange, DirectiveArgumentRemovedChange, DirectiveArgumentTypeChangedChange, DirectiveDescriptionChangedChange, DirectiveLocationAddedChange, DirectiveLocationRemovedChange, DirectiveRemovedChange, DirectiveRepeatableAddedChange, DirectiveRepeatableRemovedChange } from './change.js';
export declare function directiveRemovedFromMeta(args: DirectiveRemovedChange): {
    readonly criticality: {
        readonly level: CriticalityLevel.Breaking;
        readonly reason: "A directive could be in use of a client application. Removing it could break the client application.";
    };
    readonly type: "DIRECTIVE_REMOVED";
    readonly message: string;
    readonly path: `@${string}`;
    readonly meta: {
        removedDirectiveName: string;
    };
};
export declare function directiveRemoved(directive: GraphQLDirective): Change<typeof ChangeType.DirectiveRemoved>;
export declare function directiveAddedFromMeta(args: DirectiveAddedChange): {
    readonly criticality: {
        readonly level: CriticalityLevel.NonBreaking;
    };
    readonly type: "DIRECTIVE_ADDED";
    readonly message: string;
    readonly path: `@${string}`;
    readonly meta: {
        addedDirectiveName: string;
        addedDirectiveRepeatable: boolean;
        addedDirectiveLocations: string[];
        addedDirectiveDescription: string | null;
    };
};
export declare function directiveAdded(directive: GraphQLDirective): Change<typeof ChangeType.DirectiveAdded>;
export declare function directiveDescriptionChangedFromMeta(args: DirectiveDescriptionChangedChange): {
    readonly criticality: {
        readonly level: CriticalityLevel.NonBreaking;
    };
    readonly type: "DIRECTIVE_DESCRIPTION_CHANGED";
    readonly message: string;
    readonly path: `@${string}`;
    readonly meta: {
        directiveName: string;
        oldDirectiveDescription: string | null;
        newDirectiveDescription: string | null;
    };
};
export declare function directiveDescriptionChanged(oldDirective: GraphQLDirective | null, newDirective: GraphQLDirective): Change<typeof ChangeType.DirectiveDescriptionChanged>;
export declare function directiveRepeatableAddedFromMeta(args: DirectiveRepeatableAddedChange): Change<typeof ChangeType.DirectiveRepeatableAdded>;
export declare function directiveRepeatableAdded(directive: GraphQLDirective): Change<"DIRECTIVE_REPEATABLE_ADDED">;
export declare function directiveRepeatableRemovedFromMeta(args: DirectiveRepeatableRemovedChange): Change<typeof ChangeType.DirectiveRepeatableRemoved>;
export declare function directiveRepeatableRemoved(directive: GraphQLDirective): Change<"DIRECTIVE_REPEATABLE_REMOVED">;
export declare function directiveLocationAddedFromMeta(args: DirectiveLocationAddedChange): {
    readonly criticality: {
        readonly level: CriticalityLevel.NonBreaking;
    };
    readonly type: "DIRECTIVE_LOCATION_ADDED";
    readonly message: string;
    readonly path: `@${string}`;
    readonly meta: {
        directiveName: string;
        addedDirectiveLocation: string;
    };
};
export declare function directiveLocationAdded(directive: GraphQLDirective, location: DirectiveLocationEnum): Change<typeof ChangeType.DirectiveLocationAdded>;
export declare function directiveLocationRemovedFromMeta(args: DirectiveLocationRemovedChange): {
    readonly criticality: {
        readonly level: CriticalityLevel.Breaking;
        readonly reason: "A directive could be in use of a client application. Removing it could break the client application.";
    };
    readonly type: "DIRECTIVE_LOCATION_REMOVED";
    readonly message: string;
    readonly path: `@${string}`;
    readonly meta: {
        directiveName: string;
        removedDirectiveLocation: string;
    };
};
export declare function directiveLocationRemoved(directive: GraphQLDirective, location: DirectiveLocationEnum): Change<typeof ChangeType.DirectiveLocationRemoved>;
export declare function directiveArgumentAddedFromMeta(args: DirectiveArgumentAddedChange): {
    readonly criticality: {
        level: CriticalityLevel;
        reason: string;
    };
    readonly type: "DIRECTIVE_ARGUMENT_ADDED";
    readonly message: `Argument '${string}' was added to directive '${string}'`;
    readonly path: `@${string}`;
    readonly meta: {
        directiveName: string;
        addedDirectiveArgumentName: string;
        addedDirectiveArgumentTypeIsNonNull: boolean;
        addedToNewDirective: boolean;
        addedDirectiveArgumentDescription?: string;
        addedDirectiveArgumentType: string;
        addedDirectiveDefaultValue?: string;
    };
};
export declare function directiveArgumentAdded(directive: GraphQLDirective, arg: GraphQLArgument, addedToNewDirective: boolean): Change<typeof ChangeType.DirectiveArgumentAdded>;
export declare function directiveArgumentRemovedFromMeta(args: DirectiveArgumentRemovedChange): {
    readonly criticality: {
        readonly level: CriticalityLevel.Breaking;
        readonly reason: "A directive argument could be in use of a client application. Removing the argument can break client applications.";
    };
    readonly type: "DIRECTIVE_ARGUMENT_REMOVED";
    readonly message: string;
    readonly path: `@${string}.${string}`;
    readonly meta: {
        directiveName: string;
        removedDirectiveArgumentName: string;
    };
};
export declare function directiveArgumentRemoved(directive: GraphQLDirective, arg: GraphQLArgument): Change<typeof ChangeType.DirectiveArgumentRemoved>;
export declare function directiveArgumentDescriptionChangedFromMeta(args: DirectiveArgumentDescriptionChangedChange): {
    readonly criticality: {
        readonly level: CriticalityLevel.NonBreaking;
    };
    readonly type: "DIRECTIVE_ARGUMENT_DESCRIPTION_CHANGED";
    readonly message: string;
    readonly path: `@${string}.${string}`;
    readonly meta: {
        directiveName: string;
        directiveArgumentName: string;
        oldDirectiveArgumentDescription: string | null;
        newDirectiveArgumentDescription: string | null;
    };
};
export declare function directiveArgumentDescriptionChanged(directive: GraphQLDirective, oldArg: GraphQLArgument | null, newArg: GraphQLArgument): Change<typeof ChangeType.DirectiveArgumentDescriptionChanged>;
export declare function directiveArgumentDefaultValueChangedFromMeta(args: DirectiveArgumentDefaultValueChangedChange): {
    readonly criticality: {
        readonly level: CriticalityLevel.Dangerous;
        readonly reason: "Changing the default value for an argument may change the runtime behaviour of a field if it was never provided.";
    };
    readonly type: "DIRECTIVE_ARGUMENT_DEFAULT_VALUE_CHANGED";
    readonly message: string;
    readonly path: `@${string}.${string}`;
    readonly meta: {
        directiveName: string;
        directiveArgumentName: string;
        oldDirectiveArgumentDefaultValue?: string;
        newDirectiveArgumentDefaultValue?: string;
    };
};
export declare function directiveArgumentDefaultValueChanged(directive: GraphQLDirective, oldArg: GraphQLArgument | null, newArg: GraphQLArgument): Change<typeof ChangeType.DirectiveArgumentDefaultValueChanged>;
export declare function directiveArgumentTypeChangedFromMeta(args: DirectiveArgumentTypeChangedChange): {
    readonly criticality: {
        level: CriticalityLevel;
        reason: string;
    } | {
        level: CriticalityLevel;
        reason?: undefined;
    };
    readonly type: "DIRECTIVE_ARGUMENT_TYPE_CHANGED";
    readonly message: string;
    readonly path: `@${string}.${string}`;
    readonly meta: {
        directiveName: string;
        directiveArgumentName: string;
        oldDirectiveArgumentType: string;
        newDirectiveArgumentType: string;
        isSafeDirectiveArgumentTypeChange: boolean;
    };
};
export declare function directiveArgumentTypeChanged(directive: GraphQLDirective, oldArg: GraphQLArgument, newArg: GraphQLArgument): Change<typeof ChangeType.DirectiveArgumentTypeChanged>;
