export type MaybePromise = Promise | T; interface FormDataRequest { body: Body; headers: Record; duplex?: "half"; } export interface CrossPlatformFormData { setup(): Promise; append(key: string, value: unknown): void; appendFile(key: string, value: unknown, fileName?: string): Promise; getRequest(): MaybePromise>; } export declare function newFormData(): Promise; export type Node18FormDataFd = { append(name: string, value: unknown, fileName?: string): void; } | undefined; /** * Form Data Implementation for Node.js 18+ */ export declare class Node18FormData implements CrossPlatformFormData { private fd; setup(): Promise; append(key: string, value: any): void; private getFileName; appendFile(key: string, value: unknown, fileName?: string): Promise; getRequest(): Promise>; } export type Node16FormDataFd = { append(name: string, value: unknown, options?: string | { header?: string | Headers; knownLength?: number; filename?: string; filepath?: string; contentType?: string; }): void; getHeaders(): Record; } | undefined; /** * Form Data Implementation for Node.js 16-18 */ export declare class Node16FormData implements CrossPlatformFormData { private fd; setup(): Promise; append(key: string, value: any): void; private getFileName; appendFile(key: string, value: unknown, fileName?: string): Promise; getRequest(): FormDataRequest; } export type WebFormDataFd = { append(name: string, value: string | Blob, fileName?: string): void; } | undefined; /** * Form Data Implementation for Web */ export declare class WebFormData implements CrossPlatformFormData { protected fd: WebFormDataFd; setup(): Promise; append(key: string, value: any): void; private getFileName; appendFile(key: string, value: any, fileName?: string): Promise; getRequest(): FormDataRequest; } export {};