import * as _alepha_core0 from "alepha";
import { Alepha, FileLike, HookDescriptor } from "alepha";
import { ServerRoute } from "alepha/server";
import { BusboyConfig } from "@fastify/busboy";
import { IncomingMessage } from "node:http";

//#region src/providers/ServerMultipartProvider.d.ts
declare class ServerMultipartProvider {
  protected readonly alepha: Alepha;
  readonly onRequest: HookDescriptor<"server:onRequest">;
  readonly onSend: HookDescriptor<"server:onResponse">;
  handleMultipartBodyFromNode(route: ServerRoute, stream: IncomingMessage): Promise<{
    body: Record<string, any>;
    cleanup: () => Promise<void>;
  }>;
  parseMultipart(req: IncomingMessage, config?: Omit<BusboyConfig, "headers">): Promise<MultipartResult>;
}
interface MultipartResult {
  fields: Record<string, string | string[]>;
  files: Record<string, HybridFile>;
}
interface HybridFile extends FileLike {
  cleanup(): Promise<void>;
  _state: {
    cleanup: boolean;
    size: number;
    tmpPath: string;
  };
}
//#endregion
//#region src/index.d.ts
/**
 * This module provides support for handling multipart/form-data requests.
 * It allows to parse body data containing t.file().
 *
 * @see {@link ServerMultipartProvider}
 * @module alepha.server.multipart
 */
declare const AlephaServerMultipart: _alepha_core0.Service<_alepha_core0.Module>;
//# sourceMappingURL=index.d.ts.map

//#endregion
export { AlephaServerMultipart, ServerMultipartProvider };
//# sourceMappingURL=index.d.ts.map