type TupleEntry = T extends readonly [infer Head, ...infer Tail] ? TupleEntry : R; type ObjectEntry> = T extends object ? { [K in keyof T]: [K, Required[K]]; }[keyof T] extends infer E ? E extends [infer K, infer V] ? K extends string ? [K, V] : K extends number ? [`${K}`, V] : never : never : never : never; export type Entry> = T extends readonly [ unknown, ...unknown[] ] ? TupleEntry : T extends ReadonlyArray ? [`${number}`, U] : ObjectEntry; /** `Object.entries` analogue which returns a well-typed array */ export declare function typedEntries>(object: T): ReadonlyArray>; /** `Object.keys` analogue which returns a well-typed array */ export declare const typedKeys: >(object: T) => Entry[0][]; /** `Object.values` analogue which returns a well-typed array */ export declare const typedValues: >(object: T) => Entry[1][]; export {};