Are private posts visible to search engines?

Search engines SHOULD respect the industry standard robots.txt file which you could use to block access to a post type. Such as blocking access to anything under example.com/deals.

You could also go above and beyond and check the $_SERVER['HTTP_USER_AGENT'] for bots. Something like:

$bot_list = array("Teoma", "alexa", "froogle", "Gigabot", "inktomi",
"looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory",
"Ask Jeeves", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot",
"crawler", "www.galaxy.com", "Googlebot", "Scooter", "Slurp",
"msnbot", "appie", "FAST", "WebBug", "Spade", "ZyBorg", "rabaz",
"Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot",
"Mediapartners-Google", "Sogou web spider", "WebAlta Crawler"); 

if (in_array($_SERVER['HTTP_USER_AGENT'], $bot_list )) {
    wp_die("You are a robot, I don't like you so go away!";
}

The botlist above is from this good tutorial on bot detection

Now if you are using private post if the user access them they will get a 404 error. This is also true for bots they will also see a 404. Now If the bot index’s the 404 that depends on the bot (most don’t though)

However, if you are are just linking deals to other authors why are you even using post at all if the post aren’t to be accessed? This may be a better use for links and link categories.