#import NS_ASSUME_NONNULL_BEGIN @protocol TDHookDelegateProtocol @optional + (NSSet *)optionalSelectors; @end @interface TDDelegateProxy : NSObject + (void)proxyDelegate:(id)delegate selectors:(NSSet*)selectors; + (void)invokeWithTarget:(NSObject *)target selector:(SEL)selector, ...; + (BOOL)invokeReturnBOOLWithTarget:(NSObject *)target selector:(SEL)selector arg1:(id)arg1 arg2:(id)arg2; + (BOOL)invokeReturnBOOLWithTarget:(NSObject *)target selector:(SEL)selector arg1:(id)arg1 arg2:(id)arg2 arg3:(id)arg3; + (void)resolveOptionalSelectorsForDelegate:(id)delegate; @end NS_ASSUME_NONNULL_END