import type { Parse, Token } from './parse.ts'; export type ParseParams = string extends source ? Record : Parse extends infer pattern ? pattern extends never ? never : pattern extends { hostname: infer hostname; pathname: infer pathname; } ? (hostname extends Token[] ? ParsePartParams : {}) & (pathname extends Token[] ? ParsePartParams : {}) : never : never; type ParsePartParams = Token[] extends tokens ? Record : tokens extends [infer token extends Token, ...infer rest extends Token[]] ? token extends { type: 'variable' | 'wildcard'; name: infer name extends string; } ? Param & ParsePartParams : token extends { type: 'wildcard'; } ? Param<'*', optional> & ParsePartParams : token extends { type: 'optional'; tokens: infer optionalTokens extends Token[]; } ? ParsePartParams & ParsePartParams : ParsePartParams : {}; type Param = optional extends false ? { [key in name]: string; } : { [key in name]: string | undefined; }; export {}; //# sourceMappingURL=params.d.ts.map