/// <reference types="node" />
import { type IncomingMessage } from 'http';
import { type IContext, type User } from '@accounts/types';
import { type Application } from 'graphql-modules';
import { type Request as RequestGraphqlHttp } from 'graphql-http';
import { type RequestContext } from 'graphql-http/lib/use/http';
import type http from 'http';
export type AccountsContextOptions<Ctx extends object> = {
    createOperationController: Application['createOperationController'];
    ctx?: Ctx;
    headerName?: string;
    excludeAddUserInContext?: boolean;
};
export declare const context: <IUserOrContext extends object = User, Ctx extends object = object, _User_ extends User = IUserOrContext extends User ? IUserOrContext : User, _Context_ extends object = IUserOrContext extends User ? IContext<IUserOrContext> : IUserOrContext>({ req, request, }: {
    req: IncomingMessage;
    request?: undefined;
} | {
    req?: undefined;
    request: Request | RequestGraphqlHttp<http.IncomingMessage, RequestContext>;
}, { createOperationController, ctx, ...options }: AccountsContextOptions<Ctx>) => Promise<_Context_>;
