/**
 * BEGIN FLOCK GPL
 *
 * Copyright Flock Inc. 2005-2008
 * http://flock.com
 *
 * This file may be used under the terms of the
 * GNU General Public License Version 2 or later (the "GPL"),
 * http://www.gnu.org/licenses/gpl.html
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * END FLOCK GPL
 */

#include "flockISocialWebService.idl"

/**
 * Represents a Facebook account.
 *
 * More documentation here:
 * http://wiki.flock.com/index.php?title=Danphe:AccountsAndServices
 *
 * @see flockISocialWebService
 */
[scriptable, uuid(480E420A-5F4F-11DC-8314-0800200C9A66)]
interface flockIFacebookAccount : flockISocialWebServiceAccount {
  
  /**
   * When content is dragged onto a Facebook FriendCard to be shared with that
   * friend, we want to send the friend a message and also use the "Share Link"
   * feature in Facebook to attach the content to the message.
   *
   * @param aFriendURN (in) the RDF node ID of the friend for whom we are
   *        trying to get a list of actions for.
   * @param aTransferable (in) use to determine type of content
   */
  void sendMessageWithSharedLink(in AString aFriendURN,
                                 in nsITransferable aTransferable);

  /**
   * Sends a "Check out Flock!" kind of message to the selected friend.
   *
   * @param aFriendURN (in) the URN of the friend to whom we're sending mail.
   */
  void shareFlock(in AString aFriendURN);

  /**
   * Posts the link in the given transferable on the user's profile. If the
   * transferable is null, then the current tab's URL is posted.
   * @param aTransferable (in) drag and drop data
   */
  void postLink(in nsITransferable aTransferable);
};
