import { ComputedRef, Ref, UnwrapRef } from 'vue-demi'; export type MaybeRef = T | Ref; export type MaybeReactive = T | UnwrapRef; export type IQueryParams = Record | UnwrapRef>; export type IPathVariables = Record>; export interface IUrlOptions { path?: MaybeRef; pathVariables?: MaybeReactive; queryParams?: MaybeReactive; hash?: MaybeRef; arraySerializer?: (array: unknown[]) => string; } export interface IBuilderResult { path: Ref; pathVariables: UnwrapRef; queryParams: UnwrapRef; hash: Ref; arraySerializer: (array: unknown[]) => string; url: ComputedRef; setUrl: (url: ComputedRef) => void; } export declare class BuilderResult implements IBuilderResult { path: Ref; pathVariables: UnwrapRef; queryParams: UnwrapRef; hash: Ref; arraySerializer: (array: unknown[]) => string; url: ComputedRef; constructor(path: MaybeRef, pathVariables: MaybeReactive, queryParams: MaybeReactive, hash: MaybeRef, arraySerializer: (array: unknown[]) => string); setUrl(url: ComputedRef): void; } export declare class UrlBuilder { baseUrl: string; private defaultSerializer; constructor(baseUrl?: string | null | undefined); buildHash(url: string, hash: string | number): string; buildPathVariables(url: string, pathVariables: IPathVariables): string; buildQueryParams(url: string, queryParams: IQueryParams, arraySerializer?: (array: unknown[]) => string): string; } declare const useUrl: (options: IUrlOptions | any, baseUrl?: string) => IBuilderResult; declare const createUseUrlInstance: () => (options: IUrlOptions | any, baseUrl?: string) => IBuilderResult; export { useUrl, createUseUrlInstance };