type ParseRoute<T extends string> = T extends `${infer Start}:${infer Param}/${infer Rest}` ? {
    [K in Param]: string;
} & ParseRoute<Rest> : T extends `${infer Start}:${infer Param}` ? {
    [K in Param]: string;
} : T extends `${infer Start}*${infer Rest}` ? {
    $0: string;
} & ParseRoute<Rest> : T extends `${infer Start}*` ? {
    $0: string;
} : {};
type LinkFunction<T extends readonly string[]> = {
    <Path extends T[number]>(path: Path, params?: ParseRoute<Path> extends Record<string, never> ? undefined : ParseRoute<Path>): string;
};
export declare function defineLinks<const T extends readonly string[]>(routes: T): LinkFunction<T>;
export {};
