type StringKeys<T> = Extract<keyof T, string>;
type RequiredKeys<T> = {
    [K in StringKeys<T>]: undefined extends T[K] ? never : K;
}[StringKeys<T>];
type OptionalKeys<T> = Exclude<StringKeys<T>, RequiredKeys<T>>;
type RequiredKeysAfterOmit<T, U extends StringKeys<T>> = Exclude<RequiredKeys<T>, U>;
type OptionalKeysAfterOmit<T, U extends StringKeys<T>> = Exclude<OptionalKeys<T>, U>;
export type TStyledPrefixAndOmiter<T extends Record<string, any>, U extends StringKeys<T> = never> = {
    [P in RequiredKeysAfterOmit<T, U> as `$${P}`]: T[P];
} & {
    [P in OptionalKeysAfterOmit<T, U> as `$${P}`]?: T[P];
};
export {};
