/**
 * Normalize a `redirect` config (string shorthand or object) into a
 * {@link ResolvedRedirect}. A `to` without a scheme is treated as `https://<to>`
 * (a public redirect should land on TLS), and any trailing slash is trimmed so
 * appending the request path joins cleanly.
 */
export declare function resolveRedirect(input: string | RedirectRouteConfig): ResolvedRedirect;
/**
 * Build the `Location` value for a redirect route. With `preservePath` the
 * request `pathname` + `search` (e.g. `/a/b?x=1`) is appended to the target
 * base; otherwise the bare target is used. `pathname` always starts with `/`
 * and `search` carries its own leading `?` (or is empty).
 */
export declare function buildRedirectLocation(redirect: ResolvedRedirect, pathname: string, search: string): string;
/**
 * Redirect routes: a gateway host whose requests are answered with an HTTP
 * redirect (a `Location` response) instead of being proxied to an upstream or
 * served from disk. The canonical use is pointing an alternate/parked domain at
 * its primary host — e.g. `very-good-adblock.org` → `https://verygoodadblock.org`
 * — while preserving deep links: the request path + query are appended to the
 * target by default.
 *
 * Kept transport-agnostic and dependency-free so both the shared `:443` handler
 * and tests can use it directly.
 */
/**
 * Public redirect config for a route. A bare string is shorthand for a
 * permanent (301) redirect to that URL, path-preserving.
 */
export declare interface RedirectRouteConfig {
  to: string
  status?: 301 | 302 | 307 | 308
  preservePath?: boolean
}
/** A normalized redirect, ready to serve. */
export declare interface ResolvedRedirect {
  to: string
  status: 301 | 302 | 307 | 308
  preservePath: boolean
}
