import { XID } from '../types';
export interface ParsedURL {
    protocol: string;
    hostname: string;
    port?: string;
    pathname: string;
    search: string;
    hash: string;
    query: Record<string, string | string[]>;
    origin: string;
    href: string;
}
export declare const parseURL: (url: string) => ParsedURL | null;
export declare const buildURL: (base: string, params?: Record<string, string | number | boolean | undefined | null>) => string;
export declare const addQueryParams: (url: string, params: Record<string, string | number | boolean | undefined | null>) => string;
export declare const parseQueryString: (queryString: string) => Record<string, string | string[]>;
export declare const buildQueryString: (params: Record<string, any>) => string;
export declare const removeQueryParams: (url: string, keys: string[]) => string;
export declare const getQueryParam: (url: string, key: string) => string | null;
export declare const hasQueryParam: (url: string, key: string) => boolean;
export declare const buildAuthURL: (baseUrl: string, type: "signin" | "signup" | "reset" | "verify", params?: {
    organizationId?: XID;
    redirectUrl?: string;
    invitationToken?: string;
    emailAddress?: string;
    mode?: string;
    [key: string]: any;
}) => string;
export declare const buildOAuthURL: (provider: string, clientId: string, redirectUri: string, options?: {
    state?: string;
    scope?: string | string[];
    responseType?: string;
    codeChallenge?: string;
    codeChallengeMethod?: string;
    organizationId?: XID;
    [key: string]: any;
}) => string;
export declare const parseOAuthCallback: (url: string) => {
    code?: string;
    state?: string;
    error?: string;
    errorDescription?: string;
    organizationId?: XID;
};
export declare const buildMagicLinkURL: (baseUrl: string, token: string, options?: {
    redirectUrl?: string;
    organizationId?: XID;
    mode?: string;
}) => string;
export declare const buildVerificationURL: (baseUrl: string, token: string, type: "email" | "phone", options?: {
    redirectUrl?: string;
    organizationId?: XID;
}) => string;
export declare const buildPasswordResetURL: (baseUrl: string, token: string, options?: {
    redirectUrl?: string;
    organizationId?: XID;
}) => string;
export declare const buildInvitationURL: (baseUrl: string, token: string, options?: {
    redirectUrl?: string;
    organizationId?: XID;
}) => string;
export declare const isValidURL: (url: string) => boolean;
export declare const isValidHttpURL: (url: string) => boolean;
export declare const isValidHttpsURL: (url: string) => boolean;
export declare const isDomainAllowed: (url: string, allowedDomains: string[]) => boolean;
export declare const isSubdomain: (url: string, parentDomain: string) => boolean;
export declare const extractDomain: (url: string) => string | null;
export declare const extractRootDomain: (url: string) => string | null;
export declare const normalizeURL: (url: string) => string;
export declare const joinURL: (...parts: string[]) => string;
export declare const getURLPath: (url: string) => string;
export declare const getURLParams: (url: string) => Record<string, string | string[]>;
export declare const isSafeRedirectURL: (url: string, allowedDomains: string[], allowRelative?: boolean) => boolean;
export declare const sanitizeRedirectURL: (url: string, allowedDomains: string[], fallbackURL?: string) => string;
export declare const getCurrentURL: () => string;
export declare const getCurrentPath: () => string;
export declare const getCurrentDomain: () => string;
export declare const getCurrentOrigin: () => string;
export declare const getCurrentParams: () => Record<string, string | string[]>;
export declare const redirectTo: (url: string, replace?: boolean) => void;
export declare const openInNewTab: (url: string) => void;
export declare const getHash: () => string;
export declare const setHash: (hash: string) => void;
export declare const removeHash: () => void;
export declare const encodeURIComponentSafe: (str: string) => string;
export declare const decodeURIComponentSafe: (str: string) => string;
export declare const URLUtils: {
    parseURL: (url: string) => ParsedURL | null;
    parseQueryString: (queryString: string) => Record<string, string | string[]>;
    parseOAuthCallback: (url: string) => {
        code?: string;
        state?: string;
        error?: string;
        errorDescription?: string;
        organizationId?: XID;
    };
    buildURL: (base: string, params?: Record<string, string | number | boolean | undefined | null>) => string;
    buildQueryString: (params: Record<string, any>) => string;
    buildAuthURL: (baseUrl: string, type: "signin" | "signup" | "reset" | "verify", params?: {
        organizationId?: XID;
        redirectUrl?: string;
        invitationToken?: string;
        emailAddress?: string;
        mode?: string;
        [key: string]: any;
    }) => string;
    buildOAuthURL: (provider: string, clientId: string, redirectUri: string, options?: {
        state?: string;
        scope?: string | string[];
        responseType?: string;
        codeChallenge?: string;
        codeChallengeMethod?: string;
        organizationId?: XID;
        [key: string]: any;
    }) => string;
    buildMagicLinkURL: (baseUrl: string, token: string, options?: {
        redirectUrl?: string;
        organizationId?: XID;
        mode?: string;
    }) => string;
    buildVerificationURL: (baseUrl: string, token: string, type: "email" | "phone", options?: {
        redirectUrl?: string;
        organizationId?: XID;
    }) => string;
    buildPasswordResetURL: (baseUrl: string, token: string, options?: {
        redirectUrl?: string;
        organizationId?: XID;
    }) => string;
    buildInvitationURL: (baseUrl: string, token: string, options?: {
        redirectUrl?: string;
        organizationId?: XID;
    }) => string;
    addQueryParams: (url: string, params: Record<string, string | number | boolean | undefined | null>) => string;
    removeQueryParams: (url: string, keys: string[]) => string;
    getQueryParam: (url: string, key: string) => string | null;
    hasQueryParam: (url: string, key: string) => boolean;
    joinURL: (...parts: string[]) => string;
    normalizeURL: (url: string) => string;
    isValidURL: (url: string) => boolean;
    isValidHttpURL: (url: string) => boolean;
    isValidHttpsURL: (url: string) => boolean;
    isDomainAllowed: (url: string, allowedDomains: string[]) => boolean;
    isSubdomain: (url: string, parentDomain: string) => boolean;
    isSafeRedirectURL: (url: string, allowedDomains: string[], allowRelative?: boolean) => boolean;
    extractDomain: (url: string) => string | null;
    extractRootDomain: (url: string) => string | null;
    getURLPath: (url: string) => string;
    getURLParams: (url: string) => Record<string, string | string[]>;
    getCurrentURL: () => string;
    getCurrentPath: () => string;
    getCurrentDomain: () => string;
    getCurrentOrigin: () => string;
    getCurrentParams: () => Record<string, string | string[]>;
    redirectTo: (url: string, replace?: boolean) => void;
    openInNewTab: (url: string) => void;
    getHash: () => string;
    setHash: (hash: string) => void;
    removeHash: () => void;
    encodeURIComponentSafe: (str: string) => string;
    decodeURIComponentSafe: (str: string) => string;
    sanitizeRedirectURL: (url: string, allowedDomains: string[], fallbackURL?: string) => string;
};
//# sourceMappingURL=url.d.ts.map