declare function nameof<T extends Function>(fn: T): string;
declare function nameof<T extends object>(key: keyof T): keyof T;
declare function nameof<T extends object>(obj: T): keyof T;
declare function nameof<
	T extends object,
	K extends keyof T = keyof T
>(obj: T, key: K): K;
export { nameof, nameof as default };
