type rec handler<'acc, 'response, 'ret> = | Handler((option<'acc>, 'response) => 'acc): handler<'acc, 'response, 'acc> | NoHandler: handler<'response, 'response, 'response> type executeSubscription = ( ~additionalTypenames: array=?, ~fetchOptions: Fetch.requestInit=?, ~fetch: (string, Fetch.requestInit) => Js.Promise.t=?, ~requestPolicy: Types.requestPolicy=?, ~url: string=?, ~pollInterval: int=?, ~meta: Types.operationDebugMeta=?, ~suspense: bool=?, ~preferGetMethod: bool=?, unit, ) => unit type useSubscriptionResponse<'data> = (Types.Hooks.hookResponse<'data>, executeSubscription) let useSubscription: ( ~subscription: module(Types.Operation with type t = 'data and type t_variables = 'variables), ~handler: handler<'acc, 'data, 'ret>, ~pause: bool=?, ~additionalTypenames: array=?, ~fetchOptions: Fetch.requestInit=?, ~fetch: (string, Fetch.requestInit) => Js.Promise.t=?, ~requestPolicy: Types.requestPolicy=?, ~url: string=?, ~pollInterval: int=?, ~meta: Types.operationDebugMeta=?, ~suspense: bool=?, ~preferGetMethod: bool=?, 'variables, ) => useSubscriptionResponse<'ret>