import URLError from './lib/errors'
import URLSearchParams from './lib/url-search-params'
interface URL {
/** The full serialized URL string. Setting this property reparses the URL. */
href: string
/** The URL scheme followed by `':'`, for example `'https:'`. */
protocol: string
/** The username portion of the URL, or an empty string. */
username: string
/** The password portion of the URL, or an empty string. */
password: string
/** The hostname and port, for example `'example.com:8080'`. */
host: string
/** The hostname without the port. */
hostname: string
/** The port as a string, or an empty string if not present. */
port: string
/** The path portion of the URL. */
pathname: string
/** The query string including the leading `'?'`, or an empty string. */
search: string
/**
* A `URLSearchParams` object for the query string. Mutations to the params are reflected in the
* URL.
*/
searchParams: URLSearchParams
/** The fragment including the leading `'#'`, or an empty string. */
hash: string
/** Returns the serialized string form. */
toString(): string
/** Returns the serialized string form. Suitable for JSON serialization. */
toJSON(): string
}
declare class URL {
/**
* Parse `input` as a URL. If `base` is provided, `input` is resolved relative to `base`.
* @param input - The URL string to parse.
* @param base - A base URL that `input` is resolved relative to, if provided.
* @throws {INVALID_URL} `input` is not a valid URL.
*/
constructor(input: string | URL, base?: string | URL)
}
declare namespace URL {
/**
* Return `true` if `value` is a `URL` instance.
* @param value - The value to test.
*/
export function isURL(value: unknown): value is URL
/**
* Return `true` if `value` is a `URLSearchParams` instance.
* @param value - The value to test.
*/
export function isURLSearchParams(value: unknown): value is URLSearchParams
/**
* Parse `input` as a URL without throwing.
* @param input - The URL string to parse.
* @param base - A base URL that `input` is resolved relative to, if provided.
* @returns A `URL` instance if `input` parses successfully, or `null` on failure.
*/
export function parse(input: string, base?: string | URL): URL | null
/**
* Return `true` if `input` can be parsed as a valid URL, optionally relative to `base`.
* @param input - The URL string to test.
* @param base - A base URL that `input` is resolved relative to, if provided.
*/
export function canParse(input: string, base?: string | URL): boolean
/**
* Convert a `file:` URL to a platform-specific file path. `url` may be a `URL` instance or a
* string.
* @param url - The `file:` URL to convert, as a `URL` instance or a string.
* @throws {INVALID_URL_SCHEME} the URL does not use the `file:` protocol.
* @throws {INVALID_FILE_URL_HOST} (non-Windows) the URL has a host other than empty or
* `'localhost'`.
* @throws {INVALID_FILE_URL_PATH} the URL path contains an encoded path-separator or NUL
* character, or, on Windows, is not an absolute drive path.
*/
export function fileURLToPath(url: URL | string): string
/**
* Convert a platform-specific file path to a `file:` URL.
* @param pathname - The platform-specific file path to convert.
*/
export function pathToFileURL(pathname: string): URL
export { URL, type URLError, URLError as errors, URLSearchParams }
}
export = URL