import { Handler, Request } from "express";
import { HasuraActionPayload, WithHasuraOptions, HasuraActionHandler, HasuraEventHandler, HasuraEventHandlerMap, HasuraActionHandlerMap, AnyRecord, HasuraEvent, BaseHasuraContext, WithHasura, HasuraScheduledTriggerHandler, HasuraScheduledTriggerHandlerMap } from "./types";
import { Logger } from "./utils";
export declare type HasuraExpressContext<L extends Logger = Logger> = BaseHasuraContext<L> & {
    readonly request: Request;
};
export declare type HasuraActionExpressHandler<P extends HasuraActionPayload = HasuraActionPayload, R extends AnyRecord = AnyRecord> = HasuraActionHandler<P, R, HasuraExpressContext>;
export declare type HasuraActionExpressHandlerMap = HasuraActionHandlerMap<HasuraActionExpressHandler>;
export declare type HasuraEventExpressHandler<EV extends HasuraEvent = HasuraEvent, R extends AnyRecord = AnyRecord, N extends string = string> = HasuraEventHandler<EV, R, N, HasuraExpressContext>;
export declare type HasuraEventExpressHandlerMap = HasuraEventHandlerMap<HasuraEventExpressHandler>;
export declare type HasuraScheduledTriggerExpressHandler<P = any, R = unknown> = HasuraScheduledTriggerHandler<P, R, HasuraExpressContext>;
export declare type HasuraScheduledTriggerExpressHandlerMap = HasuraScheduledTriggerHandlerMap<HasuraScheduledTriggerExpressHandler>;
export declare const withExpress: <CtxOps extends AnyRecord = AnyRecord, L extends Logger = Logger>(options?: WithHasuraOptions<CtxOps, L>) => WithHasura<Handler, HasuraExpressContext<L> & CtxOps>;
