import { DefaultServerAdapterContext, ServerAdapterBaseObject } from '../types';
export type CORSOptions = {
    origin?: string[] | string;
    methods?: string[];
    allowedHeaders?: string[];
    exposedHeaders?: string[];
    credentials?: boolean;
    maxAge?: number;
} | false;
export type WithCORSOptions<TServerContext> = CORSOptionsFactory<TServerContext> | CORSOptions | boolean;
export type CORSOptionsFactory<TServerContext> = (request: Request, ...args: {} extends TServerContext ? [serverContext?: TServerContext | undefined] : [serverContext: TServerContext]) => Promise<CORSOptions> | CORSOptions;
export declare function getCORSHeadersByRequestAndOptions(request: Request, corsOptions: CORSOptions): Record<string, string>;
export declare function withCORS<TServerContext = DefaultServerAdapterContext, TBaseObject extends ServerAdapterBaseObject<TServerContext> = ServerAdapterBaseObject<TServerContext>>(obj: TBaseObject, options: WithCORSOptions<TServerContext>, ResponseCtor?: typeof Response): TBaseObject;
