/**
 * Makes all properties in T optional recursively, with special handling for functions.
 * This utility type preserves function signatures while making them optional.
 */
export type Optional<T> = {
    [K in keyof T]?: T[K] extends (...args: any[]) => any ? T[K] : T[K] extends object ? Optional<T[K]> : T[K];
};
