-callback checkin({Info :: any(), CheckingReference :: any(), Owner :: pid(), Transport :: atom()}, Socket :: inet:socket()) -> ok | {error, Reason :: any()}.
-callback checkout(Host :: host(), Port :: integer(), Transport :: atom(), Client :: client()) -> {ok, {Info :: any(), CheckingReference :: any(), Owner :: pid(), Transport :: atom()}, Socket :: inet:socket()} | {error, Reason :: any()}.
-callback notify(Pool :: atom(), Message :: any()) -> ok.
-callback start() -> ok | {error, Reason :: any()}.