declare namespace URLParse { type URLPart = | "auth" | "hash" | "host" | "hostname" | "href" | "origin" | "password" | "pathname" | "port" | "protocol" | "query" | "slashes" | "username"; type QueryParser> = (query: string) => T; type StringifyQuery = (query: object) => string; } interface URLParse { readonly auth: string; readonly hash: string; readonly host: string; readonly hostname: string; readonly href: string; readonly origin: string; readonly password: string; readonly pathname: string; readonly port: string; readonly protocol: string; readonly query: Query; readonly slashes: boolean; readonly username: string; set( part: Part, value: URLParse[Part] | undefined, fn?: false, ): URLParse; set( part: Part, value: URLParse[Part] | undefined, fn?: URLParse.QueryParser, ): URLParse; toString(stringify?: URLParse.StringifyQuery): string; } declare const URLParse: { new(address: string, parser?: false): URLParse; new(address: string, parser: true): URLParse>; new(address: string, parser?: URLParse.QueryParser): URLParse; new(address: string, location?: string | object, parser?: false): URLParse; new( address: string, location: string | object | undefined, parser: true, ): URLParse>; new(address: string, location: string | object | undefined, parser: URLParse.QueryParser): URLParse; (address: string, parser?: false): URLParse; (address: string, parser: true): URLParse>; (address: string, parser: URLParse.QueryParser): URLParse; (address: string, location?: string | object, parser?: false): URLParse; ( address: string, location: string | object | undefined, parser: true, ): URLParse>; (address: string, location: string | object | undefined, parser: URLParse.QueryParser): URLParse; extractProtocol(url: string): { slashes: boolean; protocol: string; rest: string; }; location(url: string): object; qs: { parse: URLParse.QueryParser; stringify: URLParse.StringifyQuery; }; trimLeft(url: string): string; }; export = URLParse;