diff libpurple/account.h @ 15374:5fe8042783c1

Rename gtk/ and libgaim/ to pidgin/ and libpurple/
author Sean Egan <seanegan@gmail.com>
date Sat, 20 Jan 2007 02:32:10 +0000
parents
children cb3800fabd76
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/account.h	Sat Jan 20 02:32:10 2007 +0000
@@ -0,0 +1,947 @@
+/**
+ * @file account.h Account API
+ * @ingroup core
+ *
+ * gaim
+ *
+ * Gaim is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * @see @ref account-signals
+ */
+#ifndef _GAIM_ACCOUNT_H_
+#define _GAIM_ACCOUNT_H_
+
+#include <glib-object.h>
+#include <glib.h>
+
+typedef struct _GaimAccountUiOps GaimAccountUiOps;
+typedef struct _GaimAccount      GaimAccount;
+
+typedef gboolean (*GaimFilterAccountFunc)(GaimAccount *account);
+typedef void (*GaimAccountRequestAuthorizationCb)(void *);
+
+#include "connection.h"
+#include "log.h"
+#include "proxy.h"
+#include "prpl.h"
+#include "status.h"
+
+struct _GaimAccountUiOps
+{
+	/* A buddy we already have added us to their buddy list. */
+	void (*notify_added)(GaimAccount *account, const char *remote_user,
+	                    const char *id, const char *alias,
+	                     const char *message);
+	void (*status_changed)(GaimAccount *account, GaimStatus *status);
+	/* Someone we don't have on our list added us. Will prompt to add them. */
+	void (*request_add)(GaimAccount *account, const char *remote_user,
+	                    const char *id, const char *alias,
+	                    const char *message);
+	void (*request_authorize)(GaimAccount *account, const char *remote_user, const char *id,
+				 const char *alias, const char *message, gboolean on_list, 
+				 GCallback authorize_cb, GCallback deny_cb, void *user_data);
+};
+
+struct _GaimAccount
+{
+	char *username;             /**< The username.                          */
+	char *alias;                /**< How you appear to yourself.            */
+	char *password;             /**< The account password.                  */
+	char *user_info;            /**< User information.                      */
+
+	char *buddy_icon;           /**< The buddy icon's cached path.          */
+	char *buddy_icon_path;      /**< The buddy icon's non-cached path.      */
+
+	gboolean remember_pass;     /**< Remember the password.                 */
+
+	char *protocol_id;          /**< The ID of the protocol.                */
+
+	GaimConnection *gc;         /**< The connection handle.                 */
+	gboolean disconnecting;     /**< The account is currently disconnecting */
+
+	GHashTable *settings;       /**< Protocol-specific settings.            */
+	GHashTable *ui_settings;    /**< UI-specific settings.                  */
+
+	GaimProxyInfo *proxy_info;  /**< Proxy information.  This will be set   */
+								/*   to NULL when the account inherits      */
+								/*   proxy settings from global prefs.      */
+
+	GSList *permit;             /**< Permit list.                           */
+	GSList *deny;               /**< Deny list.                             */
+	int perm_deny;              /**< The permit/deny setting.               */
+
+	GList *status_types;        /**< Status types.                          */
+
+	GaimPresence *presence;     /**< Presence.                              */
+	GaimLog *system_log;        /**< The system log                         */
+
+	void *ui_data;              /**< The UI can put data here.              */
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**************************************************************************/
+/** @name Account API                                                     */
+/**************************************************************************/
+/*@{*/
+
+/**
+ * Creates a new account.
+ *
+ * @param username    The username.
+ * @param protocol_id The protocol ID.
+ *
+ * @return The new account.
+ */
+GaimAccount *gaim_account_new(const char *username, const char *protocol_id);
+
+/**
+ * Destroys an account.
+ *
+ * @param account The account to destroy.
+ */
+void gaim_account_destroy(GaimAccount *account);
+
+/**
+ * Connects to an account.
+ *
+ * @param account The account to connect to.
+ */
+void gaim_account_connect(GaimAccount *account);
+
+/**
+ * Registers an account.
+ *
+ * @param account The account to register.
+ */
+void gaim_account_register(GaimAccount *account);
+
+/**
+ * Disconnects from an account.
+ *
+ * @param account The account to disconnect from.
+ */
+void gaim_account_disconnect(GaimAccount *account);
+
+/**
+ * Notifies the user that the account was added to a remote user's
+ * buddy list.
+ *
+ * This will present a dialog informing the user that he was added to the
+ * remote user's buddy list.
+ *
+ * @param account     The account that was added.
+ * @param remote_user The name of the user that added this account.
+ * @param id          The optional ID of the local account. Rarely used.
+ * @param alias       The optional alias of the user.
+ * @param message     The optional message sent from the user adding you.
+ */
+void gaim_account_notify_added(GaimAccount *account, const char *remote_user,
+                               const char *id, const char *alias,
+                               const char *message);
+
+/**
+ * Notifies the user that the account was addded to a remote user's buddy
+ * list and asks ther user if they want to add the remote user to their buddy
+ * list.
+ *
+ * This will present a dialog informing the local user that the remote user
+ * added them to the remote user's buddy list and will ask if they want to add
+ * the remote user to the buddy list.
+ *
+ * @param account     The account that was added.
+ * @param remote_user The name of the user that added this account.
+ * @param id          The optional ID of the local account. Rarely used.
+ * @param alias       The optional alias of the user.
+ * @param message     The optional message sent from the user adding you.
+ */
+void gaim_account_request_add(GaimAccount *account, const char *remote_user,
+                              const char *id, const char *alias,
+                              const char *message);
+
+/**
+ * Notifies the user that a remote user has wants to add the local user
+ * to his or her buddy list and requires authorization to d oso.
+ *
+ * This will present a dialog informing the user of this and ask if the 
+ * user authorizes or denies the remote user from adding him.
+ *
+ * @param account      The account that was added
+ * @param remote_user  The name of the usre that added this account.
+ * @param id           The optional ID of the local account. Rarely used.
+ * @param alias        The optional alias of the remote user.
+ * @param message      The optional message sent from the uer requesting you
+ * @param auth_cb      The callback called when the local user accepts
+ * @param deny_cb      The callback called when the local user rejects
+ * @param user_data    Data to be passed back to the above callbacks
+ */
+void gaim_account_request_authorization(GaimAccount *account, const char *remote_user,
+					const char *id, const char *alias, const char *message, gboolean on_list,
+					GCallback auth_cb, GCallback deny_cb, void *user_data);
+
+/**
+ * Requests information from the user to change the account's password.
+ *
+ * @param account The account to change the password on.
+ */
+void gaim_account_request_change_password(GaimAccount *account);
+
+/**
+ * Requests information from the user to change the account's
+ * user information.
+ *
+ * @param account The account to change the user information on.
+ */
+void gaim_account_request_change_user_info(GaimAccount *account);
+
+/**
+ * Sets the account's username.
+ *
+ * @param account  The account.
+ * @param username The username.
+ */
+void gaim_account_set_username(GaimAccount *account, const char *username);
+
+/**
+ * Sets the account's password.
+ *
+ * @param account  The account.
+ * @param password The password.
+ */
+void gaim_account_set_password(GaimAccount *account, const char *password);
+
+/**
+ * Sets the account's alias.
+ *
+ * @param account The account.
+ * @param alias   The alias.
+ */
+void gaim_account_set_alias(GaimAccount *account, const char *alias);
+
+/**
+ * Sets the account's user information
+ *
+ * @param account   The account.
+ * @param user_info The user information.
+ */
+void gaim_account_set_user_info(GaimAccount *account, const char *user_info);
+
+/**
+ * Sets the account's buddy icon.
+ *
+ * @param account The account.
+ * @param icon    The buddy icon file.
+ */
+void gaim_account_set_buddy_icon(GaimAccount *account, const char *icon);
+
+/**
+ * Sets the account's buddy icon path.
+ *
+ * @param account The account.
+ * @param info	  The buddy icon non-cached path.
+ */
+void gaim_account_set_buddy_icon_path(GaimAccount *account, const char *path);
+
+/**
+ * Sets the account's protocol ID.
+ *
+ * @param account     The account.
+ * @param protocol_id The protocol ID.
+ */
+void gaim_account_set_protocol_id(GaimAccount *account,
+								  const char *protocol_id);
+
+/**
+ * Sets the account's connection.
+ *
+ * @param account The account.
+ * @param gc      The connection.
+ */
+void gaim_account_set_connection(GaimAccount *account, GaimConnection *gc);
+
+/**
+ * Sets whether or not this account should save its password.
+ *
+ * @param account The account.
+ * @param value   @c TRUE if it should remember the password.
+ */
+void gaim_account_set_remember_password(GaimAccount *account, gboolean value);
+
+/**
+ * Sets whether or not this account should check for mail.
+ *
+ * @param account The account.
+ * @param value   @c TRUE if it should check for mail.
+ */
+void gaim_account_set_check_mail(GaimAccount *account, gboolean value);
+
+/**
+ * Sets whether or not this account is enabled for the specified
+ * UI.
+ *
+ * @param account The account.
+ * @param ui      The UI.
+ * @param value   @c TRUE if it is enabled.
+ */
+void gaim_account_set_enabled(GaimAccount *account, const char *ui,
+			      gboolean value);
+
+/**
+ * Sets the account's proxy information.
+ *
+ * @param account The account.
+ * @param info    The proxy information.
+ */
+void gaim_account_set_proxy_info(GaimAccount *account, GaimProxyInfo *info);
+
+/**
+ * Sets the account's status types.
+ *
+ * @param account      The account.
+ * @param status_types The list of status types.
+ */
+void gaim_account_set_status_types(GaimAccount *account, GList *status_types);
+
+/**
+ * Activates or deactivates a status.  All changes to the statuses of
+ * an account go through this function or gaim_account_set_status_list.
+ *
+ * Only independent statuses can be deactivated with this. To deactivate
+ * an exclusive status, activate a different (and exclusive?) status.
+ *
+ * @param account   The account.
+ * @param status_id The ID of the status.
+ * @param active    The active state.
+ * @param ...       Pairs of attributes for the new status passed in
+ *                  as a NULL-terminated list of id/value pairs.
+ */
+void gaim_account_set_status(GaimAccount *account, const char *status_id,
+							 gboolean active, ...);
+
+
+/**
+ * Activates or deactivates a status.  All changes to the statuses of
+ * an account go through this function or gaim_account_set_status.
+ *
+ * Only independent statuses can be deactivated with this. To deactivate
+ * an exclusive status, activate a different (and exclusive?) status.
+ *
+ * @param account   The account.
+ * @param status_id The ID of the status.
+ * @param active    The active state.
+ * @param attrs		A list of attributes in key/value pairs
+ */
+void gaim_account_set_status_list(GaimAccount *account,
+								  const char *status_id,
+								  gboolean active, GList *attrs);
+
+/**
+ * Clears all protocol-specific settings on an account.
+ *
+ * @param account The account.
+ */
+void gaim_account_clear_settings(GaimAccount *account);
+
+/**
+ * Sets a protocol-specific integer setting for an account.
+ *
+ * @param account The account.
+ * @param name    The name of the setting.
+ * @param value   The setting's value.
+ */
+void gaim_account_set_int(GaimAccount *account, const char *name, int value);
+
+/**
+ * Sets a protocol-specific string setting for an account.
+ *
+ * @param account The account.
+ * @param name    The name of the setting.
+ * @param value   The setting's value.
+ */
+void gaim_account_set_string(GaimAccount *account, const char *name,
+							 const char *value);
+
+/**
+ * Sets a protocol-specific boolean setting for an account.
+ *
+ * @param account The account.
+ * @param name    The name of the setting.
+ * @param value   The setting's value.
+ */
+void gaim_account_set_bool(GaimAccount *account, const char *name,
+						   gboolean value);
+
+/**
+ * Sets a UI-specific integer setting for an account.
+ *
+ * @param account The account.
+ * @param ui      The UI name.
+ * @param name    The name of the setting.
+ * @param value   The setting's value.
+ */
+void gaim_account_set_ui_int(GaimAccount *account, const char *ui,
+							 const char *name, int value);
+
+/**
+ * Sets a UI-specific string setting for an account.
+ *
+ * @param account The account.
+ * @param ui      The UI name.
+ * @param name    The name of the setting.
+ * @param value   The setting's value.
+ */
+void gaim_account_set_ui_string(GaimAccount *account, const char *ui,
+								const char *name, const char *value);
+
+/**
+ * Sets a UI-specific boolean setting for an account.
+ *
+ * @param account The account.
+ * @param ui      The UI name.
+ * @param name    The name of the setting.
+ * @param value   The setting's value.
+ */
+void gaim_account_set_ui_bool(GaimAccount *account, const char *ui,
+							  const char *name, gboolean value);
+
+/**
+ * Returns whether or not the account is connected.
+ *
+ * @param account The account.
+ *
+ * @return @c TRUE if connected, or @c FALSE otherwise.
+ */
+gboolean gaim_account_is_connected(const GaimAccount *account);
+
+/**
+ * Returns whether or not the account is connecting.
+ *
+ * @param account The account.
+ *
+ * @return @c TRUE if connecting, or @c FALSE otherwise.
+ */
+gboolean gaim_account_is_connecting(const GaimAccount *account);
+
+/**
+ * Returns whether or not the account is disconnected.
+ *
+ * @param account The account.
+ *
+ * @return @c TRUE if disconnected, or @c FALSE otherwise.
+ */
+gboolean gaim_account_is_disconnected(const GaimAccount *account);
+
+/**
+ * Returns the account's username.
+ *
+ * @param account The account.
+ *
+ * @return The username.
+ */
+const char *gaim_account_get_username(const GaimAccount *account);
+
+/**
+ * Returns the account's password.
+ *
+ * @param account The account.
+ *
+ * @return The password.
+ */
+const char *gaim_account_get_password(const GaimAccount *account);
+
+/**
+ * Returns the account's alias.
+ *
+ * @param account The account.
+ *
+ * @return The alias.
+ */
+const char *gaim_account_get_alias(const GaimAccount *account);
+
+/**
+ * Returns the account's user information.
+ *
+ * @param account The account.
+ *
+ * @return The user information.
+ */
+const char *gaim_account_get_user_info(const GaimAccount *account);
+
+/**
+ * Returns the account's buddy icon filename.
+ *
+ * @param account The account.
+ *
+ * @return The buddy icon filename.
+ */
+const char *gaim_account_get_buddy_icon(const GaimAccount *account);
+
+/**
+ * Gets the account's buddy icon path.
+ *
+ * @param account The account.
+ *
+ * @return The buddy icon's non-cached path.
+ */
+const char *gaim_account_get_buddy_icon_path(const GaimAccount *account);
+
+/**
+ * Returns the account's protocol ID.
+ *
+ * @param account The account.
+ *
+ * @return The protocol ID.
+ */
+const char *gaim_account_get_protocol_id(const GaimAccount *account);
+
+/**
+ * Returns the account's protocol name.
+ *
+ * @param account The account.
+ *
+ * @return The protocol name.
+ */
+const char *gaim_account_get_protocol_name(const GaimAccount *account);
+
+/**
+ * Returns the account's connection.
+ *
+ * @param account The account.
+ *
+ * @return The connection.
+ */
+GaimConnection *gaim_account_get_connection(const GaimAccount *account);
+
+/**
+ * Returns whether or not this account should save its password.
+ *
+ * @param account The account.
+ *
+ * @return @c TRUE if it should remember the password.
+ */
+gboolean gaim_account_get_remember_password(const GaimAccount *account);
+
+/**
+ * Returns whether or not this account should check for mail.
+ *
+ * @param account The account.
+ *
+ * @return @c TRUE if it should check for mail.
+ */
+gboolean gaim_account_get_check_mail(const GaimAccount *account);
+
+/**
+ * Returns whether or not this account is enabled for the
+ * specified UI.
+ *
+ * @param account The account.
+ * @param ui      The UI.
+ *
+ * @return @c TRUE if it enabled on this UI.
+ */
+gboolean gaim_account_get_enabled(const GaimAccount *account,
+				  const char *ui);
+
+/**
+ * Returns the account's proxy information.
+ *
+ * @param account The account.
+ *
+ * @return The proxy information.
+ */
+GaimProxyInfo *gaim_account_get_proxy_info(const GaimAccount *account);
+
+/**
+ * Returns the active status for this account.  This looks through
+ * the GaimPresence associated with this account and returns the
+ * GaimStatus that has its active flag set to "TRUE."  There can be
+ * only one active GaimStatus in a GaimPresence.
+ *
+ * @param account   The account.
+ *
+ * @return The active status.
+ */
+GaimStatus *gaim_account_get_active_status(const GaimAccount *account);
+
+/**
+ * Returns the account status with the specified ID.
+ *
+ * Note that this works differently than gaim_buddy_get_status() in that
+ * it will only return NULL if the status was not registered.
+ *
+ * @param account   The account.
+ * @param status_id The status ID.
+ *
+ * @return The status, or NULL if it was never registered.
+ */
+GaimStatus *gaim_account_get_status(const GaimAccount *account,
+									const char *status_id);
+
+/**
+ * Returns the account status type with the specified ID.
+ *
+ * @param account The account.
+ * @param id      The ID of the status type to find.
+ *
+ * @return The status type if found, or NULL.
+ */
+GaimStatusType *gaim_account_get_status_type(const GaimAccount *account,
+											 const char *id);
+
+/**
+ * Returns the account status type with the specified primitive.
+ * Note: It is possible for an account to have more than one
+ * GaimStatusType with the same primitive.  In this case, the
+ * first GaimStatusType is returned.
+ *
+ * @param account   The account.
+ * @param primitive The type of the status type to find.
+ *
+ * @return The status if found, or NULL.
+ */
+GaimStatusType *gaim_account_get_status_type_with_primitive(
+							const GaimAccount *account,
+							GaimStatusPrimitive primitive);
+
+/**
+ * Returns the account's presence.
+ *
+ * @param account The account.
+ *
+ * @return The account's presence.
+ */
+GaimPresence *gaim_account_get_presence(const GaimAccount *account);
+
+/**
+ * Returns whether or not an account status is active.
+ *
+ * @param account   The account.
+ * @param status_id The status ID.
+ *
+ * @return TRUE if active, or FALSE if not.
+ */
+gboolean gaim_account_is_status_active(const GaimAccount *account,
+									   const char *status_id);
+
+/**
+ * Returns the account's status types.
+ *
+ * @param account The account.
+ *
+ * @return The account's status types.
+ */
+const GList *gaim_account_get_status_types(const GaimAccount *account);
+
+/**
+ * Returns a protocol-specific integer setting for an account.
+ *
+ * @param account       The account.
+ * @param name          The name of the setting.
+ * @param default_value The default value.
+ *
+ * @return The value.
+ */
+int gaim_account_get_int(const GaimAccount *account, const char *name,
+						 int default_value);
+
+/**
+ * Returns a protocol-specific string setting for an account.
+ *
+ * @param account       The account.
+ * @param name          The name of the setting.
+ * @param default_value The default value.
+ *
+ * @return The value.
+ */
+const char *gaim_account_get_string(const GaimAccount *account,
+									const char *name,
+									const char *default_value);
+
+/**
+ * Returns a protocol-specific boolean setting for an account.
+ *
+ * @param account       The account.
+ * @param name          The name of the setting.
+ * @param default_value The default value.
+ *
+ * @return The value.
+ */
+gboolean gaim_account_get_bool(const GaimAccount *account, const char *name,
+							   gboolean default_value);
+
+/**
+ * Returns a UI-specific integer setting for an account.
+ *
+ * @param account       The account.
+ * @param ui            The UI name.
+ * @param name          The name of the setting.
+ * @param default_value The default value.
+ *
+ * @return The value.
+ */
+int gaim_account_get_ui_int(const GaimAccount *account, const char *ui,
+							const char *name, int default_value);
+
+/**
+ * Returns a UI-specific string setting for an account.
+ *
+ * @param account       The account.
+ * @param ui            The UI name.
+ * @param name          The name of the setting.
+ * @param default_value The default value.
+ *
+ * @return The value.
+ */
+const char *gaim_account_get_ui_string(const GaimAccount *account,
+									   const char *ui, const char *name,
+									   const char *default_value);
+
+/**
+ * Returns a UI-specific boolean setting for an account.
+ *
+ * @param account       The account.
+ * @param ui            The UI name.
+ * @param name          The name of the setting.
+ * @param default_value The default value.
+ *
+ * @return The value.
+ */
+gboolean gaim_account_get_ui_bool(const GaimAccount *account, const char *ui,
+								  const char *name, gboolean default_value);
+
+
+/**
+ * Returns the system log for an account.
+ *
+ * @param account The account.
+ * @param create  Should it be created if it doesn't exist?
+ *
+ * @return The log.
+ *
+ * @note Callers should almost always pass @c FALSE for @a create.
+ *       Passing @c TRUE could result in an existing log being reopened,
+ *       if the log has already been closed, which not all loggers deal
+ *       with appropriately.
+ */
+GaimLog *gaim_account_get_log(GaimAccount *account, gboolean create);
+
+/**
+ * Frees the system log of an account
+ *
+ * @param account The account.
+ */
+void gaim_account_destroy_log(GaimAccount *account);
+
+/**
+ * Adds a buddy to the server-side buddy list for the specified account.
+ *
+ * @param account The account.
+ * @param buddy The buddy to add.
+ */
+void gaim_account_add_buddy(GaimAccount *account, GaimBuddy *buddy);
+/**
+ * Adds a list of buddies to the server-side buddy list.
+ *
+ * @param account The account.
+ * @param buddies The list of GaimBlistNodes representing the buddies to add.
+ */
+void gaim_account_add_buddies(GaimAccount *account, GList *buddies);
+
+/**
+ * Removes a buddy from the server-side buddy list.
+ *
+ * @param account The account.
+ * @param buddy The buddy to remove.
+ * @param group The group to remove the buddy from.
+ */
+void gaim_account_remove_buddy(GaimAccount *account, GaimBuddy *buddy,
+								GaimGroup *group);
+
+/**
+ * Removes a list of buddies from the server-side buddy list.
+ *
+ * @note The lists buddies and groups are parallel lists.  Be sure that node n of
+ *       groups matches node n of buddies.
+ *
+ * @param account The account.
+ * @param buddies The list of buddies to remove.
+ * @param groups The list of groups to remove buddies from.  Each node of this
+ *               list should match the corresponding node of buddies.
+ */
+void gaim_account_remove_buddies(GaimAccount *account, GList *buddies,
+									GList *groups);
+
+/**
+ * Removes a group from the server-side buddy list.
+ *
+ * @param account The account.
+ * @param group The group to remove.
+ */
+void gaim_account_remove_group(GaimAccount *account, GaimGroup *group);
+
+/**
+ * Changes the password on the specified account.
+ *
+ * @param account The account.
+ * @param orig_pw The old password.
+ * @param new_pw The new password.
+ */
+void gaim_account_change_password(GaimAccount *account, const char *orig_pw,
+									const char *new_pw);
+
+/**
+ * Whether the account supports sending offline messages to buddy.
+ *
+ * @param account The account
+ * @param buddy   The buddy
+ */
+gboolean gaim_account_supports_offline_message(GaimAccount *account, GaimBuddy *buddy);
+
+/*@}*/
+
+/**************************************************************************/
+/** @name Accounts API                                                    */
+/**************************************************************************/
+/*@{*/
+
+/**
+ * Adds an account to the list of accounts.
+ *
+ * @param account The account.
+ */
+void gaim_accounts_add(GaimAccount *account);
+
+/**
+ * Removes an account from the list of accounts.
+ *
+ * @param account The account.
+ */
+void gaim_accounts_remove(GaimAccount *account);
+
+/**
+ * Deletes an account.
+ *
+ * This will remove any buddies from the buddy list that belong to this
+ * account, buddy pounces that belong to this account, and will also
+ * destroy @a account.
+ *
+ * @param account The account.
+ */
+void gaim_accounts_delete(GaimAccount *account);
+
+/**
+ * Reorders an account.
+ *
+ * @param account   The account to reorder.
+ * @param new_index The new index for the account.
+ */
+void gaim_accounts_reorder(GaimAccount *account, gint new_index);
+
+/**
+ * Returns a list of all accounts.
+ *
+ * @return A list of all accounts.
+ */
+GList *gaim_accounts_get_all(void);
+
+/**
+ * Returns a list of all enabled accounts
+ *
+ * @return A list of all enabled accounts. The list is owned
+ *         by the caller, and must be g_list_free()d to avoid
+ *         leaking the nodes.
+ */
+GList *gaim_accounts_get_all_active(void);
+
+/**
+ * Finds an account with the specified name and protocol id.
+ *
+ * @param name     The account username.
+ * @param protocol The account protocol ID.
+ *
+ * @return The account, if found, or @c FALSE otherwise.
+ */
+GaimAccount *gaim_accounts_find(const char *name, const char *protocol);
+
+/**
+ * This is called by the core after all subsystems and what
+ * not have been initialized.  It sets all enabled accounts
+ * to their startup status by signing them on, setting them
+ * away, etc.
+ *
+ * You probably shouldn't call this unless you really know
+ * what you're doing.
+ */
+void gaim_accounts_restore_current_statuses(void);
+
+/*@}*/
+
+
+/**************************************************************************/
+/** @name UI Registration Functions                                       */
+/**************************************************************************/
+/*@{*/
+/**
+ * Sets the UI operations structure to be used for accounts.
+ *
+ * @param ops The UI operations structure.
+ */
+void gaim_accounts_set_ui_ops(GaimAccountUiOps *ops);
+
+/**
+ * Returns the UI operations structure used for accounts.
+ *
+ * @return The UI operations structure in use.
+ */
+GaimAccountUiOps *gaim_accounts_get_ui_ops(void);
+
+/*@}*/
+
+
+/**************************************************************************/
+/** @name Accounts Subsystem                                              */
+/**************************************************************************/
+/*@{*/
+
+/**
+ * Returns the accounts subsystem handle.
+ *
+ * @return The accounts subsystem handle.
+ */
+void *gaim_accounts_get_handle(void);
+
+/**
+ * Initializes the accounts subsystem.
+ */
+void gaim_accounts_init(void);
+
+/**
+ * Uninitializes the accounts subsystem.
+ */
+void gaim_accounts_uninit(void);
+
+/*@}*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GAIM_ACCOUNT_H_ */