export interface RedirectRule {
    /**
     * Optional protocol to match (http or https). If not specified, matches both.
     */
    fromProtocol?: 'http' | 'https';
    /**
     * Optional hostname pattern to match. Can use * as wildcard.
     * If not specified, matches all hosts.
     */
    fromHost?: string;
    /**
     * Optional path prefix to match. If not specified, matches all paths.
     */
    fromPath?: string;
    /**
     * Target protocol for the redirect (http or https)
     */
    toProtocol: 'http' | 'https';
    /**
     * Target hostname for the redirect. Can use $1, $2, etc. to reference
     * captured groups from wildcard matches in fromHost.
     */
    toHost: string;
    /**
     * Optional target path prefix. If not specified, keeps original path.
     * Can use $path to reference the original path.
     */
    toPath?: string;
    /**
     * HTTP status code for the redirect (301 for permanent, 302 for temporary)
     */
    statusCode?: 301 | 302 | 307 | 308;
}
export declare class Redirect {
    private httpServer?;
    private httpsServer?;
    private rules;
    private httpPort;
    private httpsPort;
    private sslOptions?;
    /**
     * Create a new Redirect instance
     * @param options Configuration options
     */
    constructor(options?: {
        httpPort?: number;
        httpsPort?: number;
        sslOptions?: {
            key: Buffer;
            cert: Buffer;
        };
        rules?: RedirectRule[];
    });
    /**
     * Add a redirect rule
     */
    addRule(rule: RedirectRule): void;
    /**
     * Remove all redirect rules
     */
    clearRules(): void;
    /**
     * Set SSL options for HTTPS redirects
     */
    setSslOptions(options: {
        key: Buffer;
        cert: Buffer;
    }): void;
    /**
     * Process a request according to the configured rules
     */
    private handleRequest;
    /**
     * Find a matching redirect rule for the given request
     */
    private findMatchingRule;
    /**
     * Build the target URL for a redirect
     */
    private buildTargetUrl;
    /**
     * Start the redirect server(s)
     */
    start(): Promise<void>;
    /**
     * Stop the redirect server(s)
     */
    stop(): Promise<void>;
}
export declare class SslRedirect {
    private redirect;
    port: number;
    constructor(portArg: number);
    start(): Promise<void>;
    stop(): Promise<void>;
}
