import { Readable } from 'node:stream';
import { Request } from '@curveball/kernel';
import { NodeHttpRequest } from './http-utils.js';
export declare class NodeRequest<T> extends Request<T> {
    /**
     * Node.js Request object
     */
    private inner;
    constructor(inner: NodeHttpRequest, origin: string);
    /**
     * This function returns the request body.
     *
     * If encoding is not specified, this function returns a Buffer. If encoding
     * is specified, it will return a string.
     * This function returns the request body.
     *
     * If encoding is not specified, this function returns a Buffer. If encoding
     * is specified, it will return a string.
     *
     * You can only call this function once. Most likely you'll want a single
     * middleware that calls this function and then sets `body`.
     */
    rawBody(encoding?: string, limit?: string): Promise<string>;
    rawBody(encoding?: undefined, limit?: string): Promise<Buffer>;
    /**
     * getStream returns a Node.js readable stream.
     *
     * A stream can typically only be read once.
     */
    getStream(): Readable;
    /**
     * Returns the IP address of the HTTP client.
     *
     * If trustProxy is set to true, it means this server is running behind a
     * proxy, and the X-Forwarded-For header should be used instead.
     *
     * If trustProxy is not set, it defaults to false unless the
     * CURVEBALL_TRUSTPROXY environment variable is set. Using an environment
     * variable is a good idea for this as having a proxy may be environment
     * dependent.
     */
    ip(trustProxy?: boolean): string;
}
export default NodeRequest;
