# GraphQL Types Organization

This directory contains all TypeScript type definitions for the GraphQL module, organized into logical groups:

## Type Files

### `graphql.ts`
Core GraphQL data structure types:
- `GraphQLJSON` - JSON representation of GraphQL schema structure

### `codegen.ts`
GraphQL code generation related types:
- `CodegenServerConfig` - Server-side TypeScript codegen configuration
- `CodegenClientConfig` - Client-side TypeScript codegen configuration
- `GraphQLCodegenPlugin` - Custom codegen plugin function type

### `runtime.ts`
Runtime-specific types (reserved for future use)

### `hooks.ts`
Module hook and configuration types:
- `ModuleOptions` - GraphQL module configuration options
- `ModuleRuntimeOptions` - Runtime configuration options
- `SetupModuleOption` - Setup phase options
- `ModuleRuntimeMethods` - Runtime method definitions
- `MetaData` - GraphQL endpoint metadata
- `ModuleHooks` - Available module hooks
- `GraphQLDataLoaderNames` - DataLoader name interface

### `loader.ts`
Schema and document loading types:
- `GraphQLLoadSchemaOptions` - Schema loading options
- `GraphQLLoadDocumentsOptions` - Document loading options
- `GraphQLTypeDefPointer` - Type definition pointer
- `GraphQLSource` - GraphQL source document

### `server.ts`
Server-specific types:
- `EnvelopedExecutionArgs` - Enveloped GraphQL execution arguments
- `GraphQLYogaInstance` - Yoga server instance type

### `directives.ts`
GraphQL directive types:
- `PermissionDirective` - Permission directive configuration
- `DirectiveTransformer` - Schema directive transformer function

### `schema.ts`
Schema extraction and analysis types:
- `ExtractPathOptions` - Options for path extraction
- `SchemaExtractionResult` - Schema extraction result

## Usage

All types are re-exported from the main `index.ts` file:

```typescript
import type {
  CodegenServerConfig,
  GraphQLJSON,
  ModuleOptions,
  // ... etc
} from '@silgi/graphql/types'
```
