Type ButtonName: keyof TOpt["buttons"] extends undefined ? string : TOpt["buttons"] extends Record<string, ButtonBinding> ? Extract<keyof TOpt["buttons"], string> : OptionalString<Extract<keyof TOpt["buttons"], string>>