import * as _alepha_core1 from "alepha";
import * as _alepha_core0 from "alepha";
import { Alepha, Async, Descriptor, KIND } from "alepha";
import { ServerHandler, ServerRequest, ServerRouterProvider } from "alepha/server";

//#region src/descriptors/$proxy.d.ts
declare const $proxy: {
  (options: ProxyDescriptorOptions): ProxyDescriptor;
  [KIND]: typeof ProxyDescriptor;
};
type ProxyDescriptorOptions = {
  path: string;
  target: string | (() => string);
  disabled?: boolean;
  beforeRequest?: (request: ServerRequest, proxyRequest: RequestInit) => Async<void>;
  afterResponse?: (request: ServerRequest, proxyResponse: Response) => Async<void>;
  rewrite?: (url: URL) => void;
};
declare class ProxyDescriptor extends Descriptor<ProxyDescriptorOptions> {}
//# sourceMappingURL=$proxy.d.ts.map
//#endregion
//#region src/providers/ServerProxyProvider.d.ts
declare class ServerProxyProvider {
  protected readonly log: _alepha_core1.Logger;
  protected readonly routerProvider: ServerRouterProvider;
  protected readonly alepha: Alepha;
  protected readonly configure: _alepha_core1.HookDescriptor<"configure">;
  createProxy(options: ProxyDescriptorOptions): void;
  createProxyHandler(target: string, options: Omit<ProxyDescriptorOptions, "path">): ServerHandler;
  private getRawRequestBody;
}
//# sourceMappingURL=ServerProxyProvider.d.ts.map
//#endregion
//#region src/index.d.ts
/**
 * Plugin for Alepha that provides a proxy server functionality.
 *
 * @see {@link $proxy}
 * @module alepha.server.proxy
 */
declare const AlephaServerProxy: _alepha_core0.Service<_alepha_core0.Module>;
//# sourceMappingURL=index.d.ts.map

//#endregion
export { $proxy, AlephaServerProxy, ProxyDescriptor, ProxyDescriptorOptions, ServerProxyProvider };
//# sourceMappingURL=index.d.ts.map