type ArrayItem = T extends (infer S)[] ? S : never; type MappedCartesian = { [K in keyof T]: ArrayItem; }; /** * Util function allowing for iterating over multiple arrays * @param args the arrays to iterate over * @returns an array of all possible combinations / the cartesian product */ export declare function product(...args: T): MappedCartesian[]; export {};