import type { SplitPattern } from './split.ts'; export type ParseParams = split extends { hostname: infer hostname; pathname: infer pathname; } ? (hostname extends string ? ParsePartParams : {}) & (pathname extends string ? ParsePartParams : {}) : never; type ParsePartParams = []> = string extends source ? Record : source extends `${infer char extends '\\' | ':' | '*' | '(' | ')'}${infer rest}` ? char extends '\\' ? rest extends `${string}${infer rest}` ? ParsePartParams : never : char extends ':' ? IdentifierParse extends { identifier: infer name extends string; rest: infer rest; } ? Param & ParsePartParams : never : char extends '*' ? IdentifierParse extends { identifier: infer name extends string; rest: infer rest; } ? Param & ParsePartParams : never : char extends '(' ? ParsePartParams : char extends ')' ? stack extends [null, ...infer tail extends Array] ? ParsePartParams : never : never : source extends `${string}${infer rest}` ? ParsePartParams : {}; type Param> = stack extends [] ? { [key in name]: string; } : { [key in name]: string | undefined; }; type IdentifierHead = a_z | A_Z | '_' | '$'; type IdentifierTail = IdentifierHead | _0_9; type IdentifierParse = _IdentifierParse<{ identifier: ''; rest: source; }>; type _IdentifierParse = state extends { identifier: ''; rest: `${infer head extends IdentifierHead}${infer tail}`; } ? _IdentifierParse<{ identifier: head; rest: tail; }> : state extends { identifier: string; rest: `${infer head extends IdentifierTail}${infer rest}`; } ? _IdentifierParse<{ identifier: `${state['identifier']}${head}`; rest: rest; }> : state; type a_z = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z'; type A_Z = Uppercase; type _0_9 = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'; export {}; //# sourceMappingURL=params.d.ts.map