type Detections = D extends undefined ? T : T | U; interface BaseDetector = Record, U extends Record = Record> { name: string; resolveLng: (options: { lookup: any; lngs: string[]; } & T) => string | undefined | null; persistLng?: (lng: string, options: { lookup: any; } & U) => void; } type Detector = BaseDetector, { lngs: string[]; }>; export type { Detector as D, Detections as a };