/**
 * All possible permutations of dot-separated paths in an object
 */
export type Paths<T> = T extends object ? {
    [K in keyof T]: `${Exclude<K, symbol>}${"" | `.${Paths<T[K]>}`}`;
}[keyof T] : never;
/**
 * All possible permutations of dot-separated leaf paths in an object
 */
export type Leaves<T> = T extends object ? {
    [K in keyof T]: `${Exclude<K, symbol>}${Leaves<T[K]> extends never ? "" : `.${Leaves<T[K]>}`}`;
}[keyof T] : never;
