///
import * as NexusLogger from '@nexus/logger';
import * as NexusSchema from '@nexus/schema';
import * as GraphQL from 'graphql';
import * as HTTP from 'http';
import { NexusSchemaStatefulBuilders } from '../../lib/nexus-schema-stateful';
import { RuntimeContributions } from '../../lib/plugin';
import * as Scalars from '../../lib/scalars';
import { Index, MaybePromise } from '../../lib/utils';
import { AppState } from '../app';
import { SchemaSettingsManager } from './settings';
export declare type LazyState = {
contextContributors: ContextAdder[];
plugins: NexusSchema.core.NexusPlugin[];
scalars: Scalars.Scalars;
};
export declare function createLazyState(): LazyState;
export interface Request extends HTTP.IncomingMessage {
log: NexusLogger.Logger;
}
export interface Response extends HTTP.ServerResponse {
}
export declare type ContextAdderLens = {
/**
* Incoming HTTP request
*/
req: Request;
/**
* Server response
*/
res: Response;
};
export declare type ContextAdder = (params: ContextAdderLens) => MaybePromise>;
declare type MiddlewareFn = (source: any, args: any, context: NexusSchema.core.GetGen<'context'>, info: GraphQL.GraphQLResolveInfo, next: GraphQL.GraphQLFieldResolver) => any;
/**
* Schema component API
*/
export interface Schema extends NexusSchemaStatefulBuilders {
/**
* todo link to website docs
*/
use(schemaPlugin: NexusSchema.core.NexusPlugin): void;
/**
* todo link to website docs
*/
middleware(fn: (config: NexusSchema.core.CreateFieldResolverInfo) => MiddlewareFn | undefined): void;
/**
* todo link to website docs
*/
addToContext(contextAdder: ContextAdder): void;
}
/**
* Schema component internal API
*/
export interface SchemaInternal {
private: {
settings: SchemaSettingsManager;
checks(): void;
assemble(plugins: RuntimeContributions[]): {
schema: NexusSchema.core.NexusGraphQLSchema;
missingTypes: Index;
};
beforeAssembly(): void;
reset(): void;
};
public: Schema;
}
export declare function create(state: AppState): SchemaInternal;
export {};
//# sourceMappingURL=schema.d.ts.map