export type OnlyKeys = { [K in keyof T]: U extends T[K] ? K : never }[keyof T] export type OnlyUndefined = { [K in OnlyKeys]: T[K] } export type ExcludeKeys = { [K in keyof T]: U extends T[K] ? never : K }[keyof T] export type ExcludeUndefined = { [K in ExcludeKeys]: T[K] } export type Optional = { [K in keyof T]?: T[K] } export type UndefinedOptional = ExcludeUndefined & Optional> export type OptionalFee = FeeField extends keyof T ? ExcludeKeys & T[FeeField] : T;