declare function birecord>(original: T): BiRecord; declare class BiRecord> { original: T; reversed: Reverse; constructor(original: T, reversed?: Reverse); get(key: U): U extends keyof T ? T[U] : U extends T[keyof T] ? Reverse[U] : unknown; has(key: any): key is keyof T | T[keyof T]; } declare function reverse>(record: T): Reverse; type Reverse> = { [U in keyof T as T[U]]: U; }; export { BiRecord, Reverse, birecord as default, reverse };