import { DeferStreamDirectiveLabelRule } from './rules/DeferStreamDirectiveLabelRule.ts';
import { DeferStreamDirectiveOnRootFieldRule } from './rules/DeferStreamDirectiveOnRootFieldRule.ts';
import { DeferStreamDirectiveOnValidOperationsRule } from './rules/DeferStreamDirectiveOnValidOperationsRule.ts';
import { ExecutableDefinitionsRule } from './rules/ExecutableDefinitionsRule.ts';
import { FieldsOnCorrectTypeRule } from './rules/FieldsOnCorrectTypeRule.ts';
import { FragmentsOnCompositeTypesRule } from './rules/FragmentsOnCompositeTypesRule.ts';
import {
KnownArgumentNamesOnDirectivesRule,
KnownArgumentNamesRule,
} from './rules/KnownArgumentNamesRule.ts';
import { KnownDirectivesRule } from './rules/KnownDirectivesRule.ts';
import { KnownFragmentNamesRule } from './rules/KnownFragmentNamesRule.ts';
import { KnownOperationTypesRule } from './rules/KnownOperationTypesRule.ts';
import { KnownTypeNamesRule } from './rules/KnownTypeNamesRule.ts';
import { LoneAnonymousOperationRule } from './rules/LoneAnonymousOperationRule.ts';
import { LoneSchemaDefinitionRule } from './rules/LoneSchemaDefinitionRule.ts';
import { MaxIntrospectionDepthRule } from './rules/MaxIntrospectionDepthRule.ts';
import { NoFragmentCyclesRule } from './rules/NoFragmentCyclesRule.ts';
import { NoUndefinedVariablesRule } from './rules/NoUndefinedVariablesRule.ts';
import { NoUnusedFragmentsRule } from './rules/NoUnusedFragmentsRule.ts';
import { NoUnusedVariablesRule } from './rules/NoUnusedVariablesRule.ts';
import { OverlappingFieldsCanBeMergedRule } from './rules/OverlappingFieldsCanBeMergedRule.ts';
import { PossibleFragmentSpreadsRule } from './rules/PossibleFragmentSpreadsRule.ts';
import { PossibleTypeExtensionsRule } from './rules/PossibleTypeExtensionsRule.ts';
import {
ProvidedRequiredArgumentsOnDirectivesRule,
ProvidedRequiredArgumentsRule,
} from './rules/ProvidedRequiredArgumentsRule.ts';
import { ScalarLeafsRule } from './rules/ScalarLeafsRule.ts';
import { SingleFieldSubscriptionsRule } from './rules/SingleFieldSubscriptionsRule.ts';
import { StreamDirectiveOnListFieldRule } from './rules/StreamDirectiveOnListFieldRule.ts';
import { UniqueArgumentDefinitionNamesRule } from './rules/UniqueArgumentDefinitionNamesRule.ts';
import { UniqueArgumentNamesRule } from './rules/UniqueArgumentNamesRule.ts';
import { UniqueDirectiveNamesRule } from './rules/UniqueDirectiveNamesRule.ts';
import { UniqueDirectivesPerLocationRule } from './rules/UniqueDirectivesPerLocationRule.ts';
import { UniqueEnumValueNamesRule } from './rules/UniqueEnumValueNamesRule.ts';
import { UniqueFieldDefinitionNamesRule } from './rules/UniqueFieldDefinitionNamesRule.ts';
import { UniqueFragmentNamesRule } from './rules/UniqueFragmentNamesRule.ts';
import { UniqueInputFieldNamesRule } from './rules/UniqueInputFieldNamesRule.ts';
import { UniqueOperationNamesRule } from './rules/UniqueOperationNamesRule.ts';
import { UniqueOperationTypesRule } from './rules/UniqueOperationTypesRule.ts';
import { UniqueTypeNamesRule } from './rules/UniqueTypeNamesRule.ts';
import { UniqueVariableNamesRule } from './rules/UniqueVariableNamesRule.ts';
import { ValuesOfCorrectTypeRule } from './rules/ValuesOfCorrectTypeRule.ts';
import { VariablesAreInputTypesRule } from './rules/VariablesAreInputTypesRule.ts';
import { VariablesInAllowedPositionRule } from './rules/VariablesInAllowedPositionRule.ts';
import type { SDLValidationRule, ValidationRule } from './ValidationContext.ts';
export const recommendedRules: ReadonlyArray<ValidationRule> = Object.freeze([
MaxIntrospectionDepthRule,
]);
export const specifiedRules: ReadonlyArray<ValidationRule> = Object.freeze([
ExecutableDefinitionsRule,
KnownOperationTypesRule,
UniqueOperationNamesRule,
LoneAnonymousOperationRule,
SingleFieldSubscriptionsRule,
KnownTypeNamesRule,
FragmentsOnCompositeTypesRule,
VariablesAreInputTypesRule,
ScalarLeafsRule,
FieldsOnCorrectTypeRule,
UniqueFragmentNamesRule,
KnownFragmentNamesRule,
NoUnusedFragmentsRule,
PossibleFragmentSpreadsRule,
NoFragmentCyclesRule,
UniqueVariableNamesRule,
NoUndefinedVariablesRule,
NoUnusedVariablesRule,
KnownDirectivesRule,
UniqueDirectivesPerLocationRule,
DeferStreamDirectiveOnRootFieldRule,
DeferStreamDirectiveOnValidOperationsRule,
DeferStreamDirectiveLabelRule,
StreamDirectiveOnListFieldRule,
KnownArgumentNamesRule,
UniqueArgumentNamesRule,
ValuesOfCorrectTypeRule,
ProvidedRequiredArgumentsRule,
VariablesInAllowedPositionRule,
OverlappingFieldsCanBeMergedRule,
UniqueInputFieldNamesRule,
...recommendedRules,
]);
export const specifiedSDLRules: ReadonlyArray<SDLValidationRule> =
Object.freeze([
LoneSchemaDefinitionRule,
UniqueOperationTypesRule,
UniqueTypeNamesRule,
UniqueEnumValueNamesRule,
UniqueFieldDefinitionNamesRule,
UniqueArgumentDefinitionNamesRule,
UniqueDirectiveNamesRule,
KnownTypeNamesRule,
KnownDirectivesRule,
UniqueDirectivesPerLocationRule,
PossibleTypeExtensionsRule,
KnownArgumentNamesOnDirectivesRule,
UniqueArgumentNamesRule,
UniqueInputFieldNamesRule,
ProvidedRequiredArgumentsOnDirectivesRule,
]);